<?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>78449</bug_id>
          
          <creation_ts>2012-02-12 18:24:01 -0800</creation_ts>
          <short_desc>[WebSocket] Add deflater/inflater classes</short_desc>
          <delta_ts>2012-02-20 01:00:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78665</dependson>
          <blocked>77522</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>ap</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>tyoshino</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554930</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-12 18:24:01 -0800</bug_when>
    <thetext>Adding wrapper classes of zlib functions to prepare WebSocket deflate-frame extension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554934</commentid>
    <comment_count>1</comment_count>
      <attachid>126702</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-12 18:40:40 -0800</bug_when>
    <thetext>Created attachment 126702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555012</commentid>
    <comment_count>2</comment_count>
      <attachid>126702</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-12 22:14:45 -0800</bug_when>
    <thetext>Comment on attachment 126702
Patch

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

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:108
&gt; +    deflateEnd(&amp;m_stream);

Could you check the return value?

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:125
&gt; +    int result = deflate(&amp;m_stream, Z_SYNC_FLUSH);
&gt; +    if (result != Z_OK || m_stream.avail_in &gt; 0)
&gt; +        return false;

You shouldn&apos;t call deflate() with Z_SYNC_FLUSH every time you add something to the deflater, because it puts extra data to the output buffer.

You probably need to call defalte() with Z_NO_FLUSH here, and call it again with Z_FINISH in finish().

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:135
&gt; +    // Remove 4 octets from the tail as the spec reqested.

typo: reqested
spec -&gt; specification (we don&apos;t usually use such abbreviations)

Do you mean: &quot;as the specification requires&quot;

&gt; Source/WebCore/websockets/WebSocketDeflater.h:43
&gt; +class DeflateBuffer {

Is this class necessary? Why don&apos;t you use Vector&lt;char&gt;?

&gt; Source/WebCore/websockets/WebSocketDeflater.h:52
&gt; +     ~DeflateBuffer();

Bad indent.

&gt; Source/WebCore/websockets/WebSocketDeflater.h:69
&gt; +    static PassOwnPtr&lt;WebSocketDeflater&gt; create(int windowBits, bool noContextTakeOver);

We prefer enums over booleans in cases where bare literals (&quot;true&quot; or &quot;false&quot;) would appear without context.

&gt; Source/WebKit/chromium/tests/WebSocketDeflaterTest.cpp:41
&gt; +    const char* compressData = &quot;Hello&quot;;

nit: Maybe &quot;uncompressedData&quot;, or &quot;inputData&quot;?

&gt; Source/WebKit/chromium/tests/WebSocketDeflaterTest.cpp:97
&gt; +        compressData = reinterpret_cast&lt;char*&gt;(fastMalloc(compressLength));

Vector&lt;char&gt; should be better than manual memory management with fastMalloc/fastFree.

&gt; Source/WebKit/chromium/tests/WebSocketDeflaterTest.cpp:118
&gt; +    compressData = reinterpret_cast&lt;char*&gt;(fastMalloc(compressLength));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555139</commentid>
    <comment_count>3</comment_count>
      <attachid>126742</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-13 02:46:41 -0800</bug_when>
    <thetext>Created attachment 126742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555143</commentid>
    <comment_count>4</comment_count>
      <attachid>126702</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-13 02:59:05 -0800</bug_when>
    <thetext>Comment on attachment 126702
Patch

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

Hi Yuta-san,

Thank you for review!

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:108
&gt;&gt; +    deflateEnd(&amp;m_stream);
&gt; 
&gt; Could you check the return value?

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:125
&gt;&gt; +        return false;
&gt; 
&gt; You shouldn&apos;t call deflate() with Z_SYNC_FLUSH every time you add something to the deflater, because it puts extra data to the output buffer.
&gt; 
&gt; You probably need to call defalte() with Z_NO_FLUSH here, and call it again with Z_FINISH in finish().

Done. (Used Z_SYNC_FLUSH instead Z_FINISH to align on a byte boundary)

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:135
&gt;&gt; +    // Remove 4 octets from the tail as the spec reqested.
&gt; 
&gt; typo: reqested
&gt; spec -&gt; specification (we don&apos;t usually use such abbreviations)
&gt; 
&gt; Do you mean: &quot;as the specification requires&quot;

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.h:43
&gt;&gt; +class DeflateBuffer {
&gt; 
&gt; Is this class necessary? Why don&apos;t you use Vector&lt;char&gt;?

Removed this class and use Vector&lt;char&gt;.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.h:69
&gt;&gt; +    static PassOwnPtr&lt;WebSocketDeflater&gt; create(int windowBits, bool noContextTakeOver);
&gt; 
&gt; We prefer enums over booleans in cases where bare literals (&quot;true&quot; or &quot;false&quot;) would appear without context.

Done.

&gt;&gt; Source/WebKit/chromium/tests/WebSocketDeflaterTest.cpp:41
&gt;&gt; +    const char* compressData = &quot;Hello&quot;;
&gt; 
&gt; nit: Maybe &quot;uncompressedData&quot;, or &quot;inputData&quot;?

Done.

&gt;&gt; Source/WebKit/chromium/tests/WebSocketDeflaterTest.cpp:97
&gt;&gt; +        compressData = reinterpret_cast&lt;char*&gt;(fastMalloc(compressLength));
&gt; 
&gt; Vector&lt;char&gt; should be better than manual memory management with fastMalloc/fastFree.

Done.

Actually, I rewrote the test completely.

&gt;&gt; Source/WebKit/chromium/tests/WebSocketDeflaterTest.cpp:118
&gt;&gt; +    compressData = reinterpret_cast&lt;char*&gt;(fastMalloc(compressLength));
&gt; 
&gt; Ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555149</commentid>
    <comment_count>5</comment_count>
      <attachid>126744</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-13 03:07:44 -0800</bug_when>
    <thetext>Created attachment 126744
Patch(rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556006</commentid>
    <comment_count>6</comment_count>
      <attachid>126744</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-13 23:39:50 -0800</bug_when>
    <thetext>Comment on attachment 126744
Patch(rebased)

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

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:53
&gt; +    if (deflateInit2(&amp;deflater-&gt;m_stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -windowBits, defaultMemLevel, Z_DEFAULT_STRATEGY) == Z_OK)

To me, it seems strange to call defalateInit2() outside member functions (deflateEnd() is called in the destructor, so Init and End look unpaired).

How about adding initialize() member function which calls deflateInit2(), or doing this in the constructor?

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:79
&gt; +    if (!m_buffer.tryReserveCapacity(m_buffer.size() + maxLength))

reserveCapacity() increases the size of the backing buffer, but we should not touch the area beyond data() + size(). 

For details, see std::vector&lt;&gt;&apos;s documentation (which is almost identical to Vector&lt;&gt;).
http://www.cplusplus.com/reference/stl/vector/capacity/

Here you should do:
    size_t oldSize = m_buffer.size();
    // Optional: call tryReserveCapacity to make sure we have enough memory.
    m_buffer.grow(oldSize + maxLength);

And instead of line 90:
    m_buffer.shrink(oldSize + compressedSize);

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:108
&gt; +            if (!m_buffer.tryReserveCapacity(m_buffer.capacity() * 2))

This usage of tryReserveCapacity() is also wrong. See above.

And I&apos;m unsure about the reason of doubling the capacity here.

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:130
&gt; +    if (inflateInit2(&amp;inflater-&gt;m_stream, -windowBits) == Z_OK)

Same as line 53.

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:153
&gt; +    if (!m_buffer.tryReserveCapacity(m_buffer.size() + initialBufferSize))

Same as line 79.

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:197
&gt; +            if (!m_buffer.tryReserveCapacity(m_buffer.capacity() * 2))

Here as well.

&gt; Source/WebCore/websockets/WebSocketDeflater.h:46
&gt; +    enum ShouldTakeOverContext {

For names of enum type, FooBarMode or FooBarType seem conventional. Maybe &quot;ContextTakeOverMode&quot;?

&gt; Source/WebCore/websockets/WebSocketDeflater.h:48
&gt; +        DoNotTakeOverContext = 0,
&gt; +        TakeOverContext = 1

&quot;= 0&quot; and &quot;= 1&quot; aren&apos;t necessary in this case.

&gt; Source/WebCore/websockets/WebSocketDeflater.h:61
&gt; +    WebSocketDeflater(int, ShouldTakeOverContext);

Could you add a parameter name for the first argument? &quot;int&quot; looks ambiguous.

&gt; Source/WebCore/websockets/WebSocketDeflater.h:82
&gt; +    WebSocketInflater(int);

Could you add &quot;explicit&quot; and parameter name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556089</commentid>
    <comment_count>7</comment_count>
      <attachid>126931</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 01:22:44 -0800</bug_when>
    <thetext>Created attachment 126931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556092</commentid>
    <comment_count>8</comment_count>
      <attachid>126744</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 01:24:56 -0800</bug_when>
    <thetext>Comment on attachment 126744
Patch(rebased)

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

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:53
&gt;&gt; +    if (deflateInit2(&amp;deflater-&gt;m_stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -windowBits, defaultMemLevel, Z_DEFAULT_STRATEGY) == Z_OK)
&gt; 
&gt; To me, it seems strange to call defalateInit2() outside member functions (deflateEnd() is called in the destructor, so Init and End look unpaired).
&gt; 
&gt; How about adding initialize() member function which calls deflateInit2(), or doing this in the constructor?

Added initialize() member function.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:79
&gt;&gt; +    if (!m_buffer.tryReserveCapacity(m_buffer.size() + maxLength))
&gt; 
&gt; reserveCapacity() increases the size of the backing buffer, but we should not touch the area beyond data() + size(). 
&gt; 
&gt; For details, see std::vector&lt;&gt;&apos;s documentation (which is almost identical to Vector&lt;&gt;).
&gt; http://www.cplusplus.com/reference/stl/vector/capacity/
&gt; 
&gt; Here you should do:
&gt;     size_t oldSize = m_buffer.size();
&gt;     // Optional: call tryReserveCapacity to make sure we have enough memory.
&gt;     m_buffer.grow(oldSize + maxLength);
&gt; 
&gt; And instead of line 90:
&gt;     m_buffer.shrink(oldSize + compressedSize);

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:108
&gt;&gt; +            if (!m_buffer.tryReserveCapacity(m_buffer.capacity() * 2))
&gt; 
&gt; This usage of tryReserveCapacity() is also wrong. See above.
&gt; 
&gt; And I&apos;m unsure about the reason of doubling the capacity here.

The reason I doubled the capacity was performance issue, but using grow() and shrink() is fast as the previous one so I changed increasing size linearly.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:130
&gt;&gt; +    if (inflateInit2(&amp;inflater-&gt;m_stream, -windowBits) == Z_OK)
&gt; 
&gt; Same as line 53.

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:153
&gt;&gt; +    if (!m_buffer.tryReserveCapacity(m_buffer.size() + initialBufferSize))
&gt; 
&gt; Same as line 79.

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:197
&gt;&gt; +            if (!m_buffer.tryReserveCapacity(m_buffer.capacity() * 2))
&gt; 
&gt; Here as well.

Done

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.h:46
&gt;&gt; +    enum ShouldTakeOverContext {
&gt; 
&gt; For names of enum type, FooBarMode or FooBarType seem conventional. Maybe &quot;ContextTakeOverMode&quot;?

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.h:48
&gt;&gt; +        TakeOverContext = 1
&gt; 
&gt; &quot;= 0&quot; and &quot;= 1&quot; aren&apos;t necessary in this case.

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.h:61
&gt;&gt; +    WebSocketDeflater(int, ShouldTakeOverContext);
&gt; 
&gt; Could you add a parameter name for the first argument? &quot;int&quot; looks ambiguous.

Done

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.h:82
&gt;&gt; +    WebSocketInflater(int);
&gt; 
&gt; Could you add &quot;explicit&quot; and parameter name?

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556119</commentid>
    <comment_count>9</comment_count>
      <attachid>126931</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-14 01:52:03 -0800</bug_when>
    <thetext>Comment on attachment 126931
Patch

Looks OK. [Note: I don&apos;t have r+ privilege.]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556122</commentid>
    <comment_count>10</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 01:53:44 -0800</bug_when>
    <thetext>Kent-san, Alexey,

Could you review the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556140</commentid>
    <comment_count>11</comment_count>
      <attachid>126931</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-14 02:26:29 -0800</bug_when>
    <thetext>Comment on attachment 126931
Patch

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

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:59
&gt; +    ASSERT(m_windowBits &gt;= 8 &amp;&amp; m_windowBits &lt;= 15);

Please split this into two ASSERTs.

ASSERT(m_windowBits &gt;= 8);
ASSERT(m_windowBits &lt;= 15);

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:86
&gt; +    m_stream.next_in = reinterpret_cast&lt;Bytef*&gt;(const_cast&lt;char*&gt;(data));
&gt; +    m_stream.avail_in = length;
&gt; +    m_stream.next_out = reinterpret_cast&lt;Bytef*&gt;(m_buffer.data() + writePosition);
&gt; +    m_stream.avail_out = maxLength;

Repeating reinterpret_cast&lt;&gt; and const_cast&lt;&gt; is not good.
Please add a helper function like setStreamParameters(data, length, m_buffer.data() + writePosition, maxLength);

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:104
&gt; +        m_stream.next_in = reinterpret_cast&lt;Bytef*&gt;(0);
&gt; +        m_stream.avail_in = 0;
&gt; +        m_stream.next_out = reinterpret_cast&lt;Bytef*&gt;(m_buffer.data() + writePosition);
&gt; +        m_stream.avail_out = availableCapacity;

ditto.

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:163
&gt; +        m_stream.next_in = reinterpret_cast&lt;Bytef*&gt;(const_cast&lt;char*&gt;(data) + consumedSoFar);
&gt; +        m_stream.avail_in = remainingLength;
&gt; +        m_stream.next_out = reinterpret_cast&lt;Bytef*&gt;(m_buffer.data() + writePosition);
&gt; +        m_stream.avail_out = availableCapacity;

ditto.

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:191
&gt; +        m_stream.next_in = strippedFields + consumedSoFar;
&gt; +        m_stream.avail_in = remainingLength;
&gt; +        m_stream.next_out = reinterpret_cast&lt;Bytef*&gt;(m_buffer.data() + writePosition);
&gt; +        m_stream.avail_out = availableCapacity;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556191</commentid>
    <comment_count>12</comment_count>
      <attachid>126952</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 03:51:24 -0800</bug_when>
    <thetext>Created attachment 126952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556192</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 03:54:33 -0800</bug_when>
    <thetext>Attachment 126952 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
From git://git.webkit.org/WebKit
   512e439..3821275  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 107699 = 512e43965f3c85a210634c39adbabda26e7d72c0
r107700 = 14993e0b953560e2aabeb23e631330550529886e
r107701 = 934bc755aada5227698952084e81a09172d65db2
r107702 = 3821275ca36d73082abe77a514141ea2d24b147a
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Applying: [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets
Using index info to reconstruct a base tree...
&lt;stdin&gt;:1578: trailing whitespace.
        
&lt;stdin&gt;:1647: trailing whitespace.
    
&lt;stdin&gt;:1657: trailing whitespace.
    
&lt;stdin&gt;:1672: trailing whitespace.
        return 0;        
&lt;stdin&gt;:1674: trailing whitespace.
    
warning: squelched 7 whitespace errors
warning: 12 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 168768 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556194</commentid>
    <comment_count>14</comment_count>
      <attachid>126931</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 03:55:35 -0800</bug_when>
    <thetext>Comment on attachment 126931
Patch

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

Thank you for review. Revised the patch.

Looks like qt and efl doesn&apos;t depend on zlib. I removed WebSocketDeflater.(cpp|h) from CMakefileList.txt and Target.pri for now.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:59
&gt;&gt; +    ASSERT(m_windowBits &gt;= 8 &amp;&amp; m_windowBits &lt;= 15);
&gt; 
&gt; Please split this into two ASSERTs.
&gt; 
&gt; ASSERT(m_windowBits &gt;= 8);
&gt; ASSERT(m_windowBits &lt;= 15);

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:86
&gt;&gt; +    m_stream.avail_out = maxLength;
&gt; 
&gt; Repeating reinterpret_cast&lt;&gt; and const_cast&lt;&gt; is not good.
&gt; Please add a helper function like setStreamParameters(data, length, m_buffer.data() + writePosition, maxLength);

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:104
&gt;&gt; +        m_stream.avail_out = availableCapacity;
&gt; 
&gt; ditto.

Done.

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:163
&gt;&gt; +        m_stream.avail_out = availableCapacity;
&gt; 
&gt; ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556650</commentid>
    <comment_count>15</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-14 15:02:34 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Looks like qt and efl doesn&apos;t depend on zlib. I removed WebSocketDeflater.(cpp|h) from CMakefileList.txt and Target.pri for now.

How will you resolve this issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556719</commentid>
    <comment_count>16</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 15:52:26 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; Looks like qt and efl doesn&apos;t depend on zlib. I removed WebSocketDeflater.(cpp|h) from CMakefileList.txt and Target.pri for now.
&gt; 
&gt; How will you resolve this issue?

I&apos;ll add a compile flag like USE(ZLIB) and wrap zlib dependent code in following patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556729</commentid>
    <comment_count>17</comment_count>
      <attachid>126952</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-14 16:00:04 -0800</bug_when>
    <thetext>Comment on attachment 126952
Patch

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

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:178
&gt; +    static const char strippedFields[] = {0x00, 0x00, 0xff, 0xff};

Windows EWS is red.

3&gt;..\websockets\WebSocketDeflater.cpp(178) : error C2220: warning treated as error - no &apos;object&apos; file generated
3&gt;..\websockets\WebSocketDeflater.cpp(178) : warning C4309: &apos;initializing&apos; : truncation of constant value
3&gt;..\websockets\WebSocketDeflater.cpp(178) : warning C4309: &apos;initializing&apos; : truncation of constant value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556753</commentid>
    <comment_count>18</comment_count>
      <attachid>127075</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 16:33:08 -0800</bug_when>
    <thetext>Created attachment 127075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556757</commentid>
    <comment_count>19</comment_count>
      <attachid>127075</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-14 16:35:12 -0800</bug_when>
    <thetext>Comment on attachment 127075
Patch

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

&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:179
&gt; +    // Use Bytef[] instead of char[] to avoid &quot;truncation of constant value&quot; warning of MSVC.
&gt; +    static const Bytef strippedFields[] = {0x00, 0x00, 0xff, 0xff};

static const char strippedFields[4] = &quot;\0\0\xff\xff&quot;; is enough?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556763</commentid>
    <comment_count>20</comment_count>
      <attachid>127078</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 16:41:04 -0800</bug_when>
    <thetext>Created attachment 127078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556765</commentid>
    <comment_count>21</comment_count>
      <attachid>127075</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 16:42:17 -0800</bug_when>
    <thetext>Comment on attachment 127075
Patch

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

&gt;&gt; Source/WebCore/websockets/WebSocketDeflater.cpp:179
&gt;&gt; +    static const Bytef strippedFields[] = {0x00, 0x00, 0xff, 0xff};
&gt; 
&gt; static const char strippedFields[4] = &quot;\0\0\xff\xff&quot;; is enough?

It will be the best. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556804</commentid>
    <comment_count>22</comment_count>
      <attachid>127078</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-14 17:25:43 -0800</bug_when>
    <thetext>Comment on attachment 127078
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556811</commentid>
    <comment_count>23</comment_count>
      <attachid>127078</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 17:33:47 -0800</bug_when>
    <thetext>Comment on attachment 127078
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556835</commentid>
    <comment_count>24</comment_count>
      <attachid>127078</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 18:03:10 -0800</bug_when>
    <thetext>Comment on attachment 127078
Patch

Clearing flags on attachment: 127078

Committed r107766: &lt;http://trac.webkit.org/changeset/107766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556836</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 18:03:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557060</commentid>
    <comment_count>26</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-15 01:49:52 -0800</bug_when>
    <thetext>This patch was reverted:
http://trac.webkit.org/changeset/107778

I&apos;ll upload revised patch to fix the build failure of Chromium Win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557067</commentid>
    <comment_count>27</comment_count>
      <attachid>127139</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-15 02:05:37 -0800</bug_when>
    <thetext>Created attachment 127139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557068</commentid>
    <comment_count>28</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-15 02:06:45 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=127139) [details]
&gt; Patch

I confirmed this patch built successfully on win_rel trybot.
http://build.chromium.org/p/tryserver.chromium/builders/win_rel/builds/1809</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557093</commentid>
    <comment_count>29</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-15 02:59:58 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; Created an attachment (id=127139) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; I confirmed this patch built successfully on win_rel trybot.
&gt; http://build.chromium.org/p/tryserver.chromium/builders/win_rel/builds/1809

Did you confirm WebKit without Chromium build for Chromium/Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557139</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 04:08:30 -0800</bug_when>
    <thetext>Attachment 127139 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
Index mismatch: 0dfd183742a71cb5de5dadc3ae177fc72b63a194 != 9cdcda984def14b8bf8a32b6da6784c8a6ef7b3a
rereading 8567f8d3c2539a28a496edaf1048483e973975c2
	M	LayoutTests/fast/forms/radio-nested-labels.html
	M	LayoutTests/ChangeLog
107798 = 3671b2d23de7ade4cb1d1e78a3f6f7673db6a6c9 already exists! Why are we refetching it?
 at /usr/lib/git-core/git-svn line 5210

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557176</commentid>
    <comment_count>31</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-15 05:18:10 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; (In reply to comment #27)
&gt; &gt; &gt; Created an attachment (id=127139) [details] [details] [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I confirmed this patch built successfully on win_rel trybot.
&gt; &gt; http://build.chromium.org/p/tryserver.chromium/builders/win_rel/builds/1809
&gt; 
&gt; Did you confirm WebKit without Chromium build for Chromium/Windows?

No. I&apos;ll check it next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560056</commentid>
    <comment_count>32</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-19 23:26:46 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; &gt; Did you confirm WebKit without Chromium build for Chromium/Windows?
&gt; 
&gt; No. I&apos;ll check it next week.

I confirmed WebKit Chromium/Win port build (DumpRenderTree/webkit_unit_tests) on my Win 7 machine (I use MSVS2010 because I couldn&apos;t install older version of MSVS correctly..).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560057</commentid>
    <comment_count>33</comment_count>
      <attachid>127139</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-19 23:28:29 -0800</bug_when>
    <thetext>Comment on attachment 127139
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560058</commentid>
    <comment_count>34</comment_count>
      <attachid>127139</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-19 23:34:39 -0800</bug_when>
    <thetext>Comment on attachment 127139
Patch

Rejecting attachment 127139 from commit-queue.

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

Last 500 characters of output:
atching file Source/WebCore/websockets/WebSocketDeflater.cpp
patching file Source/WebCore/websockets/WebSocketDeflater.h
patching file Source/WebKit/chromium/WebKit.gypi
Hunk #1 succeeded at 118 with fuzz 1.
patching file Source/WebKit/chromium/WebKitUnitTests.gyp
patching file Source/WebKit/chromium/tests/WebSocketDeflaterTest.cpp

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

Full output: http://queues.webkit.org/results/11546406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560064</commentid>
    <comment_count>35</comment_count>
      <attachid>127770</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-19 23:46:24 -0800</bug_when>
    <thetext>Created attachment 127770
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560092</commentid>
    <comment_count>36</comment_count>
      <attachid>127770</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 00:59:59 -0800</bug_when>
    <thetext>Comment on attachment 127770
Patch for landing

Clearing flags on attachment: 127770

Committed r108221: &lt;http://trac.webkit.org/changeset/108221&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560093</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 01:00:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126702</attachid>
            <date>2012-02-12 18:40:40 -0800</date>
            <delta_ts>2012-02-13 02:59:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78449-20120213114038.patch</filename>
            <type>text/plain</type>
            <size>30328</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNmODkyMGNmNTVmOTIz
YmI0MjFkZDBiNmFmNTczMjU1MmVmZDFmMy4uZWJhODcwOTE0NzFkODU0ODc4ZmJiYTg5OWVkZGY2
Y2ExNzUwYjc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAyLTEyICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZGVmbGF0ZXIvaW5mbGF0ZXIgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgV2ViU29ja2V0RGVm
bGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2xhc3NlcyB3aGljaCB3cmFwIHpsaWIKKyAgICAgICAg
ZnVuY3Rpb25zLiBUaGVzZSBjbGFzc2VzIGFyZSBub3QgdXNlZCB5ZXQsIGJ1dCB3aWxsIGJlIHVz
ZWQgZm9yCisgICAgICAgIHN1cHBvcnRpbmcgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9taXVtIHBvcnQuIEJlaGF2aW9yIGlzIHVuY2hhbmdl
ZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBXZWJTb2NrZXREZWZsYXRlci4o
Y3BwfGgpLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAq
IFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZsYXRlQnVmZmVyOjp+RGVmbGF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpEZWZsYXRlQnVmZmVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZmxhdGVCdWZmZXI6OmVuc3VyZUNhcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVC
dWZmZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxh
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVm
bGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmFkZEJ5dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpmaW5pc2gpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEluZmxhdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5m
bGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldElu
ZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
SW5mbGF0ZXI6OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVy
OjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OnJlc2V0KToK
KyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChEZWZsYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlZmxhdGVCdWZmZXI6OkRlZmxhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVmbGF0
ZUJ1ZmZlcjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZsYXRlQnVmZmVyOjpzaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlZmxhdGVCdWZmZXI6OmNhcGFjaXR5KToKKyAgICAgICAgKFdl
YlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpk
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpzaXplKToKKyAgICAg
ICAgKFdlYlNvY2tldEluZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxh
dGVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpzaXplKToK
KwogMjAxMi0wMi0xMiAgSm9lIFRob21hcyAgPGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CiAKICAg
ICAgICAgQWRkIHRvVGV4dCBhbmQgaXNUZXh0Tm9kZSBoZWxwZXJzIGluIFRleHQgY2xhc3MuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDI3OGUyMDQ1YThkNWQzMWM1YTc0ODhhNThhM2E4
MDE1ZTM4YmU2YjQuLmFkZjRlYTg0NzIyZmVmZjM4NDYzZDIyODhmZDcxNjY5YTVlZjZiZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDItMTIgIEtl
bmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2Nr
ZXRdIEFkZCBkZWZsYXRlci9pbmZsYXRlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgdGVzdHMgd2hp
Y2ggZW5zdXJlIFdlYlNvY2tldERlZmxhdGVyL1dlYlNvY2tldEluZmxhdGVyIGNhbgorICAgICAg
ICBjb21wcmVzcy9kZWNvbXByZXNzIGRhdGEgY29ycmVjdGx5LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICog
dGVzdHMvV2ViU29ja2V0RGVmbGF0ZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTAyLTEwICBEYXZpZCBHcm9nYW4g
IDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBEaXNhYmxlIEluZGV4ZWREQiBwZXJt
aXNzaW9ucyBjaGVjayBmcm9tIHNoYXJlZCB3b3JrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDhjMzE1ZDYyNzMxNzgwNzAyOWY1MzQ4MGI1NzA1NmQxYzNlZjEyM2IuLmVlYmZkYzNhMmU2M2Ew
NTUyYTAwYjUyNmNhODQ4YjJkNGYyNjlkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDM5
LDYgKzIwMzksNyBAQCBJRiAoRU5BQkxFX1dFQl9TT0NLRVRTKQogICAgICAgICB3ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKICAgICAgICAgd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKICAgICAgICAg
d2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAogICAgICAgICB3ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
MjEwODQ2MmUxY2Y1YTVkNGZhM2EzMzYxODY5ODZjNGI2NGEwZDM2NS4uY2Q4MjYwNzQ4YWRkZGU5
NzFhNDZhMjhiNTdlYzczMWYyOGVlNjBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC00MzA2LDYgKzQzMDYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hl
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDE0M2Y3OGNlZDcwY2FmOWU1NWFmMjFiMGZjMjUyNzcz
NTE3NTA5MjQuLjg0ZDA3MzZiNjRmMTY4Y2I0YjE5MDZlOTIyMjg5Y2Y3OTI4NjAzYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQpAQCAtMzY1OCw2ICszNjU4LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dF
Ql9TT0NLRVRTPTEpIHsKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCiAgICAgICAg
IHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsQ2xpZW50LmggXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVyLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
aCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggXAog
ICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKQEAgLTM2NjgsNiArMzY2
OSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgU09V
UkNFUyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAgICAgICAgIHdl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVyLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5j
cHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA1ZmU4MDE4M2ZiMzI0NjQ1ZWFjMzlkNjY5Y2RhYjk0MmVjMjRj
NmFmLi4wODdmNWFkMzI3ZWEwNmRhYTM2ZGJkZmFmZWY4OTQzZmE4OTdiOThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC00NzkzLDYgKzQ3OTMsOCBAQAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQu
aCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAnLAorICAg
ICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCcsCiAgICAgICAgICAgICAn
d2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCcsCiAgICAgICAgICAg
ICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgnLAogICAgICAgICAg
ICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwYTMxMzEyZDc3MDdh
Y2NjZTE3NjgwZGQ2MDgzOWQ2YmM3ZDBjOTI2Li5hMmY2ZWU3ZTdhMjBjZTYwMWNmYzI5YTU5MjA0
N2MxN2JjYmQwOGRiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagpAQCAtNzI5NjIsNiArNzI5NjIsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXREZWZsYXRlci5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdl
YnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTk2MTc5M2FiMjgwN2VjMmQ4ZjY1
NzZjY2U0YzA5MzdjYjRkZTgzZC4uNjhiNzFkMGEwMjg3NGRlMDA2Y2JhZGFiNjhhODZjODU2ZmY3
ZmEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM4Miw2ICsxMzgyLDggQEAKIAkJNEFEMDE3M0MxMjdFODI4NjAwMTUwMzVG
IC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1
dEVsZW1lbnQuY3BwICovOyB9OwogCQk0QUQwMTczRDEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1M
T3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEFEMDE3M0IxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuaCAq
LzsgfTsKIAkJNEFERTI1RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5o
ICovOyB9OworCQk0QUUwMkFCRDE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFFMDJB
QkIxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCAqLzsgfTsKKwkJNEFF
MDJBQkUxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUUwMkFCQzE0RThBOUQyMDBCQzNC
QTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCAqLzsgfTsKIAkJNEFGMUFEM0UxM0ZEMjNBNDAwQUE5
NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUYxQUQzQzEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnRE
aXNwYXRjaE1lZGlhdG9yLmNwcCAqLzsgfTsKIAkJNEFGMUFEM0YxM0ZEMjNBNDAwQUE5NTkwIC8q
IEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEFGMUFEM0QxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hN
ZWRpYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTRCMjcwOEM3MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjI3MDhDNTBBRjE5RUU0MDA2NTEy
N0YgLyogUGFzdGVib2FyZC5oICovOyB9OwpAQCAtODIyNiw2ICs4MjI4LDggQEAKIAkJNEFEMDE3
M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hU
TUxPdXRwdXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRN
TE91dHB1dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFERTI1Rjkx
NEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEFFMDJBQkIxNEU4QTlEMjAwQkMzQkE3IC8q
IFdlYlNvY2tldERlZmxhdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlNvY2tldERlZmxhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NEFFMDJBQkMxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldERlZmxhdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRBRjFBRDNDMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3Bh
dGNoTWVkaWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZl
bnREaXNwYXRjaE1lZGlhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFG
MUFEM0QxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3Rl
Ym9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3NTQsNyArMTQ3NTgsNiBAQAogCQk1MThB
MzRCRDEwMjZDODMxMDAxQjY4OTYgLyogd2Vic29ja2V0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdl
YlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICovLAogCQkJCTUxRkI1NEY0MTEzRTM2NDIwMDgy
MTE3NiAvKiBDbG9zZUV2ZW50LmggKi8sCiAJCQkJNTFGQjU0RjYxMTNFMzY1OTAwODIxMTc2IC8q
IENsb3NlRXZlbnQuaWRsICovLAogCQkJCTUxMTIyNDcxMTBDRkI4QzYwMDgwOTlENyAvKiBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCkBAIC0xNDc2Nyw4ICsxNDc3MCwxMSBAQAog
CQkJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywK
IAkJCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovLAog
CQkJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmgg
Ki8sCisJCQkJNEFFMDJBQkIxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNw
cCAqLywKKwkJCQk0QUUwMkFCQzE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIu
aCAqLywKIAkJCQk0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJNEE5NTdGMDQxNEUyNDExMDAwNDlEQkZCIC8qIFdlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLywKKwkJCQk0QURFMjVGOTE0RTNCQjRDMDA0QzIy
MTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCiAJCQkJNTFBQkFFNDIxMDQz
QUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi8sCiAJCQkJNTFBQkFFNDMx
MDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICovLAogCQkJCTc2MzdDNTQw
MTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLywKQEAg
LTI0MTczLDYgKzI0MTc5LDcgQEAKIAkJCQk3QTU0ODgxNzE0RTQzMkExMDA2QUUwNUEgLyogRE9N
UGF0Y2hTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTk1N0YwNzE0RTI0MTMwMDA0OURC
RkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NEFERTI1RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNEFFMDJBQkUxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tl
dERlZmxhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MTEyLDYgKzI3MTE5LDcgQEAKIAkJCQlD
REFBOEQwQTE0RDcxQjJFMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0E1NDg4MTgxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0QTk1N0YwNjE0RTI0MTJBMDA0OURCRkIgLyogV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0QUUwMkFCRDE0RThB
OUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYwYWJhNzdiNWFlNmNjZDkyNDViZjM4YmYzYjgzMjcyNGFkZTAzYmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcApA
QCAtMCwwICsxLDIzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXREZWZsYXRlci5oIgorCisjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBpbnQgZGVmYXVsdE1lbUxldmVs
ID0gMTsKK3N0YXRpYyBjb25zdCBzaXplX3QgYnVmZmVyU2l6ZUZvckluZmxhdGUgPSA0MDk2Owor
CitEZWZsYXRlQnVmZmVyOjp+RGVmbGF0ZUJ1ZmZlcigpCit7CisgICAgY2xlYXIoKTsKK30KKwor
dm9pZCBEZWZsYXRlQnVmZmVyOjpzZXRTaXplKHNpemVfdCBzaXplKQoreworICAgIEFTU0VSVCht
X2NhcGFjaXR5ID49IHNpemUpOworICAgIG1fc2l6ZSA9IHNpemU7Cit9CisKK2Jvb2wgRGVmbGF0
ZUJ1ZmZlcjo6ZW5zdXJlQ2FwYWNpdHkoc2l6ZV90IGNhcGFjaXR5KQoreworICAgIGlmIChjYXBh
Y2l0eSA8PSBtX2NhcGFjaXR5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobV9jYXBh
Y2l0eSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLSBjYXBhY2l0eSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2hhciogbmV3RGF0YSA9IDA7CisgICAgaWYgKCFt
X2RhdGEpIHsKKyAgICAgICAgQVNTRVJUKCFtX3NpemUpOworICAgICAgICBpZiAoIXRyeUZhc3RN
YWxsb2MoY2FwYWNpdHkpLmdldFZhbHVlKG5ld0RhdGEpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghdHJ5RmFzdFJlYWxsb2MobV9kYXRhLCBj
YXBhY2l0eSkuZ2V0VmFsdWUobmV3RGF0YSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIG1fY2FwYWNpdHkgPSBjYXBhY2l0eTsKKyAgICBtX2RhdGEgPSBuZXdEYXRhOwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERlZmxhdGVCdWZmZXI6OmNsZWFyKCkKK3sKKyAg
ICBpZiAobV9kYXRhKQorICAgICAgICBmYXN0RnJlZShtX2RhdGEpOworICAgIG1fZGF0YSA9IDA7
CisgICAgbV9zaXplID0gMDsKKyAgICBtX2NhcGFjaXR5ID0gMDsKK30KKworUGFzc093blB0cjxX
ZWJTb2NrZXREZWZsYXRlcj4gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZShpbnQgd2luZG93Qml0
cywgYm9vbCBub0NvbnRleHRUYWtlT3ZlcikKK3sKKyAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0
ZXI+IGRlZmxhdGVyID0gYWRvcHRQdHIobmV3IFdlYlNvY2tldERlZmxhdGVyKHdpbmRvd0JpdHMs
IG5vQ29udGV4dFRha2VPdmVyKSk7CisgICAgaWYgKGRlZmxhdGVJbml0MigmZGVmbGF0ZXItPm1f
c3RyZWFtLCBaX0RFRkFVTFRfQ09NUFJFU1NJT04sIFpfREVGTEFURUQsIC13aW5kb3dCaXRzLCBk
ZWZhdWx0TWVtTGV2ZWwsIFpfREVGQVVMVF9TVFJBVEVHWSkgPT0gWl9PSykKKyAgICAgICAgcmV0
dXJuIGRlZmxhdGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworV2ViU29j
a2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKGludCB3aW5kb3dCaXRzLCBib29sIG5vQ29u
dGV4dFRha2VPdmVyKQorICAgIDogbV93aW5kb3dCaXRzKHdpbmRvd0JpdHMpCisgICAgLCBtX25v
Q29udGV4dFRha2VPdmVyKG5vQ29udGV4dFRha2VPdmVyKQoreworICAgIEFTU0VSVChtX3dpbmRv
d0JpdHMgPj0gOCAmJiBtX3dpbmRvd0JpdHMgPD0gMTUpOworICAgIG1lbXNldCgmbV9zdHJlYW0s
IDAsIHNpemVvZih6X3N0cmVhbSkpOworfQorCitXZWJTb2NrZXREZWZsYXRlcjo6fldlYlNvY2tl
dERlZmxhdGVyKCkKK3sKKyAgICBkZWZsYXRlRW5kKCZtX3N0cmVhbSk7Cit9CisKK2Jvb2wgV2Vi
U29ja2V0RGVmbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
Cit7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemVf
dCBtYXhMZW5ndGggPSBkZWZsYXRlQm91bmQoJm1fc3RyZWFtLCBsZW5ndGgpOworICAgIGlmICgh
bV9idWZmZXIuZW5zdXJlQ2FwYWNpdHkobV9idWZmZXIuc2l6ZSgpICsgbWF4TGVuZ3RoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fc3RyZWFtLm5leHRfaW4gPSByZWludGVycHJldF9j
YXN0PEJ5dGVmKj4oY29uc3RfY2FzdDxjaGFyKj4oZGF0YSkpOworICAgIG1fc3RyZWFtLmF2YWls
X2luID0gbGVuZ3RoOworICAgIG1fc3RyZWFtLm5leHRfb3V0ID0gcmVpbnRlcnByZXRfY2FzdDxC
eXRlZio+KG1fYnVmZmVyLmRhdGEoKSk7CisgICAgbV9zdHJlYW0uYXZhaWxfb3V0ID0gbWF4TGVu
Z3RoOworICAgIGludCByZXN1bHQgPSBkZWZsYXRlKCZtX3N0cmVhbSwgWl9TWU5DX0ZMVVNIKTsK
KyAgICBpZiAocmVzdWx0ICE9IFpfT0sgfHwgbV9zdHJlYW0uYXZhaWxfaW4gPiAwKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgY29tcHJlc3NlZFNpemUgPSBtYXhMZW5ndGgg
LSBtX3N0cmVhbS5hdmFpbF9vdXQ7CisgICAgbV9idWZmZXIuc2V0U2l6ZShtX2J1ZmZlci5zaXpl
KCkgKyBjb21wcmVzc2VkU2l6ZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJT
b2NrZXREZWZsYXRlcjo6ZmluaXNoKCkKK3sKKyAgICAvLyBSZW1vdmUgNCBvY3RldHMgZnJvbSB0
aGUgdGFpbCBhcyB0aGUgc3BlYyByZXFlc3RlZC4KKyAgICBpZiAobV9idWZmZXIuc2l6ZSgpIDw9
IDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2J1ZmZlci5zZXRTaXplKG1fYnVmZmVy
LnNpemUoKSAtIDQpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlNvY2tldERlZmxh
dGVyOjpyZXNldCgpCit7CisgICAgbV9idWZmZXIuY2xlYXIoKTsKKyAgICBpZiAobV9ub0NvbnRl
eHRUYWtlT3ZlcikKKyAgICAgICAgZGVmbGF0ZVJlc2V0KCZtX3N0cmVhbSk7Cit9CisKK1Bhc3NP
d25QdHI8V2ViU29ja2V0SW5mbGF0ZXI+IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoKQorewor
ICAgIHN0YXRpYyBjb25zdCBpbnQgd2luZG93Qml0cyA9IDE1OworICAgIE93blB0cjxXZWJTb2Nr
ZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBhZG9wdFB0cihuZXcgV2ViU29ja2V0SW5mbGF0ZXIpOwor
ICAgIGlmIChpbmZsYXRlSW5pdDIoJmluZmxhdGVyLT5tX3N0cmVhbSwgLXdpbmRvd0JpdHMpID09
IFpfT0spCisgICAgICAgIHJldHVybiBpbmZsYXRlci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK1dlYlNvY2tldEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcigpCit7Cisg
ICAgbWVtc2V0KCZtX3N0cmVhbSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7Cit9CisKK1dlYlNvY2tl
dEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIoKQoreworICAgIGluZmxhdGVFbmQoJm1fc3Ry
ZWFtKTsKK30KKworYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFtX2J1ZmZlci5lbnN1cmVDYXBhY2l0eShtX2J1ZmZlci5zaXpl
KCkgKyBidWZmZXJTaXplRm9ySW5mbGF0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHNpemVfdCBjb25zdW1lZFNvRmFyID0gMDsKKyAgICB3aGlsZSAoY29uc3VtZWRTb0ZhciA8IGxl
bmd0aCkgeworICAgICAgICBzaXplX3QgYXZhaWxhYmxlQ2FwYWNpdHkgPSBtX2J1ZmZlci5jYXBh
Y2l0eSgpIC0gbV9idWZmZXIuc2l6ZSgpOworICAgICAgICBzaXplX3QgcmVtYWluaW5nTGVuZ3Ro
ID0gbGVuZ3RoIC0gY29uc3VtZWRTb0ZhcjsKKyAgICAgICAgbV9zdHJlYW0ubmV4dF9pbiA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihjb25zdF9jYXN0PGNoYXIqPihkYXRhKSArIGNvbnN1bWVk
U29GYXIpOworICAgICAgICBtX3N0cmVhbS5hdmFpbF9pbiA9IHJlbWFpbmluZ0xlbmd0aDsKKyAg
ICAgICAgbV9zdHJlYW0ubmV4dF9vdXQgPSByZWludGVycHJldF9jYXN0PEJ5dGVmKj4obV9idWZm
ZXIuZGF0YSgpICsgbV9idWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgbV9zdHJlYW0uYXZhaWxfb3V0
ID0gYXZhaWxhYmxlQ2FwYWNpdHk7CisgICAgICAgIGludCByZXN1bHQgPSBpbmZsYXRlKCZtX3N0
cmVhbSwgWl9OT19GTFVTSCk7CisgICAgICAgIGNvbnN1bWVkU29GYXIgKz0gcmVtYWluaW5nTGVu
Z3RoIC0gbV9zdHJlYW0uYXZhaWxfaW47CisgICAgICAgIG1fYnVmZmVyLnNldFNpemUobV9idWZm
ZXIuc2l6ZSgpICsgYXZhaWxhYmxlQ2FwYWNpdHkgLSBtX3N0cmVhbS5hdmFpbF9vdXQpOworICAg
ICAgICBpZiAocmVzdWx0ID09IFpfQlVGX0VSUk9SKSB7CisgICAgICAgICAgICBpZiAoIW1fYnVm
ZmVyLmVuc3VyZUNhcGFjaXR5KG1fYnVmZmVyLmNhcGFjaXR5KCkgKyBidWZmZXJTaXplRm9ySW5m
bGF0ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlc3VsdCAhPSBaX09LKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBU1NFUlQoY29uc3VtZWRTb0ZhciA9PSBsZW5ndGgp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlNvY2tldEluZmxhdGVyOjpmaW5pc2go
KQoreworICAgIHN0YXRpYyBCeXRlZiBzdHJpcHBlZEZpZWxkc1tdID0gezB4MDAsIDB4MDAsIDB4
ZmYsIDB4ZmZ9OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc3RyaXBwZWRMZW5ndGggPSA0Owor
CisgICAgLy8gQXBwZW5kcyA0IG9jdGVzdHMgb2YgMHgwMCAweDAwIDB4ZmYgMHhmZgorICAgIHNp
emVfdCBjb25zdW1lZFNvRmFyID0gMDsKKyAgICB3aGlsZSAoY29uc3VtZWRTb0ZhciA8IHN0cmlw
cGVkTGVuZ3RoKSB7CisgICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9IG1fYnVmZmVy
LmNhcGFjaXR5KCkgLSBtX2J1ZmZlci5zaXplKCk7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdM
ZW5ndGggPSBzdHJpcHBlZExlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAgICAgIG1fc3RyZWFt
Lm5leHRfaW4gPSBzdHJpcHBlZEZpZWxkcyArIGNvbnN1bWVkU29GYXI7CisgICAgICAgIG1fc3Ry
ZWFtLmF2YWlsX2luID0gcmVtYWluaW5nTGVuZ3RoOworICAgICAgICBtX3N0cmVhbS5uZXh0X291
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihtX2J1ZmZlci5kYXRhKCkgKyBtX2J1ZmZlci5z
aXplKCkpOworICAgICAgICBtX3N0cmVhbS5hdmFpbF9vdXQgPSBhdmFpbGFibGVDYXBhY2l0eTsK
KyAgICAgICAgaW50IHJlc3VsdCA9IGluZmxhdGUoJm1fc3RyZWFtLCBaX0ZJTklTSCk7CisgICAg
ICAgIGNvbnN1bWVkU29GYXIgKz0gcmVtYWluaW5nTGVuZ3RoIC0gbV9zdHJlYW0uYXZhaWxfaW47
CisgICAgICAgIG1fYnVmZmVyLnNldFNpemUobV9idWZmZXIuc2l6ZSgpICsgYXZhaWxhYmxlQ2Fw
YWNpdHkgLSBtX3N0cmVhbS5hdmFpbF9vdXQpOworICAgICAgICBpZiAocmVzdWx0ID09IFpfQlVG
X0VSUk9SKSB7CisgICAgICAgICAgICBpZiAoIW1fYnVmZmVyLmVuc3VyZUNhcGFjaXR5KG1fYnVm
ZmVyLmNhcGFjaXR5KCkgKyBidWZmZXJTaXplRm9ySW5mbGF0ZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHJlc3VsdCAhPSBaX09LICYmIHJlc3VsdCAhPSBaX1NUUkVBTV9FTkQpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFTU0VSVChjb25zdW1lZFNvRmFyID09IHN0cmlw
cGVkTGVuZ3RoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlNvY2tldEluZmxh
dGVyOjpyZXNldCgpCit7CisgICAgbV9idWZmZXIuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzZjMxODUx
OTU2YzQ2ODg1ZGNmNTEwNTVhMTEyZmY0MzU4OTY1MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmgKQEAgLTAsMCArMSwxMTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJTb2NrZXREZWZsYXRlcl9oCisjZGVmaW5lIFdlYlNvY2tldERlZmxhdGVy
X2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorI2luY2x1ZGUgPHpsaWIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZWZs
YXRlQnVmZmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZWZsYXRlQnVmZmVyKTsKK3B1
YmxpYzoKKyAgICBEZWZsYXRlQnVmZmVyKCkKKyAgICAgICAgOiBtX2RhdGEoMCkKKyAgICAgICAg
LCBtX3NpemUoMCkKKyAgICAgICAgLCBtX2NhcGFjaXR5KDApCisgICAgeworICAgIH0KKyAgICAg
fkRlZmxhdGVCdWZmZXIoKTsKKworICAgIGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0K
KyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHZvaWQgc2V0
U2l6ZShzaXplX3QpOworICAgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fw
YWNpdHk7IH0KKyAgICBib29sIGVuc3VyZUNhcGFjaXR5KHNpemVfdCk7CisgICAgdm9pZCBjbGVh
cigpOworCitwcml2YXRlOgorICAgIGNoYXIqIG1fZGF0YTsKKyAgICBzaXplX3QgbV9zaXplOwor
ICAgIHNpemVfdCBtX2NhcGFjaXR5OworfTsKKworY2xhc3MgV2ViU29ja2V0RGVmbGF0ZXIgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBjcmVhdGUo
aW50IHdpbmRvd0JpdHMsIGJvb2wgbm9Db250ZXh0VGFrZU92ZXIpOworCisgICAgdmlydHVhbCB+
V2ViU29ja2V0RGVmbGF0ZXIoKTsKKworICAgIGJvb2wgYWRkQnl0ZXMoY29uc3QgY2hhciosIHNp
emVfdCk7CisgICAgYm9vbCBmaW5pc2goKTsKKyAgICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1
cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5zaXplKCk7IH0KKyAgICB2b2lkIHJlc2V0KCk7CisKK3ByaXZhdGU6CisgICAgV2Vi
U29ja2V0RGVmbGF0ZXIoaW50IHdpbmRvd0JpdHMsIGJvb2wgbm9Db250ZXh0VGFrZU92ZXIpOwor
CisgICAgaW50IG1fd2luZG93Qml0czsKKyAgICBib29sIG1fbm9Db250ZXh0VGFrZU92ZXI7Cisg
ICAgRGVmbGF0ZUJ1ZmZlciBtX2J1ZmZlcjsKKyAgICB6X3N0cmVhbSBtX3N0cmVhbTsKK307CisK
K2NsYXNzIFdlYlNvY2tldEluZmxhdGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxXZWJTb2NrZXRJbmZsYXRlcj4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5XZWJTb2NrZXRJ
bmZsYXRlcigpOworCisgICAgYm9vbCBhZGRCeXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAg
ICBib29sIGZpbmlzaCgpOworICAgIGNvbnN0IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZl
ci5kYXRhKCk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNp
emUoKTsgfQorICAgIHZvaWQgcmVzZXQoKTsKKworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXRJbmZs
YXRlcigpOworCisgICAgRGVmbGF0ZUJ1ZmZlciBtX2J1ZmZlcjsKKyAgICB6X3N0cmVhbSBtX3N0
cmVhbTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlm
IC8vIFdlYlNvY2tldERlZmxhdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4
IDM1ZjJiMTk5MDc3OWQ2NjllZjgwNDAyZmIwMGYyYTU1NjE0N2MzMjYuLjRlYTcwMGQ1OTQ2ODZh
NTgyOWZhNzdmYjQ5Y2ZiYjgwNmI2MmZkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aQpAQCAtMTE4LDYgKzExOCw3IEBACiAgICAgICAgICAgICAndGVzdHMvV2ViTGF5ZXJUZXN0LmNw
cCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcsCiAg
ICAgICAgICAgICAndGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCcsCisgICAgICAgICAg
ICAndGVzdHMvV2ViU29ja2V0RGVmbGF0ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0
cy9XZWJVUkxSZXF1ZXN0VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlZpZXdUZXN0
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tl
dERlZmxhdGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tl
dERlZmxhdGVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODliNzRhOTMwYWRhMzBiNzIzMWViOWZhNDE5
ZTEzN2QwYzlmZjRiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViU29ja2V0RGVmbGF0ZXJUZXN0LmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgiCisK
KyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIHsKKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3RDb21wcmVzc0hl
bGxvKQoreworICAgIC8vIFRlc3QgdGhlIGZpcnN0IGV4YW1wbGUgb24gc2VjdGlvbiA0LjMgb2Yg
dGhlIGRyYWZ0IHNwZWMuCisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZsYXRlciA9
IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUsIGZhbHNlKTsKKyAgICBPd25QdHI8V2ViU29j
a2V0SW5mbGF0ZXI+IGluZmxhdGVyID0gV2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAg
IGNvbnN0IGNoYXIqIGNvbXByZXNzRGF0YSA9ICJIZWxsbyI7CisgICAgY29uc3Qgc2l6ZV90IGNv
bXByZXNzTGVuZ3RoID0gc3RybGVuKGNvbXByZXNzRGF0YSk7CisKKyAgICBFWFBFQ1RfVFJVRShk
ZWZsYXRlci0+YWRkQnl0ZXMoY29tcHJlc3NEYXRhLCBjb21wcmVzc0xlbmd0aCkpOworICAgIEVY
UEVDVF9UUlVFKGRlZmxhdGVyLT5maW5pc2goKSk7CisgICAgY29uc3QgY2hhciBleHBlY3RlZEZp
cnN0W10gPSB7MHhmMiwgMHg0OCwgMHhjZCwgMHhjOSwgMHhjOSwgMHgwNywgMHgwMH07CisgICAg
RVhQRUNUX0VRKHNpemVvZihleHBlY3RlZEZpcnN0KSwgZGVmbGF0ZXItPnNpemUoKSk7CisgICAg
RVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZEZpcnN0LCBkZWZsYXRlci0+ZGF0YSgpLCBkZWZs
YXRlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoaW5mbGF0ZXItPmFkZEJ5dGVzKGRlZmxh
dGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShpbmZsYXRl
ci0+ZmluaXNoKCkpOworICAgIEVYUEVDVF9FUShjb21wcmVzc0xlbmd0aCwgaW5mbGF0ZXItPnNp
emUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChjb21wcmVzc0RhdGEsIGluZmxhdGVyLT5k
YXRhKCksIGluZmxhdGVyLT5zaXplKCkpKTsKKworICAgIGRlZmxhdGVyLT5yZXNldCgpOworICAg
IGluZmxhdGVyLT5yZXNldCgpOworCisgICAgRVhQRUNUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVz
KGNvbXByZXNzRGF0YSwgY29tcHJlc3NMZW5ndGgpKTsKKyAgICBFWFBFQ1RfVFJVRShkZWZsYXRl
ci0+ZmluaXNoKCkpOworICAgIGNvbnN0IGNoYXIgZXhwZWN0ZWRTZWNvbmRbXSA9IHsweGYyLCAw
eDAwLCAweDExLCAweDAwLCAweDAwfTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKGV4cGVjdGVkU2Vj
b25kKSwgZGVmbGF0ZXItPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3Rl
ZFNlY29uZCwgZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgIEVYUEVD
VF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6
ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoaW5mbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBFWFBFQ1Rf
RVEoY29tcHJlc3NMZW5ndGgsIGluZmxhdGVyLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBt
ZW1jbXAoY29tcHJlc3NEYXRhLCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7
Cit9CisKK1RFU1QoV2ViU29ja2V0RGVmbGF0ZXJUZXN0LCBUZXN0Tm9Db250ZXh0VGFrZU92ZXIp
Cit7CisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERl
ZmxhdGVyOjpjcmVhdGUoMTUsIHRydWUpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4g
aW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgY29uc3QgY2hhciBl
eHBlY3RlZFtdID0gezB4ZjIsIDB4NDgsIDB4Y2QsIDB4YzksIDB4YzksIDB4MDcsIDB4MDB9Owor
ICAgIGNvbnN0IGNoYXIqIGNvbXByZXNzRGF0YSA9ICJIZWxsbyI7CisgICAgY29uc3Qgc2l6ZV90
IGNvbXByZXNzTGVuZ3RoID0gc3RybGVuKGNvbXByZXNzRGF0YSk7CisKKyAgICAvLyBJZiBub0Nv
bnRleHRUYWtlT3ZlciBpcyB0cnVlLCB0aGUgc2Vjb25kIHJlc3VsdCBzaG91bGQgYmUgdGhlIGlk
ZW50aWNhbAorICAgIC8vIHdpdGggdGhlIGZpcnN0IG9uZS4KKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IDI7ICsraSkgeworICAgICAgICBFWFBFQ1RfVFJVRShkZWZsYXRlci0+YWRkQnl0ZXMo
Y29tcHJlc3NEYXRhLCBjb21wcmVzc0xlbmd0aCkpOworICAgICAgICBFWFBFQ1RfVFJVRShkZWZs
YXRlci0+ZmluaXNoKCkpOworICAgICAgICBFWFBFQ1RfRVEoc2l6ZW9mKGV4cGVjdGVkKSwgZGVm
bGF0ZXItPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWQsIGRl
ZmxhdGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
aW5mbGF0ZXItPmFkZEJ5dGVzKGRlZmxhdGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoaW5mbGF0ZXItPmZpbmlzaCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKGNvbXByZXNzTGVuZ3RoLCBpbmZsYXRlci0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDAsIG1lbWNtcChjb21wcmVzc0RhdGEsIGluZmxhdGVyLT5kYXRhKCksIGluZmxhdGVyLT5zaXpl
KCkpKTsKKyAgICAgICAgZGVmbGF0ZXItPnJlc2V0KCk7CisgICAgICAgIGluZmxhdGVyLT5yZXNl
dCgpOworICAgIH0KK30KKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3RXaW5kb3dC
aXRzKQoreworICAgIGZvciAoaW50IHdpbmRvd0JpdHMgPSA4OyB3aW5kb3dCaXRzIDwgMTY7ICsr
d2luZG93Qml0cykgeworICAgICAgICBjaGFyKiBjb21wcmVzc0RhdGE7CisgICAgICAgIGNvbnN0
IHNpemVfdCBjb21wcmVzc0xlbmd0aCA9IDEgPDwgKHdpbmRvd0JpdHMgKyAxKTsKKyAgICAgICAg
Y29tcHJlc3NEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZmFzdE1hbGxvYyhjb21wcmVz
c0xlbmd0aCkpOworICAgICAgICBtZW1zZXQoY29tcHJlc3NEYXRhLCAnICcsIGNvbXByZXNzTGVu
Z3RoKTsKKworICAgICAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVyID0gV2Vi
U29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSh3aW5kb3dCaXRzLCBmYWxzZSk7CisgICAgICAgIE93blB0
cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRl
KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhjb21wcmVzc0RhdGEs
IGNvbXByZXNzTGVuZ3RoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRlZmxhdGVyLT5maW5pc2go
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0
YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGluZmxhdGVyLT5m
aW5pc2goKSk7CisgICAgICAgIEVYUEVDVF9FUShjb21wcmVzc0xlbmd0aCwgaW5mbGF0ZXItPnNp
emUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY29tcHJlc3NEYXRhLCBpbmZsYXRl
ci0+ZGF0YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIGZhc3RGcmVlKGNvbXByZXNz
RGF0YSk7CisgICAgfQorfQorCitURVNUKFdlYlNvY2tldERlZmxhdGVyVGVzdCwgVGVzdExhcmdl
RGF0YSkKK3sKKyAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVyID0gV2ViU29j
a2V0RGVmbGF0ZXI6OmNyZWF0ZSgxNSwgdHJ1ZSk7CisgICAgT3duUHRyPFdlYlNvY2tldEluZmxh
dGVyPiBpbmZsYXRlciA9IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoKTsKKyAgICBjaGFyKiBj
b21wcmVzc0RhdGE7CisgICAgY29uc3Qgc2l6ZV90IGNvbXByZXNzTGVuZ3RoID0gNCAqIDEwMjQg
KiAxMDI0ICsgMTsKKyAgICBjb21wcmVzc0RhdGEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihm
YXN0TWFsbG9jKGNvbXByZXNzTGVuZ3RoKSk7CisgICAgbWVtc2V0KGNvbXByZXNzRGF0YSwgJ2En
LCBjb21wcmVzc0xlbmd0aCk7CisKKyAgICBFWFBFQ1RfVFJVRShkZWZsYXRlci0+YWRkQnl0ZXMo
Y29tcHJlc3NEYXRhLCBjb21wcmVzc0xlbmd0aCkpOworICAgIEVYUEVDVF9UUlVFKGRlZmxhdGVy
LT5maW5pc2goKSk7CisgICAgRVhQRUNUX1RSVUUoaW5mbGF0ZXItPmFkZEJ5dGVzKGRlZmxhdGVy
LT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShpbmZsYXRlci0+
ZmluaXNoKCkpOworICAgIEVYUEVDVF9FUShjb21wcmVzc0xlbmd0aCwgaW5mbGF0ZXItPnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChjb21wcmVzc0RhdGEsIGluZmxhdGVyLT5kYXRh
KCksIGluZmxhdGVyLT5zaXplKCkpKTsKKyAgICBmYXN0RnJlZShjb21wcmVzc0RhdGEpOworfQor
Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126742</attachid>
            <date>2012-02-13 02:46:41 -0800</date>
            <delta_ts>2012-02-13 03:07:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78449-20120213194640.patch</filename>
            <type>text/plain</type>
            <size>30300</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ2NDUxYzdmZjY4ZGI3
MzgwMzM4ZjQ4NDM4NjlkZDFkODU4YmU0MS4uODdkZGY0NjhjYzc3MzhhMDEzMTcyNmUxODM1MzBl
NmEyYWY5OGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAyLTEzICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZGVmbGF0ZXIvaW5mbGF0ZXIgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgV2ViU29ja2V0RGVm
bGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2xhc3NlcyB3aGljaCB3cmFwIHpsaWIKKyAgICAgICAg
ZnVuY3Rpb25zLiBUaGVzZSBjbGFzc2VzIGFyZSBub3QgdXNlZCB5ZXQsIGJ1dCB3aWxsIGJlIHVz
ZWQgZm9yCisgICAgICAgIHN1cHBvcnRpbmcgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9taXVtIHBvcnQuIEJlaGF2aW9yIGlzIHVuY2hhbmdl
ZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBXZWJTb2NrZXREZWZsYXRlci4o
Y3BwfGgpLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAq
IFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6fldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjphZGRCeXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXREZWZsYXRlcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dERlZmxhdGVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpXZWJTb2NrZXRJ
bmZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6fldlYlNvY2tl
dEluZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjphZGRCeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6ZmluaXNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpyZXNldCk6CisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViU29ja2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OnNpemUp
OgorICAgICAgICAoV2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SW5mbGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6
OnNpemUpOgorCiAyMDEyLTAyLTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5j
b20+CiAKICAgICAgICAgSW50cm9kdWNlIFNoYWRvd1Jvb3RMaXN0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCAyMTk3ZTQ3OThhNTM0MGY5Yzk2YTE5OTM5NDRlMTc1NzMzOWUyMDY2Li4y
NTFmNGY5NDljZDQ5ZWZkNzAxYmZkMzdkZTNlOTc4YjdkZmZkZjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAyLTEzICBLZW5pY2hpIElzaGliYXNo
aSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0XSBBZGQgZGVmbGF0
ZXIvaW5mbGF0ZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc4NDQ5CisKKyAgICAgICAgQWRkIHRlc3RzIHdoaWNoIGVuc3VyZSBXZWJT
b2NrZXREZWZsYXRlci9XZWJTb2NrZXRJbmZsYXRlciBjYW4KKyAgICAgICAgY29tcHJlc3MvZGVj
b21wcmVzcyBkYXRhIGNvcnJlY3RseS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL1dlYlNvY2tl
dERlZmxhdGVyVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMi0xMiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBQYWdlIHNob3VsZCBoYXZlIGxlc3MgaW50cnVzaXZlIHdh
eSB0byBhc3NvY2lhdGUgQVBJIGltcGxlbWVudGF0aW9uIG9iamVjdHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGE3ZjkwZjFkNThmNDI0NWRhOTJmZGM3OTQzOWI3MTBmOWE1ODJiODcuLmQzNTg2
ZjUwZGE2YWRiY2ZiZjMwODgxYzczODJlYWI4ODM2ODRkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0yMDQxLDYgKzIwNDEsNyBAQCBJRiAoRU5BQkxFX1dFQl9TT0NLRVRTKQogICAgICAgICB3
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKICAg
ICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAK
ICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggN2EyN2U2YTQzNzg4NjExN2M4ZjQ1ZmM3ODk1NjAwOWFhNTdhY2E0MS4uOGNkOTll
ZDZlZjIzNzQ1NTk4ZDA3NGQ3NTgzMzhlYzk3M2E4MGRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC00MzEwLDYgKzQzMTAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGZmNjBhYzNhZjI4NGU5M2JlMjcxNzkw
YjU4ZDQyNmQxODNjMGUzODAuLjUzMjI2ZGQ2YWExZmRiMDNiYjgwMTgyZjM3ZjViYmE1N2ZjYjU3
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtMzY2Miw2ICszNjYyLDcgQEAgY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBc
CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKICAgICAgICAgd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVyLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vz
c29yLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKQEAgLTM2
NzIsNiArMzY3Myw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7
CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAg
ICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorICAgICAgICB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwMDljYzQ1NmQ1ZGYwZThjMjA4NDgyMjM5OGFh
MWIyNGMxNDA2YjA0Li5jZjE3ODY2MTUzZWU0MDZkYzA3ZGFhNWIxZTU3NDJlYzYzZWE2MTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC00Nzk2LDYgKzQ3OTYsOCBAQAogICAgICAgICAgICAgJ3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWxDbGllbnQuaCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5j
cHAnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCcsCiAgICAg
ICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCcsCiAg
ICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgnLAog
ICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1MGUw
MGZmNTJhOWNhNjM3ZTE4NjgyNzU4N2M1YjFmY2Q4NjI1MTM0Li43MjVlYTQzOThiZWQ2ZmExMTlj
YTFmOThkOTI0MTBlOTlkYjI3ZTUwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNzI5NzAsNiArNzI5NzAsMTQgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRE
ZWZsYXRlci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWY2ZmIwMWJjMmMz
ODgzMWZiYTQ5OWQ2NjIxNjkzN2YwODE5YjlkYy4uNDdjNmY2MjE2NWQ4MTY3MDBjMjZlY2E3MWM0
MmMwMGFiMjAzNzZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTM4Miw2ICsxMzgyLDggQEAKIAkJNEFEMDE3M0MxMjdFODI4
NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpT
SFRNTE91dHB1dEVsZW1lbnQuY3BwICovOyB9OwogCQk0QUQwMTczRDEyN0U4Mjg2MDAxNTAzNUYg
LyogSlNIVE1MT3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEFEMDE3M0IxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVs
ZW1lbnQuaCAqLzsgfTsKIAkJNEFERTI1RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3Nvci5oICovOyB9OworCQk0QUUwMkFCRDE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0
RGVmbGF0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEFFMDJBQkIxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCAqLzsg
fTsKKwkJNEFFMDJBQkUxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUUwMkFCQzE0RThB
OUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCAqLzsgfTsKIAkJNEFGMUFEM0UxM0ZE
MjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUYxQUQzQzEzRkQyM0E0MDBBQTk1OTAg
LyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmNwcCAqLzsgfTsKIAkJNEFGMUFEM0YxM0ZEMjNBNDAw
QUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFGMUFEM0QxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50
RGlzcGF0Y2hNZWRpYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTRCMjcwOEM3MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjI3MDhDNTBBRjE5
RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovOyB9OwpAQCAtODIzMCw2ICs4MjMyLDggQEAK
IAkJNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSFRNTE91dHB1dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEFFMDJBQkIxNEU4QTlEMjAw
QkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlNvY2tldERlZmxhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNEFFMDJBQkMxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldERlZmxhdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRjFBRDNDMTNGRDIzQTQwMEFBOTU5MCAvKiBF
dmVudERpc3BhdGNoTWVkaWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXZlbnREaXNwYXRjaE1lZGlhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEFGMUFEM0QxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdG
IC8qIFBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVi
b2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3NjQsNyArMTQ3NjgsNiBA
QAogCQk1MThBMzRCRDEwMjZDODMxMDAxQjY4OTYgLyogd2Vic29ja2V0cyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNEFERTI1RjkxNEUzQkI0QzAwNEMy
MjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICovLAogCQkJCTUxRkI1NEY0MTEz
RTM2NDIwMDgyMTE3NiAvKiBDbG9zZUV2ZW50LmggKi8sCiAJCQkJNTFGQjU0RjYxMTNFMzY1OTAw
ODIxMTc2IC8qIENsb3NlRXZlbnQuaWRsICovLAogCQkJCTUxMTIyNDcxMTBDRkI4QzYwMDgwOTlE
NyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCkBAIC0xNDc3Nyw4ICsxNDc4
MCwxMSBAQAogCQkJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVs
LmNwcCAqLywKIAkJCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5l
bC5oICovLAogCQkJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50LmggKi8sCisJCQkJNEFFMDJBQkIxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERl
ZmxhdGVyLmNwcCAqLywKKwkJCQk0QUUwMkFCQzE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0
RGVmbGF0ZXIuaCAqLywKIAkJCQk0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgKi8sCiAJCQkJNEE5NTdGMDQxNEUyNDExMDAwNDlEQkZC
IC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLywKKwkJCQk0QURFMjVGOTE0RTNC
QjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCiAJCQkJNTFB
QkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi8sCiAJCQkJ
NTFBQkFFNDMxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICovLAogCQkJ
CTc2MzdDNTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNw
cCAqLywKQEAgLTI0MTg3LDYgKzI0MTkzLDcgQEAKIAkJCQk0QTk1N0YwNzE0RTI0MTMwMDA0OURC
RkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NEFERTI1RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyRTkyRkMxNEU1NDA1ODAwODdGRkJBIC8qIFNoYWRvd1Jv
b3RMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QUUwMkFCRTE0RThBOUQyMDBCQzNCQTcgLyog
V2ViU29ja2V0RGVmbGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcxMjgsNiArMjcxMzUsNyBA
QAogCQkJCTdBNTQ4ODE4MTRFNDMyQTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNEE5NTdGMDYxNEUyNDEyQTAwNDlEQkZCIC8qIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTcyRTkyRkIxNEU1NDA1
ODAwODdGRkJBIC8qIFNoYWRvd1Jvb3RMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRBRTAy
QUJEMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjY1MWI0ODM3ZWFiZTU2ZmU2MjRiM2YxYzVkZGM5Njg5OGY2M2QyYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuY3BwCkBAIC0wLDAgKzEsMjE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgiCisKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyBjb25zdCBpbnQgZGVmYXVsdE1lbUxldmVsID0gMTsKK3N0YXRpYyBjb25zdCBzaXplX3Qg
aW5pdGlhbEJ1ZmZlclNpemUgPSA0MDk2OworCitQYXNzT3duUHRyPFdlYlNvY2tldERlZmxhdGVy
PiBXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKGludCB3aW5kb3dCaXRzLCBTaG91bGRUYWtlT3Zl
ckNvbnRleHQgY29udGV4dFRha2VPdmVyKQoreworICAgIE93blB0cjxXZWJTb2NrZXREZWZsYXRl
cj4gZGVmbGF0ZXIgPSBhZG9wdFB0cihuZXcgV2ViU29ja2V0RGVmbGF0ZXIod2luZG93Qml0cywg
Y29udGV4dFRha2VPdmVyKSk7CisgICAgaWYgKGRlZmxhdGVJbml0MigmZGVmbGF0ZXItPm1fc3Ry
ZWFtLCBaX0RFRkFVTFRfQ09NUFJFU1NJT04sIFpfREVGTEFURUQsIC13aW5kb3dCaXRzLCBkZWZh
dWx0TWVtTGV2ZWwsIFpfREVGQVVMVF9TVFJBVEVHWSkgPT0gWl9PSykKKyAgICAgICAgcmV0dXJu
IGRlZmxhdGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworV2ViU29ja2V0
RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKGludCB3aW5kb3dCaXRzLCBTaG91bGRUYWtlT3Zl
ckNvbnRleHQgdGFrZU92ZXJDb250ZXh0KQorICAgIDogbV93aW5kb3dCaXRzKHdpbmRvd0JpdHMp
CisgICAgLCBtX3Rha2VPdmVyQ29udGV4dCh0YWtlT3ZlckNvbnRleHQpCit7CisgICAgQVNTRVJU
KG1fd2luZG93Qml0cyA+PSA4ICYmIG1fd2luZG93Qml0cyA8PSAxNSk7CisgICAgbWVtc2V0KCZt
X3N0cmVhbSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7Cit9CisKK1dlYlNvY2tldERlZmxhdGVyOjp+
V2ViU29ja2V0RGVmbGF0ZXIoKQoreworICAgIGludCByZXN1bHQgPSBkZWZsYXRlRW5kKCZtX3N0
cmVhbSk7CisgICAgaWYgKHJlc3VsdCAhPSBaX09LKQorICAgICAgICBMT0coTmV0d29yaywgImRl
ZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIiwgcmVzdWx0KTsKK30KKworYm9vbCBXZWJTb2NrZXREZWZs
YXRlcjo6YWRkQnl0ZXMoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBp
ZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90IG1heExlbmd0
aCA9IGRlZmxhdGVCb3VuZCgmbV9zdHJlYW0sIGxlbmd0aCk7CisgICAgaWYgKCFtX2J1ZmZlci50
cnlSZXNlcnZlQ2FwYWNpdHkobV9idWZmZXIuc2l6ZSgpICsgbWF4TGVuZ3RoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIG1fc3RyZWFtLm5leHRfaW4gPSByZWludGVycHJldF9jYXN0PEJ5
dGVmKj4oY29uc3RfY2FzdDxjaGFyKj4oZGF0YSkpOworICAgIG1fc3RyZWFtLmF2YWlsX2luID0g
bGVuZ3RoOworICAgIG1fc3RyZWFtLm5leHRfb3V0ID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+
KG1fYnVmZmVyLmRhdGEoKSk7CisgICAgbV9zdHJlYW0uYXZhaWxfb3V0ID0gbWF4TGVuZ3RoOwor
ICAgIGludCByZXN1bHQgPSBkZWZsYXRlKCZtX3N0cmVhbSwgWl9OT19GTFVTSCk7CisgICAgaWYg
KHJlc3VsdCAhPSBaX09LIHx8IG1fc3RyZWFtLmF2YWlsX2luID4gMCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgc2l6ZV90IGNvbXByZXNzZWRTaXplID0gbWF4TGVuZ3RoIC0gbV9zdHJl
YW0uYXZhaWxfb3V0OworICAgIG1fYnVmZmVyLnJlc2l6ZShtX2J1ZmZlci5zaXplKCkgKyBjb21w
cmVzc2VkU2l6ZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJTb2NrZXREZWZs
YXRlcjo6ZmluaXNoKCkKK3sKKyAgICB3aGlsZSh0cnVlKSB7CisgICAgICAgIHNpemVfdCBhdmFp
bGFibGVDYXBhY2l0eSA9IG1fYnVmZmVyLmNhcGFjaXR5KCkgLSBtX2J1ZmZlci5zaXplKCk7Cisg
ICAgICAgIG1fc3RyZWFtLm5leHRfaW4gPSByZWludGVycHJldF9jYXN0PEJ5dGVmKj4oMCk7Cisg
ICAgICAgIG1fc3RyZWFtLmF2YWlsX2luID0gMDsKKyAgICAgICAgbV9zdHJlYW0ubmV4dF9vdXQg
PSByZWludGVycHJldF9jYXN0PEJ5dGVmKj4obV9idWZmZXIuZGF0YSgpICsgbV9idWZmZXIuc2l6
ZSgpKTsKKyAgICAgICAgbV9zdHJlYW0uYXZhaWxfb3V0ID0gYXZhaWxhYmxlQ2FwYWNpdHk7Cisg
ICAgICAgIGludCByZXN1bHQgPSBkZWZsYXRlKCZtX3N0cmVhbSwgWl9TWU5DX0ZMVVNIKTsKKyAg
ICAgICAgbV9idWZmZXIucmVzaXplKG1fYnVmZmVyLnNpemUoKSArIGF2YWlsYWJsZUNhcGFjaXR5
IC0gbV9zdHJlYW0uYXZhaWxfb3V0KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBaX09LKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChyZXN1bHQgPT0gWl9CVUZfRVJST1IpIHsKKyAg
ICAgICAgICAgIGlmICghbV9idWZmZXIudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1fYnVmZmVyLmNhcGFj
aXR5KCkgKiAyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBSZW1vdmUgNCBvY3Rl
dHMgZnJvbSB0aGUgdGFpbCBhcyB0aGUgc3BlY2lmaWNhdGlvbiByZXF1aXJlcy4KKyAgICBpZiAo
bV9idWZmZXIuc2l6ZSgpIDw9IDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2J1ZmZl
ci5yZXNpemUobV9idWZmZXIuc2l6ZSgpIC0gNCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgV2ViU29ja2V0RGVmbGF0ZXI6OnJlc2V0KCkKK3sKKyAgICBtX2J1ZmZlci5jbGVhcigpOwor
ICAgIGlmIChtX3Rha2VPdmVyQ29udGV4dCA9PSBEb05vdFRha2VPdmVyQ29udGV4dCkKKyAgICAg
ICAgZGVmbGF0ZVJlc2V0KCZtX3N0cmVhbSk7Cit9CisKK1Bhc3NPd25QdHI8V2ViU29ja2V0SW5m
bGF0ZXI+IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoaW50IHdpbmRvd0JpdHMpCit7CisgICAg
T3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9IGFkb3B0UHRyKG5ldyBXZWJTb2Nr
ZXRJbmZsYXRlcih3aW5kb3dCaXRzKSk7CisgICAgaWYgKGluZmxhdGVJbml0MigmaW5mbGF0ZXIt
Pm1fc3RyZWFtLCAtd2luZG93Qml0cykgPT0gWl9PSykKKyAgICAgICAgcmV0dXJuIGluZmxhdGVy
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworV2ViU29ja2V0SW5mbGF0ZXI6
OldlYlNvY2tldEluZmxhdGVyKGludCB3aW5kb3dCaXRzKQorICAgIDogbV93aW5kb3dCaXRzKHdp
bmRvd0JpdHMpCit7CisgICAgbWVtc2V0KCZtX3N0cmVhbSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7
Cit9CisKK1dlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIoKQoreworICAgIGlu
dCByZXN1bHQgPSBpbmZsYXRlRW5kKCZtX3N0cmVhbSk7CisgICAgaWYgKHJlc3VsdCAhPSBaX09L
KQorICAgICAgICBMT0coTmV0d29yaywgImluZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIiwgcmVzdWx0
KTsKK30KKworYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFtX2J1ZmZlci50cnlSZXNlcnZlQ2FwYWNpdHkobV9idWZmZXIuc2l6
ZSgpICsgaW5pdGlhbEJ1ZmZlclNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBz
aXplX3QgY29uc3VtZWRTb0ZhciA9IDA7CisgICAgd2hpbGUgKGNvbnN1bWVkU29GYXIgPCBsZW5n
dGgpIHsKKyAgICAgICAgc2l6ZV90IGF2YWlsYWJsZUNhcGFjaXR5ID0gbV9idWZmZXIuY2FwYWNp
dHkoKSAtIG1fYnVmZmVyLnNpemUoKTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0xlbmd0aCA9
IGxlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAgICAgIG1fc3RyZWFtLm5leHRfaW4gPSByZWlu
dGVycHJldF9jYXN0PEJ5dGVmKj4oY29uc3RfY2FzdDxjaGFyKj4oZGF0YSkgKyBjb25zdW1lZFNv
RmFyKTsKKyAgICAgICAgbV9zdHJlYW0uYXZhaWxfaW4gPSByZW1haW5pbmdMZW5ndGg7CisgICAg
ICAgIG1fc3RyZWFtLm5leHRfb3V0ID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KG1fYnVmZmVy
LmRhdGEoKSArIG1fYnVmZmVyLnNpemUoKSk7CisgICAgICAgIG1fc3RyZWFtLmF2YWlsX291dCA9
IGF2YWlsYWJsZUNhcGFjaXR5OworICAgICAgICBpbnQgcmVzdWx0ID0gaW5mbGF0ZSgmbV9zdHJl
YW0sIFpfTk9fRkxVU0gpOworICAgICAgICBjb25zdW1lZFNvRmFyICs9IHJlbWFpbmluZ0xlbmd0
aCAtIG1fc3RyZWFtLmF2YWlsX2luOworICAgICAgICBtX2J1ZmZlci5yZXNpemUobV9idWZmZXIu
c2l6ZSgpICsgYXZhaWxhYmxlQ2FwYWNpdHkgLSBtX3N0cmVhbS5hdmFpbF9vdXQpOworICAgICAg
ICBpZiAocmVzdWx0ID09IFpfQlVGX0VSUk9SKSB7CisgICAgICAgICAgICBpZiAoIW1fYnVmZmVy
LnRyeVJlc2VydmVDYXBhY2l0eShtX2J1ZmZlci5jYXBhY2l0eSgpICogMikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHJlc3VsdCAhPSBaX09LKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBBU1NFUlQoY29uc3VtZWRTb0ZhciA9PSBsZW5ndGgpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFdlYlNvY2tldEluZmxhdGVyOjpmaW5pc2goKQoreworICAgIHN0YXRpYyBC
eXRlZiBzdHJpcHBlZEZpZWxkc1tdID0gezB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmZ9OworICAgIHN0
YXRpYyBjb25zdCBzaXplX3Qgc3RyaXBwZWRMZW5ndGggPSA0OworCisgICAgLy8gQXBwZW5kcyA0
IG9jdGVzdHMgb2YgMHgwMCAweDAwIDB4ZmYgMHhmZgorICAgIHNpemVfdCBjb25zdW1lZFNvRmFy
ID0gMDsKKyAgICB3aGlsZSAoY29uc3VtZWRTb0ZhciA8IHN0cmlwcGVkTGVuZ3RoKSB7CisgICAg
ICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9IG1fYnVmZmVyLmNhcGFjaXR5KCkgLSBtX2J1
ZmZlci5zaXplKCk7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdMZW5ndGggPSBzdHJpcHBlZExl
bmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAgICAgIG1fc3RyZWFtLm5leHRfaW4gPSBzdHJpcHBl
ZEZpZWxkcyArIGNvbnN1bWVkU29GYXI7CisgICAgICAgIG1fc3RyZWFtLmF2YWlsX2luID0gcmVt
YWluaW5nTGVuZ3RoOworICAgICAgICBtX3N0cmVhbS5uZXh0X291dCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Qnl0ZWYqPihtX2J1ZmZlci5kYXRhKCkgKyBtX2J1ZmZlci5zaXplKCkpOworICAgICAgICBt
X3N0cmVhbS5hdmFpbF9vdXQgPSBhdmFpbGFibGVDYXBhY2l0eTsKKyAgICAgICAgaW50IHJlc3Vs
dCA9IGluZmxhdGUoJm1fc3RyZWFtLCBaX0ZJTklTSCk7CisgICAgICAgIGNvbnN1bWVkU29GYXIg
Kz0gcmVtYWluaW5nTGVuZ3RoIC0gbV9zdHJlYW0uYXZhaWxfaW47CisgICAgICAgIG1fYnVmZmVy
LnJlc2l6ZShtX2J1ZmZlci5zaXplKCkgKyBhdmFpbGFibGVDYXBhY2l0eSAtIG1fc3RyZWFtLmF2
YWlsX291dCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gWl9CVUZfRVJST1IpIHsKKyAgICAgICAg
ICAgIGlmICghbV9idWZmZXIudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1fYnVmZmVyLmNhcGFjaXR5KCkg
KiAyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0ICE9IFpfT0sgJiYgcmVzdWx0ICE9IFpf
U1RSRUFNX0VORCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJU
KGNvbnN1bWVkU29GYXIgPT0gc3RyaXBwZWRMZW5ndGgpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgV2ViU29ja2V0SW5mbGF0ZXI6OnJlc2V0KCkKK3sKKyAgICBtX2J1ZmZlci5jbGVh
cigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjYxNzk5OTdmMjY0NTdjMGEyZTQ3OGQzN2JiNTkzYWRlMGVlYTFhMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZXIuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0RGVmbGF0ZXJfaAorI2Rl
ZmluZSBXZWJTb2NrZXREZWZsYXRlcl9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSA8emxpYi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldERlZmxh
dGVyIHsKK3B1YmxpYzoKKyAgICBlbnVtIFNob3VsZFRha2VPdmVyQ29udGV4dCB7CisgICAgICAg
IERvTm90VGFrZU92ZXJDb250ZXh0ID0gMCwKKyAgICAgICAgVGFrZU92ZXJDb250ZXh0ID0gMQor
ICAgIH07CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGNyZWF0ZShp
bnQgd2luZG93Qml0cywgU2hvdWxkVGFrZU92ZXJDb250ZXh0IHRha2VPdmVyQ29udGV4dCA9IFRh
a2VPdmVyQ29udGV4dCk7CisKKyAgICB+V2ViU29ja2V0RGVmbGF0ZXIoKTsKKworICAgIGJvb2wg
YWRkQnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgYm9vbCBmaW5pc2goKTsKKyAgICBj
b25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KKyAgICB2b2lkIHJlc2V0
KCk7CisKK3ByaXZhdGU6CisgICAgV2ViU29ja2V0RGVmbGF0ZXIoaW50LCBTaG91bGRUYWtlT3Zl
ckNvbnRleHQpOworCisgICAgaW50IG1fd2luZG93Qml0czsKKyAgICBTaG91bGRUYWtlT3ZlckNv
bnRleHQgbV90YWtlT3ZlckNvbnRleHQ7CisgICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAg
IHpfc3RyZWFtIG1fc3RyZWFtOworfTsKKworY2xhc3MgV2ViU29ja2V0SW5mbGF0ZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBjcmVhdGUoaW50
IHdpbmRvd0JpdHMgPSAxNSk7CisKKyAgICB+V2ViU29ja2V0SW5mbGF0ZXIoKTsKKworICAgIGJv
b2wgYWRkQnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgYm9vbCBmaW5pc2goKTsKKyAg
ICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KKyAgICB2b2lkIHJl
c2V0KCk7CisKK3ByaXZhdGU6CisgICAgV2ViU29ja2V0SW5mbGF0ZXIoaW50KTsKKworICAgIGlu
dCBtX3dpbmRvd0JpdHM7CisgICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIHpfc3RyZWFt
IG1fc3RyZWFtOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisj
ZW5kaWYgLy8gV2ViU29ja2V0RGVmbGF0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkK
aW5kZXggMzVmMmIxOTkwNzc5ZDY2OWVmODA0MDJmYjAwZjJhNTU2MTQ3YzMyNi4uNGVhNzAwZDU5
NDY4NmE1ODI5ZmE3N2ZiNDljZmJiODA2YjYyZmQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXBpCkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9XZWJMYXllclRl
c3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAg
ICAgICAgICd0ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAnLAogICAgICAgICAgICAg
J3Rlc3RzL1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViVmll
d1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
U29ja2V0RGVmbGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
U29ja2V0RGVmbGF0ZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmY5NmRlYzc5MmM1N2Y4Y2QyMGIy
MzA2OWFjMjJiZjRlY2JmYzZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwCkBAIC0wLDAgKzEsMTQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIu
aCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworVEVTVChXZWJTb2Nr
ZXREZWZsYXRlclRlc3QsIFRlc3RDb21wcmVzc0hlbGxvKQoreworICAgIC8vIFRlc3QgdGhlIGZp
cnN0IGV4YW1wbGUgb24gc2VjdGlvbiA0LjMgb2YgdGhlIGRyYWZ0IHNwZWMuCisgICAgT3duUHRy
PFdlYlNvY2tldERlZmxhdGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUo
MTUpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJ
bmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgY29uc3QgY2hhciogaW5wdXREYXRhID0gIkhlbGxvIjsK
KyAgICBjb25zdCBzaXplX3QgaW5wdXRMZW5ndGggPSBzdHJsZW4oaW5wdXREYXRhKTsKKworICAg
IEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhpbnB1dERhdGEsIGlucHV0TGVuZ3RoKSk7
CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBjb25zdCBjaGFyIGV4
cGVjdGVkRmlyc3RbXSA9IHsweGYyLCAweDQ4LCAweGNkLCAweGM5LCAweGM5LCAweDA3LCAweDAw
fTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKGV4cGVjdGVkRmlyc3QpLCBkZWZsYXRlci0+c2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkRmlyc3QsIGRlZmxhdGVyLT5kYXRh
KCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+YWRkQnl0
ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgIEFTU0VSVF9UUlVF
KGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNUX0VRKGlucHV0TGVuZ3RoLCBpbmZsYXRl
ci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YSwgaW5mbGF0ZXIt
PmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworCisgICAgZGVmbGF0ZXItPnJlc2V0KCk7Cisg
ICAgaW5mbGF0ZXItPnJlc2V0KCk7CisKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+YWRkQnl0
ZXMoaW5wdXREYXRhLCBpbnB1dExlbmd0aCkpOworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5m
aW5pc2goKSk7CisgICAgY29uc3QgY2hhciBleHBlY3RlZFNlY29uZFtdID0gezB4ZjIsIDB4MDAs
IDB4MTEsIDB4MDAsIDB4MDB9OworICAgIEVYUEVDVF9FUShzaXplb2YoZXhwZWN0ZWRTZWNvbmQp
LCBkZWZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkU2Vj
b25kLCBkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RS
VUUoaW5mbGF0ZXItPmFkZEJ5dGVzKGRlZmxhdGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkp
KTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+ZmluaXNoKCkpOworICAgIEVYUEVDVF9FUShp
bnB1dExlbmd0aCwgaW5mbGF0ZXItPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChp
bnB1dERhdGEsIGluZmxhdGVyLT5kYXRhKCksIGluZmxhdGVyLT5zaXplKCkpKTsKK30KKworVEVT
VChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3RNdWx0aXBsZUFkZEJ5dGVzQ2FsbHMpCit7Cisg
ICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERlZmxhdGVy
OjpjcmVhdGUoMTUpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBX
ZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgVmVjdG9yPGNoYXI+IGlucHV0RGF0YSgz
Mik7CisgICAgaW5wdXREYXRhLmZpbGwoJ2EnKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5wdXREYXRhLnNpemUoKTsgKytpKQorICAgICAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+
YWRkQnl0ZXMoaW5wdXREYXRhLmRhdGEoKSArIGksIDEpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZs
YXRlci0+ZmluaXNoKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVmbGF0ZXItPnNp
emUoKTsgKytpKQorICAgICAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0
ZXItPmRhdGEoKSArIGksIDEpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+ZmluaXNoKCkp
OworICAgIEVYUEVDVF9FUShpbnB1dERhdGEuc2l6ZSgpLCBpbmZsYXRlci0+c2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YS5kYXRhKCksIGluZmxhdGVyLT5kYXRhKCks
IGluZmxhdGVyLT5zaXplKCkpKTsKK30KKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRl
c3ROb0NvbnRleHRUYWtlT3ZlcikKK3sKKyAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRl
ZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSgxNSwgV2ViU29ja2V0RGVmbGF0ZXI6
OkRvTm90VGFrZU92ZXJDb250ZXh0KTsKKyAgICBPd25QdHI8V2ViU29ja2V0SW5mbGF0ZXI+IGlu
ZmxhdGVyID0gV2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAgIGNvbnN0IGNoYXIgZXhw
ZWN0ZWRbXSA9IHsweGYyLCAweDQ4LCAweGNkLCAweGM5LCAweGM5LCAweDA3LCAweDAwfTsKKyAg
ICBjb25zdCBjaGFyKiBpbnB1dERhdGEgPSAiSGVsbG8iOworICAgIGNvbnN0IHNpemVfdCBpbnB1
dExlbmd0aCA9IHN0cmxlbihpbnB1dERhdGEpOworCisgICAgLy8gSWYgbm9Db250ZXh0VGFrZU92
ZXIgaXMgdHJ1ZSwgdGhlIHNlY29uZCByZXN1bHQgc2hvdWxkIGJlIHRoZSBpZGVudGljYWwKKyAg
ICAvLyB3aXRoIHRoZSBmaXJzdCBvbmUuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyOyAr
K2kpIHsKKyAgICAgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YSwg
aW5wdXRMZW5ndGgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKHNpemVvZihleHBlY3RlZCksIGRlZmxhdGVyLT5zaXplKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkLCBkZWZsYXRlci0+ZGF0YSgpLCBk
ZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRl
cyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIEFTU0VSVF9U
UlVFKGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgICAgIEVYUEVDVF9FUShpbnB1dExlbmd0aCwg
aW5mbGF0ZXItPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRh
LCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIGRlZmxhdGVy
LT5yZXNldCgpOworICAgICAgICBpbmZsYXRlci0+cmVzZXQoKTsKKyAgICB9Cit9CisKK1RFU1Qo
V2ViU29ja2V0RGVmbGF0ZXJUZXN0LCBUZXN0V2luZG93Qml0cykKK3sKKyAgICBWZWN0b3I8Y2hh
cj4gaW5wdXREYXRhKDEwMjQgKyA2NCAqIDIpOworICAgIGlucHV0RGF0YS5maWxsKCdhJyk7Cisg
ICAgLy8gTW9kaWZ5IHRoZSBoZWFkIGFuZCB0YWlsIG9mIHRoZSBpbnB1dERhdGEgc28gdGhhdCBi
YWNrLXJlZmVyZW5jZQorICAgIC8vIGNhbiBiZSB1c2VkIGlmIHRoZSB3aW5kb3cgc2l6ZSBpcyBz
dWZmaWNpZW50bHktbGFyZ2UuCisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCA2NDsgKytqKSB7
CisgICAgICAgIGlucHV0RGF0YVtqXSA9ICdiJzsKKyAgICAgICAgaW5wdXREYXRhW2lucHV0RGF0
YS5zaXplKCkgLSBqIC0gMV0gPSAnYic7CisgICAgfQorCisgICAgT3duUHRyPFdlYlNvY2tldERl
ZmxhdGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoOCk7CisgICAgQVNT
RVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YS5kYXRhKCksIGlucHV0RGF0YS5z
aXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+ZmluaXNoKCkpOworCisgICAgT3du
UHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9IFdlYlNvY2tldEluZmxhdGVyOjpjcmVh
dGUoOCk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmFkZEJ5dGVzKGRlZmxhdGVyLT5kYXRh
KCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+ZmluaXNo
KCkpOworICAgIEVYUEVDVF9FUShpbnB1dERhdGEuc2l6ZSgpLCBpbmZsYXRlci0+c2l6ZSgpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YS5kYXRhKCksIGluZmxhdGVyLT5kYXRh
KCksIGluZmxhdGVyLT5zaXplKCkpKTsKK30KKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRlc3Qs
IFRlc3RMYXJnZURhdGEpCit7CisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZsYXRl
ciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUpOworICAgIE93blB0cjxXZWJTb2NrZXRJ
bmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgVmVj
dG9yPGNoYXI+IGlucHV0RGF0YSgxNiAqIDEwMjQgKiAxMDI0KTsKKyAgICBpbnB1dERhdGEuZmls
bCgnYScpOworCisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YS5k
YXRhKCksIGlucHV0RGF0YS5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+Zmlu
aXNoKCkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0
YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmZpbmlz
aCgpKTsKKyAgICBFWFBFQ1RfRVEoaW5wdXREYXRhLnNpemUoKSwgaW5mbGF0ZXItPnNpemUoKSk7
CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbnB1dERhdGEuZGF0YSgpLCBpbmZsYXRlci0+ZGF0
YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126744</attachid>
            <date>2012-02-13 03:07:44 -0800</date>
            <delta_ts>2012-02-14 01:24:56 -0800</delta_ts>
            <desc>Patch(rebased)</desc>
            <filename>bug-78449-20120213200742.patch</filename>
            <type>text/plain</type>
            <size>30303</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmZkYzljYmE5NDRkMjYz
YjQ0MzIyMmUxZjExYWZjZWE5MTljOGYzMi4uYjM5ZDljNTc2MTk2MDAzN2UyZGYzNzhhZWY4NmU3
N2ZkZmRhZDVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAyLTEzICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZGVmbGF0ZXIvaW5mbGF0ZXIgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgV2ViU29ja2V0RGVm
bGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2xhc3NlcyB3aGljaCB3cmFwIHpsaWIKKyAgICAgICAg
ZnVuY3Rpb25zLiBUaGVzZSBjbGFzc2VzIGFyZSBub3QgdXNlZCB5ZXQsIGJ1dCB3aWxsIGJlIHVz
ZWQgZm9yCisgICAgICAgIHN1cHBvcnRpbmcgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9taXVtIHBvcnQuIEJlaGF2aW9yIGlzIHVuY2hhbmdl
ZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBXZWJTb2NrZXREZWZsYXRlci4o
Y3BwfGgpLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAq
IFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6fldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjphZGRCeXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXREZWZsYXRlcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dERlZmxhdGVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpXZWJTb2NrZXRJ
bmZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6fldlYlNvY2tl
dEluZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjphZGRCeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6ZmluaXNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpyZXNldCk6CisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViU29ja2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OnNpemUp
OgorICAgICAgICAoV2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SW5mbGF0ZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6
OnNpemUpOgorCiAyMDEyLTAyLTEzICBZb3NpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbRm9ybXNdIFVzZSBlbnVtIGluc3RlYWQgb2YgYm9vbCBmb3IgSFRNTElu
cHV0RWxlbWVudDo6c2V0VmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjhlMjFj
YmQwNDgwNDJjZjkzNTRiYmFmMmRmYTkwNjA4NmUwMDk3OC4uZGNiMjAwN2NkZjYzNDg3NTRiZjcz
Y2NlNjc2MWJjZmRkM2EyYjFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAxMi0wMi0xMyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW1dlYlNvY2tldF0gQWRkIGRlZmxhdGVyL2luZmxhdGVyIGNsYXNzZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ0OQor
CisgICAgICAgIEFkZCB0ZXN0cyB3aGljaCBlbnN1cmUgV2ViU29ja2V0RGVmbGF0ZXIvV2ViU29j
a2V0SW5mbGF0ZXIgY2FuCisgICAgICAgIGNvbXByZXNzL2RlY29tcHJlc3MgZGF0YSBjb3JyZWN0
bHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIw
MTItMDItMTMgIFlvc2lmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtGb3Jtc10gVXNlIGVudW0gaW5zdGVhZCBvZiBib29sIGZvciBIVE1MSW5wdXRFbGVtZW50Ojpz
ZXRWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkNzc2NjdiMjNjNTk0M2I5N2JlNzU3ODcz
MWJlZjg4NGZkNThhZjczLi42OWJkZDJkYmRmMzk3NTJjY2MxY2YxMzAzZjcyOTAyZjc4MDA1ODZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjA0Miw2ICsyMDQyLDcgQEAgSUYgKEVOQUJMRV9X
RUJfU09DS0VUUykKICAgICAgICAgd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisgICAgICAgIHdlYnNvY2tldHMv
V2ViU29ja2V0RGVmbGF0ZXIuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDQ1MTQ5ZDJjY2M4ODk5YThlMzVkNzJhZmIx
ZTRiNGY0NWQwZTAzOWIuLmVkZWI0YTkxMTYwZmY5MzU2ODc4ZDZiMDg2YzNhZjIzY2EyYmM3MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDMxNCw2ICs0MzE0LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKKwlTb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA3
MjU3YzU2YWFmYjRmN2NiNjE5NTZhNGVkYTMyZmExOTkyOWY4YTU2Li5hNGY3NzdjYjczMGExNWYz
YmFiZWM1OTgwODQyMDcxZThiNWQzN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM2NjMsNiArMzY2Myw3
IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdl
YnNvY2tldHMvV2ViU29ja2V0LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKyAg
ICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oIFwKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuaCBcCkBAIC0zNjczLDYgKzM2NzQsNyBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgXAogICAgICAg
ICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKICAgICAgICAg
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGU5MjE0
OWU0YmI5NTc0YWRmZjE1OWFhNTdhYjczMzUyOWMzZmQ2YS4uOTkyNTM3MjU1MDM0MmVhOTIwNzQ5
NjlmYjBmY2NjZmNiMmY3NjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDc5OSw2ICs0Nzk5LDgg
QEAKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwJywKICAgICAg
ICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCcsCiAgICAgICAgICAgICAnd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVyLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlci5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3Nvci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggMjMyYjIzM2YyNTY5ODVmYTE4Y2E3NzE4MWVkYTIwOTcwYTkzOGNi
ZS4uMWU0YzA1Yzc3NTk2N2RjZWFhYTYwNGNmYmI5ODlkOTE5YWUyNzljYyAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTcyOTc4LDYgKzcyOTc4
LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVy
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdl
YnNvY2tldHNcV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAiCiAJCQkJPgogCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDhmZTExZTFiMDQyYTA1MDAxYWNkZjZlYWMzZTdiODE2ZGU1ZjE0MjkuLjVhZDE0
ZWQ1OWQ0ZTAxNDZmYTY3YWZhMjk5NGY1ZThkMzJjYTFmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzODIsNiArMTM4Miw4
IEBACiAJCTRBRDAxNzNDMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRDAxNzNB
MTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmNwcCAqLzsgfTsKIAkJNEFE
MDE3M0QxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRDAxNzNCMTI3RTgyODYwMDE1
MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi87IH07CiAJCTRBREUyNUZBMTRFM0JCNEMw
MDRDMjIxMyAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBREUyNUY5MTRFM0JCNEMwMDRDMjIxMyAv
KiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCAqLzsgfTsKKwkJNEFFMDJBQkQxNEU4QTlE
MjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRTAyQUJCMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJT
b2NrZXREZWZsYXRlci5jcHAgKi87IH07CisJCTRBRTAyQUJFMTRFOEE5RDIwMEJDM0JBNyAvKiBX
ZWJTb2NrZXREZWZsYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEFFMDJBQkMxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmgg
Ki87IH07CiAJCTRBRjFBRDNFMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFG
MUFEM0MxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHAgKi87IH07
CiAJCTRBRjFBRDNGMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRjFBRDNEMTNG
RDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjI3MDhDNzBBRjE5RUU0MDA2NTEy
N0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCAqLzsgfTsK
QEAgLTgyMzIsNiArODIzNCw4IEBACiAJCTRBRDAxNzNBMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hU
TUxPdXRwdXRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxPdXRwdXRFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBREUyNUY5MTRFM0JCNEMwMDRDMjIxMyAvKiBXZWJTb2Nr
ZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTRBRTAyQUJCMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXREZWZsYXRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBRTAyQUJDMTRFOEE5RDIwMEJDM0JBNyAv
KiBXZWJTb2NrZXREZWZsYXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTb2NrZXREZWZsYXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUYxQUQz
QzEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRjFBRDNEMTNGRDIzQTQwMEFBOTU5MCAvKiBF
dmVudERpc3BhdGNoTWVkaWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RXZlbnREaXNwYXRjaE1lZGlhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRC
MjcwOEM1MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0NzY4LDcgKzE0NzcyLDYgQEAKIAkJNTE4QTM0QkQxMDI2QzgzMTAwMUI2ODk2IC8qIHdl
YnNvY2tldHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTRBREUyNUY5MTRFM0JCNEMwMDRDMjIxMyAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3Iu
aCAqLywKIAkJCQk1MUZCNTRGNDExM0UzNjQyMDA4MjExNzYgLyogQ2xvc2VFdmVudC5oICovLAog
CQkJCTUxRkI1NEY2MTEzRTM2NTkwMDgyMTE3NiAvKiBDbG9zZUV2ZW50LmlkbCAqLywKIAkJCQk1
MTEyMjQ3MTEwQ0ZCOEM2MDA4MDk5RDcgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
ICovLApAQCAtMTQ3ODEsOCArMTQ3ODQsMTEgQEAKIAkJCQk1MTBENEE0NzEwMzE3N0EyMDA0OUVB
NTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCiAJCQkJNTEwRDRBNDgxMDMxNzdBMjAwNDlF
QTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLywKIAkJCQk1MTBENEE0OTEwMzE3N0EyMDA0OUVB
NTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovLAorCQkJCTRBRTAyQUJCMTRFOEE5RDIw
MEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgKi8sCisJCQkJNEFFMDJBQkMxNEU4QTlE
MjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggKi8sCiAJCQkJNEE5NTdGMDMxNEUyNDEx
MDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwICovLAogCQkJCTRB
OTU3RjA0MTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgg
Ki8sCisJCQkJNEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3Nvci5oICovLAogCQkJCTUxQUJBRTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRI
YW5kc2hha2UuY3BwICovLAogCQkJCTUxQUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuaCAqLywKIAkJCQk3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgKi8sCkBAIC0yNDE5NCw2ICsyNDIwMCw3IEBACiAJCQkJ
NEFERTI1RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyRTkyRkMxNEU1NDA1ODAwODdGRkJBIC8qIFNoYWRvd1Jv
b3RMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0NDM0FFMzE0RThFNEEyMDA4OTQ5ODggLyog
TmF2aWdhdG9yU3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEFFMDJBQkUxNEU4QTlE
MjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MTM2
LDYgKzI3MTQzLDcgQEAKIAkJCQk0QTk1N0YwNjE0RTI0MTJBMDA0OURCRkIgLyogV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzJFOTJGQjE0RTU0
MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdD
QzNBRTIxNEU4RTRBMjAwODk0OTg4IC8qIE5hdmlnYXRvclN1cHBsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNEFFMDJBQkQxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWE1NjhkNWQ5MTEzZWZhZjlkOGIzOTkwOTkx
Y2YxZWVlZDhiYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAgLTAsMCArMSwyMTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVm
bGF0ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGludCBkZWZhdWx0TWVtTGV2ZWwgPSAxOworc3Rh
dGljIGNvbnN0IHNpemVfdCBpbml0aWFsQnVmZmVyU2l6ZSA9IDQwOTY7CisKK1Bhc3NPd25QdHI8
V2ViU29ja2V0RGVmbGF0ZXI+IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoaW50IHdpbmRvd0Jp
dHMsIFNob3VsZFRha2VPdmVyQ29udGV4dCBjb250ZXh0VGFrZU92ZXIpCit7CisgICAgT3duUHRy
PFdlYlNvY2tldERlZmxhdGVyPiBkZWZsYXRlciA9IGFkb3B0UHRyKG5ldyBXZWJTb2NrZXREZWZs
YXRlcih3aW5kb3dCaXRzLCBjb250ZXh0VGFrZU92ZXIpKTsKKyAgICBpZiAoZGVmbGF0ZUluaXQy
KCZkZWZsYXRlci0+bV9zdHJlYW0sIFpfREVGQVVMVF9DT01QUkVTU0lPTiwgWl9ERUZMQVRFRCwg
LXdpbmRvd0JpdHMsIGRlZmF1bHRNZW1MZXZlbCwgWl9ERUZBVUxUX1NUUkFURUdZKSA9PSBaX09L
KQorICAgICAgICByZXR1cm4gZGVmbGF0ZXIucmVsZWFzZSgpOworICAgIHJldHVybiBudWxscHRy
OworfQorCitXZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIoaW50IHdpbmRvd0Jp
dHMsIFNob3VsZFRha2VPdmVyQ29udGV4dCB0YWtlT3ZlckNvbnRleHQpCisgICAgOiBtX3dpbmRv
d0JpdHMod2luZG93Qml0cykKKyAgICAsIG1fdGFrZU92ZXJDb250ZXh0KHRha2VPdmVyQ29udGV4
dCkKK3sKKyAgICBBU1NFUlQobV93aW5kb3dCaXRzID49IDggJiYgbV93aW5kb3dCaXRzIDw9IDE1
KTsKKyAgICBtZW1zZXQoJm1fc3RyZWFtLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKK30KKworV2Vi
U29ja2V0RGVmbGF0ZXI6On5XZWJTb2NrZXREZWZsYXRlcigpCit7CisgICAgaW50IHJlc3VsdCA9
IGRlZmxhdGVFbmQoJm1fc3RyZWFtKTsKKyAgICBpZiAocmVzdWx0ICE9IFpfT0spCisgICAgICAg
IExPRyhOZXR3b3JrLCAiZGVmbGF0ZUVuZCgpIGZhaWxlZDogJWQiLCByZXN1bHQpOworfQorCiti
b29sIFdlYlNvY2tldERlZmxhdGVyOjphZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQoreworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBzaXplX3QgbWF4TGVuZ3RoID0gZGVmbGF0ZUJvdW5kKCZtX3N0cmVhbSwgbGVuZ3RoKTsKKyAg
ICBpZiAoIW1fYnVmZmVyLnRyeVJlc2VydmVDYXBhY2l0eShtX2J1ZmZlci5zaXplKCkgKyBtYXhM
ZW5ndGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9zdHJlYW0ubmV4dF9pbiA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihjb25zdF9jYXN0PGNoYXIqPihkYXRhKSk7CisgICAgbV9z
dHJlYW0uYXZhaWxfaW4gPSBsZW5ndGg7CisgICAgbV9zdHJlYW0ubmV4dF9vdXQgPSByZWludGVy
cHJldF9jYXN0PEJ5dGVmKj4obV9idWZmZXIuZGF0YSgpKTsKKyAgICBtX3N0cmVhbS5hdmFpbF9v
dXQgPSBtYXhMZW5ndGg7CisgICAgaW50IHJlc3VsdCA9IGRlZmxhdGUoJm1fc3RyZWFtLCBaX05P
X0ZMVVNIKTsKKyAgICBpZiAocmVzdWx0ICE9IFpfT0sgfHwgbV9zdHJlYW0uYXZhaWxfaW4gPiAw
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgY29tcHJlc3NlZFNpemUgPSBt
YXhMZW5ndGggLSBtX3N0cmVhbS5hdmFpbF9vdXQ7CisgICAgbV9idWZmZXIucmVzaXplKG1fYnVm
ZmVyLnNpemUoKSArIGNvbXByZXNzZWRTaXplKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFdlYlNvY2tldERlZmxhdGVyOjpmaW5pc2goKQoreworICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9IG1fYnVmZmVyLmNhcGFjaXR5KCkgLSBt
X2J1ZmZlci5zaXplKCk7CisgICAgICAgIG1fc3RyZWFtLm5leHRfaW4gPSByZWludGVycHJldF9j
YXN0PEJ5dGVmKj4oMCk7CisgICAgICAgIG1fc3RyZWFtLmF2YWlsX2luID0gMDsKKyAgICAgICAg
bV9zdHJlYW0ubmV4dF9vdXQgPSByZWludGVycHJldF9jYXN0PEJ5dGVmKj4obV9idWZmZXIuZGF0
YSgpICsgbV9idWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgbV9zdHJlYW0uYXZhaWxfb3V0ID0gYXZh
aWxhYmxlQ2FwYWNpdHk7CisgICAgICAgIGludCByZXN1bHQgPSBkZWZsYXRlKCZtX3N0cmVhbSwg
Wl9TWU5DX0ZMVVNIKTsKKyAgICAgICAgbV9idWZmZXIucmVzaXplKG1fYnVmZmVyLnNpemUoKSAr
IGF2YWlsYWJsZUNhcGFjaXR5IC0gbV9zdHJlYW0uYXZhaWxfb3V0KTsKKyAgICAgICAgaWYgKHJl
c3VsdCA9PSBaX09LKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChyZXN1bHQgPT0g
Wl9CVUZfRVJST1IpIHsKKyAgICAgICAgICAgIGlmICghbV9idWZmZXIudHJ5UmVzZXJ2ZUNhcGFj
aXR5KG1fYnVmZmVyLmNhcGFjaXR5KCkgKiAyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAvLyBSZW1vdmUgNCBvY3RldHMgZnJvbSB0aGUgdGFpbCBhcyB0aGUgc3BlY2lmaWNhdGlvbiBy
ZXF1aXJlcy4KKyAgICBpZiAobV9idWZmZXIuc2l6ZSgpIDw9IDQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBtX2J1ZmZlci5yZXNpemUobV9idWZmZXIuc2l6ZSgpIC0gNCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZXI6OnJlc2V0KCkKK3sKKyAgICBt
X2J1ZmZlci5jbGVhcigpOworICAgIGlmIChtX3Rha2VPdmVyQ29udGV4dCA9PSBEb05vdFRha2VP
dmVyQ29udGV4dCkKKyAgICAgICAgZGVmbGF0ZVJlc2V0KCZtX3N0cmVhbSk7Cit9CisKK1Bhc3NP
d25QdHI8V2ViU29ja2V0SW5mbGF0ZXI+IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoaW50IHdp
bmRvd0JpdHMpCit7CisgICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9IGFk
b3B0UHRyKG5ldyBXZWJTb2NrZXRJbmZsYXRlcih3aW5kb3dCaXRzKSk7CisgICAgaWYgKGluZmxh
dGVJbml0MigmaW5mbGF0ZXItPm1fc3RyZWFtLCAtd2luZG93Qml0cykgPT0gWl9PSykKKyAgICAg
ICAgcmV0dXJuIGluZmxhdGVyLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
V2ViU29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKGludCB3aW5kb3dCaXRzKQorICAg
IDogbV93aW5kb3dCaXRzKHdpbmRvd0JpdHMpCit7CisgICAgbWVtc2V0KCZtX3N0cmVhbSwgMCwg
c2l6ZW9mKHpfc3RyZWFtKSk7Cit9CisKK1dlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5m
bGF0ZXIoKQoreworICAgIGludCByZXN1bHQgPSBpbmZsYXRlRW5kKCZtX3N0cmVhbSk7CisgICAg
aWYgKHJlc3VsdCAhPSBaX09LKQorICAgICAgICBMT0coTmV0d29yaywgImluZmxhdGVFbmQoKSBm
YWlsZWQ6ICVkIiwgcmVzdWx0KTsKK30KKworYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0
ZXMoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoIWxlbmd0aCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2J1ZmZlci50cnlSZXNlcnZlQ2Fw
YWNpdHkobV9idWZmZXIuc2l6ZSgpICsgaW5pdGlhbEJ1ZmZlclNpemUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzaXplX3QgY29uc3VtZWRTb0ZhciA9IDA7CisgICAgd2hpbGUgKGNv
bnN1bWVkU29GYXIgPCBsZW5ndGgpIHsKKyAgICAgICAgc2l6ZV90IGF2YWlsYWJsZUNhcGFjaXR5
ID0gbV9idWZmZXIuY2FwYWNpdHkoKSAtIG1fYnVmZmVyLnNpemUoKTsKKyAgICAgICAgc2l6ZV90
IHJlbWFpbmluZ0xlbmd0aCA9IGxlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAgICAgIG1fc3Ry
ZWFtLm5leHRfaW4gPSByZWludGVycHJldF9jYXN0PEJ5dGVmKj4oY29uc3RfY2FzdDxjaGFyKj4o
ZGF0YSkgKyBjb25zdW1lZFNvRmFyKTsKKyAgICAgICAgbV9zdHJlYW0uYXZhaWxfaW4gPSByZW1h
aW5pbmdMZW5ndGg7CisgICAgICAgIG1fc3RyZWFtLm5leHRfb3V0ID0gcmVpbnRlcnByZXRfY2Fz
dDxCeXRlZio+KG1fYnVmZmVyLmRhdGEoKSArIG1fYnVmZmVyLnNpemUoKSk7CisgICAgICAgIG1f
c3RyZWFtLmF2YWlsX291dCA9IGF2YWlsYWJsZUNhcGFjaXR5OworICAgICAgICBpbnQgcmVzdWx0
ID0gaW5mbGF0ZSgmbV9zdHJlYW0sIFpfTk9fRkxVU0gpOworICAgICAgICBjb25zdW1lZFNvRmFy
ICs9IHJlbWFpbmluZ0xlbmd0aCAtIG1fc3RyZWFtLmF2YWlsX2luOworICAgICAgICBtX2J1ZmZl
ci5yZXNpemUobV9idWZmZXIuc2l6ZSgpICsgYXZhaWxhYmxlQ2FwYWNpdHkgLSBtX3N0cmVhbS5h
dmFpbF9vdXQpOworICAgICAgICBpZiAocmVzdWx0ID09IFpfQlVGX0VSUk9SKSB7CisgICAgICAg
ICAgICBpZiAoIW1fYnVmZmVyLnRyeVJlc2VydmVDYXBhY2l0eShtX2J1ZmZlci5jYXBhY2l0eSgp
ICogMikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlc3VsdCAhPSBaX09LKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBU1NFUlQoY29uc3VtZWRTb0ZhciA9PSBsZW5ndGgp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlNvY2tldEluZmxhdGVyOjpmaW5pc2go
KQoreworICAgIHN0YXRpYyBCeXRlZiBzdHJpcHBlZEZpZWxkc1tdID0gezB4MDAsIDB4MDAsIDB4
ZmYsIDB4ZmZ9OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc3RyaXBwZWRMZW5ndGggPSA0Owor
CisgICAgLy8gQXBwZW5kcyA0IG9jdGVzdHMgb2YgMHgwMCAweDAwIDB4ZmYgMHhmZgorICAgIHNp
emVfdCBjb25zdW1lZFNvRmFyID0gMDsKKyAgICB3aGlsZSAoY29uc3VtZWRTb0ZhciA8IHN0cmlw
cGVkTGVuZ3RoKSB7CisgICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9IG1fYnVmZmVy
LmNhcGFjaXR5KCkgLSBtX2J1ZmZlci5zaXplKCk7CisgICAgICAgIHNpemVfdCByZW1haW5pbmdM
ZW5ndGggPSBzdHJpcHBlZExlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAgICAgIG1fc3RyZWFt
Lm5leHRfaW4gPSBzdHJpcHBlZEZpZWxkcyArIGNvbnN1bWVkU29GYXI7CisgICAgICAgIG1fc3Ry
ZWFtLmF2YWlsX2luID0gcmVtYWluaW5nTGVuZ3RoOworICAgICAgICBtX3N0cmVhbS5uZXh0X291
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihtX2J1ZmZlci5kYXRhKCkgKyBtX2J1ZmZlci5z
aXplKCkpOworICAgICAgICBtX3N0cmVhbS5hdmFpbF9vdXQgPSBhdmFpbGFibGVDYXBhY2l0eTsK
KyAgICAgICAgaW50IHJlc3VsdCA9IGluZmxhdGUoJm1fc3RyZWFtLCBaX0ZJTklTSCk7CisgICAg
ICAgIGNvbnN1bWVkU29GYXIgKz0gcmVtYWluaW5nTGVuZ3RoIC0gbV9zdHJlYW0uYXZhaWxfaW47
CisgICAgICAgIG1fYnVmZmVyLnJlc2l6ZShtX2J1ZmZlci5zaXplKCkgKyBhdmFpbGFibGVDYXBh
Y2l0eSAtIG1fc3RyZWFtLmF2YWlsX291dCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gWl9CVUZf
RVJST1IpIHsKKyAgICAgICAgICAgIGlmICghbV9idWZmZXIudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1f
YnVmZmVyLmNhcGFjaXR5KCkgKiAyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0ICE9IFpf
T0sgJiYgcmVzdWx0ICE9IFpfU1RSRUFNX0VORCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgQVNTRVJUKGNvbnN1bWVkU29GYXIgPT0gc3RyaXBwZWRMZW5ndGgpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0SW5mbGF0ZXI6OnJlc2V0KCkKK3sK
KyAgICBtX2J1ZmZlci5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUwMTQyNzY2MDA3YWZjOGI5M2NiZDEw
ZmZmODQ1YzkwOTA1MWIyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29j
a2V0RGVmbGF0ZXJfaAorI2RlZmluZSBXZWJTb2NrZXREZWZsYXRlcl9oCisKKyNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8emxpYi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFdlYlNvY2tldERlZmxhdGVyIHsKK3B1YmxpYzoKKyAgICBlbnVtIFNob3VsZFRha2VPdmVy
Q29udGV4dCB7CisgICAgICAgIERvTm90VGFrZU92ZXJDb250ZXh0ID0gMCwKKyAgICAgICAgVGFr
ZU92ZXJDb250ZXh0ID0gMQorICAgIH07CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU29ja2V0
RGVmbGF0ZXI+IGNyZWF0ZShpbnQgd2luZG93Qml0cywgU2hvdWxkVGFrZU92ZXJDb250ZXh0ID0g
VGFrZU92ZXJDb250ZXh0KTsKKworICAgIH5XZWJTb2NrZXREZWZsYXRlcigpOworCisgICAgYm9v
bCBhZGRCeXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGZpbmlzaCgpOworICAg
IGNvbnN0IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQorICAgIHZvaWQgcmVz
ZXQoKTsKKworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXREZWZsYXRlcihpbnQsIFNob3VsZFRha2VP
dmVyQ29udGV4dCk7CisKKyAgICBpbnQgbV93aW5kb3dCaXRzOworICAgIFNob3VsZFRha2VPdmVy
Q29udGV4dCBtX3Rha2VPdmVyQ29udGV4dDsKKyAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7Cisg
ICAgel9zdHJlYW0gbV9zdHJlYW07Cit9OworCitjbGFzcyBXZWJTb2NrZXRJbmZsYXRlciB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU29ja2V0SW5mbGF0ZXI+IGNyZWF0ZShp
bnQgd2luZG93Qml0cyA9IDE1KTsKKworICAgIH5XZWJTb2NrZXRJbmZsYXRlcigpOworCisgICAg
Ym9vbCBhZGRCeXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGZpbmlzaCgpOwor
ICAgIGNvbnN0IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQorICAgIHZvaWQg
cmVzZXQoKTsKKworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXRJbmZsYXRlcihpbnQpOworCisgICAg
aW50IG1fd2luZG93Qml0czsKKyAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7CisgICAgel9zdHJl
YW0gbV9zdHJlYW07Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisK
KyNlbmRpZiAvLyBXZWJTb2NrZXREZWZsYXRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aQppbmRleCAzNWYyYjE5OTA3NzlkNjY5ZWY4MDQwMmZiMDBmMmE1NTYxNDdjMzI2Li40ZWE3MDBk
NTk0Njg2YTU4MjlmYTc3ZmI0OWNmYmI4MDZiNjJmZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cGkKQEAgLTExOCw2ICsxMTgsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkxheWVy
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVzdC5jcHAnLAorICAg
ICAgICAgICAgJ3Rlc3RzL1dlYlNvY2tldERlZmxhdGVyVGVzdC5jcHAnLAogICAgICAgICAgICAg
J3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvV2ViVVJMUmVxdWVzdFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJW
aWV3VGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0M2FmMDhlYzE5MmQ3NDI4ZDli
MjM5ZTU2NzIzMTZlMmE1NDE1NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYlNvY2tldERlZmxhdGVyVGVzdC5jcHAKQEAgLTAsMCArMSwxNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJTb2NrZXREZWZsYXRl
ci5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitURVNUKFdlYlNv
Y2tldERlZmxhdGVyVGVzdCwgVGVzdENvbXByZXNzSGVsbG8pCit7CisgICAgLy8gVGVzdCB0aGUg
Zmlyc3QgZXhhbXBsZSBvbiBzZWN0aW9uIDQuMyBvZiB0aGUgZHJhZnQgc3BlYy4KKyAgICBPd25Q
dHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0
ZSgxNSk7CisgICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9IFdlYlNvY2tl
dEluZmxhdGVyOjpjcmVhdGUoKTsKKyAgICBjb25zdCBjaGFyKiBpbnB1dERhdGEgPSAiSGVsbG8i
OworICAgIGNvbnN0IHNpemVfdCBpbnB1dExlbmd0aCA9IHN0cmxlbihpbnB1dERhdGEpOworCisg
ICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YSwgaW5wdXRMZW5ndGgp
KTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+ZmluaXNoKCkpOworICAgIGNvbnN0IGNoYXIg
ZXhwZWN0ZWRGaXJzdFtdID0gezB4ZjIsIDB4NDgsIDB4Y2QsIDB4YzksIDB4YzksIDB4MDcsIDB4
MDB9OworICAgIEVYUEVDVF9FUShzaXplb2YoZXhwZWN0ZWRGaXJzdCksIGRlZmxhdGVyLT5zaXpl
KCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRGaXJzdCwgZGVmbGF0ZXItPmRh
dGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRC
eXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RS
VUUoaW5mbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBFWFBFQ1RfRVEoaW5wdXRMZW5ndGgsIGluZmxh
dGVyLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLCBpbmZsYXRl
ci0+ZGF0YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7CisKKyAgICBkZWZsYXRlci0+cmVzZXQoKTsK
KyAgICBpbmZsYXRlci0+cmVzZXQoKTsKKworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRC
eXRlcyhpbnB1dERhdGEsIGlucHV0TGVuZ3RoKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXIt
PmZpbmlzaCgpKTsKKyAgICBjb25zdCBjaGFyIGV4cGVjdGVkU2Vjb25kW10gPSB7MHhmMiwgMHgw
MCwgMHgxMSwgMHgwMCwgMHgwMH07CisgICAgRVhQRUNUX0VRKHNpemVvZihleHBlY3RlZFNlY29u
ZCksIGRlZmxhdGVyLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRT
ZWNvbmQsIGRlZmxhdGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRf
VFJVRShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUo
KSkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNUX0VR
KGlucHV0TGVuZ3RoLCBpbmZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21w
KGlucHV0RGF0YSwgaW5mbGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworfQorCitU
RVNUKFdlYlNvY2tldERlZmxhdGVyVGVzdCwgVGVzdE11bHRpcGxlQWRkQnl0ZXNDYWxscykKK3sK
KyAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0
ZXI6OmNyZWF0ZSgxNSk7CisgICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9
IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoKTsKKyAgICBWZWN0b3I8Y2hhcj4gaW5wdXREYXRh
KDMyKTsKKyAgICBpbnB1dERhdGEuZmlsbCgnYScpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpbnB1dERhdGEuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVy
LT5hZGRCeXRlcyhpbnB1dERhdGEuZGF0YSgpICsgaSwgMSkpOworICAgIEFTU0VSVF9UUlVFKGRl
ZmxhdGVyLT5maW5pc2goKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZWZsYXRlci0+
c2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZs
YXRlci0+ZGF0YSgpICsgaSwgMSkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5maW5pc2go
KSk7CisgICAgRVhQRUNUX0VRKGlucHV0RGF0YS5zaXplKCksIGluZmxhdGVyLT5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLmRhdGEoKSwgaW5mbGF0ZXItPmRhdGEo
KSwgaW5mbGF0ZXItPnNpemUoKSkpOworfQorCitURVNUKFdlYlNvY2tldERlZmxhdGVyVGVzdCwg
VGVzdE5vQ29udGV4dFRha2VPdmVyKQoreworICAgIE93blB0cjxXZWJTb2NrZXREZWZsYXRlcj4g
ZGVmbGF0ZXIgPSBXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKDE1LCBXZWJTb2NrZXREZWZsYXRl
cjo6RG9Ob3RUYWtlT3ZlckNvbnRleHQpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4g
aW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgY29uc3QgY2hhciBl
eHBlY3RlZFtdID0gezB4ZjIsIDB4NDgsIDB4Y2QsIDB4YzksIDB4YzksIDB4MDcsIDB4MDB9Owor
ICAgIGNvbnN0IGNoYXIqIGlucHV0RGF0YSA9ICJIZWxsbyI7CisgICAgY29uc3Qgc2l6ZV90IGlu
cHV0TGVuZ3RoID0gc3RybGVuKGlucHV0RGF0YSk7CisKKyAgICAvLyBJZiB3ZSBkb24ndCB0YWtl
IG92ZXIgY29udGV4dCwgdGhlIHNlY29uZCByZXN1bHQgc2hvdWxkIGJlIHRoZSBpZGVudGljYWwK
KyAgICAvLyB3aXRoIHRoZSBmaXJzdCBvbmUuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAy
OyArK2kpIHsKKyAgICAgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0
YSwgaW5wdXRMZW5ndGgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKHNpemVvZihleHBlY3RlZCksIGRlZmxhdGVyLT5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkLCBkZWZsYXRlci0+ZGF0YSgp
LCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRC
eXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgICAgIEVYUEVDVF9FUShpbnB1dExlbmd0
aCwgaW5mbGF0ZXItPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXRE
YXRhLCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIGRlZmxh
dGVyLT5yZXNldCgpOworICAgICAgICBpbmZsYXRlci0+cmVzZXQoKTsKKyAgICB9Cit9CisKK1RF
U1QoV2ViU29ja2V0RGVmbGF0ZXJUZXN0LCBUZXN0V2luZG93Qml0cykKK3sKKyAgICBWZWN0b3I8
Y2hhcj4gaW5wdXREYXRhKDEwMjQgKyA2NCAqIDIpOworICAgIGlucHV0RGF0YS5maWxsKCdhJyk7
CisgICAgLy8gTW9kaWZ5IHRoZSBoZWFkIGFuZCB0YWlsIG9mIHRoZSBpbnB1dERhdGEgc28gdGhh
dCBiYWNrLXJlZmVyZW5jZQorICAgIC8vIGNhbiBiZSB1c2VkIGlmIHRoZSB3aW5kb3cgc2l6ZSBp
cyBzdWZmaWNpZW50bHktbGFyZ2UuCisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCA2NDsgKytq
KSB7CisgICAgICAgIGlucHV0RGF0YVtqXSA9ICdiJzsKKyAgICAgICAgaW5wdXREYXRhW2lucHV0
RGF0YS5zaXplKCkgLSBqIC0gMV0gPSAnYic7CisgICAgfQorCisgICAgT3duUHRyPFdlYlNvY2tl
dERlZmxhdGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoOCk7CisgICAg
QVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YS5kYXRhKCksIGlucHV0RGF0
YS5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+ZmluaXNoKCkpOworCisgICAg
T3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9IFdlYlNvY2tldEluZmxhdGVyOjpj
cmVhdGUoOCk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmFkZEJ5dGVzKGRlZmxhdGVyLT5k
YXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+Zmlu
aXNoKCkpOworICAgIEVYUEVDVF9FUShpbnB1dERhdGEuc2l6ZSgpLCBpbmZsYXRlci0+c2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YS5kYXRhKCksIGluZmxhdGVyLT5k
YXRhKCksIGluZmxhdGVyLT5zaXplKCkpKTsKK30KKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRl
c3QsIFRlc3RMYXJnZURhdGEpCit7CisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZs
YXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUpOworICAgIE93blB0cjxXZWJTb2Nr
ZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAg
VmVjdG9yPGNoYXI+IGlucHV0RGF0YSgxNiAqIDEwMjQgKiAxMDI0KTsKKyAgICBpbnB1dERhdGEu
ZmlsbCgnYScpOworCisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0
YS5kYXRhKCksIGlucHV0RGF0YS5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+
ZmluaXNoKCkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+
ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmZp
bmlzaCgpKTsKKyAgICBFWFBFQ1RfRVEoaW5wdXREYXRhLnNpemUoKSwgaW5mbGF0ZXItPnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbnB1dERhdGEuZGF0YSgpLCBpbmZsYXRlci0+
ZGF0YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126931</attachid>
            <date>2012-02-14 01:22:44 -0800</date>
            <delta_ts>2012-02-14 03:55:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78449-20120214182242.patch</filename>
            <type>text/plain</type>
            <size>30604</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjkxMTZhOGQ0ZjI3MWYz
MTYxOGIxNWZlYTNmZTVlMTIwNWMyMmRlZC4uNGE0ZDQ1NDQ2NGFjMTljYTI4YmE4MDY0ZjQ1ZjZh
ZTRkNzRhZTViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAyLTE0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZGVmbGF0ZXIvaW5mbGF0ZXIgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgV2ViU29ja2V0RGVm
bGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2xhc3NlcyB3aGljaCB3cmFwIHpsaWIKKyAgICAgICAg
ZnVuY3Rpb25zLiBUaGVzZSBjbGFzc2VzIGFyZSBub3QgdXNlZCB5ZXQsIGJ1dCB3aWxsIGJlIHVz
ZWQgZm9yCisgICAgICAgIHN1cHBvcnRpbmcgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9taXVtIHBvcnQuIEJlaGF2aW9yIGlzIHVuY2hhbmdl
ZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZC5XZWJTb2NrZXREZWZsYXRlci4o
Y3BwfGgpLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAq
IFRhcmdldC5wcmk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXREZWZsYXRlcjo6fldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldERlZmxhdGVyOjphZGRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXREZWZsYXRlcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxh
dGVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6fldlYlNvY2tldEluZmxhdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjphZGRCeXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6ZmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEluZmxhdGVyOjpyZXNldCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXREZWZsYXRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViU29j
a2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OnNpemUpOgorICAgICAgICAo
V2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6
OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OnNpemUpOgorCiAy
MDEyLTAyLTEzICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBN
YWtlIFNoYWRvd1Jvb3Qubm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDgzYjZhM2RkNjcwNzJlZTJkMjYxOTE2NGQxYzZh
NzVlZTNkOGFkZjcuLjA0ODcyMzMzM2Q5ZWQ0ZTVkNTUxYmU1NGE2ZWFkYTY1YTcxM2JmNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDItMTQgIEtl
bmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2Nr
ZXRdIEFkZCBkZWZsYXRlci9pbmZsYXRlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgdGVzdHMgd2hp
Y2ggZW5zdXJlIFdlYlNvY2tldERlZmxhdGVyL1dlYlNvY2tldEluZmxhdGVyIGNhbgorICAgICAg
ICBjb21wcmVzcy9kZWNvbXByZXNzIGRhdGEgY29ycmVjdGx5LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICog
dGVzdHMvV2ViU29ja2V0RGVmbGF0ZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTAyLTEzICBIYXlhdG8gSXRvICA8
aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qubm9kZVR5cGUg
cmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRl
MDkwZTYxNjMxNDE4ZmQwNDNjOGE4OTE2ZDc2ZjcyOWEyNDg1OGQuLmEwYzFlYTY4ZTE0NDYwNTI0
ZjkzMWQ5MDNhOWVmNTRiMjJkYzczZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDQyLDYg
KzIwNDIsNyBAQCBJRiAoRU5BQkxFX1dFQl9TT0NLRVRTKQogICAgICAgICB3ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKICAgICAgICAgd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKICAgICAgICAgd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAogICAgICAgICB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTQ5
Y2ViMTA3MGM2MzZlYzIxYjMwZDkwZDg5YWZlMGM0OTk4OTM0OC4uYmFiYWI5OWUzMjdjYmRlYmI4
ZTMxZjE4YzI3Njc4MmE3MjA1ZGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC00MzE0LDYgKzQzMTQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nv
ci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCmluZGV4IGFkMDc4N2JmMWQ1MDE2NzhiMTQ2NTNiMzViMTNjNDI3NDNl
OGQ4ZjEuLmY2ODJlNjE3M2ZkNzRmMDJjYTBiNWJiOTZlMjg4YjBjM2YxMDE0ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtMzY2Myw2ICszNjYzLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9T
T0NLRVRTPTEpIHsKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCiAgICAgICAgIHdl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmggXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBc
CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggXAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKQEAgLTM2NzMsNiArMzY3NCw3
IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgU09VUkNF
UyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAgICAgICAgIHdlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVyLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlz
cGF0Y2hlci5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAg
XAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCA5ZDNmODJjMTk0NDM3MmJiYTk3Yjg0ZWI1NWZlMzgyMDQwYzJmYjlj
Li44ZjM1YTJkNzQ0MzVlY2U2ODE3MmJjMWU3ZTE0Njk1MzZhZDA4YjZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC00Nzk5LDYgKzQ3OTksOCBAQAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCcs
CisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAnLAorICAgICAg
ICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCcsCiAgICAgICAgICAgICAnd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCcsCiAgICAgICAgICAgICAn
d2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgnLAogICAgICAgICAgICAg
J3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwNzBhYjNmOTYxOTFiNjMx
ZTA1MDM5NmJhOTIxMzE3NWUxODdiNjQ4Li5mNGY4NjI3ZjI4MGM3OTE3OGM5ODA4MDFjNjZiNzNm
YzY5ZTM4ZjQwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNzI5NzgsNiArNzI5NzgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXREZWZsYXRlci5jcHAi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNv
Y2tldHNcV2ViU29ja2V0RGVmbGF0ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGNiZWJlMGU2NzNkNjIwM2JmN2Y5OGMy
MjM0NjYwM2JiNThiZTI4Mi4uNzYxNDVhOGE5MmYxODAwY2M0OGI0ZTgwMDllOGViMGZiNTg1YzIw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTM4Miw2ICsxMzgyLDggQEAKIAkJNEFEMDE3M0MxMjdFODI4NjAwMTUwMzVGIC8q
IEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVs
ZW1lbnQuY3BwICovOyB9OwogCQk0QUQwMTczRDEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0
cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEFEMDE3M0IxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuaCAqLzsg
fTsKIAkJNEFERTI1RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFE
RTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICov
OyB9OworCQk0QUUwMkFCRDE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFFMDJBQkIx
NEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCAqLzsgfTsKKwkJNEFFMDJB
QkUxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUUwMkFCQzE0RThBOUQyMDBCQzNCQTcg
LyogV2ViU29ja2V0RGVmbGF0ZXIuaCAqLzsgfTsKIAkJNEFGMUFEM0UxM0ZEMjNBNDAwQUE5NTkw
IC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QUYxQUQzQzEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNw
YXRjaE1lZGlhdG9yLmNwcCAqLzsgfTsKIAkJNEFGMUFEM0YxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2
ZW50RGlzcGF0Y2hNZWRpYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEFGMUFEM0QxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRp
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTRCMjcwOEM3MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjI3MDhDNTBBRjE5RUU0MDA2NTEyN0Yg
LyogUGFzdGVib2FyZC5oICovOyB9OwpAQCAtODIzNSw2ICs4MjM3LDggQEAKIAkJNEFEMDE3M0Ex
MjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxP
dXRwdXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTE91
dHB1dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFERTI1RjkxNEUz
QkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEFFMDJBQkIxNEU4QTlEMjAwQkMzQkE3IC8qIFdl
YlNvY2tldERlZmxhdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNvY2tldERlZmxhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEFF
MDJBQkMxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldERlZmxhdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRBRjFBRDNDMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNo
TWVkaWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRE
aXNwYXRjaE1lZGlhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFGMUFE
M0QxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9h
cmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4MDAsNyArMTQ4MDQsNiBAQAogCQk1MThBMzRC
RDEwMjZDODMxMDAxQjY4OTYgLyogd2Vic29ja2V0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNv
Y2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICovLAogCQkJCTUxRkI1NEY0MTEzRTM2NDIwMDgyMTE3
NiAvKiBDbG9zZUV2ZW50LmggKi8sCiAJCQkJNTFGQjU0RjYxMTNFMzY1OTAwODIxMTc2IC8qIENs
b3NlRXZlbnQuaWRsICovLAogCQkJCTUxMTIyNDcxMTBDRkI4QzYwMDgwOTlENyAvKiBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCkBAIC0xNDgxMyw4ICsxNDgxNiwxMSBAQAogCQkJ
CTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKIAkJ
CQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovLAogCQkJ
CTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8s
CisJCQkJNEFFMDJBQkIxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCAq
LywKKwkJCQk0QUUwMkFCQzE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCAq
LywKIAkJCQk0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlz
cGF0Y2hlci5jcHAgKi8sCiAJCQkJNEE5NTdGMDQxNEUyNDExMDAwNDlEQkZCIC8qIFdlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLywKKwkJCQk0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMg
LyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCiAJCQkJNTFBQkFFNDIxMDQzQUI0
QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi8sCiAJCQkJNTFBQkFFNDMxMDQz
QUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICovLAogCQkJCTc2MzdDNTQwMTEy
RTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLywKQEAgLTI0
MjU3LDYgKzI0MjYzLDcgQEAKIAkJCQk5N0NDM0FFMzE0RThFNEEyMDA4OTQ5ODggLyogTmF2aWdh
dG9yU3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkwNTcxNEU5QzI4MDAwRThE
MThCIC8qIFBhc3RlYm9hcmRTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkwNTgx
NEU5QzI5OTAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNEFFMDJBQkUxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTI3MjAwLDYgKzI3MjA3LDcgQEAKIAkJCQk1NzJFOTJGQjE0RTU0MDU4MDA4
N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdDQzNBRTIx
NEU4RTRBMjAwODk0OTg4IC8qIE5hdmlnYXRvclN1cHBsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzU5ODkwMkUxNEU5QjBGODAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTRBRTAyQUJEMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2Nr
ZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg3OWNkMWRkY2M3NGMyZGQ0
YjUxMjZkY2VmZjRhZWNjOTg0NjViZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCkBAIC0wLDAgKzEsMjEyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldl
YlNvY2tldERlZmxhdGVyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBpbnQgZGVmYXVsdE1lbUxldmVs
ID0gMTsKK3N0YXRpYyBjb25zdCBzaXplX3QgYnVmZmVySW5jcmVtZW50VW5pdCA9IDQwOTY7CisK
K1Bhc3NPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUo
aW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUgY29udGV4dFRha2VPdmVyTW9kZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNvY2tldERlZmxhdGVyKHdpbmRvd0JpdHMs
IGNvbnRleHRUYWtlT3Zlck1vZGUpKTsKK30KKworV2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tl
dERlZmxhdGVyKGludCB3aW5kb3dCaXRzLCBDb250ZXh0VGFrZU92ZXJNb2RlIGNvbnRleHRUYWtl
T3Zlck1vZGUpCisgICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0cykKKyAgICAsIG1fY29udGV4
dFRha2VPdmVyTW9kZShjb250ZXh0VGFrZU92ZXJNb2RlKQoreworICAgIEFTU0VSVChtX3dpbmRv
d0JpdHMgPj0gOCAmJiBtX3dpbmRvd0JpdHMgPD0gMTUpOworICAgIG1lbXNldCgmbV9zdHJlYW0s
IDAsIHNpemVvZih6X3N0cmVhbSkpOworfQorCitib29sIFdlYlNvY2tldERlZmxhdGVyOjppbml0
aWFsaXplKCkKK3sKKyAgICByZXR1cm4gZGVmbGF0ZUluaXQyKCZtX3N0cmVhbSwgWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCBaX0RFRkxBVEVELCAtbV93aW5kb3dCaXRzLCBkZWZhdWx0TWVtTGV2ZWws
IFpfREVGQVVMVF9TVFJBVEVHWSkgPT0gWl9PSzsKK30KKworV2ViU29ja2V0RGVmbGF0ZXI6On5X
ZWJTb2NrZXREZWZsYXRlcigpCit7CisgICAgaW50IHJlc3VsdCA9IGRlZmxhdGVFbmQoJm1fc3Ry
ZWFtKTsKKyAgICBpZiAocmVzdWx0ICE9IFpfT0spCisgICAgICAgIExPRyhOZXR3b3JrLCAiZGVm
bGF0ZUVuZCgpIGZhaWxlZDogJWQiLCByZXN1bHQpOworfQorCitib29sIFdlYlNvY2tldERlZmxh
dGVyOjphZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlm
ICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgbWF4TGVuZ3Ro
ID0gZGVmbGF0ZUJvdW5kKCZtX3N0cmVhbSwgbGVuZ3RoKTsKKyAgICBzaXplX3Qgd3JpdGVQb3Np
dGlvbiA9IG1fYnVmZmVyLnNpemUoKTsKKyAgICBtX2J1ZmZlci5ncm93KHdyaXRlUG9zaXRpb24g
KyBtYXhMZW5ndGgpOworICAgIG1fc3RyZWFtLm5leHRfaW4gPSByZWludGVycHJldF9jYXN0PEJ5
dGVmKj4oY29uc3RfY2FzdDxjaGFyKj4oZGF0YSkpOworICAgIG1fc3RyZWFtLmF2YWlsX2luID0g
bGVuZ3RoOworICAgIG1fc3RyZWFtLm5leHRfb3V0ID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+
KG1fYnVmZmVyLmRhdGEoKSArIHdyaXRlUG9zaXRpb24pOworICAgIG1fc3RyZWFtLmF2YWlsX291
dCA9IG1heExlbmd0aDsKKyAgICBpbnQgcmVzdWx0ID0gZGVmbGF0ZSgmbV9zdHJlYW0sIFpfTk9f
RkxVU0gpOworICAgIGlmIChyZXN1bHQgIT0gWl9PSyB8fCBtX3N0cmVhbS5hdmFpbF9pbiA+IDAp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fYnVmZmVyLnNocmluayh3cml0ZVBvc2l0
aW9uICsgbWF4TGVuZ3RoIC0gbV9zdHJlYW0uYXZhaWxfb3V0KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBXZWJTb2NrZXREZWZsYXRlcjo6ZmluaXNoKCkKK3sKKyAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IG1fYnVmZmVyLnNpemUoKTsKKyAg
ICAgICAgbV9idWZmZXIuZ3Jvdyh3cml0ZVBvc2l0aW9uICsgYnVmZmVySW5jcmVtZW50VW5pdCk7
CisgICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9IG1fYnVmZmVyLnNpemUoKSAtIHdy
aXRlUG9zaXRpb247CisgICAgICAgIG1fc3RyZWFtLm5leHRfaW4gPSByZWludGVycHJldF9jYXN0
PEJ5dGVmKj4oMCk7CisgICAgICAgIG1fc3RyZWFtLmF2YWlsX2luID0gMDsKKyAgICAgICAgbV9z
dHJlYW0ubmV4dF9vdXQgPSByZWludGVycHJldF9jYXN0PEJ5dGVmKj4obV9idWZmZXIuZGF0YSgp
ICsgd3JpdGVQb3NpdGlvbik7CisgICAgICAgIG1fc3RyZWFtLmF2YWlsX291dCA9IGF2YWlsYWJs
ZUNhcGFjaXR5OworICAgICAgICBpbnQgcmVzdWx0ID0gZGVmbGF0ZSgmbV9zdHJlYW0sIFpfU1lO
Q19GTFVTSCk7CisgICAgICAgIG1fYnVmZmVyLnNocmluayh3cml0ZVBvc2l0aW9uICsgYXZhaWxh
YmxlQ2FwYWNpdHkgLSBtX3N0cmVhbS5hdmFpbF9vdXQpOworICAgICAgICBpZiAocmVzdWx0ID09
IFpfT0spCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBaX0JVRl9F
UlJPUikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gUmVtb3ZlIDQg
b2N0ZXRzIGZyb20gdGhlIHRhaWwgYXMgdGhlIHNwZWNpZmljYXRpb24gcmVxdWlyZXMuCisgICAg
aWYgKG1fYnVmZmVyLnNpemUoKSA8PSA0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9i
dWZmZXIucmVzaXplKG1fYnVmZmVyLnNpemUoKSAtIDQpOworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIFdlYlNvY2tldERlZmxhdGVyOjpyZXNldCgpCit7CisgICAgbV9idWZmZXIuY2xlYXIo
KTsKKyAgICBpZiAobV9jb250ZXh0VGFrZU92ZXJNb2RlID09IERvTm90VGFrZU92ZXJDb250ZXh0
KQorICAgICAgICBkZWZsYXRlUmVzZXQoJm1fc3RyZWFtKTsKK30KKworUGFzc093blB0cjxXZWJT
b2NrZXRJbmZsYXRlcj4gV2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZShpbnQgd2luZG93Qml0cykK
K3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNvY2tldEluZmxhdGVyKHdpbmRvd0JpdHMp
KTsKK30KKworV2ViU29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKGludCB3aW5kb3dC
aXRzKQorICAgIDogbV93aW5kb3dCaXRzKHdpbmRvd0JpdHMpCit7CisgICAgbWVtc2V0KCZtX3N0
cmVhbSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7Cit9CisKK2Jvb2wgV2ViU29ja2V0SW5mbGF0ZXI6
OmluaXRpYWxpemUoKQoreworICAgIHJldHVybiBpbmZsYXRlSW5pdDIoJm1fc3RyZWFtLCAtbV93
aW5kb3dCaXRzKSA9PSBaX09LOworfQorCitXZWJTb2NrZXRJbmZsYXRlcjo6fldlYlNvY2tldElu
ZmxhdGVyKCkKK3sKKyAgICBpbnQgcmVzdWx0ID0gaW5mbGF0ZUVuZCgmbV9zdHJlYW0pOworICAg
IGlmIChyZXN1bHQgIT0gWl9PSykKKyAgICAgICAgTE9HKE5ldHdvcmssICJpbmZsYXRlRW5kKCkg
ZmFpbGVkOiAlZCIsIHJlc3VsdCk7Cit9CisKK2Jvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5
dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKCFsZW5ndGgp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemVfdCBjb25zdW1lZFNvRmFyID0gMDsK
KyAgICB3aGlsZSAoY29uc3VtZWRTb0ZhciA8IGxlbmd0aCkgeworICAgICAgICBzaXplX3Qgd3Jp
dGVQb3NpdGlvbiA9IG1fYnVmZmVyLnNpemUoKTsKKyAgICAgICAgbV9idWZmZXIuZ3Jvdyh3cml0
ZVBvc2l0aW9uICsgYnVmZmVySW5jcmVtZW50VW5pdCk7CisgICAgICAgIHNpemVfdCBhdmFpbGFi
bGVDYXBhY2l0eSA9IG1fYnVmZmVyLnNpemUoKSAtIHdyaXRlUG9zaXRpb247CisgICAgICAgIHNp
emVfdCByZW1haW5pbmdMZW5ndGggPSBsZW5ndGggLSBjb25zdW1lZFNvRmFyOworICAgICAgICBt
X3N0cmVhbS5uZXh0X2luID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KGNvbnN0X2Nhc3Q8Y2hh
cio+KGRhdGEpICsgY29uc3VtZWRTb0Zhcik7CisgICAgICAgIG1fc3RyZWFtLmF2YWlsX2luID0g
cmVtYWluaW5nTGVuZ3RoOworICAgICAgICBtX3N0cmVhbS5uZXh0X291dCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Qnl0ZWYqPihtX2J1ZmZlci5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uKTsKKyAgICAgICAg
bV9zdHJlYW0uYXZhaWxfb3V0ID0gYXZhaWxhYmxlQ2FwYWNpdHk7CisgICAgICAgIGludCByZXN1
bHQgPSBpbmZsYXRlKCZtX3N0cmVhbSwgWl9OT19GTFVTSCk7CisgICAgICAgIGNvbnN1bWVkU29G
YXIgKz0gcmVtYWluaW5nTGVuZ3RoIC0gbV9zdHJlYW0uYXZhaWxfaW47CisgICAgICAgIG1fYnVm
ZmVyLnNocmluayh3cml0ZVBvc2l0aW9uICsgYXZhaWxhYmxlQ2FwYWNpdHkgLSBtX3N0cmVhbS5h
dmFpbF9vdXQpOworICAgICAgICBpZiAocmVzdWx0ID09IFpfQlVGX0VSUk9SKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGlmIChyZXN1bHQgIT0gWl9PSykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJUKGNvbnN1bWVkU29GYXIgPT0gbGVuZ3RoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6ZmluaXNoKCkK
K3sKKyAgICBzdGF0aWMgQnl0ZWYgc3RyaXBwZWRGaWVsZHNbXSA9IHsweDAwLCAweDAwLCAweGZm
LCAweGZmfTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHN0cmlwcGVkTGVuZ3RoID0gNDsKKwor
ICAgIC8vIEFwcGVuZHMgNCBvY3Rlc3RzIG9mIDB4MDAgMHgwMCAweGZmIDB4ZmYKKyAgICBzaXpl
X3QgY29uc3VtZWRTb0ZhciA9IDA7CisgICAgd2hpbGUgKGNvbnN1bWVkU29GYXIgPCBzdHJpcHBl
ZExlbmd0aCkgeworICAgICAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IG1fYnVmZmVyLnNpemUo
KTsKKyAgICAgICAgbV9idWZmZXIuZ3Jvdyh3cml0ZVBvc2l0aW9uICsgYnVmZmVySW5jcmVtZW50
VW5pdCk7CisgICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9IG1fYnVmZmVyLnNpemUo
KSAtIHdyaXRlUG9zaXRpb247CisgICAgICAgIHNpemVfdCByZW1haW5pbmdMZW5ndGggPSBzdHJp
cHBlZExlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAgICAgIG1fc3RyZWFtLm5leHRfaW4gPSBz
dHJpcHBlZEZpZWxkcyArIGNvbnN1bWVkU29GYXI7CisgICAgICAgIG1fc3RyZWFtLmF2YWlsX2lu
ID0gcmVtYWluaW5nTGVuZ3RoOworICAgICAgICBtX3N0cmVhbS5uZXh0X291dCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Qnl0ZWYqPihtX2J1ZmZlci5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uKTsKKyAgICAg
ICAgbV9zdHJlYW0uYXZhaWxfb3V0ID0gYXZhaWxhYmxlQ2FwYWNpdHk7CisgICAgICAgIGludCBy
ZXN1bHQgPSBpbmZsYXRlKCZtX3N0cmVhbSwgWl9GSU5JU0gpOworICAgICAgICBjb25zdW1lZFNv
RmFyICs9IHJlbWFpbmluZ0xlbmd0aCAtIG1fc3RyZWFtLmF2YWlsX2luOworICAgICAgICBtX2J1
ZmZlci5zaHJpbmsod3JpdGVQb3NpdGlvbiArIGF2YWlsYWJsZUNhcGFjaXR5IC0gbV9zdHJlYW0u
YXZhaWxfb3V0KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBaX0JVRl9FUlJPUikKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAocmVzdWx0ICE9IFpfT0sgJiYgcmVzdWx0ICE9IFpf
U1RSRUFNX0VORCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJU
KGNvbnN1bWVkU29GYXIgPT0gc3RyaXBwZWRMZW5ndGgpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgV2ViU29ja2V0SW5mbGF0ZXI6OnJlc2V0KCkKK3sKKyAgICBtX2J1ZmZlci5jbGVh
cigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjg1MzQ1MTQxNzAxMTc5NjM4MzVmZWIwNzM2Yzg5ZTkwZWM0ZjJlYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZXIuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0RGVmbGF0ZXJfaAorI2Rl
ZmluZSBXZWJTb2NrZXREZWZsYXRlcl9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSA8emxpYi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldERlZmxh
dGVyIHsKK3B1YmxpYzoKKyAgICBlbnVtIENvbnRleHRUYWtlT3Zlck1vZGUgeworICAgICAgICBE
b05vdFRha2VPdmVyQ29udGV4dCwKKyAgICAgICAgVGFrZU92ZXJDb250ZXh0CisgICAgfTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gY3JlYXRlKGludCB3aW5kb3dC
aXRzLCBDb250ZXh0VGFrZU92ZXJNb2RlID0gVGFrZU92ZXJDb250ZXh0KTsKKworICAgIH5XZWJT
b2NrZXREZWZsYXRlcigpOworCisgICAgYm9vbCBpbml0aWFsaXplKCk7CisgICAgYm9vbCBhZGRC
eXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGZpbmlzaCgpOworICAgIGNvbnN0
IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQorICAgIHZvaWQgcmVzZXQoKTsK
KworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXREZWZsYXRlcihpbnQgd2luZG93Qml0cywgQ29udGV4
dFRha2VPdmVyTW9kZSk7CisKKyAgICBpbnQgbV93aW5kb3dCaXRzOworICAgIENvbnRleHRUYWtl
T3Zlck1vZGUgbV9jb250ZXh0VGFrZU92ZXJNb2RlOworICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZl
cjsKKyAgICB6X3N0cmVhbSBtX3N0cmVhbTsKK307CisKK2NsYXNzIFdlYlNvY2tldEluZmxhdGVy
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gY3Jl
YXRlKGludCB3aW5kb3dCaXRzID0gMTUpOworCisgICAgfldlYlNvY2tldEluZmxhdGVyKCk7CisK
KyAgICBib29sIGluaXRpYWxpemUoKTsKKyAgICBib29sIGFkZEJ5dGVzKGNvbnN0IGNoYXIqLCBz
aXplX3QpOworICAgIGJvb2wgZmluaXNoKCk7CisgICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0
dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuc2l6ZSgpOyB9CisgICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IFdlYlNvY2tldEluZmxhdGVyKGludCB3aW5kb3dCaXRzKTsKKworICAgIGludCBtX3dp
bmRvd0JpdHM7CisgICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIHpfc3RyZWFtIG1fc3Ry
ZWFtOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYg
Ly8gV2ViU29ja2V0RGVmbGF0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXgg
MzVmMmIxOTkwNzc5ZDY2OWVmODA0MDJmYjAwZjJhNTU2MTQ3YzMyNi4uNGVhNzAwZDU5NDY4NmE1
ODI5ZmE3N2ZiNDljZmJiODA2YjYyZmQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9XZWJMYXllclRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAgICAg
ICd0ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9X
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rlc3Qu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0
RGVmbGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0
RGVmbGF0ZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjNhNTk2OWZkMjViNzc3NzVlMGM1M2M3YTgy
NjczM2Y1NjEyMDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIuaCIKKwor
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworVEVTVChXZWJTb2NrZXREZWZs
YXRlclRlc3QsIFRlc3RDb21wcmVzc0hlbGxvKQoreworICAgIC8vIFRlc3QgdGhlIGZpcnN0IGV4
YW1wbGUgb24gc2VjdGlvbiA0LjMgb2YgdGhlIHNwZWNpZmljYXRpb24uCisgICAgT3duUHRyPFdl
YlNvY2tldERlZmxhdGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUp
OworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIE93blB0cjxX
ZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7
CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgY29uc3QgY2hh
ciogaW5wdXREYXRhID0gIkhlbGxvIjsKKyAgICBjb25zdCBzaXplX3QgaW5wdXRMZW5ndGggPSBz
dHJsZW4oaW5wdXREYXRhKTsKKworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhp
bnB1dERhdGEsIGlucHV0TGVuZ3RoKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlz
aCgpKTsKKyAgICBjb25zdCBjaGFyIGV4cGVjdGVkRmlyc3RbXSA9IHsweGYyLCAweDQ4LCAweGNk
LCAweGM5LCAweGM5LCAweDA3LCAweDAwfTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKGV4cGVjdGVk
Rmlyc3QpLCBkZWZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVj
dGVkRmlyc3QsIGRlZmxhdGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NF
UlRfVFJVRShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNp
emUoKSkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNU
X0VRKGlucHV0TGVuZ3RoLCBpbmZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVt
Y21wKGlucHV0RGF0YSwgaW5mbGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworCisg
ICAgZGVmbGF0ZXItPnJlc2V0KCk7CisgICAgaW5mbGF0ZXItPnJlc2V0KCk7CisKKyAgICBBU1NF
UlRfVFJVRShkZWZsYXRlci0+YWRkQnl0ZXMoaW5wdXREYXRhLCBpbnB1dExlbmd0aCkpOworICAg
IEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5maW5pc2goKSk7CisgICAgY29uc3QgY2hhciBleHBlY3Rl
ZFNlY29uZFtdID0gezB4ZjIsIDB4MDAsIDB4MTEsIDB4MDAsIDB4MDB9OworICAgIEVYUEVDVF9F
UShzaXplb2YoZXhwZWN0ZWRTZWNvbmQpLCBkZWZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgbWVtY21wKGV4cGVjdGVkU2Vjb25kLCBkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+
c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmFkZEJ5dGVzKGRlZmxhdGVyLT5k
YXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+Zmlu
aXNoKCkpOworICAgIEVYUEVDVF9FUShpbnB1dExlbmd0aCwgaW5mbGF0ZXItPnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbnB1dERhdGEsIGluZmxhdGVyLT5kYXRhKCksIGluZmxh
dGVyLT5zaXplKCkpKTsKK30KKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3RNdWx0
aXBsZUFkZEJ5dGVzQ2FsbHMpCit7CisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZs
YXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUpOworICAgIEFTU0VSVF9UUlVFKGRl
ZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5m
bGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgQVNTRVJUX1RSVUUoaW5m
bGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgVmVjdG9yPGNoYXI+IGlucHV0RGF0YSgzMik7Cisg
ICAgaW5wdXREYXRhLmZpbGwoJ2EnKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5w
dXREYXRhLnNpemUoKTsgKytpKQorICAgICAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+YWRkQnl0
ZXMoaW5wdXREYXRhLmRhdGEoKSArIGksIDEpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+
ZmluaXNoKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVmbGF0ZXItPnNpemUoKTsg
KytpKQorICAgICAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0ZXItPmRh
dGEoKSArIGksIDEpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+ZmluaXNoKCkpOworICAg
IEVYUEVDVF9FUShpbnB1dERhdGEuc2l6ZSgpLCBpbmZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YS5kYXRhKCksIGluZmxhdGVyLT5kYXRhKCksIGluZmxh
dGVyLT5zaXplKCkpKTsKK30KKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3ROb0Nv
bnRleHRUYWtlT3ZlcikKK3sKKyAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVy
ID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSgxNSwgV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90
VGFrZU92ZXJDb250ZXh0KTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+aW5pdGlhbGl6ZSgp
KTsKKyAgICBPd25QdHI8V2ViU29ja2V0SW5mbGF0ZXI+IGluZmxhdGVyID0gV2ViU29ja2V0SW5m
bGF0ZXI6OmNyZWF0ZSgpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5pbml0aWFsaXplKCkp
OworICAgIGNvbnN0IGNoYXIgZXhwZWN0ZWRbXSA9IHsweGYyLCAweDQ4LCAweGNkLCAweGM5LCAw
eGM5LCAweDA3LCAweDAwfTsKKyAgICBjb25zdCBjaGFyKiBpbnB1dERhdGEgPSAiSGVsbG8iOwor
ICAgIGNvbnN0IHNpemVfdCBpbnB1dExlbmd0aCA9IHN0cmxlbihpbnB1dERhdGEpOworCisgICAg
Ly8gSWYgd2UgZG9uJ3QgdGFrZSBvdmVyIGNvbnRleHQsIHRoZSBzZWNvbmQgcmVzdWx0IHNob3Vs
ZCBiZSB0aGUgaWRlbnRpY2FsCisgICAgLy8gd2l0aCB0aGUgZmlyc3Qgb25lLgorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgMjsgKytpKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVy
LT5hZGRCeXRlcyhpbnB1dERhdGEsIGlucHV0TGVuZ3RoKSk7CisgICAgICAgIEFTU0VSVF9UUlVF
KGRlZmxhdGVyLT5maW5pc2goKSk7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2YoZXhwZWN0ZWQp
LCBkZWZsYXRlci0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3Rl
ZCwgZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgICAgICBBU1NFUlRf
VFJVRShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUo
KSkpOworICAgICAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+ZmluaXNoKCkpOworICAgICAgICBF
WFBFQ1RfRVEoaW5wdXRMZW5ndGgsIGluZmxhdGVyLT5zaXplKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMCwgbWVtY21wKGlucHV0RGF0YSwgaW5mbGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUo
KSkpOworICAgICAgICBkZWZsYXRlci0+cmVzZXQoKTsKKyAgICAgICAgaW5mbGF0ZXItPnJlc2V0
KCk7CisgICAgfQorfQorCitURVNUKFdlYlNvY2tldERlZmxhdGVyVGVzdCwgVGVzdFdpbmRvd0Jp
dHMpCit7CisgICAgVmVjdG9yPGNoYXI+IGlucHV0RGF0YSgxMDI0ICsgNjQgKiAyKTsKKyAgICBp
bnB1dERhdGEuZmlsbCgnYScpOworICAgIC8vIE1vZGlmeSB0aGUgaGVhZCBhbmQgdGFpbCBvZiB0
aGUgaW5wdXREYXRhIHNvIHRoYXQgYmFjay1yZWZlcmVuY2UKKyAgICAvLyBjYW4gYmUgdXNlZCBp
ZiB0aGUgd2luZG93IHNpemUgaXMgc3VmZmljaWVudGx5LWxhcmdlLgorICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgNjQ7ICsraikgeworICAgICAgICBpbnB1dERhdGFbal0gPSAnYic7CisgICAg
ICAgIGlucHV0RGF0YVtpbnB1dERhdGEuc2l6ZSgpIC0gaiAtIDFdID0gJ2InOworICAgIH0KKwor
ICAgIE93blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gZGVmbGF0ZXIgPSBXZWJTb2NrZXREZWZsYXRl
cjo6Y3JlYXRlKDgpOworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5pbml0aWFsaXplKCkpOwor
ICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhpbnB1dERhdGEuZGF0YSgpLCBpbnB1
dERhdGEuc2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKwor
ICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRl
cjo6Y3JlYXRlKDgpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5pbml0aWFsaXplKCkpOwor
ICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZs
YXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmZpbmlzaCgpKTsKKyAg
ICBFWFBFQ1RfRVEoaW5wdXREYXRhLnNpemUoKSwgaW5mbGF0ZXItPnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKDAsIG1lbWNtcChpbnB1dERhdGEuZGF0YSgpLCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZs
YXRlci0+c2l6ZSgpKSk7Cit9CisKK1RFU1QoV2ViU29ja2V0RGVmbGF0ZXJUZXN0LCBUZXN0TGFy
Z2VEYXRhKQoreworICAgIE93blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gZGVmbGF0ZXIgPSBXZWJT
b2NrZXREZWZsYXRlcjo6Y3JlYXRlKDE1KTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+aW5p
dGlhbGl6ZSgpKTsKKyAgICBPd25QdHI8V2ViU29ja2V0SW5mbGF0ZXI+IGluZmxhdGVyID0gV2Vi
U29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5pbml0
aWFsaXplKCkpOworICAgIFZlY3RvcjxjaGFyPiBpbnB1dERhdGEoMTYgKiAxMDI0ICogMTAyNCk7
CisgICAgaW5wdXREYXRhLmZpbGwoJ2EnKTsKKworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5h
ZGRCeXRlcyhpbnB1dERhdGEuZGF0YSgpLCBpbnB1dERhdGEuc2l6ZSgpKSk7CisgICAgQVNTRVJU
X1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+YWRk
Qnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgIEFTU0VSVF9U
UlVFKGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNUX0VRKGlucHV0RGF0YS5zaXplKCks
IGluZmxhdGVyLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLmRh
dGEoKSwgaW5mbGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126952</attachid>
            <date>2012-02-14 03:51:24 -0800</date>
            <delta_ts>2012-02-14 16:33:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78449-20120214205122.patch</filename>
            <type>text/plain</type>
            <size>28857</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjExNzRhMzEwNmY3NGUz
NTk0YTA5MTZmYmJlMzQ2Y2EwNTQ5ZTBjMi4uNDEyM2EyMmM0N2VkOTgyNmU2ZjcwNjAzZjc3OWMz
Y2FkN2FlODA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAyLTE0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZGVmbGF0ZXIvaW5mbGF0ZXIgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgV2ViU29ja2V0RGVm
bGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2xhc3NlcyB3aGljaCB3cmFwIHpsaWIKKyAgICAgICAg
ZnVuY3Rpb25zLiBUaGVzZSBjbGFzc2VzIGFyZSBub3QgdXNlZCB5ZXQsIGJ1dCB3aWxsIGJlIHVz
ZWQgZm9yCisgICAgICAgIHN1cHBvcnRpbmcgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9taXVtIHBvcnQuIEJlaGF2aW9yIGlzIHVuY2hhbmdl
ZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkLldlYlNvY2tldERlZmxh
dGVyLihjcHB8aCkuCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0RGVmbGF0ZXI6OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERl
ZmxhdGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SW5mbGF0ZXI6OnJlc2V0KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTb2NrZXREZWZs
YXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6ZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6c2l6ZSk6CisgICAgICAgIChXZWJTb2Nr
ZXRJbmZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6ZGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6c2l6ZSk6CisKIDIwMTItMDIt
MTQgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFN0
eWxlUHJvcGVydHlTZXQ6IFRyeSB0byBmaW5kIGEgQ1NTVmFsdWVQb29sIGZvciBpZGVudGlmaWVy
IHZhbHVlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjcyMDc4NzEyNDViNzVlY2Nh
MWI2YjI3MDYyMGRhMDk1ZWQ2YzM3Yi4uZmEwOGI3ZmQxYTdmZjk4MmUwNmVmN2RhMTJmNjEyYTJl
MmEzMmE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
Mi0wMi0xNCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW1dlYlNvY2tldF0gQWRkIGRlZmxhdGVyL2luZmxhdGVyIGNsYXNzZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ0OQorCisgICAgICAgIEFk
ZCB0ZXN0cyB3aGljaCBlbnN1cmUgV2ViU29ja2V0RGVmbGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIg
Y2FuCisgICAgICAgIGNvbXByZXNzL2RlY29tcHJlc3MgZGF0YSBjb3JyZWN0bHkuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToK
KyAgICAgICAgKiB0ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDItMTQgIERh
dmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1d
IEluY29uc2lzdGVudCBpbml0aWFsaXphdGlvbiBvZiBDQ1NldHRpbmdzIGluIFdlYkxheWVyVHJl
ZVZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1MDRjZWYyMGM2OTAwYmIz
OWRjYWNmMjkyYzYzNjNhZTVkMDJkMjQ1Li4wZjlmNmNmNmQwNzdlM2IyYjA5MzdjZmUxODQyMmEy
YmMzZjI0N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQzMjAsNiArNDMy
MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDlkM2Y4MmMxOTQ0MzcyYmJhOTdiODRlYjU1ZmUzODIwNDBjMmZiOWMuLjhm
MzVhMmQ3NDQzNWVjZTY4MTcyYmMxZTdlMTQ2OTUzNmFkMDhiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTQ3OTksNiArNDc5OSw4IEBACiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgn
LAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oJywKKyAg
ICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCcsCisgICAgICAgICAg
ICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oJywKICAgICAgICAgICAgICd3ZWJzb2Nr
ZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwJywKICAgICAgICAgICAgICd3ZWJz
b2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCcsCiAgICAgICAgICAgICAnd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDA3MGFiM2Y5NjE5MWI2MzFlMDUw
Mzk2YmE5MjEzMTc1ZTE4N2I2NDguLmY0Zjg2MjdmMjgwYzc5MTc4Yzk4MDgwMWM2NmI3M2ZjNjll
MzhmNDAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC03Mjk3OCw2ICs3Mjk3OCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVyLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0
c1xXZWJTb2NrZXREZWZsYXRlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0Y2JlYmUwZTY3M2Q2MjAzYmY3Zjk4YzIyMzQ2
NjAzYmI1OGJlMjgyLi43NjE0NWE4YTkyZjE4MDBjYzQ4YjRlODAwOWU4ZWIwZmI1ODVjMjA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzgyLDYgKzEzODIsOCBAQAogCQk0QUQwMTczQzEyN0U4Mjg2MDAxNTAzNUYgLyogSlNI
VE1MT3V0cHV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QUQwMTczQTEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVu
dC5jcHAgKi87IH07CiAJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5oICovOyB9Owog
CQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QURFMjVG
OTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi87IH07
CisJCTRBRTAyQUJEMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUUwMkFCQjE0RThB
OUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwICovOyB9OworCQk0QUUwMkFCRTE0
RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRTAyQUJDMTRFOEE5RDIwMEJDM0JBNyAvKiBX
ZWJTb2NrZXREZWZsYXRlci5oICovOyB9OwogCQk0QUYxQUQzRTEzRkQyM0E0MDBBQTk1OTAgLyog
RXZlbnREaXNwYXRjaE1lZGlhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBRjFBRDNDMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNo
TWVkaWF0b3IuY3BwICovOyB9OwogCQk0QUYxQUQzRjEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnRE
aXNwYXRjaE1lZGlhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QUYxQUQzRDEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEIy
NzA4QzcwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMjcwOEM1MEFGMTlFRTQwMDY1MTI3RiAvKiBQ
YXN0ZWJvYXJkLmggKi87IH07CkBAIC04MjM1LDYgKzgyMzcsOCBAQAogCQk0QUQwMTczQTEyN0U4
Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPdXRwdXRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEFEMDE3M0IxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1
dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MT3V0cHV0
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QURFMjVGOTE0RTNCQjRD
MDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0QUUwMkFCQjE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29j
a2V0RGVmbGF0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U29ja2V0RGVmbGF0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QUUwMkFC
QzE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RGVmbGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEFGMUFEM0MxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRp
YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudERpc3Bh
dGNoTWVkaWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUYxQUQzRDEz
RkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QjI3MDhDNTBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDgwMCw3ICsxNDgwNCw2IEBACiAJCTUxOEEzNEJEMTAy
NkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCiAJCQkJNTFGQjU0RjQxMTNFMzY0MjAwODIxMTc2IC8q
IENsb3NlRXZlbnQuaCAqLywKIAkJCQk1MUZCNTRGNjExM0UzNjU5MDA4MjExNzYgLyogQ2xvc2VF
dmVudC5pZGwgKi8sCiAJCQkJNTExMjI0NzExMENGQjhDNjAwODA5OUQ3IC8qIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKQEAgLTE0ODEzLDggKzE0ODE2LDExIEBACiAJCQkJNTEw
RDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovLAogCQkJCTUx
MEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8sCiAJCQkJNTEw
RDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLywKKwkJ
CQk0QUUwMkFCQjE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwICovLAor
CQkJCTRBRTAyQUJDMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5oICovLAog
CQkJCTRBOTU3RjAzMTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmNwcCAqLywKIAkJCQk0QTk1N0YwNDE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlci5oICovLAorCQkJCTRBREUyNUY5MTRFM0JCNEMwMDRDMjIxMyAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCAqLywKIAkJCQk1MUFCQUU0MjEwNDNBQjRBMDA4
QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLywKIAkJCQk1MUFCQUU0MzEwNDNBQjRB
MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8sCiAJCQkJNzYzN0M1NDAxMTJFN0I3
NDAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwICovLApAQCAtMjQyNTcs
NiArMjQyNjMsNyBAQAogCQkJCTk3Q0MzQUUzMTRFOEU0QTIwMDg5NDk4OCAvKiBOYXZpZ2F0b3JT
dXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTk4OTA1NzE0RTlDMjgwMDBFOEQxOEIg
LyogUGFzdGVib2FyZFN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTk4OTA1ODE0RTlD
Mjk5MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
QUUwMkFCRTE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjcyMDAsNiArMjcyMDcsNyBAQAogCQkJCTU3MkU5MkZCMTRFNTQwNTgwMDg3RkZC
QSAvKiBTaGFkb3dSb290TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0NDM0FFMjE0RThF
NEEyMDA4OTQ5ODggLyogTmF2aWdhdG9yU3VwcGxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDNTk4OTAyRTE0RTlCMEY4MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNEFFMDJBQkQxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERl
ZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzYxZTdkNGMyZGY3NzU2ZmNjYjcy
ZTllODFjNTNjNDc2ZWY1MjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAgLTAsMCArMSwyMDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29j
a2V0RGVmbGF0ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGludCBkZWZhdWx0TWVtTGV2ZWwgPSAx
Oworc3RhdGljIGNvbnN0IHNpemVfdCBidWZmZXJJbmNyZW1lbnRVbml0ID0gNDA5NjsKKworUGFz
c093blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZShpbnQg
d2luZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9kZSBjb250ZXh0VGFrZU92ZXJNb2RlKQorewor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViU29ja2V0RGVmbGF0ZXIod2luZG93Qml0cywgY29u
dGV4dFRha2VPdmVyTW9kZSkpOworfQorCitXZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0RGVm
bGF0ZXIoaW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUgY29udGV4dFRha2VPdmVy
TW9kZSkKKyAgICA6IG1fd2luZG93Qml0cyh3aW5kb3dCaXRzKQorICAgICwgbV9jb250ZXh0VGFr
ZU92ZXJNb2RlKGNvbnRleHRUYWtlT3Zlck1vZGUpCit7CisgICAgQVNTRVJUKG1fd2luZG93Qml0
cyA+PSA4KTsKKyAgICBBU1NFUlQobV93aW5kb3dCaXRzIDw9IDE1KTsKKyAgICBtZW1zZXQoJm1f
c3RyZWFtLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKK30KKworYm9vbCBXZWJTb2NrZXREZWZsYXRl
cjo6aW5pdGlhbGl6ZSgpCit7CisgICAgcmV0dXJuIGRlZmxhdGVJbml0MigmbV9zdHJlYW0sIFpf
REVGQVVMVF9DT01QUkVTU0lPTiwgWl9ERUZMQVRFRCwgLW1fd2luZG93Qml0cywgZGVmYXVsdE1l
bUxldmVsLCBaX0RFRkFVTFRfU1RSQVRFR1kpID09IFpfT0s7Cit9CisKK1dlYlNvY2tldERlZmxh
dGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIoKQoreworICAgIGludCByZXN1bHQgPSBkZWZsYXRlRW5k
KCZtX3N0cmVhbSk7CisgICAgaWYgKHJlc3VsdCAhPSBaX09LKQorICAgICAgICBMT0coTmV0d29y
aywgImRlZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIiwgcmVzdWx0KTsKK30KKworc3RhdGljIHZvaWQg
c2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtJiBzdHJlYW0sIGNvbnN0IGNoYXIqIGlucHV0RGF0
YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVu
Z3RoKQoreworICAgIHN0cmVhbS5uZXh0X2luID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KGNv
bnN0X2Nhc3Q8Y2hhcio+KGlucHV0RGF0YSkpOworICAgIHN0cmVhbS5hdmFpbF9pbiA9IGlucHV0
TGVuZ3RoOworICAgIHN0cmVhbS5uZXh0X291dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihv
dXRwdXREYXRhKTsKKyAgICBzdHJlYW0uYXZhaWxfb3V0ID0gb3V0cHV0TGVuZ3RoOworfQorCiti
b29sIFdlYlNvY2tldERlZmxhdGVyOjphZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQoreworICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBzaXplX3QgbWF4TGVuZ3RoID0gZGVmbGF0ZUJvdW5kKCZtX3N0cmVhbSwgbGVuZ3RoKTsKKyAg
ICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IG1fYnVmZmVyLnNpemUoKTsKKyAgICBtX2J1ZmZlci5n
cm93KHdyaXRlUG9zaXRpb24gKyBtYXhMZW5ndGgpOworICAgIHNldFN0cmVhbVBhcmFtZXRlciht
X3N0cmVhbSwgZGF0YSwgbGVuZ3RoLCBtX2J1ZmZlci5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBt
YXhMZW5ndGgpOworICAgIGludCByZXN1bHQgPSBkZWZsYXRlKCZtX3N0cmVhbSwgWl9OT19GTFVT
SCk7CisgICAgaWYgKHJlc3VsdCAhPSBaX09LIHx8IG1fc3RyZWFtLmF2YWlsX2luID4gMCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9idWZmZXIuc2hyaW5rKHdyaXRlUG9zaXRpb24g
KyBtYXhMZW5ndGggLSBtX3N0cmVhbS5hdmFpbF9vdXQpOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFdlYlNvY2tldERlZmxhdGVyOjpmaW5pc2goKQoreworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIHNpemVfdCB3cml0ZVBvc2l0aW9uID0gbV9idWZmZXIuc2l6ZSgpOworICAgICAg
ICBtX2J1ZmZlci5ncm93KHdyaXRlUG9zaXRpb24gKyBidWZmZXJJbmNyZW1lbnRVbml0KTsKKyAg
ICAgICAgc2l6ZV90IGF2YWlsYWJsZUNhcGFjaXR5ID0gbV9idWZmZXIuc2l6ZSgpIC0gd3JpdGVQ
b3NpdGlvbjsKKyAgICAgICAgc2V0U3RyZWFtUGFyYW1ldGVyKG1fc3RyZWFtLCAwLCAwLCBtX2J1
ZmZlci5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBhdmFpbGFibGVDYXBhY2l0eSk7CisgICAgICAg
IGludCByZXN1bHQgPSBkZWZsYXRlKCZtX3N0cmVhbSwgWl9TWU5DX0ZMVVNIKTsKKyAgICAgICAg
bV9idWZmZXIuc2hyaW5rKHdyaXRlUG9zaXRpb24gKyBhdmFpbGFibGVDYXBhY2l0eSAtIG1fc3Ry
ZWFtLmF2YWlsX291dCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gWl9PSykKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBpZiAocmVzdWx0ICE9IFpfQlVGX0VSUk9SKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBSZW1vdmUgNCBvY3RldHMgZnJvbSB0aGUgdGFp
bCBhcyB0aGUgc3BlY2lmaWNhdGlvbiByZXF1aXJlcy4KKyAgICBpZiAobV9idWZmZXIuc2l6ZSgp
IDw9IDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2J1ZmZlci5yZXNpemUobV9idWZm
ZXIuc2l6ZSgpIC0gNCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0RGVm
bGF0ZXI6OnJlc2V0KCkKK3sKKyAgICBtX2J1ZmZlci5jbGVhcigpOworICAgIGlmIChtX2NvbnRl
eHRUYWtlT3Zlck1vZGUgPT0gRG9Ob3RUYWtlT3ZlckNvbnRleHQpCisgICAgICAgIGRlZmxhdGVS
ZXNldCgmbV9zdHJlYW0pOworfQorCitQYXNzT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBXZWJT
b2NrZXRJbmZsYXRlcjo6Y3JlYXRlKGludCB3aW5kb3dCaXRzKQoreworICAgIHJldHVybiBhZG9w
dFB0cihuZXcgV2ViU29ja2V0SW5mbGF0ZXIod2luZG93Qml0cykpOworfQorCitXZWJTb2NrZXRJ
bmZsYXRlcjo6V2ViU29ja2V0SW5mbGF0ZXIoaW50IHdpbmRvd0JpdHMpCisgICAgOiBtX3dpbmRv
d0JpdHMod2luZG93Qml0cykKK3sKKyAgICBtZW1zZXQoJm1fc3RyZWFtLCAwLCBzaXplb2Yoel9z
dHJlYW0pKTsKK30KKworYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6aW5pdGlhbGl6ZSgpCit7Cisg
ICAgcmV0dXJuIGluZmxhdGVJbml0MigmbV9zdHJlYW0sIC1tX3dpbmRvd0JpdHMpID09IFpfT0s7
Cit9CisKK1dlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIoKQoreworICAgIGlu
dCByZXN1bHQgPSBpbmZsYXRlRW5kKCZtX3N0cmVhbSk7CisgICAgaWYgKHJlc3VsdCAhPSBaX09L
KQorICAgICAgICBMT0coTmV0d29yaywgImluZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIiwgcmVzdWx0
KTsKK30KKworYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgc2l6ZV90IGNvbnN1bWVkU29GYXIgPSAwOworICAgIHdoaWxlIChjb25zdW1l
ZFNvRmFyIDwgbGVuZ3RoKSB7CisgICAgICAgIHNpemVfdCB3cml0ZVBvc2l0aW9uID0gbV9idWZm
ZXIuc2l6ZSgpOworICAgICAgICBtX2J1ZmZlci5ncm93KHdyaXRlUG9zaXRpb24gKyBidWZmZXJJ
bmNyZW1lbnRVbml0KTsKKyAgICAgICAgc2l6ZV90IGF2YWlsYWJsZUNhcGFjaXR5ID0gbV9idWZm
ZXIuc2l6ZSgpIC0gd3JpdGVQb3NpdGlvbjsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0xlbmd0
aCA9IGxlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAgICAgIHNldFN0cmVhbVBhcmFtZXRlciht
X3N0cmVhbSwgZGF0YSArIGNvbnN1bWVkU29GYXIsIHJlbWFpbmluZ0xlbmd0aCwgbV9idWZmZXIu
ZGF0YSgpICsgd3JpdGVQb3NpdGlvbiwgYXZhaWxhYmxlQ2FwYWNpdHkpOworICAgICAgICBpbnQg
cmVzdWx0ID0gaW5mbGF0ZSgmbV9zdHJlYW0sIFpfTk9fRkxVU0gpOworICAgICAgICBjb25zdW1l
ZFNvRmFyICs9IHJlbWFpbmluZ0xlbmd0aCAtIG1fc3RyZWFtLmF2YWlsX2luOworICAgICAgICBt
X2J1ZmZlci5zaHJpbmsod3JpdGVQb3NpdGlvbiArIGF2YWlsYWJsZUNhcGFjaXR5IC0gbV9zdHJl
YW0uYXZhaWxfb3V0KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBaX0JVRl9FUlJPUikKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAocmVzdWx0ICE9IFpfT0spCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFTU0VSVChjb25zdW1lZFNvRmFyID09IGxlbmd0
aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmZpbmlz
aCgpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgc3RyaXBwZWRGaWVsZHNbXSA9IHsweDAwLCAw
eDAwLCAweGZmLCAweGZmfTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHN0cmlwcGVkTGVuZ3Ro
ID0gNDsKKworICAgIC8vIEFwcGVuZHMgNCBvY3Rlc3RzIG9mIDB4MDAgMHgwMCAweGZmIDB4ZmYK
KyAgICBzaXplX3QgY29uc3VtZWRTb0ZhciA9IDA7CisgICAgd2hpbGUgKGNvbnN1bWVkU29GYXIg
PCBzdHJpcHBlZExlbmd0aCkgeworICAgICAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IG1fYnVm
ZmVyLnNpemUoKTsKKyAgICAgICAgbV9idWZmZXIuZ3Jvdyh3cml0ZVBvc2l0aW9uICsgYnVmZmVy
SW5jcmVtZW50VW5pdCk7CisgICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9IG1fYnVm
ZmVyLnNpemUoKSAtIHdyaXRlUG9zaXRpb247CisgICAgICAgIHNpemVfdCByZW1haW5pbmdMZW5n
dGggPSBzdHJpcHBlZExlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAgICAgIHNldFN0cmVhbVBh
cmFtZXRlcihtX3N0cmVhbSwgc3RyaXBwZWRGaWVsZHMgKyBjb25zdW1lZFNvRmFyLCByZW1haW5p
bmdMZW5ndGgsIG1fYnVmZmVyLmRhdGEoKSArIHdyaXRlUG9zaXRpb24sIGF2YWlsYWJsZUNhcGFj
aXR5KTsKKyAgICAgICAgaW50IHJlc3VsdCA9IGluZmxhdGUoJm1fc3RyZWFtLCBaX0ZJTklTSCk7
CisgICAgICAgIGNvbnN1bWVkU29GYXIgKz0gcmVtYWluaW5nTGVuZ3RoIC0gbV9zdHJlYW0uYXZh
aWxfaW47CisgICAgICAgIG1fYnVmZmVyLnNocmluayh3cml0ZVBvc2l0aW9uICsgYXZhaWxhYmxl
Q2FwYWNpdHkgLSBtX3N0cmVhbS5hdmFpbF9vdXQpOworICAgICAgICBpZiAocmVzdWx0ID09IFpf
QlVGX0VSUk9SKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChyZXN1bHQgIT0g
Wl9PSyAmJiByZXN1bHQgIT0gWl9TVFJFQU1fRU5EKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICBBU1NFUlQoY29uc3VtZWRTb0ZhciA9PSBzdHJpcHBlZExlbmd0aCk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJTb2NrZXRJbmZsYXRlcjo6cmVzZXQoKQor
eworICAgIG1fYnVmZmVyLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODUzNDUxNDE3MDExNzk2MzgzNWZl
YjA3MzZjODllOTBlYzRmMmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJT
b2NrZXREZWZsYXRlcl9oCisjZGVmaW5lIFdlYlNvY2tldERlZmxhdGVyX2gKKworI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx6bGliLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgV2ViU29ja2V0RGVmbGF0ZXIgeworcHVibGljOgorICAgIGVudW0gQ29udGV4dFRha2VP
dmVyTW9kZSB7CisgICAgICAgIERvTm90VGFrZU92ZXJDb250ZXh0LAorICAgICAgICBUYWtlT3Zl
ckNvbnRleHQKKyAgICB9OworICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNvY2tldERlZmxhdGVy
PiBjcmVhdGUoaW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUgPSBUYWtlT3ZlckNv
bnRleHQpOworCisgICAgfldlYlNvY2tldERlZmxhdGVyKCk7CisKKyAgICBib29sIGluaXRpYWxp
emUoKTsKKyAgICBib29sIGFkZEJ5dGVzKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIGJvb2wg
ZmluaXNoKCk7CisgICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEo
KTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9
CisgICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIFdlYlNvY2tldERlZmxhdGVyKGlu
dCB3aW5kb3dCaXRzLCBDb250ZXh0VGFrZU92ZXJNb2RlKTsKKworICAgIGludCBtX3dpbmRvd0Jp
dHM7CisgICAgQ29udGV4dFRha2VPdmVyTW9kZSBtX2NvbnRleHRUYWtlT3Zlck1vZGU7CisgICAg
VmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIHpfc3RyZWFtIG1fc3RyZWFtOworfTsKKworY2xh
c3MgV2ViU29ja2V0SW5mbGF0ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdl
YlNvY2tldEluZmxhdGVyPiBjcmVhdGUoaW50IHdpbmRvd0JpdHMgPSAxNSk7CisKKyAgICB+V2Vi
U29ja2V0SW5mbGF0ZXIoKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZSgpOworICAgIGJvb2wgYWRk
Qnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgYm9vbCBmaW5pc2goKTsKKyAgICBjb25z
dCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KKyAgICB2b2lkIHJlc2V0KCk7
CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViU29ja2V0SW5mbGF0ZXIoaW50IHdpbmRvd0Jp
dHMpOworCisgICAgaW50IG1fd2luZG93Qml0czsKKyAgICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7
CisgICAgel9zdHJlYW0gbV9zdHJlYW07Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisKKyNlbmRpZiAvLyBXZWJTb2NrZXREZWZsYXRlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaQppbmRleCAzNWYyYjE5OTA3NzlkNjY5ZWY4MDQwMmZiMDBmMmE1NTYxNDdj
MzI2Li40ZWE3MDBkNTk0Njg2YTU4MjlmYTc3ZmI0OWNmYmI4MDZiNjJmZDRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTExOCw2ICsxMTgsNyBAQAogICAgICAgICAgICAgJ3Rl
c3RzL1dlYkxheWVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VOZXdTZXJp
YWxpemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVz
dC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL1dlYlNvY2tldERlZmxhdGVyVGVzdC5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvV2ViVVJMUmVxdWVzdFRlc3QuY3BwJywKICAgICAgICAgICAg
ICd0ZXN0cy9XZWJWaWV3VGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyM2E1OTY5
ZmQyNWI3Nzc3NWUwYzUzYzdhODI2NzMzZjU2MTIwMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldERlZmxhdGVyVGVzdC5jcHAKQEAgLTAs
MCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJT
b2NrZXREZWZsYXRlci5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ugewor
CitURVNUKFdlYlNvY2tldERlZmxhdGVyVGVzdCwgVGVzdENvbXByZXNzSGVsbG8pCit7CisgICAg
Ly8gVGVzdCB0aGUgZmlyc3QgZXhhbXBsZSBvbiBzZWN0aW9uIDQuMyBvZiB0aGUgc3BlY2lmaWNh
dGlvbi4KKyAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVyID0gV2ViU29ja2V0
RGVmbGF0ZXI6OmNyZWF0ZSgxNSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmluaXRpYWxp
emUoKSk7CisgICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9IFdlYlNvY2tl
dEluZmxhdGVyOjpjcmVhdGUoKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+aW5pdGlhbGl6
ZSgpKTsKKyAgICBjb25zdCBjaGFyKiBpbnB1dERhdGEgPSAiSGVsbG8iOworICAgIGNvbnN0IHNp
emVfdCBpbnB1dExlbmd0aCA9IHN0cmxlbihpbnB1dERhdGEpOworCisgICAgQVNTRVJUX1RSVUUo
ZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YSwgaW5wdXRMZW5ndGgpKTsKKyAgICBBU1NFUlRf
VFJVRShkZWZsYXRlci0+ZmluaXNoKCkpOworICAgIGNvbnN0IGNoYXIgZXhwZWN0ZWRGaXJzdFtd
ID0gezB4ZjIsIDB4NDgsIDB4Y2QsIDB4YzksIDB4YzksIDB4MDcsIDB4MDB9OworICAgIEVYUEVD
VF9FUShzaXplb2YoZXhwZWN0ZWRGaXJzdCksIGRlZmxhdGVyLT5zaXplKCkpOworICAgIEVYUEVD
VF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRGaXJzdCwgZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXIt
PnNpemUoKSkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+
ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmZp
bmlzaCgpKTsKKyAgICBFWFBFQ1RfRVEoaW5wdXRMZW5ndGgsIGluZmxhdGVyLT5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZs
YXRlci0+c2l6ZSgpKSk7CisKKyAgICBkZWZsYXRlci0+cmVzZXQoKTsKKyAgICBpbmZsYXRlci0+
cmVzZXQoKTsKKworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhpbnB1dERhdGEs
IGlucHV0TGVuZ3RoKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKyAg
ICBjb25zdCBjaGFyIGV4cGVjdGVkU2Vjb25kW10gPSB7MHhmMiwgMHgwMCwgMHgxMSwgMHgwMCwg
MHgwMH07CisgICAgRVhQRUNUX0VRKHNpemVvZihleHBlY3RlZFNlY29uZCksIGRlZmxhdGVyLT5z
aXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRTZWNvbmQsIGRlZmxhdGVy
LT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+
YWRkQnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgIEFTU0VS
VF9UUlVFKGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNUX0VRKGlucHV0TGVuZ3RoLCBp
bmZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YSwgaW5m
bGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworfQorCitURVNUKFdlYlNvY2tldERl
ZmxhdGVyVGVzdCwgVGVzdE11bHRpcGxlQWRkQnl0ZXNDYWxscykKK3sKKyAgICBPd25QdHI8V2Vi
U29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSgxNSk7
CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgT3duUHRyPFdl
YlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoKTsK
KyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+aW5pdGlhbGl6ZSgpKTsKKyAgICBWZWN0b3I8Y2hh
cj4gaW5wdXREYXRhKDMyKTsKKyAgICBpbnB1dERhdGEuZmlsbCgnYScpOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpbnB1dERhdGEuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVF9U
UlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhpbnB1dERhdGEuZGF0YSgpICsgaSwgMSkpOworICAgIEFT
U0VSVF9UUlVFKGRlZmxhdGVyLT5maW5pc2goKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBkZWZsYXRlci0+c2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5h
ZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpICsgaSwgMSkpOworICAgIEFTU0VSVF9UUlVFKGluZmxh
dGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNUX0VRKGlucHV0RGF0YS5zaXplKCksIGluZmxhdGVy
LT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLmRhdGEoKSwgaW5m
bGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworfQorCitURVNUKFdlYlNvY2tldERl
ZmxhdGVyVGVzdCwgVGVzdE5vQ29udGV4dFRha2VPdmVyKQoreworICAgIE93blB0cjxXZWJTb2Nr
ZXREZWZsYXRlcj4gZGVmbGF0ZXIgPSBXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKDE1LCBXZWJT
b2NrZXREZWZsYXRlcjo6RG9Ob3RUYWtlT3ZlckNvbnRleHQpOworICAgIEFTU0VSVF9UUlVFKGRl
ZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5m
bGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgQVNTRVJUX1RSVUUoaW5m
bGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgY29uc3QgY2hhciBleHBlY3RlZFtdID0gezB4ZjIs
IDB4NDgsIDB4Y2QsIDB4YzksIDB4YzksIDB4MDcsIDB4MDB9OworICAgIGNvbnN0IGNoYXIqIGlu
cHV0RGF0YSA9ICJIZWxsbyI7CisgICAgY29uc3Qgc2l6ZV90IGlucHV0TGVuZ3RoID0gc3RybGVu
KGlucHV0RGF0YSk7CisKKyAgICAvLyBJZiB3ZSBkb24ndCB0YWtlIG92ZXIgY29udGV4dCwgdGhl
IHNlY29uZCByZXN1bHQgc2hvdWxkIGJlIHRoZSBpZGVudGljYWwKKyAgICAvLyB3aXRoIHRoZSBm
aXJzdCBvbmUuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyOyArK2kpIHsKKyAgICAgICAg
QVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YSwgaW5wdXRMZW5ndGgpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKHNpemVvZihleHBlY3RlZCksIGRlZmxhdGVyLT5zaXplKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMCwgbWVtY21wKGV4cGVjdGVkLCBkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgp
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0
YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5m
aW5pc2goKSk7CisgICAgICAgIEVYUEVDVF9FUShpbnB1dExlbmd0aCwgaW5mbGF0ZXItPnNpemUo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLCBpbmZsYXRlci0+ZGF0
YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIGRlZmxhdGVyLT5yZXNldCgpOworICAg
ICAgICBpbmZsYXRlci0+cmVzZXQoKTsKKyAgICB9Cit9CisKK1RFU1QoV2ViU29ja2V0RGVmbGF0
ZXJUZXN0LCBUZXN0V2luZG93Qml0cykKK3sKKyAgICBWZWN0b3I8Y2hhcj4gaW5wdXREYXRhKDEw
MjQgKyA2NCAqIDIpOworICAgIGlucHV0RGF0YS5maWxsKCdhJyk7CisgICAgLy8gTW9kaWZ5IHRo
ZSBoZWFkIGFuZCB0YWlsIG9mIHRoZSBpbnB1dERhdGEgc28gdGhhdCBiYWNrLXJlZmVyZW5jZQor
ICAgIC8vIGNhbiBiZSB1c2VkIGlmIHRoZSB3aW5kb3cgc2l6ZSBpcyBzdWZmaWNpZW50bHktbGFy
Z2UuCisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCA2NDsgKytqKSB7CisgICAgICAgIGlucHV0
RGF0YVtqXSA9ICdiJzsKKyAgICAgICAgaW5wdXREYXRhW2lucHV0RGF0YS5zaXplKCkgLSBqIC0g
MV0gPSAnYic7CisgICAgfQorCisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZsYXRl
ciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoOCk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0
ZXItPmluaXRpYWxpemUoKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlu
cHV0RGF0YS5kYXRhKCksIGlucHV0RGF0YS5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZs
YXRlci0+ZmluaXNoKCkpOworCisgICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRl
ciA9IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoOCk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0
ZXItPmluaXRpYWxpemUoKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmFkZEJ5dGVzKGRl
ZmxhdGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZs
YXRlci0+ZmluaXNoKCkpOworICAgIEVYUEVDVF9FUShpbnB1dERhdGEuc2l6ZSgpLCBpbmZsYXRl
ci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YS5kYXRhKCksIGlu
ZmxhdGVyLT5kYXRhKCksIGluZmxhdGVyLT5zaXplKCkpKTsKK30KKworVEVTVChXZWJTb2NrZXRE
ZWZsYXRlclRlc3QsIFRlc3RMYXJnZURhdGEpCit7CisgICAgT3duUHRyPFdlYlNvY2tldERlZmxh
dGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUpOworICAgIEFTU0VS
VF9UUlVFKGRlZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZs
YXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgQVNTRVJU
X1RSVUUoaW5mbGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgVmVjdG9yPGNoYXI+IGlucHV0RGF0
YSgxNiAqIDEwMjQgKiAxMDI0KTsKKyAgICBpbnB1dERhdGEuZmlsbCgnYScpOworCisgICAgQVNT
RVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YS5kYXRhKCksIGlucHV0RGF0YS5z
aXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+ZmluaXNoKCkpOworICAgIEFTU0VS
VF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6
ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBFWFBFQ1Rf
RVEoaW5wdXREYXRhLnNpemUoKSwgaW5mbGF0ZXItPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAs
IG1lbWNtcChpbnB1dERhdGEuZGF0YSgpLCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZsYXRlci0+c2l6
ZSgpKSk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127075</attachid>
            <date>2012-02-14 16:33:08 -0800</date>
            <delta_ts>2012-02-14 16:42:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78449-20120215093306.patch</filename>
            <type>text/plain</type>
            <size>28951</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE0YjVkNWVlY2ZiNjc0
NDRhNWU0N2JkYzEyNTQ2N2JlYzBhZTQ4ZS4uNDlmY2VjYmRmNjU3ZDZiN2Y4NDEyMzRkNDZkYmEw
MWUyMGIzZDVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAyLTE0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZGVmbGF0ZXIvaW5mbGF0ZXIgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgV2ViU29ja2V0RGVm
bGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2xhc3NlcyB3aGljaCB3cmFwIHpsaWIKKyAgICAgICAg
ZnVuY3Rpb25zLiBUaGVzZSBjbGFzc2VzIGFyZSBub3QgdXNlZCB5ZXQsIGJ1dCB3aWxsIGJlIHVz
ZWQgZm9yCisgICAgICAgIHN1cHBvcnRpbmcgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9taXVtIHBvcnQuIEJlaGF2aW9yIGlzIHVuY2hhbmdl
ZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkLldlYlNvY2tldERlZmxh
dGVyLihjcHB8aCkuCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0RGVmbGF0ZXI6OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERl
ZmxhdGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SW5mbGF0ZXI6OnJlc2V0KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTb2NrZXREZWZs
YXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6ZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6c2l6ZSk6CisgICAgICAgIChXZWJTb2Nr
ZXRJbmZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6ZGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6c2l6ZSk6CisKIDIwMTItMDIt
MTQgIE1hdHQgTGlsZWsgIDxtcmxAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IEVOQUJMRV9E
QVNIQk9BUkRfU1VQUE9SVCB1bmNvbmRpdGlvbmFsbHkgb24gYWxsIE1hYyBwbGF0Zm9ybXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTk1MzhiZWVjMGZkNDhjNGMxODVjYmIyZGI2YjA1
NmUwYTJlYjAwNS4uZGM4NWY1MDUxNzUxYmI5ZTI1NTM0M2YyOTRjODRjMDY5M2I3NTE1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wMi0xNCAgS2Vu
aWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dlYlNvY2tl
dF0gQWRkIGRlZmxhdGVyL2luZmxhdGVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ0OQorCisgICAgICAgIEFkZCB0ZXN0cyB3aGlj
aCBlbnN1cmUgV2ViU29ja2V0RGVmbGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2FuCisgICAgICAg
IGNvbXByZXNzL2RlY29tcHJlc3MgZGF0YSBjb3JyZWN0bHkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0
ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDItMTQgIFJhbXlhIENoYW5kcmFz
ZWthcmFuICA8Y3JhbXlhQGdvb2dsZS5jb20+CiAKICAgICAgICAgTGFzdCBjaGFyYWN0ZXIgZGlz
cGxheSBmb3IgcGFzc3dvcmRzIGluIEFuZHJvaWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBkYjgwMjExNDBkOTA0OWIzYjVmNDRhOTg0MzBmNmZmMDUyMWJhYWExLi5hYTY1MjM1
YmZkYzkxN2NhYjE3NTYyNjcxMDM0NjdlYTgwODYxOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTQzMjAsNiArNDMyMCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAogCVNvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZs
YXRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uUHJvY2Vzc29yLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZiMTZhNWZmOWM5NTA5Y2Y5YmJl
MGZmNDA4OWU0MWZmNDAwNTFhMzEuLjUwYzAyODllNWIwMGE4OWFmNmMyZmM4N2IwNGNkMDg5ZTZj
OTNiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ4MDEsNiArNDgwMSw4IEBACiAgICAgICAgICAg
ICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmNwcCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5o
JywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3IuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDA3MGFiM2Y5NjE5MWI2MzFlMDUwMzk2YmE5MjEzMTc1ZTE4N2I2NDguLmY0Zjg2MjdmMjgw
Yzc5MTc4Yzk4MDgwMWM2NmI3M2ZjNjllMzhmNDAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mjk3OCw2ICs3Mjk3OCwxNCBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdl
YlNvY2tldERlZmxhdGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXREZWZsYXRlci5oIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZWMx
NzRmYjAxYzkxZWU3MjJhOTkxYzFlNzViNzc3YjBhN2ZmOGNhLi44MTZiNTdhMTZmNGY4MjM1YmIz
NTc3YmZjMjc0ZGI5NTRjODhmZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzgyLDYgKzEzODIsOCBAQAogCQk0QUQwMTcz
QzEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQTEyN0U4Mjg2MDAxNTAz
NUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi87IH07CiAJCTRBRDAxNzNEMTI3RTgyODYw
MDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1M
T3V0cHV0RWxlbWVudC5oICovOyB9OwogCQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMgLyogV2Vi
U29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0
ZW5zaW9uUHJvY2Vzc29yLmggKi87IH07CisJCTRBRTAyQUJEMTRFOEE5RDIwMEJDM0JBNyAvKiBX
ZWJTb2NrZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QUUwMkFCQjE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIu
Y3BwICovOyB9OworCQk0QUUwMkFCRTE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRTAy
QUJDMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5oICovOyB9OwogCQk0QUYx
QUQzRTEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRjFBRDNDMTNGRDIzQTQw
MEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwICovOyB9OwogCQk0QUYxQUQzRjEz
RkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUYxQUQzRDEzRkQyM0E0MDBBQTk1OTAg
LyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEIyNzA4QzcwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9h
cmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMjcw
OEM1MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggKi87IH07CkBAIC04MjM4LDYgKzgy
NDAsOCBAQAogCQk0QUQwMTczQTEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPdXRwdXRF
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFEMDE3M0IxMjdFODI4
NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJv
Y2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QUUwMkFCQjE0
RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0RGVmbGF0ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QUUwMkFCQzE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVm
bGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RGVmbGF0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFGMUFEM0MxM0ZEMjNBNDAwQUE5
NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QUYxQUQzRDEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1l
ZGlhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50RGlzcGF0Y2hN
ZWRpYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjI3MDhDNTBBRjE5RUU0
MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDgwNiw3ICsx
NDgxMCw2IEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0QURFMjVGOTE0RTNC
QjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCiAJCQkJNTFG
QjU0RjQxMTNFMzY0MjAwODIxMTc2IC8qIENsb3NlRXZlbnQuaCAqLywKIAkJCQk1MUZCNTRGNjEx
M0UzNjU5MDA4MjExNzYgLyogQ2xvc2VFdmVudC5pZGwgKi8sCiAJCQkJNTExMjI0NzExMENGQjhD
NjAwODA5OUQ3IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKQEAgLTE0ODE5
LDggKzE0ODIyLDExIEBACiAJCQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tl
dENoYW5uZWwuY3BwICovLAogCQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2Nr
ZXRDaGFubmVsLmggKi8sCiAJCQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tl
dENoYW5uZWxDbGllbnQuaCAqLywKKwkJCQk0QUUwMkFCQjE0RThBOUQyMDBCQzNCQTcgLyogV2Vi
U29ja2V0RGVmbGF0ZXIuY3BwICovLAorCQkJCTRBRTAyQUJDMTRFOEE5RDIwMEJDM0JBNyAvKiBX
ZWJTb2NrZXREZWZsYXRlci5oICovLAogCQkJCTRBOTU3RjAzMTRFMjQxMTAwMDQ5REJGQiAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCAqLywKIAkJCQk0QTk1N0YwNDE0RTI0MTEw
MDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oICovLAorCQkJCTRBREUy
NUY5MTRFM0JCNEMwMDRDMjIxMyAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCAqLywK
IAkJCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAq
LywKIAkJCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmgg
Ki8sCiAJCQkJNzYzN0M1NDAxMTJFN0I3NDAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuY3BwICovLApAQCAtMjQyNjMsNiArMjQyNjksNyBAQAogCQkJCTk3Q0MzQUUzMTRFOEU0
QTIwMDg5NDk4OCAvKiBOYXZpZ2F0b3JTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NTk4OTA1NzE0RTlDMjgwMDBFOEQxOEIgLyogUGFzdGVib2FyZFN0cmF0ZWd5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNTk4OTA1ODE0RTlDMjk5MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJk
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QUUwMkFCRTE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29j
a2V0RGVmbGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcyMDYsNiArMjcyMTMsNyBAQAogCQkJ
CTU3MkU5MkZCMTRFNTQwNTgwMDg3RkZCQSAvKiBTaGFkb3dSb290TGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5N0NDM0FFMjE0RThFNEEyMDA4OTQ5ODggLyogTmF2aWdhdG9yU3VwcGxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTk4OTAyRTE0RTlCMEY4MDBFOEQxOEIgLyogUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNEFFMDJBQkQxNEU4QTlE
MjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNzU2NzY5M2UxZWZhMjQ3ZmZjYWZkYTM3MDNmYjlmZGNlNjMzNjg2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAg
LTAsMCArMSwyMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0
IGludCBkZWZhdWx0TWVtTGV2ZWwgPSAxOworc3RhdGljIGNvbnN0IHNpemVfdCBidWZmZXJJbmNy
ZW1lbnRVbml0ID0gNDA5NjsKKworUGFzc093blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gV2ViU29j
a2V0RGVmbGF0ZXI6OmNyZWF0ZShpbnQgd2luZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9kZSBj
b250ZXh0VGFrZU92ZXJNb2RlKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViU29ja2V0
RGVmbGF0ZXIod2luZG93Qml0cywgY29udGV4dFRha2VPdmVyTW9kZSkpOworfQorCitXZWJTb2Nr
ZXREZWZsYXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIoaW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtl
T3Zlck1vZGUgY29udGV4dFRha2VPdmVyTW9kZSkKKyAgICA6IG1fd2luZG93Qml0cyh3aW5kb3dC
aXRzKQorICAgICwgbV9jb250ZXh0VGFrZU92ZXJNb2RlKGNvbnRleHRUYWtlT3Zlck1vZGUpCit7
CisgICAgQVNTRVJUKG1fd2luZG93Qml0cyA+PSA4KTsKKyAgICBBU1NFUlQobV93aW5kb3dCaXRz
IDw9IDE1KTsKKyAgICBtZW1zZXQoJm1fc3RyZWFtLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKK30K
KworYm9vbCBXZWJTb2NrZXREZWZsYXRlcjo6aW5pdGlhbGl6ZSgpCit7CisgICAgcmV0dXJuIGRl
ZmxhdGVJbml0MigmbV9zdHJlYW0sIFpfREVGQVVMVF9DT01QUkVTU0lPTiwgWl9ERUZMQVRFRCwg
LW1fd2luZG93Qml0cywgZGVmYXVsdE1lbUxldmVsLCBaX0RFRkFVTFRfU1RSQVRFR1kpID09IFpf
T0s7Cit9CisKK1dlYlNvY2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIoKQoreworICAg
IGludCByZXN1bHQgPSBkZWZsYXRlRW5kKCZtX3N0cmVhbSk7CisgICAgaWYgKHJlc3VsdCAhPSBa
X09LKQorICAgICAgICBMT0coTmV0d29yaywgImRlZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIiwgcmVz
dWx0KTsKK30KKworc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtJiBzdHJl
YW0sIGNvbnN0IGNoYXIqIGlucHV0RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBvdXRw
dXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQoreworICAgIHN0cmVhbS5uZXh0X2luID0gcmVp
bnRlcnByZXRfY2FzdDxCeXRlZio+KGNvbnN0X2Nhc3Q8Y2hhcio+KGlucHV0RGF0YSkpOworICAg
IHN0cmVhbS5hdmFpbF9pbiA9IGlucHV0TGVuZ3RoOworICAgIHN0cmVhbS5uZXh0X291dCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihvdXRwdXREYXRhKTsKKyAgICBzdHJlYW0uYXZhaWxfb3V0
ID0gb3V0cHV0TGVuZ3RoOworfQorCitib29sIFdlYlNvY2tldERlZmxhdGVyOjphZGRCeXRlcyhj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgbWF4TGVuZ3RoID0gZGVmbGF0ZUJvdW5k
KCZtX3N0cmVhbSwgbGVuZ3RoKTsKKyAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IG1fYnVmZmVy
LnNpemUoKTsKKyAgICBtX2J1ZmZlci5ncm93KHdyaXRlUG9zaXRpb24gKyBtYXhMZW5ndGgpOwor
ICAgIHNldFN0cmVhbVBhcmFtZXRlcihtX3N0cmVhbSwgZGF0YSwgbGVuZ3RoLCBtX2J1ZmZlci5k
YXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBtYXhMZW5ndGgpOworICAgIGludCByZXN1bHQgPSBkZWZs
YXRlKCZtX3N0cmVhbSwgWl9OT19GTFVTSCk7CisgICAgaWYgKHJlc3VsdCAhPSBaX09LIHx8IG1f
c3RyZWFtLmF2YWlsX2luID4gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9idWZm
ZXIuc2hyaW5rKHdyaXRlUG9zaXRpb24gKyBtYXhMZW5ndGggLSBtX3N0cmVhbS5hdmFpbF9vdXQp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlNvY2tldERlZmxhdGVyOjpmaW5pc2go
KQoreworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHNpemVfdCB3cml0ZVBvc2l0aW9uID0g
bV9idWZmZXIuc2l6ZSgpOworICAgICAgICBtX2J1ZmZlci5ncm93KHdyaXRlUG9zaXRpb24gKyBi
dWZmZXJJbmNyZW1lbnRVbml0KTsKKyAgICAgICAgc2l6ZV90IGF2YWlsYWJsZUNhcGFjaXR5ID0g
bV9idWZmZXIuc2l6ZSgpIC0gd3JpdGVQb3NpdGlvbjsKKyAgICAgICAgc2V0U3RyZWFtUGFyYW1l
dGVyKG1fc3RyZWFtLCAwLCAwLCBtX2J1ZmZlci5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBhdmFp
bGFibGVDYXBhY2l0eSk7CisgICAgICAgIGludCByZXN1bHQgPSBkZWZsYXRlKCZtX3N0cmVhbSwg
Wl9TWU5DX0ZMVVNIKTsKKyAgICAgICAgbV9idWZmZXIuc2hyaW5rKHdyaXRlUG9zaXRpb24gKyBh
dmFpbGFibGVDYXBhY2l0eSAtIG1fc3RyZWFtLmF2YWlsX291dCk7CisgICAgICAgIGlmIChyZXN1
bHQgPT0gWl9PSykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAocmVzdWx0ICE9IFpf
QlVGX0VSUk9SKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBSZW1v
dmUgNCBvY3RldHMgZnJvbSB0aGUgdGFpbCBhcyB0aGUgc3BlY2lmaWNhdGlvbiByZXF1aXJlcy4K
KyAgICBpZiAobV9idWZmZXIuc2l6ZSgpIDw9IDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBtX2J1ZmZlci5yZXNpemUobV9idWZmZXIuc2l6ZSgpIC0gNCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZXI6OnJlc2V0KCkKK3sKKyAgICBtX2J1ZmZlci5j
bGVhcigpOworICAgIGlmIChtX2NvbnRleHRUYWtlT3Zlck1vZGUgPT0gRG9Ob3RUYWtlT3ZlckNv
bnRleHQpCisgICAgICAgIGRlZmxhdGVSZXNldCgmbV9zdHJlYW0pOworfQorCitQYXNzT3duUHRy
PFdlYlNvY2tldEluZmxhdGVyPiBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKGludCB3aW5kb3dC
aXRzKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViU29ja2V0SW5mbGF0ZXIod2luZG93
Qml0cykpOworfQorCitXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0SW5mbGF0ZXIoaW50IHdp
bmRvd0JpdHMpCisgICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0cykKK3sKKyAgICBtZW1zZXQo
Jm1fc3RyZWFtLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKK30KKworYm9vbCBXZWJTb2NrZXRJbmZs
YXRlcjo6aW5pdGlhbGl6ZSgpCit7CisgICAgcmV0dXJuIGluZmxhdGVJbml0MigmbV9zdHJlYW0s
IC1tX3dpbmRvd0JpdHMpID09IFpfT0s7Cit9CisKK1dlYlNvY2tldEluZmxhdGVyOjp+V2ViU29j
a2V0SW5mbGF0ZXIoKQoreworICAgIGludCByZXN1bHQgPSBpbmZsYXRlRW5kKCZtX3N0cmVhbSk7
CisgICAgaWYgKHJlc3VsdCAhPSBaX09LKQorICAgICAgICBMT0coTmV0d29yaywgImluZmxhdGVF
bmQoKSBmYWlsZWQ6ICVkIiwgcmVzdWx0KTsKK30KKworYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6
YWRkQnl0ZXMoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoIWxl
bmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90IGNvbnN1bWVkU29GYXIg
PSAwOworICAgIHdoaWxlIChjb25zdW1lZFNvRmFyIDwgbGVuZ3RoKSB7CisgICAgICAgIHNpemVf
dCB3cml0ZVBvc2l0aW9uID0gbV9idWZmZXIuc2l6ZSgpOworICAgICAgICBtX2J1ZmZlci5ncm93
KHdyaXRlUG9zaXRpb24gKyBidWZmZXJJbmNyZW1lbnRVbml0KTsKKyAgICAgICAgc2l6ZV90IGF2
YWlsYWJsZUNhcGFjaXR5ID0gbV9idWZmZXIuc2l6ZSgpIC0gd3JpdGVQb3NpdGlvbjsKKyAgICAg
ICAgc2l6ZV90IHJlbWFpbmluZ0xlbmd0aCA9IGxlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAg
ICAgIHNldFN0cmVhbVBhcmFtZXRlcihtX3N0cmVhbSwgZGF0YSArIGNvbnN1bWVkU29GYXIsIHJl
bWFpbmluZ0xlbmd0aCwgbV9idWZmZXIuZGF0YSgpICsgd3JpdGVQb3NpdGlvbiwgYXZhaWxhYmxl
Q2FwYWNpdHkpOworICAgICAgICBpbnQgcmVzdWx0ID0gaW5mbGF0ZSgmbV9zdHJlYW0sIFpfTk9f
RkxVU0gpOworICAgICAgICBjb25zdW1lZFNvRmFyICs9IHJlbWFpbmluZ0xlbmd0aCAtIG1fc3Ry
ZWFtLmF2YWlsX2luOworICAgICAgICBtX2J1ZmZlci5zaHJpbmsod3JpdGVQb3NpdGlvbiArIGF2
YWlsYWJsZUNhcGFjaXR5IC0gbV9zdHJlYW0uYXZhaWxfb3V0KTsKKyAgICAgICAgaWYgKHJlc3Vs
dCA9PSBaX0JVRl9FUlJPUikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAocmVz
dWx0ICE9IFpfT0spCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFTU0VS
VChjb25zdW1lZFNvRmFyID09IGxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
V2ViU29ja2V0SW5mbGF0ZXI6OmZpbmlzaCgpCit7CisgICAgLy8gVXNlIEJ5dGVmW10gaW5zdGVh
ZCBvZiBjaGFyW10gdG8gYXZvaWQgInRydW5jYXRpb24gb2YgY29uc3RhbnQgdmFsdWUiIHdhcm5p
bmcgb2YgTVNWQy4KKyAgICBzdGF0aWMgY29uc3QgQnl0ZWYgc3RyaXBwZWRGaWVsZHNbXSA9IHsw
eDAwLCAweDAwLCAweGZmLCAweGZmfTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHN0cmlwcGVk
TGVuZ3RoID0gNDsKKworICAgIC8vIEFwcGVuZHMgNCBvY3Rlc3RzIG9mIDB4MDAgMHgwMCAweGZm
IDB4ZmYKKyAgICBzaXplX3QgY29uc3VtZWRTb0ZhciA9IDA7CisgICAgd2hpbGUgKGNvbnN1bWVk
U29GYXIgPCBzdHJpcHBlZExlbmd0aCkgeworICAgICAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9
IG1fYnVmZmVyLnNpemUoKTsKKyAgICAgICAgbV9idWZmZXIuZ3Jvdyh3cml0ZVBvc2l0aW9uICsg
YnVmZmVySW5jcmVtZW50VW5pdCk7CisgICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9
IG1fYnVmZmVyLnNpemUoKSAtIHdyaXRlUG9zaXRpb247CisgICAgICAgIHNpemVfdCByZW1haW5p
bmdMZW5ndGggPSBzdHJpcHBlZExlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAgICAgIHNldFN0
cmVhbVBhcmFtZXRlcihtX3N0cmVhbSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3Ry
aXBwZWRGaWVsZHMgKyBjb25zdW1lZFNvRmFyKSwgcmVtYWluaW5nTGVuZ3RoLCBtX2J1ZmZlci5k
YXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBhdmFpbGFibGVDYXBhY2l0eSk7CisgICAgICAgIGludCBy
ZXN1bHQgPSBpbmZsYXRlKCZtX3N0cmVhbSwgWl9GSU5JU0gpOworICAgICAgICBjb25zdW1lZFNv
RmFyICs9IHJlbWFpbmluZ0xlbmd0aCAtIG1fc3RyZWFtLmF2YWlsX2luOworICAgICAgICBtX2J1
ZmZlci5zaHJpbmsod3JpdGVQb3NpdGlvbiArIGF2YWlsYWJsZUNhcGFjaXR5IC0gbV9zdHJlYW0u
YXZhaWxfb3V0KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBaX0JVRl9FUlJPUikKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAocmVzdWx0ICE9IFpfT0sgJiYgcmVzdWx0ICE9IFpf
U1RSRUFNX0VORCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJU
KGNvbnN1bWVkU29GYXIgPT0gc3RyaXBwZWRMZW5ndGgpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgV2ViU29ja2V0SW5mbGF0ZXI6OnJlc2V0KCkKK3sKKyAgICBtX2J1ZmZlci5jbGVh
cigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjg1MzQ1MTQxNzAxMTc5NjM4MzVmZWIwNzM2Yzg5ZTkwZWM0ZjJlYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZXIuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0RGVmbGF0ZXJfaAorI2Rl
ZmluZSBXZWJTb2NrZXREZWZsYXRlcl9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSA8emxpYi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldERlZmxh
dGVyIHsKK3B1YmxpYzoKKyAgICBlbnVtIENvbnRleHRUYWtlT3Zlck1vZGUgeworICAgICAgICBE
b05vdFRha2VPdmVyQ29udGV4dCwKKyAgICAgICAgVGFrZU92ZXJDb250ZXh0CisgICAgfTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gY3JlYXRlKGludCB3aW5kb3dC
aXRzLCBDb250ZXh0VGFrZU92ZXJNb2RlID0gVGFrZU92ZXJDb250ZXh0KTsKKworICAgIH5XZWJT
b2NrZXREZWZsYXRlcigpOworCisgICAgYm9vbCBpbml0aWFsaXplKCk7CisgICAgYm9vbCBhZGRC
eXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGZpbmlzaCgpOworICAgIGNvbnN0
IGNoYXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQorICAgIHZvaWQgcmVzZXQoKTsK
KworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXREZWZsYXRlcihpbnQgd2luZG93Qml0cywgQ29udGV4
dFRha2VPdmVyTW9kZSk7CisKKyAgICBpbnQgbV93aW5kb3dCaXRzOworICAgIENvbnRleHRUYWtl
T3Zlck1vZGUgbV9jb250ZXh0VGFrZU92ZXJNb2RlOworICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZl
cjsKKyAgICB6X3N0cmVhbSBtX3N0cmVhbTsKK307CisKK2NsYXNzIFdlYlNvY2tldEluZmxhdGVy
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gY3Jl
YXRlKGludCB3aW5kb3dCaXRzID0gMTUpOworCisgICAgfldlYlNvY2tldEluZmxhdGVyKCk7CisK
KyAgICBib29sIGluaXRpYWxpemUoKTsKKyAgICBib29sIGFkZEJ5dGVzKGNvbnN0IGNoYXIqLCBz
aXplX3QpOworICAgIGJvb2wgZmluaXNoKCk7CisgICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0
dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuc2l6ZSgpOyB9CisgICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IFdlYlNvY2tldEluZmxhdGVyKGludCB3aW5kb3dCaXRzKTsKKworICAgIGludCBtX3dp
bmRvd0JpdHM7CisgICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIHpfc3RyZWFtIG1fc3Ry
ZWFtOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYg
Ly8gV2ViU29ja2V0RGVmbGF0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXgg
MzVmMmIxOTkwNzc5ZDY2OWVmODA0MDJmYjAwZjJhNTU2MTQ3YzMyNi4uNGVhNzAwZDU5NDY4NmE1
ODI5ZmE3N2ZiNDljZmJiODA2YjYyZmQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CkBAIC0xMTgsNiArMTE4LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9XZWJMYXllclRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAgICAg
ICd0ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9X
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rlc3Qu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0
RGVmbGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0
RGVmbGF0ZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjNhNTk2OWZkMjViNzc3NzVlMGM1M2M3YTgy
NjczM2Y1NjEyMDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIuaCIKKwor
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIHsKKworVEVTVChXZWJTb2NrZXREZWZs
YXRlclRlc3QsIFRlc3RDb21wcmVzc0hlbGxvKQoreworICAgIC8vIFRlc3QgdGhlIGZpcnN0IGV4
YW1wbGUgb24gc2VjdGlvbiA0LjMgb2YgdGhlIHNwZWNpZmljYXRpb24uCisgICAgT3duUHRyPFdl
YlNvY2tldERlZmxhdGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUp
OworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIE93blB0cjxX
ZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7
CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgY29uc3QgY2hh
ciogaW5wdXREYXRhID0gIkhlbGxvIjsKKyAgICBjb25zdCBzaXplX3QgaW5wdXRMZW5ndGggPSBz
dHJsZW4oaW5wdXREYXRhKTsKKworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhp
bnB1dERhdGEsIGlucHV0TGVuZ3RoKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlz
aCgpKTsKKyAgICBjb25zdCBjaGFyIGV4cGVjdGVkRmlyc3RbXSA9IHsweGYyLCAweDQ4LCAweGNk
LCAweGM5LCAweGM5LCAweDA3LCAweDAwfTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKGV4cGVjdGVk
Rmlyc3QpLCBkZWZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVj
dGVkRmlyc3QsIGRlZmxhdGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NF
UlRfVFJVRShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNp
emUoKSkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNU
X0VRKGlucHV0TGVuZ3RoLCBpbmZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVt
Y21wKGlucHV0RGF0YSwgaW5mbGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworCisg
ICAgZGVmbGF0ZXItPnJlc2V0KCk7CisgICAgaW5mbGF0ZXItPnJlc2V0KCk7CisKKyAgICBBU1NF
UlRfVFJVRShkZWZsYXRlci0+YWRkQnl0ZXMoaW5wdXREYXRhLCBpbnB1dExlbmd0aCkpOworICAg
IEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5maW5pc2goKSk7CisgICAgY29uc3QgY2hhciBleHBlY3Rl
ZFNlY29uZFtdID0gezB4ZjIsIDB4MDAsIDB4MTEsIDB4MDAsIDB4MDB9OworICAgIEVYUEVDVF9F
UShzaXplb2YoZXhwZWN0ZWRTZWNvbmQpLCBkZWZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgbWVtY21wKGV4cGVjdGVkU2Vjb25kLCBkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+
c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmFkZEJ5dGVzKGRlZmxhdGVyLT5k
YXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+Zmlu
aXNoKCkpOworICAgIEVYUEVDVF9FUShpbnB1dExlbmd0aCwgaW5mbGF0ZXItPnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbnB1dERhdGEsIGluZmxhdGVyLT5kYXRhKCksIGluZmxh
dGVyLT5zaXplKCkpKTsKK30KKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3RNdWx0
aXBsZUFkZEJ5dGVzQ2FsbHMpCit7CisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZs
YXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUpOworICAgIEFTU0VSVF9UUlVFKGRl
ZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5m
bGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgQVNTRVJUX1RSVUUoaW5m
bGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgVmVjdG9yPGNoYXI+IGlucHV0RGF0YSgzMik7Cisg
ICAgaW5wdXREYXRhLmZpbGwoJ2EnKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5w
dXREYXRhLnNpemUoKTsgKytpKQorICAgICAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+YWRkQnl0
ZXMoaW5wdXREYXRhLmRhdGEoKSArIGksIDEpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+
ZmluaXNoKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVmbGF0ZXItPnNpemUoKTsg
KytpKQorICAgICAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0ZXItPmRh
dGEoKSArIGksIDEpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+ZmluaXNoKCkpOworICAg
IEVYUEVDVF9FUShpbnB1dERhdGEuc2l6ZSgpLCBpbmZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YS5kYXRhKCksIGluZmxhdGVyLT5kYXRhKCksIGluZmxh
dGVyLT5zaXplKCkpKTsKK30KKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3ROb0Nv
bnRleHRUYWtlT3ZlcikKK3sKKyAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVy
ID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSgxNSwgV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90
VGFrZU92ZXJDb250ZXh0KTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+aW5pdGlhbGl6ZSgp
KTsKKyAgICBPd25QdHI8V2ViU29ja2V0SW5mbGF0ZXI+IGluZmxhdGVyID0gV2ViU29ja2V0SW5m
bGF0ZXI6OmNyZWF0ZSgpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5pbml0aWFsaXplKCkp
OworICAgIGNvbnN0IGNoYXIgZXhwZWN0ZWRbXSA9IHsweGYyLCAweDQ4LCAweGNkLCAweGM5LCAw
eGM5LCAweDA3LCAweDAwfTsKKyAgICBjb25zdCBjaGFyKiBpbnB1dERhdGEgPSAiSGVsbG8iOwor
ICAgIGNvbnN0IHNpemVfdCBpbnB1dExlbmd0aCA9IHN0cmxlbihpbnB1dERhdGEpOworCisgICAg
Ly8gSWYgd2UgZG9uJ3QgdGFrZSBvdmVyIGNvbnRleHQsIHRoZSBzZWNvbmQgcmVzdWx0IHNob3Vs
ZCBiZSB0aGUgaWRlbnRpY2FsCisgICAgLy8gd2l0aCB0aGUgZmlyc3Qgb25lLgorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgMjsgKytpKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVy
LT5hZGRCeXRlcyhpbnB1dERhdGEsIGlucHV0TGVuZ3RoKSk7CisgICAgICAgIEFTU0VSVF9UUlVF
KGRlZmxhdGVyLT5maW5pc2goKSk7CisgICAgICAgIEVYUEVDVF9FUShzaXplb2YoZXhwZWN0ZWQp
LCBkZWZsYXRlci0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3Rl
ZCwgZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgICAgICBBU1NFUlRf
VFJVRShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUo
KSkpOworICAgICAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+ZmluaXNoKCkpOworICAgICAgICBF
WFBFQ1RfRVEoaW5wdXRMZW5ndGgsIGluZmxhdGVyLT5zaXplKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMCwgbWVtY21wKGlucHV0RGF0YSwgaW5mbGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUo
KSkpOworICAgICAgICBkZWZsYXRlci0+cmVzZXQoKTsKKyAgICAgICAgaW5mbGF0ZXItPnJlc2V0
KCk7CisgICAgfQorfQorCitURVNUKFdlYlNvY2tldERlZmxhdGVyVGVzdCwgVGVzdFdpbmRvd0Jp
dHMpCit7CisgICAgVmVjdG9yPGNoYXI+IGlucHV0RGF0YSgxMDI0ICsgNjQgKiAyKTsKKyAgICBp
bnB1dERhdGEuZmlsbCgnYScpOworICAgIC8vIE1vZGlmeSB0aGUgaGVhZCBhbmQgdGFpbCBvZiB0
aGUgaW5wdXREYXRhIHNvIHRoYXQgYmFjay1yZWZlcmVuY2UKKyAgICAvLyBjYW4gYmUgdXNlZCBp
ZiB0aGUgd2luZG93IHNpemUgaXMgc3VmZmljaWVudGx5LWxhcmdlLgorICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgNjQ7ICsraikgeworICAgICAgICBpbnB1dERhdGFbal0gPSAnYic7CisgICAg
ICAgIGlucHV0RGF0YVtpbnB1dERhdGEuc2l6ZSgpIC0gaiAtIDFdID0gJ2InOworICAgIH0KKwor
ICAgIE93blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gZGVmbGF0ZXIgPSBXZWJTb2NrZXREZWZsYXRl
cjo6Y3JlYXRlKDgpOworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5pbml0aWFsaXplKCkpOwor
ICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhpbnB1dERhdGEuZGF0YSgpLCBpbnB1
dERhdGEuc2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKwor
ICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRl
cjo6Y3JlYXRlKDgpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5pbml0aWFsaXplKCkpOwor
ICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZs
YXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmZpbmlzaCgpKTsKKyAg
ICBFWFBFQ1RfRVEoaW5wdXREYXRhLnNpemUoKSwgaW5mbGF0ZXItPnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKDAsIG1lbWNtcChpbnB1dERhdGEuZGF0YSgpLCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZs
YXRlci0+c2l6ZSgpKSk7Cit9CisKK1RFU1QoV2ViU29ja2V0RGVmbGF0ZXJUZXN0LCBUZXN0TGFy
Z2VEYXRhKQoreworICAgIE93blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gZGVmbGF0ZXIgPSBXZWJT
b2NrZXREZWZsYXRlcjo6Y3JlYXRlKDE1KTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+aW5p
dGlhbGl6ZSgpKTsKKyAgICBPd25QdHI8V2ViU29ja2V0SW5mbGF0ZXI+IGluZmxhdGVyID0gV2Vi
U29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5pbml0
aWFsaXplKCkpOworICAgIFZlY3RvcjxjaGFyPiBpbnB1dERhdGEoMTYgKiAxMDI0ICogMTAyNCk7
CisgICAgaW5wdXREYXRhLmZpbGwoJ2EnKTsKKworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5h
ZGRCeXRlcyhpbnB1dERhdGEuZGF0YSgpLCBpbnB1dERhdGEuc2l6ZSgpKSk7CisgICAgQVNTRVJU
X1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+YWRk
Qnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgIEFTU0VSVF9U
UlVFKGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNUX0VRKGlucHV0RGF0YS5zaXplKCks
IGluZmxhdGVyLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLmRh
dGEoKSwgaW5mbGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127078</attachid>
            <date>2012-02-14 16:41:04 -0800</date>
            <delta_ts>2012-02-15 02:05:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78449-20120215094102.patch</filename>
            <type>text/plain</type>
            <size>28813</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE0YjVkNWVlY2ZiNjc0
NDRhNWU0N2JkYzEyNTQ2N2JlYzBhZTQ4ZS4uNDlmY2VjYmRmNjU3ZDZiN2Y4NDEyMzRkNDZkYmEw
MWUyMGIzZDVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAyLTE0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZGVmbGF0ZXIvaW5mbGF0ZXIgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgV2ViU29ja2V0RGVm
bGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2xhc3NlcyB3aGljaCB3cmFwIHpsaWIKKyAgICAgICAg
ZnVuY3Rpb25zLiBUaGVzZSBjbGFzc2VzIGFyZSBub3QgdXNlZCB5ZXQsIGJ1dCB3aWxsIGJlIHVz
ZWQgZm9yCisgICAgICAgIHN1cHBvcnRpbmcgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9taXVtIHBvcnQuIEJlaGF2aW9yIGlzIHVuY2hhbmdl
ZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkLldlYlNvY2tldERlZmxh
dGVyLihjcHB8aCkuCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0RGVmbGF0ZXI6OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERl
ZmxhdGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OnJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEluZmxhdGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SW5mbGF0ZXI6OnJlc2V0KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTb2NrZXREZWZs
YXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6ZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6c2l6ZSk6CisgICAgICAgIChXZWJTb2Nr
ZXRJbmZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6ZGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6c2l6ZSk6CisKIDIwMTItMDIt
MTQgIE1hdHQgTGlsZWsgIDxtcmxAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IEVOQUJMRV9E
QVNIQk9BUkRfU1VQUE9SVCB1bmNvbmRpdGlvbmFsbHkgb24gYWxsIE1hYyBwbGF0Zm9ybXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTk1MzhiZWVjMGZkNDhjNGMxODVjYmIyZGI2YjA1
NmUwYTJlYjAwNS4uZGM4NWY1MDUxNzUxYmI5ZTI1NTM0M2YyOTRjODRjMDY5M2I3NTE1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wMi0xNCAgS2Vu
aWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dlYlNvY2tl
dF0gQWRkIGRlZmxhdGVyL2luZmxhdGVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ0OQorCisgICAgICAgIEFkZCB0ZXN0cyB3aGlj
aCBlbnN1cmUgV2ViU29ja2V0RGVmbGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2FuCisgICAgICAg
IGNvbXByZXNzL2RlY29tcHJlc3MgZGF0YSBjb3JyZWN0bHkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0
ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDItMTQgIFJhbXlhIENoYW5kcmFz
ZWthcmFuICA8Y3JhbXlhQGdvb2dsZS5jb20+CiAKICAgICAgICAgTGFzdCBjaGFyYWN0ZXIgZGlz
cGxheSBmb3IgcGFzc3dvcmRzIGluIEFuZHJvaWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBkYjgwMjExNDBkOTA0OWIzYjVmNDRhOTg0MzBmNmZmMDUyMWJhYWExLi5hYTY1MjM1
YmZkYzkxN2NhYjE3NTYyNjcxMDM0NjdlYTgwODYxOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTQzMjAsNiArNDMyMCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAogCVNvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZs
YXRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uUHJvY2Vzc29yLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZiMTZhNWZmOWM5NTA5Y2Y5YmJl
MGZmNDA4OWU0MWZmNDAwNTFhMzEuLjUwYzAyODllNWIwMGE4OWFmNmMyZmM4N2IwNGNkMDg5ZTZj
OTNiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ4MDEsNiArNDgwMSw4IEBACiAgICAgICAgICAg
ICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmNwcCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5o
JywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3IuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDA3MGFiM2Y5NjE5MWI2MzFlMDUwMzk2YmE5MjEzMTc1ZTE4N2I2NDguLmY0Zjg2MjdmMjgw
Yzc5MTc4Yzk4MDgwMWM2NmI3M2ZjNjllMzhmNDAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mjk3OCw2ICs3Mjk3OCwxNCBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdl
YlNvY2tldERlZmxhdGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXREZWZsYXRlci5oIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZWMx
NzRmYjAxYzkxZWU3MjJhOTkxYzFlNzViNzc3YjBhN2ZmOGNhLi44MTZiNTdhMTZmNGY4MjM1YmIz
NTc3YmZjMjc0ZGI5NTRjODhmZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzgyLDYgKzEzODIsOCBAQAogCQk0QUQwMTcz
QzEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQTEyN0U4Mjg2MDAxNTAz
NUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi87IH07CiAJCTRBRDAxNzNEMTI3RTgyODYw
MDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1M
T3V0cHV0RWxlbWVudC5oICovOyB9OwogCQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMgLyogV2Vi
U29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0
ZW5zaW9uUHJvY2Vzc29yLmggKi87IH07CisJCTRBRTAyQUJEMTRFOEE5RDIwMEJDM0JBNyAvKiBX
ZWJTb2NrZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QUUwMkFCQjE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIu
Y3BwICovOyB9OworCQk0QUUwMkFCRTE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRTAy
QUJDMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5oICovOyB9OwogCQk0QUYx
QUQzRTEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRjFBRDNDMTNGRDIzQTQw
MEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwICovOyB9OwogCQk0QUYxQUQzRjEz
RkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUYxQUQzRDEzRkQyM0E0MDBBQTk1OTAg
LyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEIyNzA4QzcwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9h
cmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMjcw
OEM1MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggKi87IH07CkBAIC04MjM4LDYgKzgy
NDAsOCBAQAogCQk0QUQwMTczQTEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPdXRwdXRF
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFEMDE3M0IxMjdFODI4
NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJv
Y2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QUUwMkFCQjE0
RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0RGVmbGF0ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0QUUwMkFCQzE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVm
bGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RGVmbGF0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFGMUFEM0MxM0ZEMjNBNDAwQUE5
NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0QUYxQUQzRDEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1l
ZGlhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50RGlzcGF0Y2hN
ZWRpYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjI3MDhDNTBBRjE5RUU0
MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDgwNiw3ICsx
NDgxMCw2IEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0QURFMjVGOTE0RTNC
QjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCiAJCQkJNTFG
QjU0RjQxMTNFMzY0MjAwODIxMTc2IC8qIENsb3NlRXZlbnQuaCAqLywKIAkJCQk1MUZCNTRGNjEx
M0UzNjU5MDA4MjExNzYgLyogQ2xvc2VFdmVudC5pZGwgKi8sCiAJCQkJNTExMjI0NzExMENGQjhD
NjAwODA5OUQ3IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKQEAgLTE0ODE5
LDggKzE0ODIyLDExIEBACiAJCQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tl
dENoYW5uZWwuY3BwICovLAogCQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2Nr
ZXRDaGFubmVsLmggKi8sCiAJCQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tl
dENoYW5uZWxDbGllbnQuaCAqLywKKwkJCQk0QUUwMkFCQjE0RThBOUQyMDBCQzNCQTcgLyogV2Vi
U29ja2V0RGVmbGF0ZXIuY3BwICovLAorCQkJCTRBRTAyQUJDMTRFOEE5RDIwMEJDM0JBNyAvKiBX
ZWJTb2NrZXREZWZsYXRlci5oICovLAogCQkJCTRBOTU3RjAzMTRFMjQxMTAwMDQ5REJGQiAvKiBX
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCAqLywKIAkJCQk0QTk1N0YwNDE0RTI0MTEw
MDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oICovLAorCQkJCTRBREUy
NUY5MTRFM0JCNEMwMDRDMjIxMyAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCAqLywK
IAkJCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAq
LywKIAkJCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmgg
Ki8sCiAJCQkJNzYzN0M1NDAxMTJFN0I3NDAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuY3BwICovLApAQCAtMjQyNjMsNiArMjQyNjksNyBAQAogCQkJCTk3Q0MzQUUzMTRFOEU0
QTIwMDg5NDk4OCAvKiBOYXZpZ2F0b3JTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NTk4OTA1NzE0RTlDMjgwMDBFOEQxOEIgLyogUGFzdGVib2FyZFN0cmF0ZWd5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDNTk4OTA1ODE0RTlDMjk5MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJk
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0QUUwMkFCRTE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29j
a2V0RGVmbGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcyMDYsNiArMjcyMTMsNyBAQAogCQkJ
CTU3MkU5MkZCMTRFNTQwNTgwMDg3RkZCQSAvKiBTaGFkb3dSb290TGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5N0NDM0FFMjE0RThFNEEyMDA4OTQ5ODggLyogTmF2aWdhdG9yU3VwcGxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTk4OTAyRTE0RTlCMEY4MDBFOEQxOEIgLyogUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNEFFMDJBQkQxNEU4QTlE
MjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYjg2OGY0Nzc2ZmEzNTcwZDc1ODc3MzliZGFkOTI2OWUzMzY0MzcyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAg
LTAsMCArMSwyMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0
IGludCBkZWZhdWx0TWVtTGV2ZWwgPSAxOworc3RhdGljIGNvbnN0IHNpemVfdCBidWZmZXJJbmNy
ZW1lbnRVbml0ID0gNDA5NjsKKworUGFzc093blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gV2ViU29j
a2V0RGVmbGF0ZXI6OmNyZWF0ZShpbnQgd2luZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9kZSBj
b250ZXh0VGFrZU92ZXJNb2RlKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViU29ja2V0
RGVmbGF0ZXIod2luZG93Qml0cywgY29udGV4dFRha2VPdmVyTW9kZSkpOworfQorCitXZWJTb2Nr
ZXREZWZsYXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIoaW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtl
T3Zlck1vZGUgY29udGV4dFRha2VPdmVyTW9kZSkKKyAgICA6IG1fd2luZG93Qml0cyh3aW5kb3dC
aXRzKQorICAgICwgbV9jb250ZXh0VGFrZU92ZXJNb2RlKGNvbnRleHRUYWtlT3Zlck1vZGUpCit7
CisgICAgQVNTRVJUKG1fd2luZG93Qml0cyA+PSA4KTsKKyAgICBBU1NFUlQobV93aW5kb3dCaXRz
IDw9IDE1KTsKKyAgICBtZW1zZXQoJm1fc3RyZWFtLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKK30K
KworYm9vbCBXZWJTb2NrZXREZWZsYXRlcjo6aW5pdGlhbGl6ZSgpCit7CisgICAgcmV0dXJuIGRl
ZmxhdGVJbml0MigmbV9zdHJlYW0sIFpfREVGQVVMVF9DT01QUkVTU0lPTiwgWl9ERUZMQVRFRCwg
LW1fd2luZG93Qml0cywgZGVmYXVsdE1lbUxldmVsLCBaX0RFRkFVTFRfU1RSQVRFR1kpID09IFpf
T0s7Cit9CisKK1dlYlNvY2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIoKQoreworICAg
IGludCByZXN1bHQgPSBkZWZsYXRlRW5kKCZtX3N0cmVhbSk7CisgICAgaWYgKHJlc3VsdCAhPSBa
X09LKQorICAgICAgICBMT0coTmV0d29yaywgImRlZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIiwgcmVz
dWx0KTsKK30KKworc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtJiBzdHJl
YW0sIGNvbnN0IGNoYXIqIGlucHV0RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBvdXRw
dXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQoreworICAgIHN0cmVhbS5uZXh0X2luID0gcmVp
bnRlcnByZXRfY2FzdDxCeXRlZio+KGNvbnN0X2Nhc3Q8Y2hhcio+KGlucHV0RGF0YSkpOworICAg
IHN0cmVhbS5hdmFpbF9pbiA9IGlucHV0TGVuZ3RoOworICAgIHN0cmVhbS5uZXh0X291dCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihvdXRwdXREYXRhKTsKKyAgICBzdHJlYW0uYXZhaWxfb3V0
ID0gb3V0cHV0TGVuZ3RoOworfQorCitib29sIFdlYlNvY2tldERlZmxhdGVyOjphZGRCeXRlcyhj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmICghbGVuZ3RoKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgbWF4TGVuZ3RoID0gZGVmbGF0ZUJvdW5k
KCZtX3N0cmVhbSwgbGVuZ3RoKTsKKyAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IG1fYnVmZmVy
LnNpemUoKTsKKyAgICBtX2J1ZmZlci5ncm93KHdyaXRlUG9zaXRpb24gKyBtYXhMZW5ndGgpOwor
ICAgIHNldFN0cmVhbVBhcmFtZXRlcihtX3N0cmVhbSwgZGF0YSwgbGVuZ3RoLCBtX2J1ZmZlci5k
YXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBtYXhMZW5ndGgpOworICAgIGludCByZXN1bHQgPSBkZWZs
YXRlKCZtX3N0cmVhbSwgWl9OT19GTFVTSCk7CisgICAgaWYgKHJlc3VsdCAhPSBaX09LIHx8IG1f
c3RyZWFtLmF2YWlsX2luID4gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9idWZm
ZXIuc2hyaW5rKHdyaXRlUG9zaXRpb24gKyBtYXhMZW5ndGggLSBtX3N0cmVhbS5hdmFpbF9vdXQp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlNvY2tldERlZmxhdGVyOjpmaW5pc2go
KQoreworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHNpemVfdCB3cml0ZVBvc2l0aW9uID0g
bV9idWZmZXIuc2l6ZSgpOworICAgICAgICBtX2J1ZmZlci5ncm93KHdyaXRlUG9zaXRpb24gKyBi
dWZmZXJJbmNyZW1lbnRVbml0KTsKKyAgICAgICAgc2l6ZV90IGF2YWlsYWJsZUNhcGFjaXR5ID0g
bV9idWZmZXIuc2l6ZSgpIC0gd3JpdGVQb3NpdGlvbjsKKyAgICAgICAgc2V0U3RyZWFtUGFyYW1l
dGVyKG1fc3RyZWFtLCAwLCAwLCBtX2J1ZmZlci5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBhdmFp
bGFibGVDYXBhY2l0eSk7CisgICAgICAgIGludCByZXN1bHQgPSBkZWZsYXRlKCZtX3N0cmVhbSwg
Wl9TWU5DX0ZMVVNIKTsKKyAgICAgICAgbV9idWZmZXIuc2hyaW5rKHdyaXRlUG9zaXRpb24gKyBh
dmFpbGFibGVDYXBhY2l0eSAtIG1fc3RyZWFtLmF2YWlsX291dCk7CisgICAgICAgIGlmIChyZXN1
bHQgPT0gWl9PSykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAocmVzdWx0ICE9IFpf
QlVGX0VSUk9SKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBSZW1v
dmUgNCBvY3RldHMgZnJvbSB0aGUgdGFpbCBhcyB0aGUgc3BlY2lmaWNhdGlvbiByZXF1aXJlcy4K
KyAgICBpZiAobV9idWZmZXIuc2l6ZSgpIDw9IDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBtX2J1ZmZlci5yZXNpemUobV9idWZmZXIuc2l6ZSgpIC0gNCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZXI6OnJlc2V0KCkKK3sKKyAgICBtX2J1ZmZlci5j
bGVhcigpOworICAgIGlmIChtX2NvbnRleHRUYWtlT3Zlck1vZGUgPT0gRG9Ob3RUYWtlT3ZlckNv
bnRleHQpCisgICAgICAgIGRlZmxhdGVSZXNldCgmbV9zdHJlYW0pOworfQorCitQYXNzT3duUHRy
PFdlYlNvY2tldEluZmxhdGVyPiBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKGludCB3aW5kb3dC
aXRzKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViU29ja2V0SW5mbGF0ZXIod2luZG93
Qml0cykpOworfQorCitXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0SW5mbGF0ZXIoaW50IHdp
bmRvd0JpdHMpCisgICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0cykKK3sKKyAgICBtZW1zZXQo
Jm1fc3RyZWFtLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKK30KKworYm9vbCBXZWJTb2NrZXRJbmZs
YXRlcjo6aW5pdGlhbGl6ZSgpCit7CisgICAgcmV0dXJuIGluZmxhdGVJbml0MigmbV9zdHJlYW0s
IC1tX3dpbmRvd0JpdHMpID09IFpfT0s7Cit9CisKK1dlYlNvY2tldEluZmxhdGVyOjp+V2ViU29j
a2V0SW5mbGF0ZXIoKQoreworICAgIGludCByZXN1bHQgPSBpbmZsYXRlRW5kKCZtX3N0cmVhbSk7
CisgICAgaWYgKHJlc3VsdCAhPSBaX09LKQorICAgICAgICBMT0coTmV0d29yaywgImluZmxhdGVF
bmQoKSBmYWlsZWQ6ICVkIiwgcmVzdWx0KTsKK30KKworYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6
YWRkQnl0ZXMoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoIWxl
bmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90IGNvbnN1bWVkU29GYXIg
PSAwOworICAgIHdoaWxlIChjb25zdW1lZFNvRmFyIDwgbGVuZ3RoKSB7CisgICAgICAgIHNpemVf
dCB3cml0ZVBvc2l0aW9uID0gbV9idWZmZXIuc2l6ZSgpOworICAgICAgICBtX2J1ZmZlci5ncm93
KHdyaXRlUG9zaXRpb24gKyBidWZmZXJJbmNyZW1lbnRVbml0KTsKKyAgICAgICAgc2l6ZV90IGF2
YWlsYWJsZUNhcGFjaXR5ID0gbV9idWZmZXIuc2l6ZSgpIC0gd3JpdGVQb3NpdGlvbjsKKyAgICAg
ICAgc2l6ZV90IHJlbWFpbmluZ0xlbmd0aCA9IGxlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAg
ICAgIHNldFN0cmVhbVBhcmFtZXRlcihtX3N0cmVhbSwgZGF0YSArIGNvbnN1bWVkU29GYXIsIHJl
bWFpbmluZ0xlbmd0aCwgbV9idWZmZXIuZGF0YSgpICsgd3JpdGVQb3NpdGlvbiwgYXZhaWxhYmxl
Q2FwYWNpdHkpOworICAgICAgICBpbnQgcmVzdWx0ID0gaW5mbGF0ZSgmbV9zdHJlYW0sIFpfTk9f
RkxVU0gpOworICAgICAgICBjb25zdW1lZFNvRmFyICs9IHJlbWFpbmluZ0xlbmd0aCAtIG1fc3Ry
ZWFtLmF2YWlsX2luOworICAgICAgICBtX2J1ZmZlci5zaHJpbmsod3JpdGVQb3NpdGlvbiArIGF2
YWlsYWJsZUNhcGFjaXR5IC0gbV9zdHJlYW0uYXZhaWxfb3V0KTsKKyAgICAgICAgaWYgKHJlc3Vs
dCA9PSBaX0JVRl9FUlJPUikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAocmVz
dWx0ICE9IFpfT0spCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIEFTU0VS
VChjb25zdW1lZFNvRmFyID09IGxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
V2ViU29ja2V0SW5mbGF0ZXI6OmZpbmlzaCgpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN0
cmlwcGVkRmllbGRzID0gIlwwXDBceGZmXHhmZiI7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBz
dHJpcHBlZExlbmd0aCA9IDQ7CisKKyAgICAvLyBBcHBlbmRzIDQgb2N0ZXN0cyBvZiAweDAwIDB4
MDAgMHhmZiAweGZmCisgICAgc2l6ZV90IGNvbnN1bWVkU29GYXIgPSAwOworICAgIHdoaWxlIChj
b25zdW1lZFNvRmFyIDwgc3RyaXBwZWRMZW5ndGgpIHsKKyAgICAgICAgc2l6ZV90IHdyaXRlUG9z
aXRpb24gPSBtX2J1ZmZlci5zaXplKCk7CisgICAgICAgIG1fYnVmZmVyLmdyb3cod3JpdGVQb3Np
dGlvbiArIGJ1ZmZlckluY3JlbWVudFVuaXQpOworICAgICAgICBzaXplX3QgYXZhaWxhYmxlQ2Fw
YWNpdHkgPSBtX2J1ZmZlci5zaXplKCkgLSB3cml0ZVBvc2l0aW9uOworICAgICAgICBzaXplX3Qg
cmVtYWluaW5nTGVuZ3RoID0gc3RyaXBwZWRMZW5ndGggLSBjb25zdW1lZFNvRmFyOworICAgICAg
ICBzZXRTdHJlYW1QYXJhbWV0ZXIobV9zdHJlYW0sIHN0cmlwcGVkRmllbGRzICsgY29uc3VtZWRT
b0ZhciwgcmVtYWluaW5nTGVuZ3RoLCBtX2J1ZmZlci5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBh
dmFpbGFibGVDYXBhY2l0eSk7CisgICAgICAgIGludCByZXN1bHQgPSBpbmZsYXRlKCZtX3N0cmVh
bSwgWl9GSU5JU0gpOworICAgICAgICBjb25zdW1lZFNvRmFyICs9IHJlbWFpbmluZ0xlbmd0aCAt
IG1fc3RyZWFtLmF2YWlsX2luOworICAgICAgICBtX2J1ZmZlci5zaHJpbmsod3JpdGVQb3NpdGlv
biArIGF2YWlsYWJsZUNhcGFjaXR5IC0gbV9zdHJlYW0uYXZhaWxfb3V0KTsKKyAgICAgICAgaWYg
KHJlc3VsdCA9PSBaX0JVRl9FUlJPUikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAocmVzdWx0ICE9IFpfT0sgJiYgcmVzdWx0ICE9IFpfU1RSRUFNX0VORCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJUKGNvbnN1bWVkU29GYXIgPT0gc3RyaXBw
ZWRMZW5ndGgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0SW5mbGF0
ZXI6OnJlc2V0KCkKK3sKKyAgICBtX2J1ZmZlci5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg1MzQ1MTQx
NzAxMTc5NjM4MzVmZWIwNzM2Yzg5ZTkwZWM0ZjJlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaApAQCAtMCwwICsxLDk1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViU29ja2V0RGVmbGF0ZXJfaAorI2RlZmluZSBXZWJTb2NrZXREZWZsYXRlcl9o
CisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8emxpYi5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldERlZmxhdGVyIHsKK3B1YmxpYzoKKyAgICBlbnVt
IENvbnRleHRUYWtlT3Zlck1vZGUgeworICAgICAgICBEb05vdFRha2VPdmVyQ29udGV4dCwKKyAg
ICAgICAgVGFrZU92ZXJDb250ZXh0CisgICAgfTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJT
b2NrZXREZWZsYXRlcj4gY3JlYXRlKGludCB3aW5kb3dCaXRzLCBDb250ZXh0VGFrZU92ZXJNb2Rl
ID0gVGFrZU92ZXJDb250ZXh0KTsKKworICAgIH5XZWJTb2NrZXREZWZsYXRlcigpOworCisgICAg
Ym9vbCBpbml0aWFsaXplKCk7CisgICAgYm9vbCBhZGRCeXRlcyhjb25zdCBjaGFyKiwgc2l6ZV90
KTsKKyAgICBib29sIGZpbmlzaCgpOworICAgIGNvbnN0IGNoYXIqIGRhdGEoKSB7IHJldHVybiBt
X2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLnNpemUoKTsgfQorICAgIHZvaWQgcmVzZXQoKTsKKworcHJpdmF0ZToKKyAgICBXZWJTb2Nr
ZXREZWZsYXRlcihpbnQgd2luZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9kZSk7CisKKyAgICBp
bnQgbV93aW5kb3dCaXRzOworICAgIENvbnRleHRUYWtlT3Zlck1vZGUgbV9jb250ZXh0VGFrZU92
ZXJNb2RlOworICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICB6X3N0cmVhbSBtX3N0cmVh
bTsKK307CisKK2NsYXNzIFdlYlNvY2tldEluZmxhdGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gY3JlYXRlKGludCB3aW5kb3dCaXRzID0gMTUp
OworCisgICAgfldlYlNvY2tldEluZmxhdGVyKCk7CisKKyAgICBib29sIGluaXRpYWxpemUoKTsK
KyAgICBib29sIGFkZEJ5dGVzKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAgIGJvb2wgZmluaXNo
KCk7CisgICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQor
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CisgICAg
dm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYlNvY2tldEluZmxhdGVy
KGludCB3aW5kb3dCaXRzKTsKKworICAgIGludCBtX3dpbmRvd0JpdHM7CisgICAgVmVjdG9yPGNo
YXI+IG1fYnVmZmVyOworICAgIHpfc3RyZWFtIG1fc3RyZWFtOworfTsKKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgLy8gV2ViU29ja2V0RGVmbGF0ZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggMzVmMmIxOTkwNzc5ZDY2OWVmODA0MDJm
YjAwZjJhNTU2MTQ3YzMyNi4uNGVhNzAwZDU5NDY4NmE1ODI5ZmE3N2ZiNDljZmJiODA2YjYyZmQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xMTgsNiArMTE4LDcgQEAKICAg
ICAgICAgICAgICd0ZXN0cy9XZWJMYXllclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9X
ZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdl
U2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXREZWZsYXRl
clRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTFJlcXVlc3RUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RGVmbGF0ZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RGVmbGF0ZXJUZXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MjNhNTk2OWZkMjViNzc3NzVlMGM1M2M3YTgyNjczM2Y1NjEyMDM4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRl
c3QuY3BwCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIHsKKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3RDb21wcmVzc0hl
bGxvKQoreworICAgIC8vIFRlc3QgdGhlIGZpcnN0IGV4YW1wbGUgb24gc2VjdGlvbiA0LjMgb2Yg
dGhlIHNwZWNpZmljYXRpb24uCisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZsYXRl
ciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUpOworICAgIEFTU0VSVF9UUlVFKGRlZmxh
dGVyLT5pbml0aWFsaXplKCkpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0
ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0
ZXItPmluaXRpYWxpemUoKSk7CisgICAgY29uc3QgY2hhciogaW5wdXREYXRhID0gIkhlbGxvIjsK
KyAgICBjb25zdCBzaXplX3QgaW5wdXRMZW5ndGggPSBzdHJsZW4oaW5wdXREYXRhKTsKKworICAg
IEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhpbnB1dERhdGEsIGlucHV0TGVuZ3RoKSk7
CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBjb25zdCBjaGFyIGV4
cGVjdGVkRmlyc3RbXSA9IHsweGYyLCAweDQ4LCAweGNkLCAweGM5LCAweGM5LCAweDA3LCAweDAw
fTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKGV4cGVjdGVkRmlyc3QpLCBkZWZsYXRlci0+c2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkRmlyc3QsIGRlZmxhdGVyLT5kYXRh
KCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+YWRkQnl0
ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgIEFTU0VSVF9UUlVF
KGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNUX0VRKGlucHV0TGVuZ3RoLCBpbmZsYXRl
ci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YSwgaW5mbGF0ZXIt
PmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworCisgICAgZGVmbGF0ZXItPnJlc2V0KCk7Cisg
ICAgaW5mbGF0ZXItPnJlc2V0KCk7CisKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+YWRkQnl0
ZXMoaW5wdXREYXRhLCBpbnB1dExlbmd0aCkpOworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5m
aW5pc2goKSk7CisgICAgY29uc3QgY2hhciBleHBlY3RlZFNlY29uZFtdID0gezB4ZjIsIDB4MDAs
IDB4MTEsIDB4MDAsIDB4MDB9OworICAgIEVYUEVDVF9FUShzaXplb2YoZXhwZWN0ZWRTZWNvbmQp
LCBkZWZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkU2Vj
b25kLCBkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RS
VUUoaW5mbGF0ZXItPmFkZEJ5dGVzKGRlZmxhdGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkp
KTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+ZmluaXNoKCkpOworICAgIEVYUEVDVF9FUShp
bnB1dExlbmd0aCwgaW5mbGF0ZXItPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChp
bnB1dERhdGEsIGluZmxhdGVyLT5kYXRhKCksIGluZmxhdGVyLT5zaXplKCkpKTsKK30KKworVEVT
VChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3RNdWx0aXBsZUFkZEJ5dGVzQ2FsbHMpCit7Cisg
ICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERlZmxhdGVy
OjpjcmVhdGUoMTUpOworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5pbml0aWFsaXplKCkpOwor
ICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRl
cjo6Y3JlYXRlKCk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmluaXRpYWxpemUoKSk7Cisg
ICAgVmVjdG9yPGNoYXI+IGlucHV0RGF0YSgzMik7CisgICAgaW5wdXREYXRhLmZpbGwoJ2EnKTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5wdXREYXRhLnNpemUoKTsgKytpKQorICAg
ICAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+YWRkQnl0ZXMoaW5wdXREYXRhLmRhdGEoKSArIGks
IDEpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+ZmluaXNoKCkpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZGVmbGF0ZXItPnNpemUoKTsgKytpKQorICAgICAgICBBU1NFUlRfVFJV
RShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSArIGksIDEpKTsKKyAgICBBU1NF
UlRfVFJVRShpbmZsYXRlci0+ZmluaXNoKCkpOworICAgIEVYUEVDVF9FUShpbnB1dERhdGEuc2l6
ZSgpLCBpbmZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0
YS5kYXRhKCksIGluZmxhdGVyLT5kYXRhKCksIGluZmxhdGVyLT5zaXplKCkpKTsKK30KKworVEVT
VChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3ROb0NvbnRleHRUYWtlT3ZlcikKK3sKKyAgICBP
d25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNy
ZWF0ZSgxNSwgV2ViU29ja2V0RGVmbGF0ZXI6OkRvTm90VGFrZU92ZXJDb250ZXh0KTsKKyAgICBB
U1NFUlRfVFJVRShkZWZsYXRlci0+aW5pdGlhbGl6ZSgpKTsKKyAgICBPd25QdHI8V2ViU29ja2V0
SW5mbGF0ZXI+IGluZmxhdGVyID0gV2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgpOworICAgIEFT
U0VSVF9UUlVFKGluZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIGNvbnN0IGNoYXIgZXhwZWN0
ZWRbXSA9IHsweGYyLCAweDQ4LCAweGNkLCAweGM5LCAweGM5LCAweDA3LCAweDAwfTsKKyAgICBj
b25zdCBjaGFyKiBpbnB1dERhdGEgPSAiSGVsbG8iOworICAgIGNvbnN0IHNpemVfdCBpbnB1dExl
bmd0aCA9IHN0cmxlbihpbnB1dERhdGEpOworCisgICAgLy8gSWYgd2UgZG9uJ3QgdGFrZSBvdmVy
IGNvbnRleHQsIHRoZSBzZWNvbmQgcmVzdWx0IHNob3VsZCBiZSB0aGUgaWRlbnRpY2FsCisgICAg
Ly8gd2l0aCB0aGUgZmlyc3Qgb25lLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjsgKytp
KSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhpbnB1dERhdGEsIGlu
cHV0TGVuZ3RoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5maW5pc2goKSk7Cisg
ICAgICAgIEVYUEVDVF9FUShzaXplb2YoZXhwZWN0ZWQpLCBkZWZsYXRlci0+c2l6ZSgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZCwgZGVmbGF0ZXItPmRhdGEoKSwgZGVm
bGF0ZXItPnNpemUoKSkpOworICAgICAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+YWRkQnl0ZXMo
ZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgICAgICBBU1NFUlRfVFJV
RShpbmZsYXRlci0+ZmluaXNoKCkpOworICAgICAgICBFWFBFQ1RfRVEoaW5wdXRMZW5ndGgsIGlu
ZmxhdGVyLT5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YSwg
aW5mbGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworICAgICAgICBkZWZsYXRlci0+
cmVzZXQoKTsKKyAgICAgICAgaW5mbGF0ZXItPnJlc2V0KCk7CisgICAgfQorfQorCitURVNUKFdl
YlNvY2tldERlZmxhdGVyVGVzdCwgVGVzdFdpbmRvd0JpdHMpCit7CisgICAgVmVjdG9yPGNoYXI+
IGlucHV0RGF0YSgxMDI0ICsgNjQgKiAyKTsKKyAgICBpbnB1dERhdGEuZmlsbCgnYScpOworICAg
IC8vIE1vZGlmeSB0aGUgaGVhZCBhbmQgdGFpbCBvZiB0aGUgaW5wdXREYXRhIHNvIHRoYXQgYmFj
ay1yZWZlcmVuY2UKKyAgICAvLyBjYW4gYmUgdXNlZCBpZiB0aGUgd2luZG93IHNpemUgaXMgc3Vm
ZmljaWVudGx5LWxhcmdlLgorICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgNjQ7ICsraikgewor
ICAgICAgICBpbnB1dERhdGFbal0gPSAnYic7CisgICAgICAgIGlucHV0RGF0YVtpbnB1dERhdGEu
c2l6ZSgpIC0gaiAtIDFdID0gJ2InOworICAgIH0KKworICAgIE93blB0cjxXZWJTb2NrZXREZWZs
YXRlcj4gZGVmbGF0ZXIgPSBXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKDgpOworICAgIEFTU0VS
VF9UUlVFKGRlZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVy
LT5hZGRCeXRlcyhpbnB1dERhdGEuZGF0YSgpLCBpbnB1dERhdGEuc2l6ZSgpKSk7CisgICAgQVNT
RVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKworICAgIE93blB0cjxXZWJTb2NrZXRJbmZs
YXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKDgpOworICAgIEFTU0VS
VF9UUlVFKGluZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVy
LT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgQVNT
RVJUX1RSVUUoaW5mbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBFWFBFQ1RfRVEoaW5wdXREYXRhLnNp
emUoKSwgaW5mbGF0ZXItPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChpbnB1dERh
dGEuZGF0YSgpLCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7Cit9CisKK1RF
U1QoV2ViU29ja2V0RGVmbGF0ZXJUZXN0LCBUZXN0TGFyZ2VEYXRhKQoreworICAgIE93blB0cjxX
ZWJTb2NrZXREZWZsYXRlcj4gZGVmbGF0ZXIgPSBXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKDE1
KTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+aW5pdGlhbGl6ZSgpKTsKKyAgICBPd25QdHI8
V2ViU29ja2V0SW5mbGF0ZXI+IGluZmxhdGVyID0gV2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSgp
OworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIFZlY3Rvcjxj
aGFyPiBpbnB1dERhdGEoMTYgKiAxMDI0ICogMTAyNCk7CisgICAgaW5wdXREYXRhLmZpbGwoJ2En
KTsKKworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhpbnB1dERhdGEuZGF0YSgp
LCBpbnB1dERhdGEuc2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgp
KTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSwg
ZGVmbGF0ZXItPnNpemUoKSkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5maW5pc2goKSk7
CisgICAgRVhQRUNUX0VRKGlucHV0RGF0YS5zaXplKCksIGluZmxhdGVyLT5zaXplKCkpOworICAg
IEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLmRhdGEoKSwgaW5mbGF0ZXItPmRhdGEoKSwg
aW5mbGF0ZXItPnNpemUoKSkpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127139</attachid>
            <date>2012-02-15 02:05:37 -0800</date>
            <delta_ts>2012-02-19 23:46:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78449-20120215190536.patch</filename>
            <type>text/plain</type>
            <size>30693</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk1ZGFiZDcxN2MxODg3
ZmY0MDEyYjJhMWI0ZDU5MzkwYzU1ZDhiMC4uMTZlNTYyMjZkYWJiODE1ZDk1ZGE1NTYyNjFkN2Yy
NGRhOTUxODJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAyLTE1ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZGVmbGF0ZXIvaW5mbGF0ZXIgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgV2ViU29ja2V0RGVm
bGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2xhc3NlcyB3aGljaCB3cmFwIHpsaWIKKyAgICAgICAg
ZnVuY3Rpb25zLiBUaGVzZSBjbGFzc2VzIGFyZSBub3QgdXNlZCB5ZXQsIGJ1dCB3aWxsIGJlIHVz
ZWQgZm9yCisgICAgICAgIHN1cHBvcnRpbmcgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc2Vjb25kIHRyeS4gVGhlIHByZXZpb3VzIHBh
dGNoIGJyb2tlIENocm9taXVtIFdpbgorICAgICAgICBidWlsZC4gSSBhZGRlZCBkZXBlbmRlbmN5
IG9mIHpsaWIgdG8gV2ViQ29yZS5neXAuIEkgdGhpbmsgaXQncworICAgICAgICBPSyBiZWNhdXNl
IENocm9taXVtIGFscmVhZHkgZGVwZW5kcyBvbiB6bGliLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9t
aXVtIHBvcnQuIEJlaGF2aW9yIGlzIHVuY2hhbmdlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06IEFkZGVkIFdlYlNvY2tldERlZmxhdGVyLihjcHB8aCkuCisgICAgICAgICogV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXA6IEFkZGVkIHpsaWIgZGVwZW5kZW5jeS4KKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6IEFkZGVkIFdlYlNvY2tldERlZmxhdGVyLihjcHB8aCkuCisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogd2Vic29ja2V0cy9X
ZWJTb2NrZXREZWZsYXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXREZWZsYXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXREZWZsYXRlcjo6fldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dFN0cmVhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6
YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmZpbmlzaCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0SW5mbGF0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SW5mbGF0ZXI6On5XZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5m
bGF0ZXI6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6cmVz
ZXQpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldERlZmxhdGVyOjpzaXplKToKKyAgICAgICAgKFdlYlNvY2tldEluZmxhdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEluZmxhdGVyOjpzaXplKToKKwogMjAxMi0wMi0xNSAgVG9ueSBHZW50aWxj
b3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRG9uJ3QgdXNl
IGluY3JlYXNlZCBGb250Q2FjaGUgc2l6ZSBvbiBBbmRyb2lkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGEyZGI5MjllNWVhZjZmMmI5YTc0MzU0YTgzZDI1Y2I4ZjE1MDZhNmUuLjVhNjVi
OTg0Y2MxOThkNThjMWFhZWZkNjBjM2UyNzcwMTRmOGI3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDItMTUgIEtlbmljaGkgSXNoaWJhc2hpICA8
YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIEFkZCBkZWZsYXRlci9p
bmZsYXRlciBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03ODQ0OQorCisgICAgICAgIEFkZCB0ZXN0cyB3aGljaCBlbnN1cmUgV2ViU29ja2V0
RGVmbGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2FuCisgICAgICAgIGNvbXByZXNzL2RlY29tcHJl
c3MgZGF0YSBjb3JyZWN0bHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaTogQWRkZWQgemxpYiBkZXBlbmRlbmN5LgorICAgICAg
ICAqIFdlYktpdFVuaXRUZXN0cy5neXA6IERpdHRvLgorICAgICAgICAqIHRlc3RzL1dlYlNvY2tl
dERlZmxhdGVyVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMi0xNCAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hp
bUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUHJvdmlkZSBTb2NrZXRTdHJlYW1IYW5kbGVJbnRl
cm5hbDo6dG9XZWJTb2NrZXRTdHJlYW1IYW5kbGUoU29ja2V0U3RyZWFtSGFuZGxlKikuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5NzQ5NzZlODBlMzEyZWEwNjg4ZjJkM2M2Y2I0
MmU1Y2I2MmFlYjMyLi4wNDRkYjUzYWVlMjUzNmY1YWRhNTg1YjUxMGYxZmE1YmEzNzc3OTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQzMjAsNiArNDMyMCw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAppbmRleCAwY2E2OTZlNTUxYWVkNTVjZjU4ZmMxZDE3ZTdlOGI5YjNm
ODcyMGUxLi4wMDZmYWRhNDNhNDc5ZTA3NjJjZTAzNWZjYWQwNGEwMTliZDk3MThiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMTE3MCw2ICsxMTcwLDcgQEAKICAg
ICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvb3RzL290cy5neXA6b3RzJywK
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvc3FsaXRlL3NxbGl0ZS5n
eXA6c3FsaXRlJywKICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvYW5n
bGUvc3JjL2J1aWxkX2FuZ2xlLmd5cDp0cmFuc2xhdG9yX2dsc2wnLAorICAgICAgICAnPChjaHJv
bWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS96bGliL3psaWIuZ3lwOnpsaWInLAogICAgICAgICAn
PChjaHJvbWl1bV9zcmNfZGlyKS92OC90b29scy9neXAvdjguZ3lwOnY4JywKICAgICAgICAgJzwo
bGlianBlZ19neXBfcGF0aCk6bGlianBlZycsCiAgICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDA2MjA0NTY2NDhiMmIwYjI3NDViY2FjNDg2NzE2MjAxYjY1OTlkZWQuLjlhYzY3YjkwYTgzZGQw
NTUyNDUwMTM1Y2Q2NDk2YTQ2ZmM3YTE2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ4MDEsNiAr
NDgwMSw4IEBACiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCcs
CiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgnLAogICAgICAgICAg
ICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oJywKKyAgICAgICAgICAgICd3
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCcsCisgICAgICAgICAgICAnd2Vic29ja2V0
cy9XZWJTb2NrZXREZWZsYXRlci5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJT
b2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDA3MGFiM2Y5NjE5MWI2MzFlMDUwMzk2YmE5MjEzMTc1
ZTE4N2I2NDguLmY0Zjg2MjdmMjgwYzc5MTc4Yzk4MDgwMWM2NmI3M2ZjNjllMzhmNDAgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03Mjk3OCw2
ICs3Mjk3OCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVyLmNwcCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRE
ZWZsYXRlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIgogCQkJCT4K
IAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkZWMxNzRmYjAxYzkxZWU3MjJhOTkxYzFlNzViNzc3YjBhN2ZmOGNh
Li44MTZiNTdhMTZmNGY4MjM1YmIzNTc3YmZjMjc0ZGI5NTRjODhmZWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzgyLDYg
KzEzODIsOCBAQAogCQk0QUQwMTczQzEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
QUQwMTczQTEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi87IH07
CiAJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQjEyN0U4
Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5oICovOyB9OwogCQk0QURFMjVGQTE0
RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QURFMjVGOTE0RTNCQjRDMDA0
QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi87IH07CisJCTRBRTAyQUJE
MTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUUwMkFCQjE0RThBOUQyMDBCQzNCQTcg
LyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwICovOyB9OworCQk0QUUwMkFCRTE0RThBOUQyMDBCQzNC
QTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRBRTAyQUJDMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZs
YXRlci5oICovOyB9OwogCQk0QUYxQUQzRTEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRj
aE1lZGlhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBRjFBRDNDMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3Bw
ICovOyB9OwogCQk0QUYxQUQzRjEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUYx
QUQzRDEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEIyNzA4QzcwQUYxOUVF
NDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRCMjcwOEM1MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmgg
Ki87IH07CkBAIC04MjM4LDYgKzgyNDAsOCBAQAogCQk0QUQwMTczQTEyN0U4Mjg2MDAxNTAzNUYg
LyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0hUTUxPdXRwdXRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEFEMDE3M0IxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyog
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0QUUwMkFCQjE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0RGVmbGF0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QUUwMkFCQzE0RThBOUQyMDBC
QzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU29ja2V0RGVmbGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEFGMUFEM0MxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUYxQUQzRDEzRkQyM0E0MDBBQTk1
OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QjI3MDhDNTBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNDgwNiw3ICsxNDgxMCw2IEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5
NiAvKiB3ZWJzb2NrZXRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQk0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJv
Y2Vzc29yLmggKi8sCiAJCQkJNTFGQjU0RjQxMTNFMzY0MjAwODIxMTc2IC8qIENsb3NlRXZlbnQu
aCAqLywKIAkJCQk1MUZCNTRGNjExM0UzNjU5MDA4MjExNzYgLyogQ2xvc2VFdmVudC5pZGwgKi8s
CiAJCQkJNTExMjI0NzExMENGQjhDNjAwODA5OUQ3IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmNwcCAqLywKQEAgLTE0ODE5LDggKzE0ODIyLDExIEBACiAJCQkJNTEwRDRBNDcxMDMxNzdB
MjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovLAogCQkJCTUxMEQ0QTQ4MTAzMTc3
QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8sCiAJCQkJNTEwRDRBNDkxMDMxNzdB
MjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLywKKwkJCQk0QUUwMkFCQjE0
RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwICovLAorCQkJCTRBRTAyQUJD
MTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5oICovLAogCQkJCTRBOTU3RjAz
MTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCAqLywK
IAkJCQk0QTk1N0YwNDE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlci5oICovLAorCQkJCTRBREUyNUY5MTRFM0JCNEMwMDRDMjIxMyAvKiBXZWJTb2NrZXRFeHRl
bnNpb25Qcm9jZXNzb3IuaCAqLywKIAkJCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcCAqLywKIAkJCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyog
V2ViU29ja2V0SGFuZHNoYWtlLmggKi8sCiAJCQkJNzYzN0M1NDAxMTJFN0I3NDAwM0Q2Q0RDIC8q
IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwICovLApAQCAtMjQyNjMsNiArMjQyNjksNyBA
QAogCQkJCTk3Q0MzQUUzMTRFOEU0QTIwMDg5NDk4OCAvKiBOYXZpZ2F0b3JTdXBwbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDNTk4OTA1NzE0RTlDMjgwMDBFOEQxOEIgLyogUGFzdGVib2Fy
ZFN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTk4OTA1ODE0RTlDMjk5MDBFOEQxOEIg
LyogUGxhdGZvcm1QYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QUUwMkFCRTE0RThB
OUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjcy
MDYsNiArMjcyMTMsNyBAQAogCQkJCTU3MkU5MkZCMTRFNTQwNTgwMDg3RkZCQSAvKiBTaGFkb3dS
b290TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0NDM0FFMjE0RThFNEEyMDA4OTQ5ODgg
LyogTmF2aWdhdG9yU3VwcGxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTk4OTAyRTE0
RTlCMEY4MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNEFFMDJBQkQxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjg2OGY0Nzc2ZmEzNTcwZDc1ODc3MzliZGFkOTI2OWUz
MzY0MzcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlci5jcHAKQEAgLTAsMCArMSwyMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0RGVmbGF0ZXIu
aCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIGNvbnN0IGludCBkZWZhdWx0TWVtTGV2ZWwgPSAxOworc3RhdGljIGNv
bnN0IHNpemVfdCBidWZmZXJJbmNyZW1lbnRVbml0ID0gNDA5NjsKKworUGFzc093blB0cjxXZWJT
b2NrZXREZWZsYXRlcj4gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZShpbnQgd2luZG93Qml0cywg
Q29udGV4dFRha2VPdmVyTW9kZSBjb250ZXh0VGFrZU92ZXJNb2RlKQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgV2ViU29ja2V0RGVmbGF0ZXIod2luZG93Qml0cywgY29udGV4dFRha2VPdmVy
TW9kZSkpOworfQorCitXZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIoaW50IHdp
bmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUgY29udGV4dFRha2VPdmVyTW9kZSkKKyAgICA6
IG1fd2luZG93Qml0cyh3aW5kb3dCaXRzKQorICAgICwgbV9jb250ZXh0VGFrZU92ZXJNb2RlKGNv
bnRleHRUYWtlT3Zlck1vZGUpCit7CisgICAgQVNTRVJUKG1fd2luZG93Qml0cyA+PSA4KTsKKyAg
ICBBU1NFUlQobV93aW5kb3dCaXRzIDw9IDE1KTsKKyAgICBtZW1zZXQoJm1fc3RyZWFtLCAwLCBz
aXplb2Yoel9zdHJlYW0pKTsKK30KKworYm9vbCBXZWJTb2NrZXREZWZsYXRlcjo6aW5pdGlhbGl6
ZSgpCit7CisgICAgcmV0dXJuIGRlZmxhdGVJbml0MigmbV9zdHJlYW0sIFpfREVGQVVMVF9DT01Q
UkVTU0lPTiwgWl9ERUZMQVRFRCwgLW1fd2luZG93Qml0cywgZGVmYXVsdE1lbUxldmVsLCBaX0RF
RkFVTFRfU1RSQVRFR1kpID09IFpfT0s7Cit9CisKK1dlYlNvY2tldERlZmxhdGVyOjp+V2ViU29j
a2V0RGVmbGF0ZXIoKQoreworICAgIGludCByZXN1bHQgPSBkZWZsYXRlRW5kKCZtX3N0cmVhbSk7
CisgICAgaWYgKHJlc3VsdCAhPSBaX09LKQorICAgICAgICBMT0coTmV0d29yaywgImRlZmxhdGVF
bmQoKSBmYWlsZWQ6ICVkIiwgcmVzdWx0KTsKK30KKworc3RhdGljIHZvaWQgc2V0U3RyZWFtUGFy
YW1ldGVyKHpfc3RyZWFtJiBzdHJlYW0sIGNvbnN0IGNoYXIqIGlucHV0RGF0YSwgc2l6ZV90IGlu
cHV0TGVuZ3RoLCBjaGFyKiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0TGVuZ3RoKQoreworICAg
IHN0cmVhbS5uZXh0X2luID0gcmVpbnRlcnByZXRfY2FzdDxCeXRlZio+KGNvbnN0X2Nhc3Q8Y2hh
cio+KGlucHV0RGF0YSkpOworICAgIHN0cmVhbS5hdmFpbF9pbiA9IGlucHV0TGVuZ3RoOworICAg
IHN0cmVhbS5uZXh0X291dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYqPihvdXRwdXREYXRhKTsK
KyAgICBzdHJlYW0uYXZhaWxfb3V0ID0gb3V0cHV0TGVuZ3RoOworfQorCitib29sIFdlYlNvY2tl
dERlZmxhdGVyOjphZGRCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorewor
ICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgbWF4
TGVuZ3RoID0gZGVmbGF0ZUJvdW5kKCZtX3N0cmVhbSwgbGVuZ3RoKTsKKyAgICBzaXplX3Qgd3Jp
dGVQb3NpdGlvbiA9IG1fYnVmZmVyLnNpemUoKTsKKyAgICBtX2J1ZmZlci5ncm93KHdyaXRlUG9z
aXRpb24gKyBtYXhMZW5ndGgpOworICAgIHNldFN0cmVhbVBhcmFtZXRlcihtX3N0cmVhbSwgZGF0
YSwgbGVuZ3RoLCBtX2J1ZmZlci5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBtYXhMZW5ndGgpOwor
ICAgIGludCByZXN1bHQgPSBkZWZsYXRlKCZtX3N0cmVhbSwgWl9OT19GTFVTSCk7CisgICAgaWYg
KHJlc3VsdCAhPSBaX09LIHx8IG1fc3RyZWFtLmF2YWlsX2luID4gMCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgbV9idWZmZXIuc2hyaW5rKHdyaXRlUG9zaXRpb24gKyBtYXhMZW5ndGgg
LSBtX3N0cmVhbS5hdmFpbF9vdXQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYlNv
Y2tldERlZmxhdGVyOjpmaW5pc2goKQoreworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHNp
emVfdCB3cml0ZVBvc2l0aW9uID0gbV9idWZmZXIuc2l6ZSgpOworICAgICAgICBtX2J1ZmZlci5n
cm93KHdyaXRlUG9zaXRpb24gKyBidWZmZXJJbmNyZW1lbnRVbml0KTsKKyAgICAgICAgc2l6ZV90
IGF2YWlsYWJsZUNhcGFjaXR5ID0gbV9idWZmZXIuc2l6ZSgpIC0gd3JpdGVQb3NpdGlvbjsKKyAg
ICAgICAgc2V0U3RyZWFtUGFyYW1ldGVyKG1fc3RyZWFtLCAwLCAwLCBtX2J1ZmZlci5kYXRhKCkg
KyB3cml0ZVBvc2l0aW9uLCBhdmFpbGFibGVDYXBhY2l0eSk7CisgICAgICAgIGludCByZXN1bHQg
PSBkZWZsYXRlKCZtX3N0cmVhbSwgWl9TWU5DX0ZMVVNIKTsKKyAgICAgICAgbV9idWZmZXIuc2hy
aW5rKHdyaXRlUG9zaXRpb24gKyBhdmFpbGFibGVDYXBhY2l0eSAtIG1fc3RyZWFtLmF2YWlsX291
dCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gWl9PSykKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBpZiAocmVzdWx0ICE9IFpfQlVGX0VSUk9SKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICAvLyBSZW1vdmUgNCBvY3RldHMgZnJvbSB0aGUgdGFpbCBhcyB0aGUgc3Bl
Y2lmaWNhdGlvbiByZXF1aXJlcy4KKyAgICBpZiAobV9idWZmZXIuc2l6ZSgpIDw9IDQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2J1ZmZlci5yZXNpemUobV9idWZmZXIuc2l6ZSgpIC0g
NCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0RGVmbGF0ZXI6OnJlc2V0
KCkKK3sKKyAgICBtX2J1ZmZlci5jbGVhcigpOworICAgIGlmIChtX2NvbnRleHRUYWtlT3Zlck1v
ZGUgPT0gRG9Ob3RUYWtlT3ZlckNvbnRleHQpCisgICAgICAgIGRlZmxhdGVSZXNldCgmbV9zdHJl
YW0pOworfQorCitQYXNzT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBXZWJTb2NrZXRJbmZsYXRl
cjo6Y3JlYXRlKGludCB3aW5kb3dCaXRzKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2Vi
U29ja2V0SW5mbGF0ZXIod2luZG93Qml0cykpOworfQorCitXZWJTb2NrZXRJbmZsYXRlcjo6V2Vi
U29ja2V0SW5mbGF0ZXIoaW50IHdpbmRvd0JpdHMpCisgICAgOiBtX3dpbmRvd0JpdHMod2luZG93
Qml0cykKK3sKKyAgICBtZW1zZXQoJm1fc3RyZWFtLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKK30K
KworYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6aW5pdGlhbGl6ZSgpCit7CisgICAgcmV0dXJuIGlu
ZmxhdGVJbml0MigmbV9zdHJlYW0sIC1tX3dpbmRvd0JpdHMpID09IFpfT0s7Cit9CisKK1dlYlNv
Y2tldEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIoKQoreworICAgIGludCByZXN1bHQgPSBp
bmZsYXRlRW5kKCZtX3N0cmVhbSk7CisgICAgaWYgKHJlc3VsdCAhPSBaX09LKQorICAgICAgICBM
T0coTmV0d29yaywgImluZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIiwgcmVzdWx0KTsKK30KKworYm9v
bCBXZWJTb2NrZXRJbmZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
c2l6ZV90IGNvbnN1bWVkU29GYXIgPSAwOworICAgIHdoaWxlIChjb25zdW1lZFNvRmFyIDwgbGVu
Z3RoKSB7CisgICAgICAgIHNpemVfdCB3cml0ZVBvc2l0aW9uID0gbV9idWZmZXIuc2l6ZSgpOwor
ICAgICAgICBtX2J1ZmZlci5ncm93KHdyaXRlUG9zaXRpb24gKyBidWZmZXJJbmNyZW1lbnRVbml0
KTsKKyAgICAgICAgc2l6ZV90IGF2YWlsYWJsZUNhcGFjaXR5ID0gbV9idWZmZXIuc2l6ZSgpIC0g
d3JpdGVQb3NpdGlvbjsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZ0xlbmd0aCA9IGxlbmd0aCAt
IGNvbnN1bWVkU29GYXI7CisgICAgICAgIHNldFN0cmVhbVBhcmFtZXRlcihtX3N0cmVhbSwgZGF0
YSArIGNvbnN1bWVkU29GYXIsIHJlbWFpbmluZ0xlbmd0aCwgbV9idWZmZXIuZGF0YSgpICsgd3Jp
dGVQb3NpdGlvbiwgYXZhaWxhYmxlQ2FwYWNpdHkpOworICAgICAgICBpbnQgcmVzdWx0ID0gaW5m
bGF0ZSgmbV9zdHJlYW0sIFpfTk9fRkxVU0gpOworICAgICAgICBjb25zdW1lZFNvRmFyICs9IHJl
bWFpbmluZ0xlbmd0aCAtIG1fc3RyZWFtLmF2YWlsX2luOworICAgICAgICBtX2J1ZmZlci5zaHJp
bmsod3JpdGVQb3NpdGlvbiArIGF2YWlsYWJsZUNhcGFjaXR5IC0gbV9zdHJlYW0uYXZhaWxfb3V0
KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBaX0JVRl9FUlJPUikKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAocmVzdWx0ICE9IFpfT0spCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIEFTU0VSVChjb25zdW1lZFNvRmFyID09IGxlbmd0aCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmZpbmlzaCgpCit7CisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHN0cmlwcGVkRmllbGRzID0gIlwwXDBceGZmXHhmZiI7CisgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBzdHJpcHBlZExlbmd0aCA9IDQ7CisKKyAgICAvLyBBcHBlbmRz
IDQgb2N0ZXN0cyBvZiAweDAwIDB4MDAgMHhmZiAweGZmCisgICAgc2l6ZV90IGNvbnN1bWVkU29G
YXIgPSAwOworICAgIHdoaWxlIChjb25zdW1lZFNvRmFyIDwgc3RyaXBwZWRMZW5ndGgpIHsKKyAg
ICAgICAgc2l6ZV90IHdyaXRlUG9zaXRpb24gPSBtX2J1ZmZlci5zaXplKCk7CisgICAgICAgIG1f
YnVmZmVyLmdyb3cod3JpdGVQb3NpdGlvbiArIGJ1ZmZlckluY3JlbWVudFVuaXQpOworICAgICAg
ICBzaXplX3QgYXZhaWxhYmxlQ2FwYWNpdHkgPSBtX2J1ZmZlci5zaXplKCkgLSB3cml0ZVBvc2l0
aW9uOworICAgICAgICBzaXplX3QgcmVtYWluaW5nTGVuZ3RoID0gc3RyaXBwZWRMZW5ndGggLSBj
b25zdW1lZFNvRmFyOworICAgICAgICBzZXRTdHJlYW1QYXJhbWV0ZXIobV9zdHJlYW0sIHN0cmlw
cGVkRmllbGRzICsgY29uc3VtZWRTb0ZhciwgcmVtYWluaW5nTGVuZ3RoLCBtX2J1ZmZlci5kYXRh
KCkgKyB3cml0ZVBvc2l0aW9uLCBhdmFpbGFibGVDYXBhY2l0eSk7CisgICAgICAgIGludCByZXN1
bHQgPSBpbmZsYXRlKCZtX3N0cmVhbSwgWl9GSU5JU0gpOworICAgICAgICBjb25zdW1lZFNvRmFy
ICs9IHJlbWFpbmluZ0xlbmd0aCAtIG1fc3RyZWFtLmF2YWlsX2luOworICAgICAgICBtX2J1ZmZl
ci5zaHJpbmsod3JpdGVQb3NpdGlvbiArIGF2YWlsYWJsZUNhcGFjaXR5IC0gbV9zdHJlYW0uYXZh
aWxfb3V0KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBaX0JVRl9FUlJPUikKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBpZiAocmVzdWx0ICE9IFpfT0sgJiYgcmVzdWx0ICE9IFpfU1RS
RUFNX0VORCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJUKGNv
bnN1bWVkU29GYXIgPT0gc3RyaXBwZWRMZW5ndGgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgV2ViU29ja2V0SW5mbGF0ZXI6OnJlc2V0KCkKK3sKKyAgICBtX2J1ZmZlci5jbGVhcigp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NP
Q0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjg1MzQ1MTQxNzAxMTc5NjM4MzVmZWIwNzM2Yzg5ZTkwZWM0ZjJlYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0RGVmbGF0ZXJfaAorI2RlZmlu
ZSBXZWJTb2NrZXREZWZsYXRlcl9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
emxpYi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldERlZmxhdGVy
IHsKK3B1YmxpYzoKKyAgICBlbnVtIENvbnRleHRUYWtlT3Zlck1vZGUgeworICAgICAgICBEb05v
dFRha2VPdmVyQ29udGV4dCwKKyAgICAgICAgVGFrZU92ZXJDb250ZXh0CisgICAgfTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gY3JlYXRlKGludCB3aW5kb3dCaXRz
LCBDb250ZXh0VGFrZU92ZXJNb2RlID0gVGFrZU92ZXJDb250ZXh0KTsKKworICAgIH5XZWJTb2Nr
ZXREZWZsYXRlcigpOworCisgICAgYm9vbCBpbml0aWFsaXplKCk7CisgICAgYm9vbCBhZGRCeXRl
cyhjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBib29sIGZpbmlzaCgpOworICAgIGNvbnN0IGNo
YXIqIGRhdGEoKSB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQorICAgIHZvaWQgcmVzZXQoKTsKKwor
cHJpdmF0ZToKKyAgICBXZWJTb2NrZXREZWZsYXRlcihpbnQgd2luZG93Qml0cywgQ29udGV4dFRh
a2VPdmVyTW9kZSk7CisKKyAgICBpbnQgbV93aW5kb3dCaXRzOworICAgIENvbnRleHRUYWtlT3Zl
ck1vZGUgbV9jb250ZXh0VGFrZU92ZXJNb2RlOworICAgIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsK
KyAgICB6X3N0cmVhbSBtX3N0cmVhbTsKK307CisKK2NsYXNzIFdlYlNvY2tldEluZmxhdGVyIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gY3JlYXRl
KGludCB3aW5kb3dCaXRzID0gMTUpOworCisgICAgfldlYlNvY2tldEluZmxhdGVyKCk7CisKKyAg
ICBib29sIGluaXRpYWxpemUoKTsKKyAgICBib29sIGFkZEJ5dGVzKGNvbnN0IGNoYXIqLCBzaXpl
X3QpOworICAgIGJvb2wgZmluaXNoKCk7CisgICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0dXJu
IG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuc2l6ZSgpOyB9CisgICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IFdlYlNvY2tldEluZmxhdGVyKGludCB3aW5kb3dCaXRzKTsKKworICAgIGludCBtX3dpbmRv
d0JpdHM7CisgICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIHpfc3RyZWFtIG1fc3RyZWFt
OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgLy8g
V2ViU29ja2V0RGVmbGF0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggMzVm
MmIxOTkwNzc5ZDY2OWVmODA0MDJmYjAwZjJhNTU2MTQ3YzMyNi4uNGVhNzAwZDU5NDY4NmE1ODI5
ZmE3N2ZiNDljZmJiODA2YjYyZmQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBA
IC0xMTgsNiArMTE4LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9XZWJMYXllclRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywKICAgICAg
ICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAgICAgICd0
ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dl
YlVSTFJlcXVlc3RUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViVmlld1Rlc3QuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0VW5pdFRlc3RzLmd5
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0VW5pdFRlc3RzLmd5cAppbmRleCA1YTk4
YTg0NTljNWVjNzg2ODgyMzU0NTc5NzJhZTNiYzlmZWUyZmJlLi5kNTBhZDE1MjMwNzA2MmVmZjAz
ZDZkZjAyOTM5ZmUwMzI1OWM2ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdFVuaXRUZXN0cy5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXRV
bml0VGVzdHMuZ3lwCkBAIC02MSw2ICs2MSw3IEBACiAgICAgICAgICAgICAgICAgJzwoY2hyb21p
dW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDpiYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJv
bWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lwOmJhc2VfaTE4bicsCiAgICAgICAgICAgICAgICAg
JzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRfYmFzZScsCisg
ICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvemxpYi96bGli
Lmd5cDp6bGliJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQv
c3VwcG9ydC93ZWJraXRfc3VwcG9ydC5neXA6d2Via2l0X3N1cHBvcnQnLAogICAgICAgICAgICAg
ICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5
cDp3ZWJraXRfdXNlcl9hZ2VudCcsCiAgICAgICAgICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQyM2E1OTY5ZmQyNWI3Nzc3NWUwYzUzYzdhODI2NzMzZjU2MTIwMzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldERlZmxhdGVyVGVz
dC5jcHAKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJXZWJTb2NrZXREZWZsYXRlci5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgeworCitURVNUKFdlYlNvY2tldERlZmxhdGVyVGVzdCwgVGVzdENvbXByZXNzSGVs
bG8pCit7CisgICAgLy8gVGVzdCB0aGUgZmlyc3QgZXhhbXBsZSBvbiBzZWN0aW9uIDQuMyBvZiB0
aGUgc3BlY2lmaWNhdGlvbi4KKyAgICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVy
ID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSgxNSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0
ZXItPmluaXRpYWxpemUoKSk7CisgICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRl
ciA9IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRl
ci0+aW5pdGlhbGl6ZSgpKTsKKyAgICBjb25zdCBjaGFyKiBpbnB1dERhdGEgPSAiSGVsbG8iOwor
ICAgIGNvbnN0IHNpemVfdCBpbnB1dExlbmd0aCA9IHN0cmxlbihpbnB1dERhdGEpOworCisgICAg
QVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YSwgaW5wdXRMZW5ndGgpKTsK
KyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+ZmluaXNoKCkpOworICAgIGNvbnN0IGNoYXIgZXhw
ZWN0ZWRGaXJzdFtdID0gezB4ZjIsIDB4NDgsIDB4Y2QsIDB4YzksIDB4YzksIDB4MDcsIDB4MDB9
OworICAgIEVYUEVDVF9FUShzaXplb2YoZXhwZWN0ZWRGaXJzdCksIGRlZmxhdGVyLT5zaXplKCkp
OworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRGaXJzdCwgZGVmbGF0ZXItPmRhdGEo
KSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRl
cyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUo
aW5mbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBFWFBFQ1RfRVEoaW5wdXRMZW5ndGgsIGluZmxhdGVy
LT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLCBpbmZsYXRlci0+
ZGF0YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7CisKKyAgICBkZWZsYXRlci0+cmVzZXQoKTsKKyAg
ICBpbmZsYXRlci0+cmVzZXQoKTsKKworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRl
cyhpbnB1dERhdGEsIGlucHV0TGVuZ3RoKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZp
bmlzaCgpKTsKKyAgICBjb25zdCBjaGFyIGV4cGVjdGVkU2Vjb25kW10gPSB7MHhmMiwgMHgwMCwg
MHgxMSwgMHgwMCwgMHgwMH07CisgICAgRVhQRUNUX0VRKHNpemVvZihleHBlY3RlZFNlY29uZCks
IGRlZmxhdGVyLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRTZWNv
bmQsIGRlZmxhdGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJV
RShpbmZsYXRlci0+YWRkQnl0ZXMoZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkp
OworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNUX0VRKGlu
cHV0TGVuZ3RoLCBpbmZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlu
cHV0RGF0YSwgaW5mbGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworfQorCitURVNU
KFdlYlNvY2tldERlZmxhdGVyVGVzdCwgVGVzdE11bHRpcGxlQWRkQnl0ZXNDYWxscykKK3sKKyAg
ICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6
OmNyZWF0ZSgxNSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmluaXRpYWxpemUoKSk7Cisg
ICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9IFdlYlNvY2tldEluZmxhdGVy
OjpjcmVhdGUoKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+aW5pdGlhbGl6ZSgpKTsKKyAg
ICBWZWN0b3I8Y2hhcj4gaW5wdXREYXRhKDMyKTsKKyAgICBpbnB1dERhdGEuZmlsbCgnYScpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnB1dERhdGEuc2l6ZSgpOyArK2kpCisgICAg
ICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhpbnB1dERhdGEuZGF0YSgpICsgaSwg
MSkpOworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5maW5pc2goKSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBkZWZsYXRlci0+c2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVF9UUlVF
KGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpICsgaSwgMSkpOworICAgIEFTU0VS
VF9UUlVFKGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNUX0VRKGlucHV0RGF0YS5zaXpl
KCksIGluZmxhdGVyLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRh
LmRhdGEoKSwgaW5mbGF0ZXItPmRhdGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworfQorCitURVNU
KFdlYlNvY2tldERlZmxhdGVyVGVzdCwgVGVzdE5vQ29udGV4dFRha2VPdmVyKQoreworICAgIE93
blB0cjxXZWJTb2NrZXREZWZsYXRlcj4gZGVmbGF0ZXIgPSBXZWJTb2NrZXREZWZsYXRlcjo6Y3Jl
YXRlKDE1LCBXZWJTb2NrZXREZWZsYXRlcjo6RG9Ob3RUYWtlT3ZlckNvbnRleHQpOworICAgIEFT
U0VSVF9UUlVFKGRlZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIE93blB0cjxXZWJTb2NrZXRJ
bmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgQVNT
RVJUX1RSVUUoaW5mbGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgY29uc3QgY2hhciBleHBlY3Rl
ZFtdID0gezB4ZjIsIDB4NDgsIDB4Y2QsIDB4YzksIDB4YzksIDB4MDcsIDB4MDB9OworICAgIGNv
bnN0IGNoYXIqIGlucHV0RGF0YSA9ICJIZWxsbyI7CisgICAgY29uc3Qgc2l6ZV90IGlucHV0TGVu
Z3RoID0gc3RybGVuKGlucHV0RGF0YSk7CisKKyAgICAvLyBJZiB3ZSBkb24ndCB0YWtlIG92ZXIg
Y29udGV4dCwgdGhlIHNlY29uZCByZXN1bHQgc2hvdWxkIGJlIHRoZSBpZGVudGljYWwKKyAgICAv
LyB3aXRoIHRoZSBmaXJzdCBvbmUuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyOyArK2kp
IHsKKyAgICAgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YSwgaW5w
dXRMZW5ndGgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKHNpemVvZihleHBlY3RlZCksIGRlZmxhdGVyLT5zaXplKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkLCBkZWZsYXRlci0+ZGF0YSgpLCBkZWZs
YXRlci0+c2l6ZSgpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhk
ZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIEFTU0VSVF9UUlVF
KGluZmxhdGVyLT5maW5pc2goKSk7CisgICAgICAgIEVYUEVDVF9FUShpbnB1dExlbmd0aCwgaW5m
bGF0ZXItPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLCBp
bmZsYXRlci0+ZGF0YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7CisgICAgICAgIGRlZmxhdGVyLT5y
ZXNldCgpOworICAgICAgICBpbmZsYXRlci0+cmVzZXQoKTsKKyAgICB9Cit9CisKK1RFU1QoV2Vi
U29ja2V0RGVmbGF0ZXJUZXN0LCBUZXN0V2luZG93Qml0cykKK3sKKyAgICBWZWN0b3I8Y2hhcj4g
aW5wdXREYXRhKDEwMjQgKyA2NCAqIDIpOworICAgIGlucHV0RGF0YS5maWxsKCdhJyk7CisgICAg
Ly8gTW9kaWZ5IHRoZSBoZWFkIGFuZCB0YWlsIG9mIHRoZSBpbnB1dERhdGEgc28gdGhhdCBiYWNr
LXJlZmVyZW5jZQorICAgIC8vIGNhbiBiZSB1c2VkIGlmIHRoZSB3aW5kb3cgc2l6ZSBpcyBzdWZm
aWNpZW50bHktbGFyZ2UuCisgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCA2NDsgKytqKSB7Cisg
ICAgICAgIGlucHV0RGF0YVtqXSA9ICdiJzsKKyAgICAgICAgaW5wdXREYXRhW2lucHV0RGF0YS5z
aXplKCkgLSBqIC0gMV0gPSAnYic7CisgICAgfQorCisgICAgT3duUHRyPFdlYlNvY2tldERlZmxh
dGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoOCk7CisgICAgQVNTRVJU
X1RSVUUoZGVmbGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXIt
PmFkZEJ5dGVzKGlucHV0RGF0YS5kYXRhKCksIGlucHV0RGF0YS5zaXplKCkpKTsKKyAgICBBU1NF
UlRfVFJVRShkZWZsYXRlci0+ZmluaXNoKCkpOworCisgICAgT3duUHRyPFdlYlNvY2tldEluZmxh
dGVyPiBpbmZsYXRlciA9IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoOCk7CisgICAgQVNTRVJU
X1RSVUUoaW5mbGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXIt
PmFkZEJ5dGVzKGRlZmxhdGVyLT5kYXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NF
UlRfVFJVRShpbmZsYXRlci0+ZmluaXNoKCkpOworICAgIEVYUEVDVF9FUShpbnB1dERhdGEuc2l6
ZSgpLCBpbmZsYXRlci0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0
YS5kYXRhKCksIGluZmxhdGVyLT5kYXRhKCksIGluZmxhdGVyLT5zaXplKCkpKTsKK30KKworVEVT
VChXZWJTb2NrZXREZWZsYXRlclRlc3QsIFRlc3RMYXJnZURhdGEpCit7CisgICAgT3duUHRyPFdl
YlNvY2tldERlZmxhdGVyPiBkZWZsYXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUp
OworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIE93blB0cjxX
ZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7
CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgVmVjdG9yPGNo
YXI+IGlucHV0RGF0YSgxNiAqIDEwMjQgKiAxMDI0KTsKKyAgICBpbnB1dERhdGEuZmlsbCgnYScp
OworCisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YS5kYXRhKCks
IGlucHV0RGF0YS5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+ZmluaXNoKCkp
OworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBk
ZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmZpbmlzaCgpKTsK
KyAgICBFWFBFQ1RfRVEoaW5wdXREYXRhLnNpemUoKSwgaW5mbGF0ZXItPnNpemUoKSk7CisgICAg
RVhQRUNUX0VRKDAsIG1lbWNtcChpbnB1dERhdGEuZGF0YSgpLCBpbmZsYXRlci0+ZGF0YSgpLCBp
bmZsYXRlci0+c2l6ZSgpKSk7Cit9CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127770</attachid>
            <date>2012-02-19 23:46:24 -0800</date>
            <delta_ts>2012-02-20 00:59:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-78449-20120220164622.patch</filename>
            <type>text/plain</type>
            <size>30444</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZlYTAzYzY5MmE4Mjg1
YzliMzFkOWEzNjEwNTE1MDM3MDNlMjAyMS4uMWVmMzM4NDYxNjU2MzY0MDllZDNhNTA4ODNkNzgw
YzJhZmYwNGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAyLTIwICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZGVmbGF0ZXIvaW5mbGF0ZXIgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDkKKworICAgICAgICBBZGQgV2ViU29ja2V0RGVm
bGF0ZXIvV2ViU29ja2V0SW5mbGF0ZXIgY2xhc3NlcyB3aGljaCB3cmFwIHpsaWIKKyAgICAgICAg
ZnVuY3Rpb25zLiBUaGVzZSBjbGFzc2VzIGFyZSBub3QgdXNlZCB5ZXQsIGJ1dCB3aWxsIGJlIHVz
ZWQgZm9yCisgICAgICAgIHN1cHBvcnRpbmcgV2ViU29ja2V0IGRlZmxhdGUtZnJhbWUgZXh0ZW5z
aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc2Vjb25kIHRyeS4gVGhlIHByZXZpb3VzIHBh
dGNoIGJyb2tlIENocm9taXVtIFdpbgorICAgICAgICBidWlsZC4gSSBhZGRlZCBkZXBlbmRlbmN5
IG9mIHpsaWIgdG8gV2ViQ29yZS5neXAuIEkgdGhpbmsgaXQncworICAgICAgICBPSyBiZWNhdXNl
IENocm9taXVtIGFscmVhZHkgZGVwZW5kcyBvbiB6bGliLgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbnQgVGFtdXJhLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBleGNlcHQgZm9yIGNocm9taXVt
IHBvcnQuIEJlaGF2aW9yIGlzIHVuY2hhbmdlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06IEFkZGVkIFdlYlNvY2tldERlZmxhdGVyLihjcHB8aCkuCisgICAgICAgICogV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXA6IEFkZGVkIHpsaWIgZGVwZW5kZW5jeS4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6IEFkZGVkIFdlYlNvY2tldERlZmxhdGVyLihjcHB8aCkuCisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXREZWZsYXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXREZWZsYXRlcjo6fldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFN0
cmVhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6YWRk
Qnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OmZpbmlzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6cmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0SW5mbGF0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
SW5mbGF0ZXI6On5XZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRJbmZsYXRlcjo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0
ZXI6OmZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6cmVzZXQp
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldERlZmxhdGVyOjpzaXplKToKKyAgICAgICAgKFdlYlNvY2tldEluZmxhdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEluZmxhdGVyOjpzaXplKToKKwogMjAxMi0wMi0xOSAgS2Vpc2hpIEhhdHRvcmkg
IDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ugc2hhZG93Um9vdExpc3QgZm9yIENv
bG9ySW5wdXRUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGNjY2JmY2U5YzQzNWE2
ZGJmOTMxNjYyZWY3ZWRlNjE4NTBhMGQ1NjAuLmJjOWIyOTAyZGJhZGNjZjdmMDY0ZjI2MzVhOTAw
NGM5OTI0OGMzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTItMDItMjAgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtXZWJTb2NrZXRdIEFkZCBkZWZsYXRlci9pbmZsYXRlciBjbGFzc2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ0OQorCisgICAgICAg
IEFkZCB0ZXN0cyB3aGljaCBlbnN1cmUgV2ViU29ja2V0RGVmbGF0ZXIvV2ViU29ja2V0SW5mbGF0
ZXIgY2FuCisgICAgICAgIGNvbXByZXNzL2RlY29tcHJlc3MgZGF0YSBjb3JyZWN0bHkuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaTog
QWRkZWQgemxpYiBkZXBlbmRlbmN5LgorICAgICAgICAqIFdlYktpdFVuaXRUZXN0cy5neXA6IERp
dHRvLgorICAgICAgICAqIHRlc3RzL1dlYlNvY2tldERlZmxhdGVyVGVzdC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMi0x
OCAgcmFtYW4gVGVubmV0aSAgPHJ0ZW5uZXRpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBUcmFj
ayB0aGUgTlBOIHByb3RvY29sIHZlcnNpb24gbmVnb3RpYXRlZCB3aXRoIHRoZSBzZXJ2ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGVmYWNmYTg4ZTk1OGQ1NDRhOTQzODUyOWU4
ZDdmZTZjMzBmMTdkYWIuLmYyMGE0MDg3ZGY5MjJmMmU4MGRmNjY4ODI3NWQyODZlYjFmYzFmNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDMzMiw2ICs0MzMyLDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKKwlTb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IDI4MTg1YTQ0NjJlNWRhY2M3NGM1MDE2NjA0NDE5ZGIw
NDczMjcwMGIuLmQ2MWU4NTQ2ZWQyZTBmNThiYjhhMjViNzdmOGRlNzFkYzdhN2Y3YTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0xMTcyLDYgKzExNzIsNyBAQAog
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9vdHMvb3RzLmd5cDpvdHMn
LAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9zcWxpdGUvc3FsaXRl
Lmd5cDpzcWxpdGUnLAogICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9h
bmdsZS9zcmMvYnVpbGRfYW5nbGUuZ3lwOnRyYW5zbGF0b3JfZ2xzbCcsCisgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L3psaWIvemxpYi5neXA6emxpYicsCiAgICAgICAg
ICc8KGNocm9taXVtX3NyY19kaXIpL3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAogICAgICAgICAn
PChsaWJqcGVnX2d5cF9wYXRoKTpsaWJqcGVnJywKICAgICAgIF0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggN2M3OGQzZGQ0MGYyYzM5NTU1NTZhMDBiOGEwZWIyNDNhZDNkY2ZkZS4uYjMzN2MwOThhMWNi
ZmRiNGU2Y2M4ZGFhOWYwNWRiMjlmNjczYTFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDgxMSw2
ICs0ODExLDggQEAKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
JywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCcsCiAgICAgICAg
ICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgnLAorICAgICAgICAgICAg
J3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwJywKKyAgICAgICAgICAgICd3ZWJzb2Nr
ZXRzL1dlYlNvY2tldERlZmxhdGVyLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2Vi
U29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dl
YlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZDVkYTgwNjhlOGQ1YjgwYWI0YjU3MTcwOTQ5ZTY3
MzFiYWUxNGFkOS4uN2Q2NWVkYmM3YjhjZGZhMzg1NzA1MzYwZWI3ZDg3ZDhhMzhhMzhlZCAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTczNDM4
LDYgKzczNDM4LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RGVmbGF0ZXIuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tl
dERlZmxhdGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAiCiAJCQkJ
PgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDM5MjlkMWZkOWMwZmI2MTIyY2NlNzgyMDA0OTJkYTNiMzI0YTQ0
OGEuLjU5ZTg3ZjcwZTUzOGI3Yjg1ZjNmZDA2YTNkYjQ5ZGI4NjNkOGY4MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzODYs
NiArMTM4Niw4IEBACiAJCTRBRDAxNzNDMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBRDAxNzNBMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmNwcCAqLzsg
fTsKIAkJNEFEMDE3M0QxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRDAxNzNCMTI3
RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi87IH07CiAJCTRBREUyNUZB
MTRFM0JCNEMwMDRDMjIxMyAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBREUyNUY5MTRFM0JCNEMw
MDRDMjIxMyAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCAqLzsgfTsKKwkJNEFFMDJB
QkQxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRTAyQUJCMTRFOEE5RDIwMEJDM0JB
NyAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgKi87IH07CisJCTRBRTAyQUJFMTRFOEE5RDIwMEJD
M0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEFFMDJBQkMxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERl
ZmxhdGVyLmggKi87IH07CiAJCTRBRjFBRDNFMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3Bh
dGNoTWVkaWF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEFGMUFEM0MxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5j
cHAgKi87IH07CiAJCTRBRjFBRDNGMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVk
aWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRB
RjFBRDNEMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjI3MDhDNzBBRjE5
RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQu
aCAqLzsgfTsKQEAgLTgyNTAsNiArODI1Miw4IEBACiAJCTRBRDAxNzNBMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxPdXRwdXRFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBREUyNUY5MTRFM0JCNEMwMDRDMjIxMyAv
KiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRBRTAyQUJCMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXREZWZs
YXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBRTAyQUJDMTRFOEE5RDIw
MEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTb2NrZXREZWZsYXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QUYxQUQzQzEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50RGlzcGF0Y2hNZWRpYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRjFBRDNEMTNGRDIzQTQwMEFB
OTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRXZlbnREaXNwYXRjaE1lZGlhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRCMjcwOEM1MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0ODM4LDYgKzE0ODQyLDggQEAKIAkJCQk1MTBENEE0NzEwMzE3N0EyMDA0
OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCiAJCQkJNTEwRDRBNDgxMDMxNzdBMjAw
NDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLywKIAkJCQk1MTBENEE0OTEwMzE3N0EyMDA0
OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovLAorCQkJCTRBRTAyQUJCMTRFOEE5
RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgKi8sCisJCQkJNEFFMDJBQkMxNEU4
QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggKi8sCiAJCQkJNEE5NTdGMDMxNEUy
NDExMDAwNDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwICovLAogCQkJ
CTRBOTU3RjA0MTRFMjQxMTAwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmggKi8sCiAJCQkJNEFERTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lv
blByb2Nlc3Nvci5oICovLApAQCAtMjQyMDMsNiArMjQyMDksNyBAQAogCQkJCTUxOEEzNEMyMTAy
NkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEQ0QTRG
MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTBENEE1MDEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNEFFMDJBQkUxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERl
ZmxhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTk1N0YwNzE0RTI0MTMwMDA0OURCRkIgLyog
V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEFERTI1
RkExNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFBQkFFNDUxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRz
aGFrZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzE1OSw2ICsyNzE2Niw3IEBACiAJCQkJNTE4QTM0
QzExMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTBENEE0RTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0QTk1N0YwNjE0RTI0MTJBMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0QUUwMkFCRDE0RThBOUQyMDBCQzNC
QTcgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBQkFFNDQx
MDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3NjM3QzU0MTExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NjdGOTlCRTExQTExOTRBMDA4MEM1MUQgLyogV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiODY4
ZjQ3NzZmYTM1NzBkNzU4NzczOWJkYWQ5MjY5ZTMzNjQzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcApAQCAtMCwwICsx
LDIwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisK
KyNpbmNsdWRlICJXZWJTb2NrZXREZWZsYXRlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgaW50IGRl
ZmF1bHRNZW1MZXZlbCA9IDE7CitzdGF0aWMgY29uc3Qgc2l6ZV90IGJ1ZmZlckluY3JlbWVudFVu
aXQgPSA0MDk2OworCitQYXNzT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBXZWJTb2NrZXREZWZs
YXRlcjo6Y3JlYXRlKGludCB3aW5kb3dCaXRzLCBDb250ZXh0VGFrZU92ZXJNb2RlIGNvbnRleHRU
YWtlT3Zlck1vZGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTb2NrZXREZWZsYXRl
cih3aW5kb3dCaXRzLCBjb250ZXh0VGFrZU92ZXJNb2RlKSk7Cit9CisKK1dlYlNvY2tldERlZmxh
dGVyOjpXZWJTb2NrZXREZWZsYXRlcihpbnQgd2luZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9k
ZSBjb250ZXh0VGFrZU92ZXJNb2RlKQorICAgIDogbV93aW5kb3dCaXRzKHdpbmRvd0JpdHMpCisg
ICAgLCBtX2NvbnRleHRUYWtlT3Zlck1vZGUoY29udGV4dFRha2VPdmVyTW9kZSkKK3sKKyAgICBB
U1NFUlQobV93aW5kb3dCaXRzID49IDgpOworICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPD0gMTUp
OworICAgIG1lbXNldCgmbV9zdHJlYW0sIDAsIHNpemVvZih6X3N0cmVhbSkpOworfQorCitib29s
IFdlYlNvY2tldERlZmxhdGVyOjppbml0aWFsaXplKCkKK3sKKyAgICByZXR1cm4gZGVmbGF0ZUlu
aXQyKCZtX3N0cmVhbSwgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCBaX0RFRkxBVEVELCAtbV93aW5k
b3dCaXRzLCBkZWZhdWx0TWVtTGV2ZWwsIFpfREVGQVVMVF9TVFJBVEVHWSkgPT0gWl9PSzsKK30K
KworV2ViU29ja2V0RGVmbGF0ZXI6On5XZWJTb2NrZXREZWZsYXRlcigpCit7CisgICAgaW50IHJl
c3VsdCA9IGRlZmxhdGVFbmQoJm1fc3RyZWFtKTsKKyAgICBpZiAocmVzdWx0ICE9IFpfT0spCisg
ICAgICAgIExPRyhOZXR3b3JrLCAiZGVmbGF0ZUVuZCgpIGZhaWxlZDogJWQiLCByZXN1bHQpOwor
fQorCitzdGF0aWMgdm9pZCBzZXRTdHJlYW1QYXJhbWV0ZXIoel9zdHJlYW0mIHN0cmVhbSwgY29u
c3QgY2hhciogaW5wdXREYXRhLCBzaXplX3QgaW5wdXRMZW5ndGgsIGNoYXIqIG91dHB1dERhdGEs
IHNpemVfdCBvdXRwdXRMZW5ndGgpCit7CisgICAgc3RyZWFtLm5leHRfaW4gPSByZWludGVycHJl
dF9jYXN0PEJ5dGVmKj4oY29uc3RfY2FzdDxjaGFyKj4oaW5wdXREYXRhKSk7CisgICAgc3RyZWFt
LmF2YWlsX2luID0gaW5wdXRMZW5ndGg7CisgICAgc3RyZWFtLm5leHRfb3V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxCeXRlZio+KG91dHB1dERhdGEpOworICAgIHN0cmVhbS5hdmFpbF9vdXQgPSBvdXRw
dXRMZW5ndGg7Cit9CisKK2Jvb2wgV2ViU29ja2V0RGVmbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHNpemVfdCBtYXhMZW5ndGggPSBkZWZsYXRlQm91bmQoJm1fc3Ry
ZWFtLCBsZW5ndGgpOworICAgIHNpemVfdCB3cml0ZVBvc2l0aW9uID0gbV9idWZmZXIuc2l6ZSgp
OworICAgIG1fYnVmZmVyLmdyb3cod3JpdGVQb3NpdGlvbiArIG1heExlbmd0aCk7CisgICAgc2V0
U3RyZWFtUGFyYW1ldGVyKG1fc3RyZWFtLCBkYXRhLCBsZW5ndGgsIG1fYnVmZmVyLmRhdGEoKSAr
IHdyaXRlUG9zaXRpb24sIG1heExlbmd0aCk7CisgICAgaW50IHJlc3VsdCA9IGRlZmxhdGUoJm1f
c3RyZWFtLCBaX05PX0ZMVVNIKTsKKyAgICBpZiAocmVzdWx0ICE9IFpfT0sgfHwgbV9zdHJlYW0u
YXZhaWxfaW4gPiAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2J1ZmZlci5zaHJp
bmsod3JpdGVQb3NpdGlvbiArIG1heExlbmd0aCAtIG1fc3RyZWFtLmF2YWlsX291dCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViU29ja2V0RGVmbGF0ZXI6OmZpbmlzaCgpCit7Cisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgc2l6ZV90IHdyaXRlUG9zaXRpb24gPSBtX2J1ZmZl
ci5zaXplKCk7CisgICAgICAgIG1fYnVmZmVyLmdyb3cod3JpdGVQb3NpdGlvbiArIGJ1ZmZlcklu
Y3JlbWVudFVuaXQpOworICAgICAgICBzaXplX3QgYXZhaWxhYmxlQ2FwYWNpdHkgPSBtX2J1ZmZl
ci5zaXplKCkgLSB3cml0ZVBvc2l0aW9uOworICAgICAgICBzZXRTdHJlYW1QYXJhbWV0ZXIobV9z
dHJlYW0sIDAsIDAsIG1fYnVmZmVyLmRhdGEoKSArIHdyaXRlUG9zaXRpb24sIGF2YWlsYWJsZUNh
cGFjaXR5KTsKKyAgICAgICAgaW50IHJlc3VsdCA9IGRlZmxhdGUoJm1fc3RyZWFtLCBaX1NZTkNf
RkxVU0gpOworICAgICAgICBtX2J1ZmZlci5zaHJpbmsod3JpdGVQb3NpdGlvbiArIGF2YWlsYWJs
ZUNhcGFjaXR5IC0gbV9zdHJlYW0uYXZhaWxfb3V0KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBa
X09LKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChyZXN1bHQgIT0gWl9CVUZfRVJS
T1IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFJlbW92ZSA0IG9j
dGV0cyBmcm9tIHRoZSB0YWlsIGFzIHRoZSBzcGVjaWZpY2F0aW9uIHJlcXVpcmVzLgorICAgIGlm
IChtX2J1ZmZlci5zaXplKCkgPD0gNCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fYnVm
ZmVyLnJlc2l6ZShtX2J1ZmZlci5zaXplKCkgLSA0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBXZWJTb2NrZXREZWZsYXRlcjo6cmVzZXQoKQoreworICAgIG1fYnVmZmVyLmNsZWFyKCk7
CisgICAgaWYgKG1fY29udGV4dFRha2VPdmVyTW9kZSA9PSBEb05vdFRha2VPdmVyQ29udGV4dCkK
KyAgICAgICAgZGVmbGF0ZVJlc2V0KCZtX3N0cmVhbSk7Cit9CisKK1Bhc3NPd25QdHI8V2ViU29j
a2V0SW5mbGF0ZXI+IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoaW50IHdpbmRvd0JpdHMpCit7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRJbmZsYXRlcih3aW5kb3dCaXRzKSk7
Cit9CisKK1dlYlNvY2tldEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcihpbnQgd2luZG93Qml0
cykKKyAgICA6IG1fd2luZG93Qml0cyh3aW5kb3dCaXRzKQoreworICAgIG1lbXNldCgmbV9zdHJl
YW0sIDAsIHNpemVvZih6X3N0cmVhbSkpOworfQorCitib29sIFdlYlNvY2tldEluZmxhdGVyOjpp
bml0aWFsaXplKCkKK3sKKyAgICByZXR1cm4gaW5mbGF0ZUluaXQyKCZtX3N0cmVhbSwgLW1fd2lu
ZG93Qml0cykgPT0gWl9PSzsKK30KKworV2ViU29ja2V0SW5mbGF0ZXI6On5XZWJTb2NrZXRJbmZs
YXRlcigpCit7CisgICAgaW50IHJlc3VsdCA9IGluZmxhdGVFbmQoJm1fc3RyZWFtKTsKKyAgICBp
ZiAocmVzdWx0ICE9IFpfT0spCisgICAgICAgIExPRyhOZXR3b3JrLCAiaW5mbGF0ZUVuZCgpIGZh
aWxlZDogJWQiLCByZXN1bHQpOworfQorCitib29sIFdlYlNvY2tldEluZmxhdGVyOjphZGRCeXRl
cyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmICghbGVuZ3RoKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgY29uc3VtZWRTb0ZhciA9IDA7Cisg
ICAgd2hpbGUgKGNvbnN1bWVkU29GYXIgPCBsZW5ndGgpIHsKKyAgICAgICAgc2l6ZV90IHdyaXRl
UG9zaXRpb24gPSBtX2J1ZmZlci5zaXplKCk7CisgICAgICAgIG1fYnVmZmVyLmdyb3cod3JpdGVQ
b3NpdGlvbiArIGJ1ZmZlckluY3JlbWVudFVuaXQpOworICAgICAgICBzaXplX3QgYXZhaWxhYmxl
Q2FwYWNpdHkgPSBtX2J1ZmZlci5zaXplKCkgLSB3cml0ZVBvc2l0aW9uOworICAgICAgICBzaXpl
X3QgcmVtYWluaW5nTGVuZ3RoID0gbGVuZ3RoIC0gY29uc3VtZWRTb0ZhcjsKKyAgICAgICAgc2V0
U3RyZWFtUGFyYW1ldGVyKG1fc3RyZWFtLCBkYXRhICsgY29uc3VtZWRTb0ZhciwgcmVtYWluaW5n
TGVuZ3RoLCBtX2J1ZmZlci5kYXRhKCkgKyB3cml0ZVBvc2l0aW9uLCBhdmFpbGFibGVDYXBhY2l0
eSk7CisgICAgICAgIGludCByZXN1bHQgPSBpbmZsYXRlKCZtX3N0cmVhbSwgWl9OT19GTFVTSCk7
CisgICAgICAgIGNvbnN1bWVkU29GYXIgKz0gcmVtYWluaW5nTGVuZ3RoIC0gbV9zdHJlYW0uYXZh
aWxfaW47CisgICAgICAgIG1fYnVmZmVyLnNocmluayh3cml0ZVBvc2l0aW9uICsgYXZhaWxhYmxl
Q2FwYWNpdHkgLSBtX3N0cmVhbS5hdmFpbF9vdXQpOworICAgICAgICBpZiAocmVzdWx0ID09IFpf
QlVGX0VSUk9SKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChyZXN1bHQgIT0g
Wl9PSykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQVNTRVJUKGNvbnN1
bWVkU29GYXIgPT0gbGVuZ3RoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJTb2Nr
ZXRJbmZsYXRlcjo6ZmluaXNoKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc3RyaXBwZWRG
aWVsZHMgPSAiXDBcMFx4ZmZceGZmIjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHN0cmlwcGVk
TGVuZ3RoID0gNDsKKworICAgIC8vIEFwcGVuZHMgNCBvY3Rlc3RzIG9mIDB4MDAgMHgwMCAweGZm
IDB4ZmYKKyAgICBzaXplX3QgY29uc3VtZWRTb0ZhciA9IDA7CisgICAgd2hpbGUgKGNvbnN1bWVk
U29GYXIgPCBzdHJpcHBlZExlbmd0aCkgeworICAgICAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9
IG1fYnVmZmVyLnNpemUoKTsKKyAgICAgICAgbV9idWZmZXIuZ3Jvdyh3cml0ZVBvc2l0aW9uICsg
YnVmZmVySW5jcmVtZW50VW5pdCk7CisgICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9
IG1fYnVmZmVyLnNpemUoKSAtIHdyaXRlUG9zaXRpb247CisgICAgICAgIHNpemVfdCByZW1haW5p
bmdMZW5ndGggPSBzdHJpcHBlZExlbmd0aCAtIGNvbnN1bWVkU29GYXI7CisgICAgICAgIHNldFN0
cmVhbVBhcmFtZXRlcihtX3N0cmVhbSwgc3RyaXBwZWRGaWVsZHMgKyBjb25zdW1lZFNvRmFyLCBy
ZW1haW5pbmdMZW5ndGgsIG1fYnVmZmVyLmRhdGEoKSArIHdyaXRlUG9zaXRpb24sIGF2YWlsYWJs
ZUNhcGFjaXR5KTsKKyAgICAgICAgaW50IHJlc3VsdCA9IGluZmxhdGUoJm1fc3RyZWFtLCBaX0ZJ
TklTSCk7CisgICAgICAgIGNvbnN1bWVkU29GYXIgKz0gcmVtYWluaW5nTGVuZ3RoIC0gbV9zdHJl
YW0uYXZhaWxfaW47CisgICAgICAgIG1fYnVmZmVyLnNocmluayh3cml0ZVBvc2l0aW9uICsgYXZh
aWxhYmxlQ2FwYWNpdHkgLSBtX3N0cmVhbS5hdmFpbF9vdXQpOworICAgICAgICBpZiAocmVzdWx0
ID09IFpfQlVGX0VSUk9SKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChyZXN1
bHQgIT0gWl9PSyAmJiByZXN1bHQgIT0gWl9TVFJFQU1fRU5EKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBBU1NFUlQoY29uc3VtZWRTb0ZhciA9PSBzdHJpcHBlZExlbmd0
aCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJTb2NrZXRJbmZsYXRlcjo6cmVz
ZXQoKQoreworICAgIG1fYnVmZmVyLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODUzNDUxNDE3MDExNzk2
MzgzNWZlYjA3MzZjODllOTBlYzRmMmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJTb2NrZXREZWZsYXRlcl9oCisjZGVmaW5lIFdlYlNvY2tldERlZmxhdGVyX2gKKworI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx6bGliLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgV2ViU29ja2V0RGVmbGF0ZXIgeworcHVibGljOgorICAgIGVudW0gQ29udGV4
dFRha2VPdmVyTW9kZSB7CisgICAgICAgIERvTm90VGFrZU92ZXJDb250ZXh0LAorICAgICAgICBU
YWtlT3ZlckNvbnRleHQKKyAgICB9OworICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNvY2tldERl
ZmxhdGVyPiBjcmVhdGUoaW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUgPSBUYWtl
T3ZlckNvbnRleHQpOworCisgICAgfldlYlNvY2tldERlZmxhdGVyKCk7CisKKyAgICBib29sIGlu
aXRpYWxpemUoKTsKKyAgICBib29sIGFkZEJ5dGVzKGNvbnN0IGNoYXIqLCBzaXplX3QpOworICAg
IGJvb2wgZmluaXNoKCk7CisgICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVy
LmRhdGEoKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6
ZSgpOyB9CisgICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIFdlYlNvY2tldERlZmxh
dGVyKGludCB3aW5kb3dCaXRzLCBDb250ZXh0VGFrZU92ZXJNb2RlKTsKKworICAgIGludCBtX3dp
bmRvd0JpdHM7CisgICAgQ29udGV4dFRha2VPdmVyTW9kZSBtX2NvbnRleHRUYWtlT3Zlck1vZGU7
CisgICAgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOworICAgIHpfc3RyZWFtIG1fc3RyZWFtOworfTsK
KworY2xhc3MgV2ViU29ja2V0SW5mbGF0ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdlYlNvY2tldEluZmxhdGVyPiBjcmVhdGUoaW50IHdpbmRvd0JpdHMgPSAxNSk7CisKKyAg
ICB+V2ViU29ja2V0SW5mbGF0ZXIoKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZSgpOworICAgIGJv
b2wgYWRkQnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgYm9vbCBmaW5pc2goKTsKKyAg
ICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KKyAgICB2b2lkIHJl
c2V0KCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2ViU29ja2V0SW5mbGF0ZXIoaW50IHdp
bmRvd0JpdHMpOworCisgICAgaW50IG1fd2luZG93Qml0czsKKyAgICBWZWN0b3I8Y2hhcj4gbV9i
dWZmZXI7CisgICAgel9zdHJlYW0gbV9zdHJlYW07Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAvLyBXZWJTb2NrZXREZWZsYXRlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBmY2QwOWM0YzFlOWNiMTAyNGYzNzMzYWQ1YWRiZTc0
NWQ3NjA4MGM5Li42ZTlhNGQwZGZhOTVmYjc0ODcxZTVmZjM5ZmIyOGFkZmZkYWFkOWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTExOCw2ICsxMTgsNyBAQAogICAgICAgICAg
ICAgJ3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VO
ZXdTZXJpYWxpemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VTZXJpYWxp
emVyVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL1dlYlNvY2tldERlZmxhdGVyVGVzdC5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvV2ViVVJMUmVxdWVzdFRlc3QuY3BwJywKICAgICAg
ICAgICAgICd0ZXN0cy9XZWJVUkxSZXNwb25zZVRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0VW5pdFRlc3RzLmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0VW5pdFRlc3RzLmd5cAppbmRleCA1YTk4YTg0NTljNWVjNzg2ODgyMzU0NTc5
NzJhZTNiYzlmZWUyZmJlLi5kNTBhZDE1MjMwNzA2MmVmZjAzZDZkZjAyOTM5ZmUwMzI1OWM2ZDgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdFVuaXRUZXN0cy5neXAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXRVbml0VGVzdHMuZ3lwCkBAIC02MSw2
ICs2MSw3IEBACiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNl
Lmd5cDpiYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jh
c2UuZ3lwOmJhc2VfaTE4bicsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
YmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRfYmFzZScsCisgICAgICAgICAgICAgICAgJzwoY2hy
b21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvemxpYi96bGliLmd5cDp6bGliJywKICAgICAgICAg
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9y
dC5neXA6d2Via2l0X3N1cHBvcnQnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19k
aXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfdXNlcl9hZ2VudCcs
CiAgICAgICAgICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJTb2NrZXREZWZsYXRlclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyM2E1OTY5ZmQyNWI3Nzc3
NWUwYzUzYzdhODI2NzMzZjU2MTIwMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldERlZmxhdGVyVGVzdC5jcHAKQEAgLTAsMCArMSwxNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJTb2NrZXREZWZs
YXRlci5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCitURVNUKFdl
YlNvY2tldERlZmxhdGVyVGVzdCwgVGVzdENvbXByZXNzSGVsbG8pCit7CisgICAgLy8gVGVzdCB0
aGUgZmlyc3QgZXhhbXBsZSBvbiBzZWN0aW9uIDQuMyBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KKyAg
ICBPd25QdHI8V2ViU29ja2V0RGVmbGF0ZXI+IGRlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6
OmNyZWF0ZSgxNSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmluaXRpYWxpemUoKSk7Cisg
ICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9IFdlYlNvY2tldEluZmxhdGVy
OjpjcmVhdGUoKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+aW5pdGlhbGl6ZSgpKTsKKyAg
ICBjb25zdCBjaGFyKiBpbnB1dERhdGEgPSAiSGVsbG8iOworICAgIGNvbnN0IHNpemVfdCBpbnB1
dExlbmd0aCA9IHN0cmxlbihpbnB1dERhdGEpOworCisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXIt
PmFkZEJ5dGVzKGlucHV0RGF0YSwgaW5wdXRMZW5ndGgpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZs
YXRlci0+ZmluaXNoKCkpOworICAgIGNvbnN0IGNoYXIgZXhwZWN0ZWRGaXJzdFtdID0gezB4ZjIs
IDB4NDgsIDB4Y2QsIDB4YzksIDB4YzksIDB4MDcsIDB4MDB9OworICAgIEVYUEVDVF9FUShzaXpl
b2YoZXhwZWN0ZWRGaXJzdCksIGRlZmxhdGVyLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwLCBt
ZW1jbXAoZXhwZWN0ZWRGaXJzdCwgZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkp
OworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBk
ZWZsYXRlci0+c2l6ZSgpKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmZpbmlzaCgpKTsK
KyAgICBFWFBFQ1RfRVEoaW5wdXRMZW5ndGgsIGluZmxhdGVyLT5zaXplKCkpOworICAgIEVYUEVD
VF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZsYXRlci0+c2l6
ZSgpKSk7CisKKyAgICBkZWZsYXRlci0+cmVzZXQoKTsKKyAgICBpbmZsYXRlci0+cmVzZXQoKTsK
KworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5hZGRCeXRlcyhpbnB1dERhdGEsIGlucHV0TGVu
Z3RoKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBjb25zdCBj
aGFyIGV4cGVjdGVkU2Vjb25kW10gPSB7MHhmMiwgMHgwMCwgMHgxMSwgMHgwMCwgMHgwMH07Cisg
ICAgRVhQRUNUX0VRKHNpemVvZihleHBlY3RlZFNlY29uZCksIGRlZmxhdGVyLT5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRTZWNvbmQsIGRlZmxhdGVyLT5kYXRhKCks
IGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+YWRkQnl0ZXMo
ZGVmbGF0ZXItPmRhdGEoKSwgZGVmbGF0ZXItPnNpemUoKSkpOworICAgIEFTU0VSVF9UUlVFKGlu
ZmxhdGVyLT5maW5pc2goKSk7CisgICAgRVhQRUNUX0VRKGlucHV0TGVuZ3RoLCBpbmZsYXRlci0+
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YSwgaW5mbGF0ZXItPmRh
dGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworfQorCitURVNUKFdlYlNvY2tldERlZmxhdGVyVGVz
dCwgVGVzdE11bHRpcGxlQWRkQnl0ZXNDYWxscykKK3sKKyAgICBPd25QdHI8V2ViU29ja2V0RGVm
bGF0ZXI+IGRlZmxhdGVyID0gV2ViU29ja2V0RGVmbGF0ZXI6OmNyZWF0ZSgxNSk7CisgICAgQVNT
RVJUX1RSVUUoZGVmbGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgT3duUHRyPFdlYlNvY2tldElu
ZmxhdGVyPiBpbmZsYXRlciA9IFdlYlNvY2tldEluZmxhdGVyOjpjcmVhdGUoKTsKKyAgICBBU1NF
UlRfVFJVRShpbmZsYXRlci0+aW5pdGlhbGl6ZSgpKTsKKyAgICBWZWN0b3I8Y2hhcj4gaW5wdXRE
YXRhKDMyKTsKKyAgICBpbnB1dERhdGEuZmlsbCgnYScpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpbnB1dERhdGEuc2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVF9UUlVFKGRlZmxh
dGVyLT5hZGRCeXRlcyhpbnB1dERhdGEuZGF0YSgpICsgaSwgMSkpOworICAgIEFTU0VSVF9UUlVF
KGRlZmxhdGVyLT5maW5pc2goKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZWZsYXRl
ci0+c2l6ZSgpOyArK2kpCisgICAgICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhk
ZWZsYXRlci0+ZGF0YSgpICsgaSwgMSkpOworICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5maW5p
c2goKSk7CisgICAgRVhQRUNUX0VRKGlucHV0RGF0YS5zaXplKCksIGluZmxhdGVyLT5zaXplKCkp
OworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLmRhdGEoKSwgaW5mbGF0ZXItPmRh
dGEoKSwgaW5mbGF0ZXItPnNpemUoKSkpOworfQorCitURVNUKFdlYlNvY2tldERlZmxhdGVyVGVz
dCwgVGVzdE5vQ29udGV4dFRha2VPdmVyKQoreworICAgIE93blB0cjxXZWJTb2NrZXREZWZsYXRl
cj4gZGVmbGF0ZXIgPSBXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRlKDE1LCBXZWJTb2NrZXREZWZs
YXRlcjo6RG9Ob3RUYWtlT3ZlckNvbnRleHQpOworICAgIEFTU0VSVF9UUlVFKGRlZmxhdGVyLT5p
bml0aWFsaXplKCkpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5mbGF0ZXIgPSBX
ZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmlu
aXRpYWxpemUoKSk7CisgICAgY29uc3QgY2hhciBleHBlY3RlZFtdID0gezB4ZjIsIDB4NDgsIDB4
Y2QsIDB4YzksIDB4YzksIDB4MDcsIDB4MDB9OworICAgIGNvbnN0IGNoYXIqIGlucHV0RGF0YSA9
ICJIZWxsbyI7CisgICAgY29uc3Qgc2l6ZV90IGlucHV0TGVuZ3RoID0gc3RybGVuKGlucHV0RGF0
YSk7CisKKyAgICAvLyBJZiB3ZSBkb24ndCB0YWtlIG92ZXIgY29udGV4dCwgdGhlIHNlY29uZCBy
ZXN1bHQgc2hvdWxkIGJlIHRoZSBpZGVudGljYWwKKyAgICAvLyB3aXRoIHRoZSBmaXJzdCBvbmUu
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyOyArK2kpIHsKKyAgICAgICAgQVNTRVJUX1RS
VUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YSwgaW5wdXRMZW5ndGgpKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUoZGVmbGF0ZXItPmZpbmlzaCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKHNpemVv
ZihleHBlY3RlZCksIGRlZmxhdGVyLT5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMCwgbWVt
Y21wKGV4cGVjdGVkLCBkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZs
YXRlci0+c2l6ZSgpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGluZmxhdGVyLT5maW5pc2goKSk7
CisgICAgICAgIEVYUEVDVF9FUShpbnB1dExlbmd0aCwgaW5mbGF0ZXItPnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaW5wdXREYXRhLCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZs
YXRlci0+c2l6ZSgpKSk7CisgICAgICAgIGRlZmxhdGVyLT5yZXNldCgpOworICAgICAgICBpbmZs
YXRlci0+cmVzZXQoKTsKKyAgICB9Cit9CisKK1RFU1QoV2ViU29ja2V0RGVmbGF0ZXJUZXN0LCBU
ZXN0V2luZG93Qml0cykKK3sKKyAgICBWZWN0b3I8Y2hhcj4gaW5wdXREYXRhKDEwMjQgKyA2NCAq
IDIpOworICAgIGlucHV0RGF0YS5maWxsKCdhJyk7CisgICAgLy8gTW9kaWZ5IHRoZSBoZWFkIGFu
ZCB0YWlsIG9mIHRoZSBpbnB1dERhdGEgc28gdGhhdCBiYWNrLXJlZmVyZW5jZQorICAgIC8vIGNh
biBiZSB1c2VkIGlmIHRoZSB3aW5kb3cgc2l6ZSBpcyBzdWZmaWNpZW50bHktbGFyZ2UuCisgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCA2NDsgKytqKSB7CisgICAgICAgIGlucHV0RGF0YVtqXSA9
ICdiJzsKKyAgICAgICAgaW5wdXREYXRhW2lucHV0RGF0YS5zaXplKCkgLSBqIC0gMV0gPSAnYic7
CisgICAgfQorCisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZsYXRlciA9IFdlYlNv
Y2tldERlZmxhdGVyOjpjcmVhdGUoOCk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmluaXRp
YWxpemUoKSk7CisgICAgQVNTRVJUX1RSVUUoZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YS5k
YXRhKCksIGlucHV0RGF0YS5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+Zmlu
aXNoKCkpOworCisgICAgT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBpbmZsYXRlciA9IFdlYlNv
Y2tldEluZmxhdGVyOjpjcmVhdGUoOCk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmluaXRp
YWxpemUoKSk7CisgICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmFkZEJ5dGVzKGRlZmxhdGVyLT5k
YXRhKCksIGRlZmxhdGVyLT5zaXplKCkpKTsKKyAgICBBU1NFUlRfVFJVRShpbmZsYXRlci0+Zmlu
aXNoKCkpOworICAgIEVYUEVDVF9FUShpbnB1dERhdGEuc2l6ZSgpLCBpbmZsYXRlci0+c2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGlucHV0RGF0YS5kYXRhKCksIGluZmxhdGVyLT5k
YXRhKCksIGluZmxhdGVyLT5zaXplKCkpKTsKK30KKworVEVTVChXZWJTb2NrZXREZWZsYXRlclRl
c3QsIFRlc3RMYXJnZURhdGEpCit7CisgICAgT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBkZWZs
YXRlciA9IFdlYlNvY2tldERlZmxhdGVyOjpjcmVhdGUoMTUpOworICAgIEFTU0VSVF9UUlVFKGRl
ZmxhdGVyLT5pbml0aWFsaXplKCkpOworICAgIE93blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gaW5m
bGF0ZXIgPSBXZWJTb2NrZXRJbmZsYXRlcjo6Y3JlYXRlKCk7CisgICAgQVNTRVJUX1RSVUUoaW5m
bGF0ZXItPmluaXRpYWxpemUoKSk7CisgICAgVmVjdG9yPGNoYXI+IGlucHV0RGF0YSgxNiAqIDEw
MjQgKiAxMDI0KTsKKyAgICBpbnB1dERhdGEuZmlsbCgnYScpOworCisgICAgQVNTRVJUX1RSVUUo
ZGVmbGF0ZXItPmFkZEJ5dGVzKGlucHV0RGF0YS5kYXRhKCksIGlucHV0RGF0YS5zaXplKCkpKTsK
KyAgICBBU1NFUlRfVFJVRShkZWZsYXRlci0+ZmluaXNoKCkpOworICAgIEFTU0VSVF9UUlVFKGlu
ZmxhdGVyLT5hZGRCeXRlcyhkZWZsYXRlci0+ZGF0YSgpLCBkZWZsYXRlci0+c2l6ZSgpKSk7Cisg
ICAgQVNTRVJUX1RSVUUoaW5mbGF0ZXItPmZpbmlzaCgpKTsKKyAgICBFWFBFQ1RfRVEoaW5wdXRE
YXRhLnNpemUoKSwgaW5mbGF0ZXItPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChp
bnB1dERhdGEuZGF0YSgpLCBpbmZsYXRlci0+ZGF0YSgpLCBpbmZsYXRlci0+c2l6ZSgpKSk7Cit9
CisKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>