<?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>211328</bug_id>
          
          <creation_ts>2020-05-01 18:58:08 -0700</creation_ts>
          <short_desc>Allow Bitmap to use up to a UCPURegister word size for internal bit storage.</short_desc>
          <delta_ts>2020-05-05 10:13:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>211340</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>pmatos</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1648174</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-01 18:58:08 -0700</bug_when>
    <thetext>Previously, it was fixed at uint32_t.  This patch also allows it to use smaller ints (uint8_t, and uint16_t) if they will suffice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648175</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-01 18:58:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/62755865&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648176</commentid>
    <comment_count>2</comment_count>
      <attachid>398270</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-01 19:21:40 -0700</bug_when>
    <thetext>Created attachment 398270
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648178</commentid>
    <comment_count>3</comment_count>
      <attachid>398271</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-01 19:30:35 -0700</bug_when>
    <thetext>Created attachment 398271
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648179</commentid>
    <comment_count>4</comment_count>
      <attachid>398272</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-01 19:39:16 -0700</bug_when>
    <thetext>Created attachment 398272
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648182</commentid>
    <comment_count>5</comment_count>
      <attachid>398272</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-01 20:03:00 -0700</bug_when>
    <thetext>Comment on attachment 398272
proposed patch.

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

r=me

&gt; Source/WTF/wtf/Bitmap.h:51
&gt; +template&lt;size_t size, typename = std::true_type&gt;
&gt; +struct BitmapWordType {
&gt; +    using type = UCPURegister;
&gt; +};
&gt; +
&gt; +template&lt;size_t size&gt;
&gt; +struct BitmapWordType&lt;size, std::enable_if_t&lt;(size &lt;= 8), std::true_type&gt;&gt; {
&gt; +    using type = uint8_t;
&gt; +};
&gt; +
&gt; +template&lt;size_t size&gt;
&gt; +struct BitmapWordType&lt;size, std::enable_if_t&lt;(size &gt; 8 &amp;&amp; size &lt;= 16), std::true_type&gt;&gt; {
&gt; +    using type = uint16_t;
&gt; +};
&gt; +
&gt; +template&lt;size_t size&gt;
&gt; +struct BitmapWordType&lt;size, std::enable_if_t&lt;(size &gt; 16 &amp;&amp; size &lt;= 32 &amp;&amp; sizeof(UCPURegister) &gt; sizeof(uint32_t)), std::true_type&gt;&gt; {
&gt; +    using type = uint32_t;
&gt; +};
&gt; +
&gt; +template&lt;size_t bitmapSize, typename WordType = typename BitmapWordType&lt;bitmapSize&gt;::type&gt;

You can use std::conditional&lt;&gt;.

template&lt;size_t size&gt;
using BitmapWordType = std::conditional_t&lt;size &lt;= 8,
    uint8_t,
    std::conditional_t&lt;size &lt;= 16,
        uint16_t,
        std::conditional_t&lt;size &lt;= 32 &amp;&amp; sizeof(UCPURegister) &gt; sizeof(uint32_t),
            uint32_t,
            UCPURegister&gt;&gt;&gt;;

And,

template&lt;size_t bitmapSize, typename WordType = BitmapWordType&lt;bitmapSize&gt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648184</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-01 20:08:27 -0700</bug_when>
    <thetext>Also, can you ensure that using `uint8_t`, `uint16_t` is better than using `uint32_t` in ARM etc. in terms of performance? And is it OK to use `uint8_t` and `uint16_t` while Bitmap needs to support concurrentTestAndSet etc.?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648185</commentid>
    <comment_count>7</comment_count>
      <attachid>398272</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-01 20:10:50 -0700</bug_when>
    <thetext>Comment on attachment 398272
proposed patch.

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

&gt;&gt; Source/WTF/wtf/Bitmap.h:51
&gt;&gt; +template&lt;size_t bitmapSize, typename WordType = typename BitmapWordType&lt;bitmapSize&gt;::type&gt;
&gt; 
&gt; You can use std::conditional&lt;&gt;.
&gt; 
&gt; template&lt;size_t size&gt;
&gt; using BitmapWordType = std::conditional_t&lt;size &lt;= 8,
&gt;     uint8_t,
&gt;     std::conditional_t&lt;size &lt;= 16,
&gt;         uint16_t,
&gt;         std::conditional_t&lt;size &lt;= 32 &amp;&amp; sizeof(UCPURegister) &gt; sizeof(uint32_t),
&gt;             uint32_t,
&gt;             UCPURegister&gt;&gt;&gt;;
&gt; 
&gt; And,
&gt; 
&gt; template&lt;size_t bitmapSize, typename WordType = BitmapWordType&lt;bitmapSize&gt;&gt;

Because of concurrentTestAndSet etc. I think Bitmap is assuming WordSize for a default type. I think it is better that we just specialize Bitmap with UCPURegister only when we want and keep Bitmap&apos;s default parameter `uint32_t`. What do you think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648192</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-01 21:37:10 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #7)
&gt; Because of concurrentTestAndSet etc. I think Bitmap is assuming WordSize for
&gt; a default type. I think it is better that we just specialize Bitmap with
&gt; UCPURegister only when we want and keep Bitmap&apos;s default parameter
&gt; `uint32_t`. What do you think of?

I talked to Yusuke offline.  We&apos;ll stick with uint32_t for Bitmap of size 32 or under.  We&apos;ll use UCPURegister for larger bitmaps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648203</commentid>
    <comment_count>9</comment_count>
      <attachid>398280</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-01 22:51:21 -0700</bug_when>
    <thetext>Created attachment 398280
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648249</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-02 10:01:47 -0700</bug_when>
    <thetext>I can reproduce the editing/undo-manager/undo-manager-delete-stale-undo-items.html failure locally is without my patch.  Filed https://bugs.webkit.org/show_bug.cgi?id=211340.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648250</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-02 10:04:25 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r261050: &lt;http://trac.webkit.org/r261050&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648256</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-02 12:08:11 -0700</bug_when>
    <thetext>Landed missing file in r261051: &lt;http://trac.webkit.org/r261051&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648284</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-02 14:24:07 -0700</bug_when>
    <thetext>Rolled out in r261055: &lt;http://trac.webkit.org/r261055&gt; while I investigate what&apos;s going on with editing/undo-manager/undo-manager-delete-stale-undo-items.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648421</commentid>
    <comment_count>14</comment_count>
      <attachid>398280</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-03 18:46:11 -0700</bug_when>
    <thetext>Comment on attachment 398280
patch for landing.

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

&gt; Source/WTF/wtf/StdIntExtras.h:34
&gt; +#if USE(JSVALUE64)
&gt; +using CPURegister = int64_t;
&gt; +using UCPURegister = uint64_t;

nit: I know this is how things used to be, but it really doesn&apos;t feel like this should be keyed of JSVALUE64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648422</commentid>
    <comment_count>15</comment_count>
      <attachid>398280</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-03 18:47:08 -0700</bug_when>
    <thetext>Comment on attachment 398280
patch for landing.

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

&gt; Source/WTF/wtf/Bitmap.h:33
&gt; +template&lt;size_t size&gt;
&gt; +using BitmapWordType = std::conditional_t&lt;(size &lt;= 32 &amp;&amp; sizeof(UCPURegister) &gt; sizeof(uint32_t)), uint32_t, UCPURegister&gt;;

Why not have this inside the class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648424</commentid>
    <comment_count>16</comment_count>
      <attachid>398280</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-03 18:50:29 -0700</bug_when>
    <thetext>Comment on attachment 398280
patch for landing.

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

&gt;&gt; Source/WTF/wtf/Bitmap.h:33
&gt;&gt; +using BitmapWordType = std::conditional_t&lt;(size &lt;= 32 &amp;&amp; sizeof(UCPURegister) &gt; sizeof(uint32_t)), uint32_t, UCPURegister&gt;;
&gt; 
&gt; Why not have this inside the class?

Because it is used to provide the default type of the BitMap class.  Or do you mean why not just use the std::conditional as the default value?  Because it is a very long expression, and therefore makes the code less readable.

&gt;&gt; Source/WTF/wtf/StdIntExtras.h:34
&gt;&gt; +using UCPURegister = uint64_t;
&gt; 
&gt; nit: I know this is how things used to be, but it really doesn&apos;t feel like this should be keyed of JSVALUE64

Got any better suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648623</commentid>
    <comment_count>17</comment_count>
      <attachid>398280</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-04 11:00:33 -0700</bug_when>
    <thetext>Comment on attachment 398280
patch for landing.

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

&gt;&gt;&gt; Source/WTF/wtf/Bitmap.h:33
&gt;&gt;&gt; +using BitmapWordType = std::conditional_t&lt;(size &lt;= 32 &amp;&amp; sizeof(UCPURegister) &gt; sizeof(uint32_t)), uint32_t, UCPURegister&gt;;
&gt;&gt; 
&gt;&gt; Why not have this inside the class?
&gt; 
&gt; Because it is used to provide the default type of the BitMap class.  Or do you mean why not just use the std::conditional as the default value?  Because it is a very long expression, and therefore makes the code less readable.

I see, sorry. I misread the pre-existing code.

&gt;&gt;&gt; Source/WTF/wtf/StdIntExtras.h:34
&gt;&gt;&gt; +using UCPURegister = uint64_t;
&gt;&gt; 
&gt;&gt; nit: I know this is how things used to be, but it really doesn&apos;t feel like this should be keyed of JSVALUE64
&gt; 
&gt; Got any better suggestions?

arm64 || x86_64?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648971</commentid>
    <comment_count>18</comment_count>
      <attachid>398474</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-04 23:06:38 -0700</bug_when>
    <thetext>Created attachment 398474
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648985</commentid>
    <comment_count>19</comment_count>
      <attachid>398478</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-04 23:44:39 -0700</bug_when>
    <thetext>Created attachment 398478
proposed patch w/ Win build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648992</commentid>
    <comment_count>20</comment_count>
      <attachid>398474</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-04 23:57:19 -0700</bug_when>
    <thetext>Comment on attachment 398474
proposed patch.

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

r=me with comment

&gt; Source/WTF/wtf/PlatformCPU.h:320
&gt; +/* CPU general purpose register width. */
&gt; +#if CPU(ARM64) || CPU(X86_64) || CPU(MIPS64) || CPU(PPC64)
&gt; +#define WTF_CPU_REGISTER64 1
&gt; +#elif CPU(ARM) || CPU(X86) || CPU(MIPS) || CPU(PPC)
&gt; +#define WTF_CPU_REGISTER32 1
&gt; +#else
&gt; +#error &quot;Unknown register width&quot;

This does not work since we support CPU(UNKNOWN) too.
I think that REGISTER64 and JSVALUE64 must be the same. If you define REGISTER64 here, I think we should define JSVALUE64 as,

#if CPU(REGISTER64)
#define WTF_USE_JSVALUE64
...

Can we just define this as,

#if !defined(WTF_CPU_REGISTER64) &amp;&amp; !defined(WTF_CPU_REGISTER32)
#if CPU(ADDRESS64) || CPU(ARM64)
#define WTF_CPU_REGISTER64 1
#else
#define WTF_CPU_REGISTER32 1
#endif
#endif

And define USE_JSVALUE64 as,

#if CPU(REGISTER64)
#define USE_JSVALUE64
#else
#define USE_JSVALUE32
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648993</commentid>
    <comment_count>21</comment_count>
      <attachid>398474</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-04 23:58:15 -0700</bug_when>
    <thetext>Comment on attachment 398474
proposed patch.

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

&gt;&gt; Source/WTF/wtf/PlatformCPU.h:320
&gt;&gt; +#error &quot;Unknown register width&quot;
&gt; 
&gt; This does not work since we support CPU(UNKNOWN) too.
&gt; I think that REGISTER64 and JSVALUE64 must be the same. If you define REGISTER64 here, I think we should define JSVALUE64 as,
&gt; 
&gt; #if CPU(REGISTER64)
&gt; #define WTF_USE_JSVALUE64
&gt; ...
&gt; 
&gt; Can we just define this as,
&gt; 
&gt; #if !defined(WTF_CPU_REGISTER64) &amp;&amp; !defined(WTF_CPU_REGISTER32)
&gt; #if CPU(ADDRESS64) || CPU(ARM64)
&gt; #define WTF_CPU_REGISTER64 1
&gt; #else
&gt; #define WTF_CPU_REGISTER32 1
&gt; #endif
&gt; #endif
&gt; 
&gt; And define USE_JSVALUE64 as,
&gt; 
&gt; #if CPU(REGISTER64)
&gt; #define USE_JSVALUE64
&gt; #else
&gt; #define USE_JSVALUE32
&gt; #endif

#if CPU(REGISTER64)
#define USE_JSVALUE64 1
#else
#define USE_JSVALUE32 1
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649001</commentid>
    <comment_count>22</comment_count>
      <attachid>398484</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-05 00:25:07 -0700</bug_when>
    <thetext>Created attachment 398484
patch for landing.

Thanks for the review.  I&apos;ve applied the suggested change to the definition of CPU(REGISTER64) and CPU(REGISTER32).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649210</commentid>
    <comment_count>23</comment_count>
      <attachid>398512</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-05 08:41:53 -0700</bug_when>
    <thetext>Created attachment 398512
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649249</commentid>
    <comment_count>24</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-05 10:09:17 -0700</bug_when>
    <thetext>Landed in r261179: &lt;http://trac.webkit.org/r261179&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398270</attachid>
            <date>2020-05-01 19:21:40 -0700</date>
            <delta_ts>2020-05-01 19:30:35 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-211328.patch</filename>
            <type>text/plain</type>
            <size>8108</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA1LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVyIHdvcmQgc2l6ZSBmb3IgaW50
ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyNzU1ODY1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVy
L0NQVS5oOgorCiAyMDIwLTA1LTAxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgog
CiAgICAgICAgIEhhdmUgYSB0aHJlYWQgbG9jYWwgY2FjaGUgZm9yIHRoZSBXYXNtIExMSW50IGJ5
dGVjb2RlIGJ1ZmZlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCShy
ZXZpc2lvbiAyNjEwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTcgKzI3LDEwIEBACiAKICNpbmNsdWRlICJPcHRpb25z
LmgiCiAjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLXVzaW5n
IENQVVJlZ2lzdGVyID0gaW50NjRfdDsKLXVzaW5nIFVDUFVSZWdpc3RlciA9IHVpbnQ2NF90Owot
I2Vsc2UKLXVzaW5nIENQVVJlZ2lzdGVyID0gaW50MzJfdDsKLXVzaW5nIFVDUFVSZWdpc3RlciA9
IHVpbnQzMl90OwotI2VuZGlmCi0KIHVzaW5nIFVDUFVTdHJpY3RJbnQzMiA9IFVDUFVSZWdpc3Rl
cjsKIAogY29uc3RleHByIGJvb2wgaXNBUk12N0lESVZTdXBwb3J0ZWQoKQpJbmRleDogU291cmNl
L1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2MTAwOCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMjAtMDUtMDEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEFsbG93IEJpdG1hcCB0byB1c2UgdXAgdG8gYSBVQ1BVUmVnaXN0ZXIgd29yZCBz
aXplIGZvciBpbnRlcm5hbCBiaXQgc3RvcmFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjI3
NTU4NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
MS4gTW92ZWQgdGhlIGRlZmluaXRpb24gb2YgQ1BVUmVnaXN0ZXIgYW5kIFVDUFVSZWdpc3RlciBk
b3duIGludG8gV1RGLgorICAgICAgICAyLiBVcGRhdGVkIEJpdG1hcCBzbyB0aGF0IGl0IHdpbGwg
YXV0b21hdGljYWxseSBjaG9vc2UgdGhlIG1pbmltYWwgcmVxdWlyZWQKKyAgICAgICAgICAgd29y
ZCBzaXplIGZvciB0aGUgbnVtYmVyIG9mIGJpdHMgaXQgbmVlZHMgdG8gc3RvcmUuICBUaGlzIG1l
YW5zIHRoZSBCaXRtYXAKKyAgICAgICAgICAgY2FuIGF1dG9tYXRpY2FsbHkgY2hvb3NlIGEgV29y
ZFR5cGUgZnJvbSB1aW50OF90IHVwIHRvIFVDUFVSZWdpc3Rlci4KKyAgICAgICAgICAgUHJldmlv
dXNseSwgdGhlIFdvcmRUeXBlIGlzIGFsd2F5cyB1aW50MzJfdCBieSBkZWZhdWx0LgorCisgICAg
ICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0JpdG1h
cC5oOgorICAgICAgICAqIHd0Zi9TdGRJbnRFeHRyYXMuaDogQWRkZWQuCisKIDIwMjAtMDUtMDEg
IERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBVc2UgZXhw
b3J0IG1hY3JvcyBvbiBhbGwgcGxhdGZvcm1zCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MTAwOCkKKysrIFNvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc1MSw2ICs3NTEsNyBA
QAogCQlGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmFrZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxvY2F0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcmJpZEhlYXBBbGxvY2F0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAv
KiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRlbnRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTk3RjZBODI0NUNFNUREMDBDNjNGQzYg
LyogU3RkSW50RXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0ZElu
dEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2QjAzNTIwMUJFMEI2
MDBCOTU4QzEgLyogUG9pbnRlclByZXBhcmF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQb2ludGVyUHJlcGFyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM0LDYgKzEyMzUsNyBAQAogCQkJCUZFREFDRDND
MTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8sCiAJCQkJMzEzRURFQzk3NzhFNDlD
OUJFQTkxQ0ZDIC8qIFN0YWNrVHJhY2UuY3BwICovLAogCQkJCUVGN0Q2Q0Q1OUQ4NjQyQThBMERB
ODZBRCAvKiBTdGFja1RyYWNlLmggKi8sCisJCQkJRkU5N0Y2QTgyNDVDRTVERDAwQzYzRkM2IC8q
IFN0ZEludEV4dHJhcy5oICovLAogCQkJCUE4QTQ3MzExMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGRM
aWJFeHRyYXMuaCAqLywKIAkJCQlGRjBBNDM2NTg4OTU0RjNDQjA3REJFQ0EgLyogU3RkTGlzdC5o
ICovLAogCQkJCTM5MUJENkJBNEQxNjRGRDI5NEY5QTkzRCAvKiBTdGRNYXAuaCAqLywKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Jp
dG1hcC5oCShyZXZpc2lvbiAyNjEwMDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAx
MC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKQEAgLTIyLDE3ICsyMiwzNyBAQAogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHd0Zi9B
dG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
U3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUg
PHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlID0gdWludDMyX3Q+Cit0
ZW1wbGF0ZTxzaXplX3Qgc2l6ZSwgdHlwZW5hbWUgPSBzdGQ6OnRydWVfdHlwZT4KK3N0cnVjdCBC
aXRtYXBXb3JkVHlwZSB7CisgICAgdXNpbmcgdHlwZSA9IFVDUFVSZWdpc3RlcjsKK307CisKK3Rl
bXBsYXRlPHNpemVfdCBzaXplPgorc3RydWN0IEJpdG1hcFdvcmRUeXBlPHNpemUsIHN0ZDo6ZW5h
YmxlX2lmX3Q8KHNpemUgPD0gOCksIHN0ZDo6dHJ1ZV90eXBlPj4geworICAgIHVzaW5nIHR5cGUg
PSB1aW50OF90OworfTsKKwordGVtcGxhdGU8c2l6ZV90IHNpemU+CitzdHJ1Y3QgQml0bWFwV29y
ZFR5cGU8c2l6ZSwgc3RkOjplbmFibGVfaWZfdDwoc2l6ZSA+IDggJiYgc2l6ZSA8PSAxNiksIHN0
ZDo6dHJ1ZV90eXBlPj4geworICAgIHVzaW5nIHR5cGUgPSB1aW50MTZfdDsKK307CisKK3RlbXBs
YXRlPHNpemVfdCBzaXplPgorc3RydWN0IEJpdG1hcFdvcmRUeXBlPHNpemUsIHN0ZDo6ZW5hYmxl
X2lmX3Q8KHNpemUgPiAxNiAmJiBzaXplIDw9IDMyICYmIHNpemVvZihVQ1BVUmVnaXN0ZXIpID4g
c2l6ZW9mKHVpbnQzMl90KSksIHN0ZDo6dHJ1ZV90eXBlPj4geworICAgIHVzaW5nIHR5cGUgPSB1
aW50MzJfdDsKK307CisKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3Jk
VHlwZSA9IHR5cGVuYW1lIEJpdG1hcFdvcmRUeXBlPGJpdG1hcFNpemU+Ojp0eXBlPgogY2xhc3Mg
Qml0bWFwIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAKLSAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihXb3JkVHlwZSkgPD0gc2l6ZW9mKHVuc2lnbmVkKSwgIldvcmRU
eXBlIG11c3Qgbm90IGJlIGJpZ2dlciB0aGFuIHVuc2lnbmVkIik7CisgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoV29yZFR5cGUpIDw9IHNpemVvZihVQ1BVUmVnaXN0ZXIpLCAiV29yZFR5cGUgbXVz
dCBub3QgYmUgYmlnZ2VyIHRoYW4gdGhlIENQVSBhdG9taWMgd29yZCBzaXplIik7CiBwdWJsaWM6
CiAgICAgY29uc3RleHByIEJpdG1hcCgpOwogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGRJbnRF
eHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdGRJbnRFeHRyYXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TdGRJbnRFeHRyYXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxjc3RkaW50PgorCituYW1lc3BhY2Ug
V1RGIHsKKworI2lmIFVTRShKU1ZBTFVFNjQpCit1c2luZyBDUFVSZWdpc3RlciA9IGludDY0X3Q7
Cit1c2luZyBVQ1BVUmVnaXN0ZXIgPSB1aW50NjRfdDsKKyNlbHNlCit1c2luZyBDUFVSZWdpc3Rl
ciA9IGludDMyX3Q7Cit1c2luZyBVQ1BVUmVnaXN0ZXIgPSB1aW50MzJfdDsKKyNlbmRpZgorCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDUFVSZWdpc3RlcjsKK3VzaW5nIFdURjo6
VUNQVVJlZ2lzdGVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398271</attachid>
            <date>2020-05-01 19:30:35 -0700</date>
            <delta_ts>2020-05-01 19:31:37 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-211328.patch</filename>
            <type>text/plain</type>
            <size>8357</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA1LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVyIHdvcmQgc2l6ZSBmb3IgaW50
ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyNzU1ODY1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVy
L0NQVS5oOgorCiAyMDIwLTA1LTAxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgog
CiAgICAgICAgIEhhdmUgYSB0aHJlYWQgbG9jYWwgY2FjaGUgZm9yIHRoZSBXYXNtIExMSW50IGJ5
dGVjb2RlIGJ1ZmZlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCShy
ZXZpc2lvbiAyNjEwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTcgKzI3LDEwIEBACiAKICNpbmNsdWRlICJPcHRpb25z
LmgiCiAjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLXVzaW5n
IENQVVJlZ2lzdGVyID0gaW50NjRfdDsKLXVzaW5nIFVDUFVSZWdpc3RlciA9IHVpbnQ2NF90Owot
I2Vsc2UKLXVzaW5nIENQVVJlZ2lzdGVyID0gaW50MzJfdDsKLXVzaW5nIFVDUFVSZWdpc3RlciA9
IHVpbnQzMl90OwotI2VuZGlmCi0KIHVzaW5nIFVDUFVTdHJpY3RJbnQzMiA9IFVDUFVSZWdpc3Rl
cjsKIAogY29uc3RleHByIGJvb2wgaXNBUk12N0lESVZTdXBwb3J0ZWQoKQpJbmRleDogU291cmNl
L1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2MTAwOCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMjAtMDUtMDEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEFsbG93IEJpdG1hcCB0byB1c2UgdXAgdG8gYSBVQ1BVUmVnaXN0ZXIgd29yZCBz
aXplIGZvciBpbnRlcm5hbCBiaXQgc3RvcmFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjI3
NTU4NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
MS4gTW92ZWQgdGhlIGRlZmluaXRpb24gb2YgQ1BVUmVnaXN0ZXIgYW5kIFVDUFVSZWdpc3RlciBk
b3duIGludG8gV1RGLgorICAgICAgICAyLiBVcGRhdGVkIEJpdG1hcCBzbyB0aGF0IGl0IHdpbGwg
YXV0b21hdGljYWxseSBjaG9vc2UgdGhlIG1pbmltYWwgcmVxdWlyZWQKKyAgICAgICAgICAgd29y
ZCBzaXplIGZvciB0aGUgbnVtYmVyIG9mIGJpdHMgaXQgbmVlZHMgdG8gc3RvcmUuICBUaGlzIG1l
YW5zIHRoZSBCaXRtYXAKKyAgICAgICAgICAgY2FuIGF1dG9tYXRpY2FsbHkgY2hvb3NlIGEgV29y
ZFR5cGUgZnJvbSB1aW50OF90IHVwIHRvIFVDUFVSZWdpc3Rlci4KKyAgICAgICAgICAgUHJldmlv
dXNseSwgdGhlIFdvcmRUeXBlIGlzIGFsd2F5cyB1aW50MzJfdCBieSBkZWZhdWx0LgorCisgICAg
ICAgIFRoaXMgc2hvdWxkIGltcHJvdmUgcGVyZiB3aXRoIHVzZSBvbiBCaXRtYXAgb24gNjQtYml0
IHBsYXRmb3Jtcy4gIFRoZSBzaXplCisgICAgICAgIG9wdGltaXphdGlvbiBpcyBuZWNlc3Nhcnkg
dG8gcHJldmVudCBibG9hdCBvbiA2NC1iaXQgcGxhdGZvcm1zIHdoaWNoIHdvdWxkIGhhdmUKKyAg
ICAgICAgcmVzdWx0ZWQgaWYgd2Ugc2ltcGx5IHNldCB0aGUgZGVmYXVsdCB0byBhbHdheXMgYmUg
VUNQVVJlZ2lzdGVyLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogd3RmL0JpdG1hcC5oOgorICAgICAgICAqIHd0Zi9TdGRJbnRFeHRyYXMuaDog
QWRkZWQuCisKIDIwMjAtMDUtMDEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNv
bT4KIAogICAgICAgICBVc2UgZXhwb3J0IG1hY3JvcyBvbiBhbGwgcGxhdGZvcm1zCkluZGV4OiBT
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MTAwOCkK
KysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTc1MSw2ICs3NTEsNyBAQAogCQlGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFr
ZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFrZWRQdHIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8qIEZv
cmJpZEhlYXBBbGxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZv
cmJpZEhlYXBBbGxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODky
NUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbmRlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTk3
RjZBODI0NUNFNUREMDBDNjNGQzYgLyogU3RkSW50RXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0ZEludEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRUI2QjAzNTIwMUJFMEI2MDBCOTU4QzEgLyogUG9pbnRlclByZXBhcmF0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2ludGVyUHJlcGFyYXRpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBT
dGFja1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNr
U3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQzE2MzBGODNG
MDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdGFja1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM0LDYgKzEy
MzUsNyBAQAogCQkJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8s
CiAJCQkJMzEzRURFQzk3NzhFNDlDOUJFQTkxQ0ZDIC8qIFN0YWNrVHJhY2UuY3BwICovLAogCQkJ
CUVGN0Q2Q0Q1OUQ4NjQyQThBMERBODZBRCAvKiBTdGFja1RyYWNlLmggKi8sCisJCQkJRkU5N0Y2
QTgyNDVDRTVERDAwQzYzRkM2IC8qIFN0ZEludEV4dHJhcy5oICovLAogCQkJCUE4QTQ3MzExMTUx
QTgyNUIwMDQxMjNGRiAvKiBTdGRMaWJFeHRyYXMuaCAqLywKIAkJCQlGRjBBNDM2NTg4OTU0RjND
QjA3REJFQ0EgLyogU3RkTGlzdC5oICovLAogCQkJCTM5MUJENkJBNEQxNjRGRDI5NEY5QTkzRCAv
KiBTdGRNYXAuaCAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCShyZXZpc2lvbiAyNjEwMDgpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9CaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDE3ICsyMiwzNyBAQAogI2luY2x1ZGUgPGFy
cmF5PgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgotI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlID0gdWludDMyX3Q+Cit0ZW1wbGF0ZTxzaXplX3Qgc2l6ZSwgdHlwZW5hbWUgPSBzdGQ6
OnRydWVfdHlwZT4KK3N0cnVjdCBCaXRtYXBXb3JkVHlwZSB7CisgICAgdXNpbmcgdHlwZSA9IFVD
UFVSZWdpc3RlcjsKK307CisKK3RlbXBsYXRlPHNpemVfdCBzaXplPgorc3RydWN0IEJpdG1hcFdv
cmRUeXBlPHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8KHNpemUgPD0gOCksIHN0ZDo6dHJ1ZV90eXBl
Pj4geworICAgIHVzaW5nIHR5cGUgPSB1aW50OF90OworfTsKKwordGVtcGxhdGU8c2l6ZV90IHNp
emU+CitzdHJ1Y3QgQml0bWFwV29yZFR5cGU8c2l6ZSwgc3RkOjplbmFibGVfaWZfdDwoc2l6ZSA+
IDggJiYgc2l6ZSA8PSAxNiksIHN0ZDo6dHJ1ZV90eXBlPj4geworICAgIHVzaW5nIHR5cGUgPSB1
aW50MTZfdDsKK307CisKK3RlbXBsYXRlPHNpemVfdCBzaXplPgorc3RydWN0IEJpdG1hcFdvcmRU
eXBlPHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8KHNpemUgPiAxNiAmJiBzaXplIDw9IDMyICYmIHNp
emVvZihVQ1BVUmVnaXN0ZXIpID4gc2l6ZW9mKHVpbnQzMl90KSksIHN0ZDo6dHJ1ZV90eXBlPj4g
eworICAgIHVzaW5nIHR5cGUgPSB1aW50MzJfdDsKK307CisKK3RlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZSA9IHR5cGVuYW1lIEJpdG1hcFdvcmRUeXBlPGJpdG1h
cFNpemU+Ojp0eXBlPgogY2xhc3MgQml0bWFwIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICAKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXb3JkVHlwZSkgPD0gc2l6
ZW9mKHVuc2lnbmVkKSwgIldvcmRUeXBlIG11c3Qgbm90IGJlIGJpZ2dlciB0aGFuIHVuc2lnbmVk
Iik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV29yZFR5cGUpIDw9IHNpemVvZihVQ1BVUmVn
aXN0ZXIpLCAiV29yZFR5cGUgbXVzdCBub3QgYmUgYmlnZ2VyIHRoYW4gdGhlIENQVSBhdG9taWMg
d29yZCBzaXplIik7CiBwdWJsaWM6CiAgICAgY29uc3RleHByIEJpdG1hcCgpOwogCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9TdGRJbnRFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9TdGRJbnRFeHRyYXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TdGRJbnRF
eHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxj
c3RkaW50PgorCituYW1lc3BhY2UgV1RGIHsKKworI2lmIFVTRShKU1ZBTFVFNjQpCit1c2luZyBD
UFVSZWdpc3RlciA9IGludDY0X3Q7Cit1c2luZyBVQ1BVUmVnaXN0ZXIgPSB1aW50NjRfdDsKKyNl
bHNlCit1c2luZyBDUFVSZWdpc3RlciA9IGludDMyX3Q7Cit1c2luZyBVQ1BVUmVnaXN0ZXIgPSB1
aW50MzJfdDsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDUFVS
ZWdpc3RlcjsKK3VzaW5nIFdURjo6VUNQVVJlZ2lzdGVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398272</attachid>
            <date>2020-05-01 19:39:16 -0700</date>
            <delta_ts>2020-05-01 22:51:21 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-211328.patch</filename>
            <type>text/plain</type>
            <size>8788</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA1LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVyIHdvcmQgc2l6ZSBmb3IgaW50
ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyNzU1ODY1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVy
L0NQVS5oOgorCiAyMDIwLTA1LTAxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgog
CiAgICAgICAgIEhhdmUgYSB0aHJlYWQgbG9jYWwgY2FjaGUgZm9yIHRoZSBXYXNtIExMSW50IGJ5
dGVjb2RlIGJ1ZmZlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCShy
ZXZpc2lvbiAyNjEwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTcgKzI3LDEwIEBACiAKICNpbmNsdWRlICJPcHRpb25z
LmgiCiAjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KKyNpbmNsdWRlIDx3dGYvU3RkSW50
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLXVzaW5n
IENQVVJlZ2lzdGVyID0gaW50NjRfdDsKLXVzaW5nIFVDUFVSZWdpc3RlciA9IHVpbnQ2NF90Owot
I2Vsc2UKLXVzaW5nIENQVVJlZ2lzdGVyID0gaW50MzJfdDsKLXVzaW5nIFVDUFVSZWdpc3RlciA9
IHVpbnQzMl90OwotI2VuZGlmCi0KIHVzaW5nIFVDUFVTdHJpY3RJbnQzMiA9IFVDUFVSZWdpc3Rl
cjsKIAogY29uc3RleHByIGJvb2wgaXNBUk12N0lESVZTdXBwb3J0ZWQoKQpJbmRleDogU291cmNl
L1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2MTA0MikKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMjAtMDUtMDEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEFsbG93IEJpdG1hcCB0byB1c2UgdXAgdG8gYSBVQ1BVUmVnaXN0ZXIgd29yZCBz
aXplIGZvciBpbnRlcm5hbCBiaXQgc3RvcmFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjI3
NTU4NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
MS4gTW92ZWQgdGhlIGRlZmluaXRpb24gb2YgQ1BVUmVnaXN0ZXIgYW5kIFVDUFVSZWdpc3RlciBk
b3duIGludG8gV1RGLgorICAgICAgICAyLiBVcGRhdGVkIEJpdG1hcCBzbyB0aGF0IGl0IHdpbGwg
YXV0b21hdGljYWxseSBjaG9vc2UgdGhlIG1pbmltYWwgcmVxdWlyZWQKKyAgICAgICAgICAgd29y
ZCBzaXplIGZvciB0aGUgbnVtYmVyIG9mIGJpdHMgaXQgbmVlZHMgdG8gc3RvcmUuICBUaGlzIG1l
YW5zIHRoZSBCaXRtYXAKKyAgICAgICAgICAgY2FuIGF1dG9tYXRpY2FsbHkgY2hvb3NlIGEgV29y
ZFR5cGUgZnJvbSB1aW50OF90IHVwIHRvIFVDUFVSZWdpc3Rlci4KKyAgICAgICAgICAgUHJldmlv
dXNseSwgdGhlIFdvcmRUeXBlIGlzIGFsd2F5cyB1aW50MzJfdCBieSBkZWZhdWx0LgorCisgICAg
ICAgIFRoaXMgc2hvdWxkIGltcHJvdmUgcGVyZiB3aXRoIHVzZSBvZiBCaXRtYXAgb24gNjQtYml0
IHBsYXRmb3Jtcy4gIFRoZSBzaXplCisgICAgICAgIG9wdGltaXphdGlvbiBpcyBuZWNlc3Nhcnkg
dG8gcHJldmVudCBibG9hdCBvbiA2NC1iaXQgcGxhdGZvcm1zIHdoaWNoIHdvdWxkIGhhdmUKKyAg
ICAgICAgcmVzdWx0ZWQgaWYgd2Ugc2ltcGx5IHNldCB0aGUgZGVmYXVsdCB0byBhbHdheXMgYmUg
VUNQVVJlZ2lzdGVyLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogd3RmL0JpdG1hcC5oOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiB3dGYvU3RkSW50RXh0cmFzLmg6IEFkZGVkLgorCiAyMDIwLTA1LTAxICBTYWFt
IEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgYSB0aHJlYWQgbG9j
YWwgY2FjaGUgZm9yIHRoZSBXYXNtIExMSW50IGJ5dGVjb2RlIGJ1ZmZlcgpJbmRleDogU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjEwMDgpCisrKyBT
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC03NTEsNiArNzUxLDcgQEAKIAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODZBODc0MUU1OTQ0MDIwMDExMUJCRiAvKiBGb3JiaWRI
ZWFwQWxsb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JiaWRI
ZWFwQWxsb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg5MjVBRjFE
MDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5kZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU5N0Y2QTgy
NDVDRTVERDAwQzYzRkM2IC8qIFN0ZEludEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdGRJbnRFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkVCNkIwMzUyMDFCRTBCNjAwQjk1OEMxIC8qIFBvaW50ZXJQcmVwYXJhdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRlclByZXBhcmF0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tT
dGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0YXRz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5
NjM0IC8qIFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rh
Y2tTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzNCw2ICsxMjM1LDcg
QEAKIAkJCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovLAogCQkJ
CTMxM0VERUM5Nzc4RTQ5QzlCRUE5MUNGQyAvKiBTdGFja1RyYWNlLmNwcCAqLywKIAkJCQlFRjdE
NkNENTlEODY0MkE4QTBEQTg2QUQgLyogU3RhY2tUcmFjZS5oICovLAorCQkJCUZFOTdGNkE4MjQ1
Q0U1REQwMEM2M0ZDNiAvKiBTdGRJbnRFeHRyYXMuaCAqLywKIAkJCQlBOEE0NzMxMTE1MUE4MjVC
MDA0MTIzRkYgLyogU3RkTGliRXh0cmFzLmggKi8sCiAJCQkJRkYwQTQzNjU4ODk1NEYzQ0IwN0RC
RUNBIC8qIFN0ZExpc3QuaCAqLywKIAkJCQkzOTFCRDZCQTREMTY0RkQyOTRGOUE5M0QgLyogU3Rk
TWFwLmggKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAkocmV2aXNpb24gMjYxMDA4KQorKysgU291cmNlL1dURi93
dGYvQml0bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHly
aWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMiwxNyArMjIsMzcgQEAKICNpbmNsdWRlIDxhcnJheT4K
ICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdURiB7CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZSA9IHVpbnQzMl90PgordGVtcGxhdGU8c2l6ZV90IHNpemUsIHR5cGVuYW1lID0gc3RkOjp0cnVl
X3R5cGU+CitzdHJ1Y3QgQml0bWFwV29yZFR5cGUgeworICAgIHVzaW5nIHR5cGUgPSBVQ1BVUmVn
aXN0ZXI7Cit9OworCit0ZW1wbGF0ZTxzaXplX3Qgc2l6ZT4KK3N0cnVjdCBCaXRtYXBXb3JkVHlw
ZTxzaXplLCBzdGQ6OmVuYWJsZV9pZl90PChzaXplIDw9IDgpLCBzdGQ6OnRydWVfdHlwZT4+IHsK
KyAgICB1c2luZyB0eXBlID0gdWludDhfdDsKK307CisKK3RlbXBsYXRlPHNpemVfdCBzaXplPgor
c3RydWN0IEJpdG1hcFdvcmRUeXBlPHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8KHNpemUgPiA4ICYm
IHNpemUgPD0gMTYpLCBzdGQ6OnRydWVfdHlwZT4+IHsKKyAgICB1c2luZyB0eXBlID0gdWludDE2
X3Q7Cit9OworCit0ZW1wbGF0ZTxzaXplX3Qgc2l6ZT4KK3N0cnVjdCBCaXRtYXBXb3JkVHlwZTxz
aXplLCBzdGQ6OmVuYWJsZV9pZl90PChzaXplID4gMTYgJiYgc2l6ZSA8PSAzMiAmJiBzaXplb2Yo
VUNQVVJlZ2lzdGVyKSA+IHNpemVvZih1aW50MzJfdCkpLCBzdGQ6OnRydWVfdHlwZT4+IHsKKyAg
ICB1c2luZyB0eXBlID0gdWludDMyX3Q7Cit9OworCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgdHlwZW5hbWUgV29yZFR5cGUgPSB0eXBlbmFtZSBCaXRtYXBXb3JkVHlwZTxiaXRtYXBTaXpl
Pjo6dHlwZT4KIGNsYXNzIEJpdG1hcCBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoV29yZFR5cGUpIDw9IHNpemVvZih1
bnNpZ25lZCksICJXb3JkVHlwZSBtdXN0IG5vdCBiZSBiaWdnZXIgdGhhbiB1bnNpZ25lZCIpOwor
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdvcmRUeXBlKSA8PSBzaXplb2YoVUNQVVJlZ2lzdGVy
KSwgIldvcmRUeXBlIG11c3Qgbm90IGJlIGJpZ2dlciB0aGFuIHRoZSBDUFUgYXRvbWljIHdvcmQg
c2l6ZSIpOwogcHVibGljOgogICAgIGNvbnN0ZXhwciBCaXRtYXAoKTsKIApJbmRleDogU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDI2MTAwOCkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNiArMjM4LDcgQEAgc2V0KFdURl9QVUJMSUNf
SEVBREVSUwogICAgIFN0YWNrU2hvdFByb2ZpbGVyLmgKICAgICBTdGFja1N0YXRzLmgKICAgICBT
dGFja1RyYWNlLmgKKyAgICBTdGRJbnRFeHRyYXMuaAogICAgIFN0ZExpYkV4dHJhcy5oCiAgICAg
U3RkTGlzdC5oCiAgICAgU3RkTWFwLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0ZEludEV4dHJh
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0ZEludEV4dHJhcy5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0ZEludEV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisKK25hbWVzcGFjZSBXVEYg
eworCisjaWYgVVNFKEpTVkFMVUU2NCkKK3VzaW5nIENQVVJlZ2lzdGVyID0gaW50NjRfdDsKK3Vz
aW5nIFVDUFVSZWdpc3RlciA9IHVpbnQ2NF90OworI2Vsc2UKK3VzaW5nIENQVVJlZ2lzdGVyID0g
aW50MzJfdDsKK3VzaW5nIFVDUFVSZWdpc3RlciA9IHVpbnQzMl90OworI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkNQVVJlZ2lzdGVyOwordXNpbmcgV1RGOjpVQ1BV
UmVnaXN0ZXI7Cg==
</data>
<flag name="review"
          id="413659"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398280</attachid>
            <date>2020-05-01 22:51:21 -0700</date>
            <delta_ts>2020-05-04 23:06:38 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-211328.patch</filename>
            <type>text/plain</type>
            <size>8358</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA1LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVyIHdvcmQgc2l6ZSBmb3IgaW50
ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyNzU1ODY1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBhc3NlbWJsZXIv
Q1BVLmg6CisKIDIwMjAtMDUtMDEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgSGF2ZSBhIHRocmVhZCBsb2NhbCBjYWNoZSBmb3IgdGhlIFdhc20gTExJbnQgYnl0
ZWNvZGUgYnVmZmVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgJKHJl
dmlzaW9uIDI2MTA0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNywxNyArMjcsMTAgQEAKIAogI2luY2x1ZGUgIk9wdGlvbnMu
aCIKICNpbmNsdWRlIDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRF
eHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBVU0UoSlNWQUxVRTY0KQotdXNpbmcg
Q1BVUmVnaXN0ZXIgPSBpbnQ2NF90OwotdXNpbmcgVUNQVVJlZ2lzdGVyID0gdWludDY0X3Q7Ci0j
ZWxzZQotdXNpbmcgQ1BVUmVnaXN0ZXIgPSBpbnQzMl90OwotdXNpbmcgVUNQVVJlZ2lzdGVyID0g
dWludDMyX3Q7Ci0jZW5kaWYKLQogdXNpbmcgVUNQVVN0cmljdEludDMyID0gVUNQVVJlZ2lzdGVy
OwogCiBjb25zdGV4cHIgYm9vbCBpc0FSTXY3SURJVlN1cHBvcnRlZCgpCkluZGV4OiBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNp
b24gMjYxMDQzKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNiBAQAorMjAyMC0wNS0wMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgQWxsb3cgQml0bWFwIHRvIHVzZSB1cCB0byBhIFVDUFVSZWdpc3RlciB3b3JkIHNp
emUgZm9yIGludGVybmFsIGJpdCBzdG9yYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjc1
NTg2NT4KKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIDEu
IE1vdmVkIHRoZSBkZWZpbml0aW9uIG9mIENQVVJlZ2lzdGVyIGFuZCBVQ1BVUmVnaXN0ZXIgZG93
biBpbnRvIFdURi4KKyAgICAgICAgMi4gVXBkYXRlZCBCaXRtYXAgc28gdGhhdCBpdCB3aWxsIGF1
dG9tYXRpY2FsbHkgY2hvb3NlIHRoZSBtaW5pbWFsIHJlcXVpcmVkCisgICAgICAgICAgIHdvcmQg
c2l6ZSBmb3IgdGhlIG51bWJlciBvZiBiaXRzIGl0IG5lZWRzIHRvIHN0b3JlLiAgVGhpcyBtZWFu
cyB0aGUgQml0bWFwCisgICAgICAgICAgIGNhbiBhdXRvbWF0aWNhbGx5IGNob29zZSBhIFdvcmRU
eXBlIGZyb20gdWludDhfdCB1cCB0byBVQ1BVUmVnaXN0ZXIuCisgICAgICAgICAgIFByZXZpb3Vz
bHksIHRoZSBXb3JkVHlwZSBpcyBhbHdheXMgdWludDMyX3QgYnkgZGVmYXVsdC4KKworICAgICAg
ICBUaGlzIHNob3VsZCBpbXByb3ZlIHBlcmYgd2l0aCB1c2Ugb2YgQml0bWFwIG9uIDY0LWJpdCBw
bGF0Zm9ybXMuICBUaGUgc2l6ZQorICAgICAgICBvcHRpbWl6YXRpb24gaXMgbmVjZXNzYXJ5IHRv
IHByZXZlbnQgYmxvYXQgb24gNjQtYml0IHBsYXRmb3JtcyB3aGljaCB3b3VsZCBoYXZlCisgICAg
ICAgIHJlc3VsdGVkIGlmIHdlIHNpbXBseSBzZXQgdGhlIGRlZmF1bHQgdG8gYWx3YXlzIGJlIFVD
UFVSZWdpc3Rlci4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHd0Zi9CaXRtYXAuaDoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogd3RmL1N0ZEludEV4dHJhcy5oOiBBZGRlZC4KKwogMjAyMC0wNS0wMSAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIGEgdGhyZWFkIGxvY2Fs
IGNhY2hlIGZvciB0aGUgV2FzbSBMTEludCBieXRlY29kZSBidWZmZXIKSW5kZXg6IFNvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYxMDQzKQorKysgU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NzUxLDYgKzc1MSw3IEBACiAJCUZFODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0ci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTg2QTg3NDFFNTk0NDAyMDAxMTFCQkYgLyogRm9yYmlkSGVh
cEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9yYmlkSGVh
cEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4OTI1QUYxRDAw
REFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOTdGNkE4MjQ1
Q0U1REQwMEM2M0ZDNiAvKiBTdGRJbnRFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RkSW50RXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
QjZCMDM1MjAxQkUwQjYwMEI5NThDMSAvKiBQb2ludGVyUHJlcGFyYXRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJQcmVwYXJhdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3Rh
dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYz
NCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNr
U3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMzQsNiArMTIzNSw3IEBA
CiAJCQkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLywKIAkJCQkz
MTNFREVDOTc3OEU0OUM5QkVBOTFDRkMgLyogU3RhY2tUcmFjZS5jcHAgKi8sCiAJCQkJRUY3RDZD
RDU5RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLywKKwkJCQlGRTk3RjZBODI0NUNF
NUREMDBDNjNGQzYgLyogU3RkSW50RXh0cmFzLmggKi8sCiAJCQkJQThBNDczMTExNTFBODI1QjAw
NDEyM0ZGIC8qIFN0ZExpYkV4dHJhcy5oICovLAogCQkJCUZGMEE0MzY1ODg5NTRGM0NCMDdEQkVD
QSAvKiBTdGRMaXN0LmggKi8sCiAJCQkJMzkxQkQ2QkE0RDE2NEZEMjk0RjlBOTNEIC8qIFN0ZE1h
cC5oICovLApJbmRleDogU291cmNlL1dURi93dGYvQml0bWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvQml0bWFwLmgJKHJldmlzaW9uIDI2MTA0MykKKysrIFNvdXJjZS9XVEYvd3Rm
L0JpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmln
aHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsMTcgKzIyLDIxIEBACiAjaW5jbHVkZSA8YXJyYXk+CiAj
aW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGUgPSB1aW50MzJfdD4KK3RlbXBsYXRlPHNpemVfdCBzaXpl
PgordXNpbmcgQml0bWFwV29yZFR5cGUgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8KHNpemUgPD0gMzIg
JiYgc2l6ZW9mKFVDUFVSZWdpc3RlcikgPiBzaXplb2YodWludDMyX3QpKSwgdWludDMyX3QsIFVD
UFVSZWdpc3Rlcj47CisKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3Jk
VHlwZSA9IEJpdG1hcFdvcmRUeXBlPGJpdG1hcFNpemU+PgogY2xhc3MgQml0bWFwIGZpbmFsIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAKLSAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihXb3JkVHlwZSkgPD0gc2l6ZW9mKHVuc2lnbmVkKSwgIldvcmRUeXBlIG11c3Qgbm90IGJl
IGJpZ2dlciB0aGFuIHVuc2lnbmVkIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV29yZFR5
cGUpIDw9IHNpemVvZihVQ1BVUmVnaXN0ZXIpLCAiV29yZFR5cGUgbXVzdCBub3QgYmUgYmlnZ2Vy
IHRoYW4gdGhlIENQVSBhdG9taWMgd29yZCBzaXplIik7CiBwdWJsaWM6CiAgICAgY29uc3RleHBy
IEJpdG1hcCgpOwogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjYxMDQzKQor
KysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2
ICsyMzgsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgU3RhY2tTaG90UHJvZmlsZXIu
aAogICAgIFN0YWNrU3RhdHMuaAogICAgIFN0YWNrVHJhY2UuaAorICAgIFN0ZEludEV4dHJhcy5o
CiAgICAgU3RkTGliRXh0cmFzLmgKICAgICBTdGRMaXN0LmgKICAgICBTdGRNYXAuaApJbmRleDog
U291cmNlL1dURi93dGYvU3RkSW50RXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvU3RkSW50RXh0cmFzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU3RkSW50
RXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
Y3N0ZGludD4KKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQordXNpbmcg
Q1BVUmVnaXN0ZXIgPSBpbnQ2NF90OwordXNpbmcgVUNQVVJlZ2lzdGVyID0gdWludDY0X3Q7Cisj
ZWxzZQordXNpbmcgQ1BVUmVnaXN0ZXIgPSBpbnQzMl90OwordXNpbmcgVUNQVVJlZ2lzdGVyID0g
dWludDMyX3Q7CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q1BV
UmVnaXN0ZXI7Cit1c2luZyBXVEY6OlVDUFVSZWdpc3RlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398474</attachid>
            <date>2020-05-04 23:06:38 -0700</date>
            <delta_ts>2020-05-04 23:44:39 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-211328.patch</filename>
            <type>text/plain</type>
            <size>59800</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA1LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVyIHdvcmQgc2l6ZSBmb3IgaW50
ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyNzU1ODY1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVy
L0NQVS5oOgorCiAyMDIwLTA1LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gQWRkIEBAdG9TdHJpbmdUYWcgdG8gV2ViQXNzZW1ibHkuR2xvYmFs
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgJKHJldmlzaW9uIDI2MTEz
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNywxNyArMjcsMTAgQEAKIAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRl
IDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBVU0UoSlNWQUxVRTY0KQotdXNpbmcgQ1BVUmVnaXN0ZXIg
PSBpbnQ2NF90OwotdXNpbmcgVUNQVVJlZ2lzdGVyID0gdWludDY0X3Q7Ci0jZWxzZQotdXNpbmcg
Q1BVUmVnaXN0ZXIgPSBpbnQzMl90OwotdXNpbmcgVUNQVVJlZ2lzdGVyID0gdWludDMyX3Q7Ci0j
ZW5kaWYKLQogdXNpbmcgVUNQVVN0cmljdEludDMyID0gVUNQVVJlZ2lzdGVyOwogCiBjb25zdGV4
cHIgYm9vbCBpc0FSTXY3SURJVlN1cHBvcnRlZCgpCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMTUwKQor
KysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAor
MjAyMC0wNS0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
b3cgQml0bWFwIHRvIHVzZSB1cCB0byBhIFVDUFVSZWdpc3RlciB3b3JkIHNpemUgZm9yIGludGVy
bmFsIGJpdCBzdG9yYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjExMzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjc1NTg2NT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBNb3ZlZCB0aGUg
ZGVmaW5pdGlvbiBvZiBDUFVSZWdpc3RlciBhbmQgVUNQVVJlZ2lzdGVyIGRvd24gaW50byBXVEYu
CisgICAgICAgICAgIEFkZGVkIENQVShSRUdJU1RFUjY0KSBhbmQgQ1BVKFJFR0lTVEVSMzIpIGZv
ciBkZXRlcm1pbmluZyB3aGF0IHNpemUgYSBDUFUKKyAgICAgICAgICAgZ2VuZXJhbCBwdXJwb3Nl
IHJlZ2lzdGVyIGlzLgorCisgICAgICAgIDIuIFVwZGF0ZWQgQml0bWFwIHNvIHRoYXQgaXQgd2ls
bCBhdXRvbWF0aWNhbGx5IGNob29zZSB0aGUgbWluaW1hbCByZXF1aXJlZAorICAgICAgICAgICB3
b3JkIHNpemUgZm9yIHRoZSBudW1iZXIgb2YgYml0cyBpdCBuZWVkcyB0byBzdG9yZS4gIFRoaXMg
bWVhbnMgdGhlIEJpdG1hcAorICAgICAgICAgICBjYW4gYXV0b21hdGljYWxseSBjaG9vc2UgYSBX
b3JkVHlwZSBmcm9tIHVpbnQ4X3QgdXAgdG8gVUNQVVJlZ2lzdGVyLgorICAgICAgICAgICBQcmV2
aW91c2x5LCB0aGUgV29yZFR5cGUgaXMgYWx3YXlzIHVpbnQzMl90IGJ5IGRlZmF1bHQuCisKKyAg
ICAgICAgICAgVGhpcyBzaG91bGQgaW1wcm92ZSBwZXJmIHdpdGggdXNlIG9mIEJpdG1hcCBvbiA2
NC1iaXQgcGxhdGZvcm1zLiAgVGhlIHNpemUKKyAgICAgICAgICAgb3B0aW1pemF0aW9uIGlzIG5l
Y2Vzc2FyeSB0byBwcmV2ZW50IGJsb2F0IG9uIDY0LWJpdCBwbGF0Zm9ybXMgd2hpY2ggd291bGQg
aGF2ZQorICAgICAgICAgICByZXN1bHRlZCBpZiB3ZSBzaW1wbHkgc2V0IHRoZSBkZWZhdWx0IHRv
IGFsd2F5cyBiZSBVQ1BVUmVnaXN0ZXIuCisKKyAgICAgICAgMy4gQWRkZWQgYSBjaGVjayBpbiBm
aW5kUnVuT2ZaZXJvcygpIGZvciBoYW5kbGluZyB0aGUgZWRnZSBjYXNlIHdoZXJlIHRoZQorICAg
ICAgICAgICByZXF1ZXN0ZWQgcnVuTGVuZ3RoIGV4Y2VlZHMgdGhlIGJpdG1hcFNpemUuCisKKyAg
ICAgICAgNC4gRml4ZWQgYSBidWcgaW4gY291bnQoKSB0aGF0IHdhcyB1bm5lY2Vzc2FyaWx5IGNh
c3RpbmcgdGhlIGJpdHMgdG8gdW5zaWduZWQKKyAgICAgICAgICAgaW5zdGVhZCBvZiBqdXN0IHVz
aW5nIHRoZSBCaXRtYXAgV29yZFR5cGUuICBBcyBhIHJlc3VsdCwgd2hlbiB1c2luZyBhIFdvcmRU
eXBlCisgICAgICAgICAgIG9mIHVpbnQ2NF90LCBpdCB3YXMgZGlzY2FyZGluZyBiaXRzIGZyb20g
dGhlIGNvdW50LgorCisgICAgICAgIDUuIEZpeGVkIGludmVydCgpIHRvIGxlYXZlIHRoZSBiaXRz
IGJleW9uZCBiaXRtYXBTaXplIHVudG91Y2hlZC4KKyAgICAgICAgICAgRml4ZWQgaXNGdWxsKCkg
dG8gaWdub3JlIHRoZSBiaXRzIGJleW9uZCBiaXRtYXBTaXplLgorCisgICAgICAgICAgIEJ5IGZp
eGluZyBpbnZlcnQoKSB0byBsZWF2ZSB0aG9zZSBiaXRzIGFzIDAsIGlzRW1wdHkoKSBhbmQgaGFz
aCgpIHdpbGwKKyAgICAgICAgICAgY29udGludWUgdG8gd29yay4gIE90aGVyd2lzZSwgaW52ZXJ0
aW5nIHRob3NlIGJpdHMgd2lsbCBjYXVzZSBpc0VtcHR5KCkgdG8KKyAgICAgICAgICAgYWx3YXlz
IGZhaWwsIGFuZCBoYXNoKCkncyByZXN1bHQgbWF5IGJlIGRpZmZlcmVudCBmb3IgdGhlIHNhbWUg
c2V0IG9mIGJpdAorICAgICAgICAgICB2YWx1ZXMgd2l0aGluIGJpdG1hcFNpemUuCisKKyAgICAg
ICAgICAgaXNGdWxsKCksIG9uIHRoZSBvdGhlciBoYW5kLCBjaGVja3MgZm9yIHNldCBiaXRzIGlu
IHRoZSB3b3Jkcy4gIFNpbmNlIHRoZXJlCisgICAgICAgICAgIG1heSBiZSAwIHZhbHVlZCBiaXRz
IGJleW9uZCBiaXRtYXBTaXplLCBpc0Z1bGwoKSBuZWVkcyB0byBiZSBmaXhlZCB0byBpZ25vcmUK
KyAgICAgICAgICAgdGhvc2UuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB3dGYvQml0bWFwLmg6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6
aW52ZXJ0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyBjb25zdCk6
CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y291bnQgY29uc3QpOgorICAgICAgICAoV1RGOjpX
b3JkVHlwZT46OmlzRnVsbCBjb25zdCk6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUNQVS5oOgorICAgICAgICAqIHd0Zi9TdGRJbnRFeHRyYXMu
aDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvU3RkSW50RXh0cmFzLmguCisKIDIwMjAtMDUt
MDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBub3ct
dW5uZWVkZWQgSEFWRShBQ0NFU1NJQklMSVRZX1NVUFBPUlQpCkluZGV4OiBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MTEzNSkKKysrIFNvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc1MSw2
ICs3NTEsNyBAQAogCQlGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFrZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxv
Y2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcmJpZEhlYXBBbGxv
Y2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODkyNUFGMUQwMERBRUMw
MDQ2OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmRlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTk3RjZBODI0NUNFNURE
MDBDNjNGQzYgLyogU3RkSW50RXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0ZEludEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2QjAz
NTIwMUJFMEI2MDBCOTU4QzEgLyogUG9pbnRlclByZXBhcmF0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQb2ludGVyUHJlcGFyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyog
U3RhY2tTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM0LDYgKzEyMzUsNyBAQAogCQkJ
CUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8sCiAJCQkJMzEzRURF
Qzk3NzhFNDlDOUJFQTkxQ0ZDIC8qIFN0YWNrVHJhY2UuY3BwICovLAogCQkJCUVGN0Q2Q0Q1OUQ4
NjQyQThBMERBODZBRCAvKiBTdGFja1RyYWNlLmggKi8sCisJCQkJRkU5N0Y2QTgyNDVDRTVERDAw
QzYzRkM2IC8qIFN0ZEludEV4dHJhcy5oICovLAogCQkJCUE4QTQ3MzExMTUxQTgyNUIwMDQxMjNG
RiAvKiBTdGRMaWJFeHRyYXMuaCAqLywKIAkJCQlGRjBBNDM2NTg4OTU0RjNDQjA3REJFQ0EgLyog
U3RkTGlzdC5oICovLAogCQkJCTM5MUJENkJBNEQxNjRGRDI5NEY5QTkzRCAvKiBTdGRNYXAuaCAq
LywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0JpdG1hcC5oCShyZXZpc2lvbiAyNjExMzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9CaXRt
YXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTcgKzIyLDIxIEBACiAjaW5jbHVkZSA8YXJyYXk+
CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGUgPSB1aW50MzJfdD4KK3RlbXBsYXRlPHNpemVfdCBz
aXplPgordXNpbmcgQml0bWFwV29yZFR5cGUgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8KHNpemUgPD0g
MzIgJiYgc2l6ZW9mKFVDUFVSZWdpc3RlcikgPiBzaXplb2YodWludDMyX3QpKSwgdWludDMyX3Qs
IFVDUFVSZWdpc3Rlcj47CisKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZSA9IEJpdG1hcFdvcmRUeXBlPGJpdG1hcFNpemU+PgogY2xhc3MgQml0bWFwIGZpbmFs
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAKLSAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihXb3JkVHlwZSkgPD0gc2l6ZW9mKHVuc2lnbmVkKSwgIldvcmRUeXBlIG11c3Qgbm90
IGJlIGJpZ2dlciB0aGFuIHVuc2lnbmVkIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV29y
ZFR5cGUpIDw9IHNpemVvZihVQ1BVUmVnaXN0ZXIpLCAiV29yZFR5cGUgbXVzdCBub3QgYmUgYmln
Z2VyIHRoYW4gdGhlIENQVSBhdG9taWMgd29yZCBzaXplIik7CiBwdWJsaWM6CiAgICAgY29uc3Rl
eHByIEJpdG1hcCgpOwogCkBAIC0yMzAsNiArMjM0LDExIEBAIGlubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT4KIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRz
OyArK2kpCiAgICAgICAgIGJpdHNbaV0gPSB+Yml0c1tpXTsKKyAgICBpZiBjb25zdGV4cHIgKCEh
KGJpdG1hcFNpemUgJSB3b3JkU2l6ZSkpIHsKKyAgICAgICAgY29uc3RleHByIHNpemVfdCByZW1h
aW5pbmdCaXRzID0gYml0bWFwU2l6ZSAlIHdvcmRTaXplOworICAgICAgICBjb25zdGV4cHIgV29y
ZFR5cGUgbWFzayA9IChzdGF0aWNfY2FzdDxXb3JkVHlwZT4oMSkgPDwgcmVtYWluaW5nQml0cykg
LSAxOworICAgICAgICBiaXRzW3dvcmRzIC0gMV0gJj0gbWFzazsKKyAgICB9CiB9CiAKIHRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KQEAgLTI0Niw2ICsyNTUs
OSBAQCBpbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5CiAgICAgaWYgKCFy
dW5MZW5ndGgpIAogICAgICAgICBydW5MZW5ndGggPSAxOyAKICAgICAgCisgICAgaWYgKHJ1bkxl
bmd0aCA+IGJpdG1hcFNpemUpCisgICAgICAgIHJldHVybiAtMTsKKwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDw9IChiaXRtYXBTaXplIC0gcnVuTGVuZ3RoKSA7IGkrKykgewogICAgICAgICBi
b29sIGZvdW5kID0gdHJ1ZTsgCiAgICAgICAgIGZvciAoc2l6ZV90IGogPSBpOyBqIDw9IChpICsg
cnVuTGVuZ3RoIC0gMSkgOyBqKyspIHsgCkBAIC0yNjksNyArMjgxLDcgQEAgaW5saW5lIHNpemVf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cAogICAgICAgICAgICAgKytyZXN1bHQ7CiAgICAg
fQogICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydCAvIHdvcmRTaXplOyBpIDwgd29yZHM7ICsraSkK
LSAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0Q291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJp
dHNbaV0pKTsKKyAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0Q291bnQoYml0c1tpXSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjg2LDggKzI5OCwxNyBAQCB0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yCiBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmlzRnVsbCgpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB3b3JkczsgKytpKQotICAgICAgICBpZiAofmJpdHNbaV0pCisgICAgICAgIGlmICh+Yml0c1tp
XSkgeworICAgICAgICAgICAgaWYgY29uc3RleHByICghIShiaXRtYXBTaXplICUgd29yZFNpemUp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPT0gd29yZHMgLSAxKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0ZXhwciBzaXplX3QgcmVtYWluaW5nQml0cyA9IGJpdG1hcFNpemUgJSB3b3Jk
U2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3RleHByIFdvcmRUeXBlIG1hc2sgPSAoc3Rh
dGljX2Nhc3Q8V29yZFR5cGU+KDEpIDw8IHJlbWFpbmluZ0JpdHMpIC0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGJpdHNbaV0gJiBtYXNrID09IG1hc2spCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJ
bmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2MTEzNSkKKysrIFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNiArMjM4LDcgQEAgc2V0
KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFN0YWNrU2hvdFByb2ZpbGVyLmgKICAgICBTdGFja1N0
YXRzLmgKICAgICBTdGFja1RyYWNlLmgKKyAgICBTdGRJbnRFeHRyYXMuaAogICAgIFN0ZExpYkV4
dHJhcy5oCiAgICAgU3RkTGlzdC5oCiAgICAgU3RkTWFwLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtQ1BVLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1DUFUu
aAkocmV2aXNpb24gMjYxMTM1KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1DUFUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzExLDYgKzMxMSwxNSBAQAogI2VuZGlmCiAjZW5kaWYKIAorLyogQ1BV
IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlciB3aWR0aC4gKi8KKyNpZiBDUFUoQVJNNjQpIHx8IENQ
VShYODZfNjQpIHx8IENQVShNSVBTNjQpIHx8IENQVShQUEM2NCkKKyNkZWZpbmUgV1RGX0NQVV9S
RUdJU1RFUjY0IDEKKyNlbGlmIENQVShBUk0pIHx8IENQVShYODYpIHx8IENQVShNSVBTKSB8fCBD
UFUoUFBDKQorI2RlZmluZSBXVEZfQ1BVX1JFR0lTVEVSMzIgMQorI2Vsc2UKKyNlcnJvciAiVW5r
bm93biByZWdpc3RlciB3aWR0aCIKKyNlbmRpZgorCiAvKiBDUFUoQklHX0VORElBTikgb3IgQ1BV
KE1JRERMRV9FTkRJQU4pIG9yIG5laXRoZXIsIGFzIGFwcHJvcHJpYXRlLiAqLwogCiAjaWYgQ09N
UElMRVIoR0NDX0NPTVBBVElCTEUpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGRJbnRFeHRyYXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdGRJbnRFeHRyYXMuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TdGRJbnRFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxjc3RkaW50PgorCituYW1lc3BhY2UgV1RGIHsK
KworI2lmIENQVShSRUdJU1RFUjY0KQordXNpbmcgQ1BVUmVnaXN0ZXIgPSBpbnQ2NF90OwordXNp
bmcgVUNQVVJlZ2lzdGVyID0gdWludDY0X3Q7CisjZWxzZQordXNpbmcgQ1BVUmVnaXN0ZXIgPSBp
bnQzMl90OwordXNpbmcgVUNQVVJlZ2lzdGVyID0gdWludDMyX3Q7CisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q1BVUmVnaXN0ZXI7Cit1c2luZyBXVEY6OlVDUFVS
ZWdpc3RlcjsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI2MTEzNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA1LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVy
IHdvcmQgc2l6ZSBmb3IgaW50ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYyNzU1ODY1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIEFQSSB0ZXN0cyBmb3IgV1RGOjpCaXRtYXAgdG8gbWFrZSBzdXJlIHRoYXQg
Qml0bWFwIGlzIGJlaGF2aW5nIGNvcnJlY3RseS4KKyAgICAgICAgU2luY2UgQml0bWFwIGlzIHVz
ZWQgaW4gY3JpdGljYWwgaW5mcmFzdHJ1Y3R1cmUgbGlrZSB0aGUgR0MsIGl0IGlzIGltcG9ydGFu
dCB0bworICAgICAgICBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gbGF0ZW50IGJ1Z3MuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0JpdG1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y291bnRCaXRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRt
YXBTaXplKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBDb25zdHJ1Y3RlZEVt
cHR5KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBTZXRHZXQpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcFRlc3RBbmRTZXQpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6dGVzdEJpdG1hcFRlc3RBbmRDbGVhcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojp0ZXN0Qml0bWFwQ29uY3VycmVudFRlc3RBbmRTZXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6dGVzdEJpdG1hcENvbmN1cnJlbnRUZXN0QW5kQ2xlYXIpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6dGVzdEJpdG1hcENsZWFyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRt
YXBDbGVhckFsbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwSW52ZXJ0KToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBGaW5kUnVuT2ZaZXJvcyk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwQ291bnQpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6dGVzdEJpdG1hcElzRW1wdHkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJp
dG1hcElzRnVsbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwTWVyZ2UpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEZpbHRlcik6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjp0ZXN0Qml0bWFwRXhjbHVkZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0
ZXN0Qml0bWFwQ29uY3VycmVudEZpbHRlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0
Qml0bWFwU3Vic3VtZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEZvckVh
Y2hTZXRCaXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEZpbmRCaXQpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEl0ZXJhdGlvbik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwTWVyZ2VBbmRDbGVhcik6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp0ZXN0Qml0bWFwU2V0QW5kQ2xlYXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
dGVzdEJpdG1hcE9wZXJhdG9yRXF1YWwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJp
dG1hcE9wZXJhdG9yTm90RXF1YWwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1h
cEhhc2gpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDUtMDQgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUmVtb3ZlIGEg
ZmV3IHVubmVlZGVkIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIGNoZWNrcwpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjExMzUpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwCiAK
ICAgICBUZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKKyAgICBUZXN0cy9XVEYvQml0bWFwLmNwcAog
ICAgIFRlc3RzL1dURi9CbG9vbUZpbHRlci5jcHAKICAgICBUZXN0cy9XVEYvQnVtcFBvaW50ZXJB
bGxvY2F0b3IuY3BwCiAgICAgVGVzdHMvV1RGL0NTdHJpbmcuY3BwCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjYxMTM1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEx
MzcsNiArMTEzNyw3IEBACiAJCUY2QjdCRTk3MTc0NjlCOTYwMDhBMzQ0NSAvKiBhc3NvY2lhdGUt
Zm9ybS1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2QjdCRTk2MTc0NjlCN0UwMDhBMzQ0NSAvKiBhc3NvY2lhdGUtZm9y
bS1jb250cm9scy5odG1sICovOyB9OwogCQlGNkY0OUM2QjE1NTQ1Q0E3MDAwN0YzOUQgLyogRE9N
V2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdp
bmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJRjZGRERERDYxNDI0MUM2
RjAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkZERERENTE0MjQxQzQ4MDA0RjE3MjkgLyogcHVz
aC1zdGF0ZS5odG1sICovOyB9OworCQlGRTJEOTQ3NDI0NUVCMkY0MDBFNDgxMzUgLyogQml0bWFw
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkQ5
NDczMjQ1RUIyREYwMEU0ODEzNSAvKiBCaXRtYXAuY3BwICovOyB9OwogLyogRW5kIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9u
ICovCkBAIC0yNzk3LDYgKzI3OTgsNyBAQAogCQlGNkY0OUM2NzE1NTQ1QzhEMDAwN0YzOUQgLyog
RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjZGRERERDIxNDI0MUFENDAwNEYxNzI5IC8qIFByaXZhdGVCcm93c2lu
Z1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERERDUxNDI0MUM0ODAwNEYxNzI5
IC8qIHB1c2gtc3RhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwdXNoLXN0
YXRlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTJEOTQ3MzI0NUVCMkRG
MDBFNDgxMzUgLyogQml0bWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJpdG1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQjZGNzRFMUIy
QkE0NEUwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOYWtlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBF
bmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKQEAgLTM5NDIsNiArMzk0NCw3IEBACiAJ
CQkJN0NCQkEwNzUxOUJCOEEwOTAwQkJGMDI1IC8qIGRhcndpbiAqLywKIAkJCQlCQzAyOUIxQTE0
ODZCMjM4MDA4MTdEQTkgLyogbnMgKi8sCiAJCQkJMjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8q
IEF0b21TdHJpbmcuY3BwICovLAorCQkJCUZFMkQ5NDczMjQ1RUIyREYwMEU0ODEzNSAvKiBCaXRt
YXAuY3BwICovLAogCQkJCUU0MDAxOTMwMUFDRTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5j
cHAgKi8sCiAJCQkJMDQ1MUE1QTYyMzVFNDM4RTAwOURGOTQ1IC8qIEJ1bXBQb2ludGVyQWxsb2Nh
dG9yLmNwcCAqLywKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRo
bWV0aWNPcGVyYXRpb25zLmNwcCAqLywKQEAgLTQ2OTIsNiArNDY5NSw3IEBACiAJCQkJRTM4RDY1
Q0IyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREY1OTFEMEE1OTBDMDBGRUJDRjMgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlGRTJEOTQ3NDI0NUVCMkY0MDBFNDgxMzUgLyogQml0bWFwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDODNERjEzMUQwQTU5MEMwMEZFQkNGMyAvKiBSZWRCbGFja1Ry
ZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTQxRDBBNTkwQzAwRkVCQ0YzIC8qIFJl
Zi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYxNTFEMEE1OTBDMDBGRUJDRjMgLyogUmVm
Q291bnRlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0JpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvQml0bWFwLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9CaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY29uc3RleHByIHNpemVfdCBzaXplID0gMTI4
OworY29uc3RleHByIHNpemVfdCBzbWFsbFNpemUgPSA5OworY29uc3RleHByIHNpemVfdCB6ZXJv
U2l6ZSA9IDA7CisKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBleHBlY3RlZEJpdHMxW3NpemVdID0g
eworICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsICBmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlLAorICAgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAgZmFsc2UsIGZhbHNl
LCB0cnVlLCAgZmFsc2UsCisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsICBmYWxzZSwg
ZmFsc2UsIHRydWUsICB0cnVlLAorICAgIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAgZmFs
c2UsIHRydWUsICBmYWxzZSwgZmFsc2UsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2Us
ICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLAorICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAgZmFsc2UsIHRydWUsICB0cnVlLCAgZmFsc2UsCisgICAgZmFsc2UsIHRydWUsICBmYWxz
ZSwgZmFsc2UsICBmYWxzZSwgdHJ1ZSwgIHRydWUsICB0cnVlLAorICAgIGZhbHNlLCBmYWxzZSwg
dHJ1ZSwgIGZhbHNlLCAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisgICAgZmFsc2UsIGZh
bHNlLCB0cnVlLCAgZmFsc2UsICB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLAorICAgIHRydWUs
ICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsCisgICAg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsICB0cnVlLCAgZmFsc2UsIHRydWUsICB0cnVlLAor
ICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgIHRydWUsICBmYWxzZSwgZmFs
c2UsCisgICAgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsICB0cnVlLCAgdHJ1ZSwgIGZhbHNl
LCB0cnVlLAorICAgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgZmFsc2UsCisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLAorfTsKKworc3RhdGljIGNvbnN0ZXhwciBib29sIGV4cGVjdGVkQml0
czJbc2l6ZV0gPSB7CisgICAgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgICBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIHRydWUsCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICBm
YWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
LCAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIHRydWUsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwg
dHJ1ZSwgICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlLCAgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsCisgICAgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgICBmYWxzZSwgdHJ1ZSwgIHRydWUsICBmYWxzZSwKKyAgICBmYWxzZSwg
ZmFsc2UsIHRydWUsICB0cnVlLCAgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgIHRydWUsCisgICAgZmFs
c2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKyAg
ICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUs
CisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgZmFsc2UsIHRydWUsICBm
YWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICB0cnVlLCAgIHRydWUsICBmYWxzZSwgdHJ1
ZSwgIHRydWUsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgdHJ1ZSwg
IGZhbHNlLCBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICB0cnVlLCAgIHRydWUsICB0
cnVlLCAgZmFsc2UsIHRydWUsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICB0cnVl
LCAgdHJ1ZSwgIHRydWUsICBmYWxzZSwKKyAgICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsCit9OworCitjb25zdGV4cHIgc2l6ZV90IGNvdW50
Qml0cyhjb25zdCBib29sIGJvb2xBcnJheVtdLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBzaXplX3Qg
cmVzdWx0ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBpZiAoYm9vbEFycmF5W2ldKQorICAgICAgICAgICAgcmVzdWx0Kys7CisgICAgfQorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0ZXhwciBzaXplX3QgZXhwZWN0ZWROdW1iZXJPZlNl
dEJpdHMxID0gY291bnRCaXRzKGV4cGVjdGVkQml0czEsIHNpemUpOworY29uc3RleHByIHNpemVf
dCBleHBlY3RlZE51bWJlck9mU2V0Qml0czIgPSBjb3VudEJpdHMoZXhwZWN0ZWRCaXRzMiwgc2l6
ZSk7CisKKyNkZWZpbmUgREVDTEFSRV9CSVRNQVBTX0ZPUl9URVNUKCkgXAorICAgIEJpdG1hcDxz
aXplLCBXb3JkVHlwZT4gYml0bWFwMDsgLyogQWxsIGJpdHMgd2lsbCByZW1haW4gY2xlYXJlZC4g
Ki8gXAorICAgIEJpdG1hcDxzaXplLCBXb3JkVHlwZT4gYml0bWFwMTsgLyogV2lsbCBob2xkIHZh
bHVlcyBzcGVjaWZpZWQgaW4gZXhwZWN0ZWRCaXRzMS4gKi8gXAorICAgIEJpdG1hcDxzaXplLCBX
b3JkVHlwZT4gYml0bWFwMjsgLyogV2lsbCBob2xkIHZhbHVlcyBzcGVjaWZpZWQgaW4gZXhwZWN0
ZWRCaXRzMi4gKi8gXAorICAgIEJpdG1hcDxzaXplLCBXb3JkVHlwZT4gYml0bWFwMzsgLyogU2Ft
ZSBhcyBiaXRtYXAyLiAqLyBcCisgICAgQml0bWFwPHNpemUsIFdvcmRUeXBlPiBiaXRtYXBGaWxs
ZWQ7IFwKKyAgICBCaXRtYXA8c21hbGxTaXplLCBXb3JkVHlwZT4gYml0bWFwU21hbGxaZXJvZWQ7
IFwKKyAgICBCaXRtYXA8c21hbGxTaXplLCBXb3JkVHlwZT4gYml0bWFwU21hbGxGaWxsZWQ7CisK
KyNkZWZpbmUgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCkgXAorICAgIERFQ0xB
UkVfQklUTUFQU19GT1JfVEVTVCgpIFwKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeyBcCisgICAgICAgIGJpdG1hcDEuc2V0KGksIGV4cGVjdGVkQml0czFbaV0pOyBcCisg
ICAgICAgIGJpdG1hcDIuc2V0KGksIGV4cGVjdGVkQml0czJbaV0pOyBcCisgICAgICAgIGJpdG1h
cDMuc2V0KGksIGV4cGVjdGVkQml0czJbaV0pOyBcCisgICAgICAgIGJpdG1hcEZpbGxlZC5zZXQo
aSk7IFwKKyAgICB9IFwKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNtYWxsU2l6ZTsgKytp
KSBcCisgICAgICAgIGJpdG1hcFNtYWxsRmlsbGVkLnNldChpKTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBTaXplKCkKK3sKKyAgICBERUNMQVJFX0JJVE1B
UFNfRk9SX1RFU1QoKTsKKworICAgIGF1dG8gdmVyaWZ5U2l6ZSA9IFs9XSAoYXV0byYgYml0bWFw
LCBzaXplX3QgZXhwZWN0ZWRTaXplLCBzaXplX3Qgbm90RXhwZWN0ZWRTaXplKSB7CisgICAgICAg
IEVYUEVDVF9FUShiaXRtYXAuc2l6ZSgpLCBleHBlY3RlZFNpemUpOworICAgICAgICBFWFBFQ1Rf
TkUoYml0bWFwLnNpemUoKSwgbm90RXhwZWN0ZWRTaXplKTsKKyAgICB9OworCisgICAgdmVyaWZ5
U2l6ZShiaXRtYXAwLCBzaXplLCBzbWFsbFNpemUpOworICAgIHZlcmlmeVNpemUoYml0bWFwMSwg
c2l6ZSwgc21hbGxTaXplKTsKKyAgICB2ZXJpZnlTaXplKGJpdG1hcDIsIHNpemUsIHNtYWxsU2l6
ZSk7CisgICAgdmVyaWZ5U2l6ZShiaXRtYXAzLCBzaXplLCBzbWFsbFNpemUpOworICAgIHZlcmlm
eVNpemUoYml0bWFwRmlsbGVkLCBzaXplLCBzbWFsbFNpemUpOworICAgIHZlcmlmeVNpemUoYml0
bWFwU21hbGxaZXJvZWQsIHNtYWxsU2l6ZSwgc2l6ZSk7CisgICAgdmVyaWZ5U2l6ZShiaXRtYXBT
bWFsbEZpbGxlZCwgc21hbGxTaXplLCBzaXplKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29y
ZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBDb25zdHJ1Y3RlZEVtcHR5KCkKK3sKKyAgICBERUNMQVJF
X0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBkZWZhdWx0IGNv
bnN0cnVjdG9yIGluaXRpYWxpemVzIGFsbCBiaXRzIHRvIDAuCisgICAgYXV0byB2ZXJpZnlJc0Vt
cHR5ID0gWz1dIChjb25zdCBhdXRvJiBiaXRtYXApIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoYml0
bWFwLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUShiaXRtYXAuY291bnQoKSwgemVyb1Np
emUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJpdG1hcC5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShiaXRtYXAuZ2V0KGkpKTsKKyAgICB9OworCisgICAg
dmVyaWZ5SXNFbXB0eShiaXRtYXAwKTsKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcDEpOworICAg
IHZlcmlmeUlzRW1wdHkoYml0bWFwMik7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAzKTsKKyAg
ICB2ZXJpZnlJc0VtcHR5KGJpdG1hcEZpbGxlZCk7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXBT
bWFsbFplcm9lZCk7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXBTbWFsbEZpbGxlZCk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwU2V0R2V0KCkKK3sK
KyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIGF1dG8gdmVy
aWZ5SXNFbXB0eSA9IFs9XSAoY29uc3QgYXV0byYgYml0bWFwKSB7CisgICAgICAgIEVYUEVDVF9U
UlVFKGJpdG1hcC5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVEoYml0bWFwLmNvdW50KCks
IHplcm9TaXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiaXRtYXAuc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoYml0bWFwLmdldChpKSk7CisgICAgfTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBFWFBFQ1Rf
RVEoYml0bWFwMS5nZXQoaSksIGV4cGVjdGVkQml0czFbaV0pOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGJpdG1hcDIuZ2V0KGkp
LCBleHBlY3RlZEJpdHMyW2ldKTsKKyAgICAgICAgRVhQRUNUX0VRKGJpdG1hcDMuZ2V0KGkpLCBl
eHBlY3RlZEJpdHMyW2ldKTsKKyAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgIEVYUEVDVF9FUShiaXRtYXAyLmdldChpKSwgYml0bWFwMy5nZXQoaSkp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEVYUEVD
VF9UUlVFKGJpdG1hcEZpbGxlZC5nZXQoaSkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzbWFsbFNpemU7ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQu
Z2V0KGkpKTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHRoZXJlIGlzIG5vIG91dCBvZiBib3VuZHMg
d3JpdGUgZnJvbSB0aGUgYWJvdmUgc2V0IG9wZXJhdGlvbnMuCisgICAgdmVyaWZ5SXNFbXB0eShi
aXRtYXAwKTsKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcFNtYWxsWmVyb2VkKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBUZXN0QW5kU2V0KCkKK3sK
KyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEFTU0VSVF9G
QUxTRShiaXRtYXAxLmlzRnVsbCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ld
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNTRVJU
X0VRKGJpdG1hcDEudGVzdEFuZFNldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgQVNTRVJU
X1RSVUUoYml0bWFwMS5pc0Z1bGwoKSk7CisKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxa
ZXJvZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1w
dHkoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzbWFsbFNpemU7ICsraSkKKyAgICAg
ICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLnRlc3RBbmRTZXQoaSkpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBUZXN0QW5kQ2xlYXIoKQoreworICAgIERF
Q0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQVNTRVJUX0ZBTFNFKGJp
dG1hcDEuaXNFbXB0eSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkK
KyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNTRVJUX0VRKGJp
dG1hcDEudGVzdEFuZENsZWFyKGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXAxLmlzRW1wdHkoKSk7CisKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxGaWxs
ZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzbWFsbFNpemU7ICsraSkKKyAgICAgICAg
QVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQudGVzdEFuZENsZWFyKGkpKTsKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcENvbmN1cnJlbnRUZXN0QW5kU2V0KCkKK3sK
KyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIC8vIEZJWE1F
OiB0aGUgZm9sbG93aW5nIGRvZXMgbm90IHRlc3QgdGhlIGNvbmN1cnJlbnQgcGFydC4gSXQgb25s
eSBlbnN1cmVzIHRoYXQKKyAgICAvLyB0aGUgVGVzdEFuZFNldCBwYXJ0IG9mIHRoZSBvcGVyYXRp
b24gaXMgd29ya2luZy4KKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMS5pc0Z1bGwoKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShiaXRt
YXAxLmdldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAxLnRlc3RBbmRTZXQoaSksIGV4
cGVjdGVkQml0czFbaV0pOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDEuaXNGdWxsKCkpOworCisg
ICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRf
VFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc21hbGxTaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9GQUxTRShiaXRtYXBTbWFsbFpl
cm9lZC50ZXN0QW5kU2V0KGkpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5p
c0Z1bGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0
bWFwQ29uY3VycmVudFRlc3RBbmRDbGVhcigpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRN
QVBTX0ZPUl9URVNUKCk7CisKKyAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBkb2VzIG5vdCB0
ZXN0IHRoZSBjb25jdXJyZW50IHBhcnQuIEl0IG9ubHkgZW5zdXJlcyB0aGF0CisgICAgLy8gdGhl
IFRlc3RBbmRDbGVhciBwYXJ0IG9mIHRoZSBvcGVyYXRpb24gaXMgd29ya2luZy4KKyAgICBBU1NF
UlRfRkFMU0UoYml0bWFwMS5pc0VtcHR5KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQorICAgICAgICBBU1NFUlRfRVEoYml0bWFwMS5nZXQoaSksIGV4cGVjdGVkQml0
czFbaV0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBB
U1NFUlRfRVEoYml0bWFwMS50ZXN0QW5kQ2xlYXIoaSksIGV4cGVjdGVkQml0czFbaV0pOworICAg
IEFTU0VSVF9UUlVFKGJpdG1hcDEuaXNFbXB0eSgpKTsKKworICAgIEFTU0VSVF9GQUxTRShiaXRt
YXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmls
bGVkLmlzRnVsbCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNtYWxsU2l6ZTsgKytp
KQorICAgICAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC50ZXN0QW5kQ2xlYXIoaSkp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwQ2xlYXIoKQoreworICAg
IERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQml0czFbaV0pCisgICAgICAgICAgICBiaXRt
YXBGaWxsZWQuY2xlYXIoaSk7CisgICAgfQorICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQsIGJp
dG1hcDEpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1h
cENsZWFyQWxsKCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsK
KworICAgIGF1dG8gdmVyaWZ5SXNFbXB0eSA9IFtdIChjb25zdCBhdXRvJiBiaXRtYXApIHsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoYml0bWFwLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUShi
aXRtYXAuY291bnQoKSwgemVyb1NpemUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGJpdG1hcC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShiaXRtYXAuZ2V0
KGkpKTsKKyAgICB9OworCisgICAgYXV0byB2ZXJpZnlJc0Z1bGwgPSBbXSAoY29uc3QgYXV0byYg
Yml0bWFwKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGJpdG1hcC5pc0Z1bGwoKSk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYml0bWFwLnNpemUoKTsgKytpKQorICAgICAgICAgICAg
RVhQRUNUX1RSVUUoYml0bWFwLmdldChpKSk7CisgICAgfTsKKworICAgIEVYUEVDVF9GQUxTRShi
aXRtYXAxLmlzRW1wdHkoKSk7CisgICAgYml0bWFwMS5jbGVhckFsbCgpOworICAgIHZlcmlmeUlz
RW1wdHkoYml0bWFwMSk7CisgICAgdmVyaWZ5SXNGdWxsKGJpdG1hcEZpbGxlZCk7CisgICAgdmVy
aWZ5SXNGdWxsKGJpdG1hcFNtYWxsRmlsbGVkKTsKKworICAgIEVYUEVDVF9GQUxTRShiaXRtYXAy
LmlzRW1wdHkoKSk7CisgICAgYml0bWFwMi5jbGVhckFsbCgpOworICAgIHZlcmlmeUlzRW1wdHko
Yml0bWFwMSk7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAyKTsKKyAgICB2ZXJpZnlJc0Z1bGwo
Yml0bWFwRmlsbGVkKTsKKyAgICB2ZXJpZnlJc0Z1bGwoYml0bWFwU21hbGxGaWxsZWQpOworCisg
ICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDMuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXAzLmNsZWFyQWxs
KCk7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAxKTsKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1h
cDIpOworICAgIHZlcmlmeUlzRW1wdHkoYml0bWFwMyk7CisgICAgdmVyaWZ5SXNGdWxsKGJpdG1h
cEZpbGxlZCk7CisgICAgdmVyaWZ5SXNGdWxsKGJpdG1hcFNtYWxsRmlsbGVkKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBJbnZlcnQoKQoreworICAg
IERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgYXV0byB2ZXJpZnlJ
bnZlcnQgPSBbXSAoYXV0byYgYml0bWFwKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1hcC5p
c0Z1bGwoKSk7CisgICAgICAgIEFTU0VSVF9GQUxTRShiaXRtYXAuaXNFbXB0eSgpKTsKKyAgICAg
ICAgYml0bWFwLmludmVydCgpOworICAgICAgICBBU1NFUlRfRkFMU0UoYml0bWFwLmlzRnVsbCgp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUoYml0bWFwLmlzRW1wdHkoKSk7CisgICAgICAgIGJpdG1h
cC5pbnZlcnQoKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoYml0bWFwLmlzRnVsbCgpKTsKKyAgICAg
ICAgQVNTRVJUX0ZBTFNFKGJpdG1hcC5pc0VtcHR5KCkpOworICAgIH07CisKKyAgICB2ZXJpZnlJ
bnZlcnQoYml0bWFwRmlsbGVkKTsKKyAgICB2ZXJpZnlJbnZlcnQoYml0bWFwU21hbGxGaWxsZWQp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFTU0VS
VF9FUShiaXRtYXAxLmdldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgYml0bWFwMS5pbnZl
cnQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNT
RVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCAhZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgYml0bWFwMS5p
bnZlcnQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
QVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBGaW5kUnVuT2ZaZXJvcygpCit7
CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBjb25zdCBp
bnQ2NF90IGJpdG1hcDFSdW5zT2ZaZXJvc1sxNV0gPSB7CisgICAgICAgIDAsIDAsIDAsIDMsIDMs
CisgICAgICAgIDMsIDMsIDMsIDMsIDMsCisgICAgICAgIDMsIDMsIDMsIC0xLCAtMQorICAgIH07
CisKKyAgICBjb25zdCBpbnQ2NF90IGJpdG1hcDJSdW5zT2ZaZXJvc1sxNV0gPSB7CisgICAgICAg
IDAsIDAsIDQsIDQsIDQsCisgICAgICAgIDQsIDQsIDQsIC0xLCAtMSwKKyAgICAgICAgLTEsIC0x
LCAtMSwgLTEsIC0xLAorICAgIH07CisKKyAgICBCaXRtYXA8c21hbGxTaXplLCBXb3JkVHlwZT4g
c21hbGxUZW1wOworICAgIHNtYWxsVGVtcC5zZXQoMSwgdHJ1ZSk7IC8vIGJpdHMgbG93IHRvIGhp
Z2ggYXJlOiAwMTAwIDAwMDAgMAorCisgICAgY29uc3QgaW50NjRfdCBzbWFsbFRlbXBSdW5zT2Za
ZXJvc1sxNV0gPSB7CisgICAgICAgIDAsIDAsIDIsIDIsIDIsCisgICAgICAgIDIsIDIsIDIsIC0x
LCAtMSwKKyAgICAgICAgLTEsIC0xLCAtMSwgLTEsIC0xCisgICAgfTsKKworICAgIGZvciAoc2l6
ZV90IHJ1bkxlbmd0aCA9IDA7IHJ1bkxlbmd0aCA8IDE1OyArK3J1bkxlbmd0aCkgeworICAgICAg
ICBBU1NFUlRfRVEoYml0bWFwMC5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCAwbGwpOworICAg
ICAgICBBU1NFUlRfRVEoYml0bWFwMS5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCBiaXRtYXAx
UnVuc09mWmVyb3NbcnVuTGVuZ3RoXSk7CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAyLmZpbmRS
dW5PZlplcm9zKHJ1bkxlbmd0aCksIGJpdG1hcDJSdW5zT2ZaZXJvc1tydW5MZW5ndGhdKTsKKyAg
ICAgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCAt
MWxsKTsKKworICAgICAgICBpZiAocnVuTGVuZ3RoIDw9IHNtYWxsU2l6ZSkKKyAgICAgICAgICAg
IEFTU0VSVF9FUShiaXRtYXBTbWFsbFplcm9lZC5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCAw
bGwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfRVEoYml0bWFwU21hbGxaZXJv
ZWQuZmluZFJ1bk9mWmVyb3MocnVuTGVuZ3RoKSwgLTFsbCk7CisKKyAgICAgICAgQVNTRVJUX0VR
KGJpdG1hcFNtYWxsRmlsbGVkLmZpbmRSdW5PZlplcm9zKHJ1bkxlbmd0aCksIC0xbGwpOworCisg
ICAgICAgIEFTU0VSVF9FUShzbWFsbFRlbXAuZmluZFJ1bk9mWmVyb3MocnVuTGVuZ3RoKSwgc21h
bGxUZW1wUnVuc09mWmVyb3NbcnVuTGVuZ3RoXSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcENvdW50KCkKK3sKKyAgICBERUNMQVJFX0FO
RF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEVYUEVDVF9FUShiaXRtYXAwLmNvdW50
KCksIHplcm9TaXplKTsKKyAgICBFWFBFQ1RfRVEoYml0bWFwMS5jb3VudCgpLCBleHBlY3RlZE51
bWJlck9mU2V0Qml0czEpOworICAgIEVYUEVDVF9FUShiaXRtYXAyLmNvdW50KCksIGV4cGVjdGVk
TnVtYmVyT2ZTZXRCaXRzMik7CisgICAgRVhQRUNUX0VRKGJpdG1hcDMuY291bnQoKSwgZXhwZWN0
ZWROdW1iZXJPZlNldEJpdHMyKTsKKyAgICBFWFBFQ1RfRVEoYml0bWFwRmlsbGVkLmNvdW50KCks
IHNpemUpOworICAgIEVYUEVDVF9FUShiaXRtYXBTbWFsbFplcm9lZC5jb3VudCgpLCB6ZXJvU2l6
ZSk7CisgICAgRVhQRUNUX0VRKGJpdG1hcFNtYWxsRmlsbGVkLmNvdW50KCksIHNtYWxsU2l6ZSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwSXNFbXB0
eSgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBF
WFBFQ1RfVFJVRShiaXRtYXAwLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDEu
aXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMi5pc0VtcHR5KCkpOworICAgIEVY
UEVDVF9GQUxTRShiaXRtYXAzLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcEZp
bGxlZC5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1w
dHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7CisK
KyAgICBhdXRvIHZlcmlmeUlzRW1wdHkgPSBbPV0gKGNvbnN0IGF1dG8mIGJpdG1hcCkgeworICAg
ICAgICBFWFBFQ1RfVFJVRShiaXRtYXAuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGJp
dG1hcC5jb3VudCgpLCB6ZXJvU2l6ZSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Yml0bWFwLnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcC5nZXQo
aSkpOworICAgIH07CisKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcDApOworICAgIHZlcmlmeUlz
RW1wdHkoYml0bWFwU21hbGxaZXJvZWQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlw
ZT4KK3ZvaWQgdGVzdEJpdG1hcElzRnVsbCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRN
QVBTX0ZPUl9URVNUKCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMC5pc0Z1bGwoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDEuaXNGdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShiaXRt
YXAyLmlzRnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMy5pc0Z1bGwoKSk7CisgICAg
RVhQRUNUX1RSVUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0
bWFwU21hbGxaZXJvZWQuaXNGdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJpdG1hcFNtYWxsRmls
bGVkLmlzRnVsbCgpKTsKKworICAgIGF1dG8gdmVyaWZ5SXNGdWxsID0gWz1dIChhdXRvJiBiaXRt
YXApIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoYml0bWFwLmlzRnVsbCgpKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBiaXRtYXAuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBFWFBF
Q1RfVFJVRShiaXRtYXAuZ2V0KGkpKTsKKyAgICB9OworCisgICAgdmVyaWZ5SXNGdWxsKGJpdG1h
cEZpbGxlZCk7CisgICAgdmVyaWZ5SXNGdWxsKGJpdG1hcFNtYWxsRmlsbGVkKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBNZXJnZSgpCit7CisgICAg
REVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXAwLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOworICAg
IGJpdG1hcDIubWVyZ2UoYml0bWFwMCk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMp
OworICAgIAorICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAyKTsKKyAgICBBU1NFUlRfTkUo
Yml0bWFwMSwgYml0bWFwMyk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOworICAg
IGJpdG1hcDMubWVyZ2UoYml0bWFwMSk7CisgICAgQVNTRVJUX05FKGJpdG1hcDIsIGJpdG1hcDMp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGJvb2wg
ZXhwZWN0ZWRCaXQgPSBleHBlY3RlZEJpdHMyW2ldIHwgZXhwZWN0ZWRCaXRzMVtpXTsKKyAgICAg
ICAgQVNTRVJUX0VRKGJpdG1hcDMuZ2V0KGkpLCBleHBlY3RlZEJpdCk7CisgICAgfQorCisgICAg
QVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRt
YXAwLmlzRW1wdHkoKSk7CisgICAgYml0bWFwRmlsbGVkLm1lcmdlKGJpdG1hcDApOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFw
MC5pc0VtcHR5KCkpOworCisgICAgYml0bWFwMC5tZXJnZShiaXRtYXAxKTsKKyAgICBBU1NFUlRf
RVEoYml0bWFwMCwgYml0bWFwMSk7CisKKyAgICBiaXRtYXAxLm1lcmdlKGJpdG1hcEZpbGxlZCk7
CisgICAgQVNTRVJUX0VRKGJpdG1hcDEsIGJpdG1hcEZpbGxlZCk7CisKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNt
YWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBiaXRtYXBTbWFsbFplcm9lZC5tZXJnZShiaXRtYXBT
bWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHko
KSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNGdWxsKCkpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICAKKyAgICBiaXRtYXBT
bWFsbFplcm9lZC5jbGVhckFsbCgpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2Vk
LmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkp
OworICAgIGJpdG1hcFNtYWxsRmlsbGVkLm1lcmdlKGJpdG1hcFNtYWxsWmVyb2VkKTsKKyAgICBB
U1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29y
ZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBGaWx0ZXIoKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRf
QklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRnVs
bCgpKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgYml0bWFwMi5maWx0
ZXIoYml0bWFwRmlsbGVkKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAg
CisgICAgQVNTRVJUX05FKGJpdG1hcDEsIGJpdG1hcDIpOworICAgIEFTU0VSVF9ORShiaXRtYXAx
LCBiaXRtYXAzKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgYml0bWFw
My5maWx0ZXIoYml0bWFwMSk7CisgICAgQVNTRVJUX05FKGJpdG1hcDIsIGJpdG1hcDMpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGJvb2wgZXhwZWN0
ZWRCaXQgPSBleHBlY3RlZEJpdHMyW2ldICYgZXhwZWN0ZWRCaXRzMVtpXTsKKyAgICAgICAgQVNT
RVJUX0VRKGJpdG1hcDMuZ2V0KGkpLCBleHBlY3RlZEJpdCk7CisgICAgfQorCisgICAgQVNTRVJU
X1RSVUUoYml0bWFwMC5pc0VtcHR5KCkpOworICAgIGJpdG1hcDIuZmlsdGVyKGJpdG1hcDApOwor
ICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAwKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cDAuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXAwLmZpbHRlcihiaXRtYXAxKTsKKyAgICBBU1NFUlRf
VFJVRShiaXRtYXAwLmlzRW1wdHkoKSk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQu
aXNGdWxsKCkpOworICAgIGJpdG1hcEZpbGxlZC5maWx0ZXIoYml0bWFwMSk7CisgICAgQVNTRVJU
X0VRKGJpdG1hcEZpbGxlZCwgYml0bWFwMSk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFs
bFplcm9lZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlz
RnVsbCgpKTsKKyAgICBiaXRtYXBTbWFsbFplcm9lZC5maWx0ZXIoYml0bWFwU21hbGxGaWxsZWQp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisgICAgQVNT
RVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgCisgICAgYml0bWFwU21hbGxGaWxsZWQu
ZmlsdGVyKGJpdG1hcFNtYWxsWmVyb2VkKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxG
aWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1w
dHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBFeGNsdWRlKCkK
K3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEFTU0VS
VF9UUlVFKGJpdG1hcDAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFw
Myk7CisgICAgYml0bWFwMi5leGNsdWRlKGJpdG1hcDApOworICAgIEFTU0VSVF9FUShiaXRtYXAy
LCBiaXRtYXAzKTsKKyAgICAKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgYml0bWFwMik7CisgICAg
QVNTRVJUX05FKGJpdG1hcDEsIGJpdG1hcDMpOworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRt
YXAzKTsKKyAgICBiaXRtYXAzLmV4Y2x1ZGUoYml0bWFwMSk7CisgICAgQVNTRVJUX05FKGJpdG1h
cDIsIGJpdG1hcDMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Cisg
ICAgICAgIGJvb2wgZXhwZWN0ZWRCaXQgPSBleHBlY3RlZEJpdHMyW2ldICYgIWV4cGVjdGVkQml0
czFbaV07CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAzLmdldChpKSwgZXhwZWN0ZWRCaXQpOwor
ICAgIH0KKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRf
VFJVRShiaXRtYXBGaWxsZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcDIuZXhjbHVkZShiaXRtYXBG
aWxsZWQpOworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAwKTsKKworICAgIEFTU0VSVF9U
UlVFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgYml0bWFwRmlsbGVkLmV4Y2x1ZGUoYml0
bWFwMSk7CisgICAgYml0bWFwMS5pbnZlcnQoKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVk
LCBiaXRtYXAxKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHko
KSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIGJp
dG1hcFNtYWxsWmVyb2VkLmV4Y2x1ZGUoYml0bWFwU21hbGxGaWxsZWQpOworICAgIEFTU0VSVF9U
UlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1h
cFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxl
ZC5pc0Z1bGwoKSk7CisgICAgCisgICAgYml0bWFwU21hbGxGaWxsZWQuZXhjbHVkZShiaXRtYXBT
bWFsbFplcm9lZCk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisKKyAgICBi
aXRtYXBTbWFsbEZpbGxlZC5leGNsdWRlKGJpdG1hcFNtYWxsRmlsbGVkKTsKKyAgICBBU1NFUlRf
RkFMU0UoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBl
Pgordm9pZCB0ZXN0Qml0bWFwQ29uY3VycmVudEZpbHRlcigpCit7CisgICAgREVDTEFSRV9BTkRf
SU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBk
b2VzIG5vdCB0ZXN0IHRoZSBjb25jdXJyZW50IHBhcnQuIEl0IG9ubHkgZW5zdXJlcyB0aGF0Cisg
ICAgLy8gdGhlIEZpbHRlciBwYXJ0IG9mIHRoZSBvcGVyYXRpb24gaXMgd29ya2luZy4KKyAgICBB
U1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9FUShiaXRtYXAy
LCBiaXRtYXAzKTsKKyAgICBiaXRtYXAyLmNvbmN1cnJlbnRGaWx0ZXIoYml0bWFwRmlsbGVkKTsK
KyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgCisgICAgQVNTRVJUX05FKGJp
dG1hcDEsIGJpdG1hcDIpOworICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAzKTsKKyAgICBB
U1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgYml0bWFwMy5jb25jdXJyZW50RmlsdGVy
KGJpdG1hcDEpOworICAgIEFTU0VSVF9ORShiaXRtYXAyLCBiaXRtYXAzKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBib29sIGV4cGVjdGVkQml0ID0g
ZXhwZWN0ZWRCaXRzMltpXSAmIGV4cGVjdGVkQml0czFbaV07CisgICAgICAgIEFTU0VSVF9FUShi
aXRtYXAzLmdldChpKSwgZXhwZWN0ZWRCaXQpOworICAgIH0KKworICAgIEFTU0VSVF9UUlVFKGJp
dG1hcDAuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXAyLmNvbmN1cnJlbnRGaWx0ZXIoYml0bWFwMCk7
CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDApOworCisgICAgQVNTRVJUX1RSVUUoYml0
bWFwMC5pc0VtcHR5KCkpOworICAgIGJpdG1hcDAuY29uY3VycmVudEZpbHRlcihiaXRtYXAxKTsK
KyAgICBBU1NFUlRfVFJVRShiaXRtYXAwLmlzRW1wdHkoKSk7CisKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXBGaWxsZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcEZpbGxlZC5jb25jdXJyZW50RmlsdGVy
KGJpdG1hcDEpOworICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQsIGJpdG1hcDEpOworCisgICAg
QVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgYml0bWFwU21hbGxaZXJvZWQuY29u
Y3VycmVudEZpbHRlcihiaXRtYXBTbWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFw
U21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxaZXJv
ZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgp
KTsKKyAgICAKKyAgICBiaXRtYXBTbWFsbEZpbGxlZC5jb25jdXJyZW50RmlsdGVyKGJpdG1hcFNt
YWxsWmVyb2VkKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7CisgICAgQVNT
RVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBTdWJzdW1lcygpCit7CisgICAgREVDTEFS
RV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAw
LmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAg
ICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAw
LnN1YnN1bWVzKGJpdG1hcDApKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMC5zdWJzdW1lcyhi
aXRtYXAxKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDAuc3Vic3VtZXMoYml0bWFwMikpOwor
ICAgIEFTU0VSVF9GQUxTRShiaXRtYXAwLnN1YnN1bWVzKGJpdG1hcDMpKTsKKyAgICBBU1NFUlRf
RkFMU0UoYml0bWFwMC5zdWJzdW1lcyhiaXRtYXBGaWxsZWQpKTsKKworICAgIEFTU0VSVF9UUlVF
KGJpdG1hcDEuc3Vic3VtZXMoYml0bWFwMCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDEuc3Vi
c3VtZXMoYml0bWFwMSkpOworICAgIEFTU0VSVF9GQUxTRShiaXRtYXAxLnN1YnN1bWVzKGJpdG1h
cDIpKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMS5zdWJzdW1lcyhiaXRtYXAzKSk7CisgICAg
QVNTRVJUX0ZBTFNFKGJpdG1hcDEuc3Vic3VtZXMoYml0bWFwRmlsbGVkKSk7CisKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXAyLnN1YnN1bWVzKGJpdG1hcDApKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0
bWFwMi5zdWJzdW1lcyhiaXRtYXAxKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMi5zdWJzdW1l
cyhiaXRtYXAyKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMi5zdWJzdW1lcyhiaXRtYXAzKSk7
CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDIuc3Vic3VtZXMoYml0bWFwRmlsbGVkKSk7CisKKyAg
ICBBU1NFUlRfVFJVRShiaXRtYXAzLnN1YnN1bWVzKGJpdG1hcDApKTsKKyAgICBBU1NFUlRfRkFM
U0UoYml0bWFwMy5zdWJzdW1lcyhiaXRtYXAxKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5z
dWJzdW1lcyhiaXRtYXAyKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5zdWJzdW1lcyhiaXRt
YXAzKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDMuc3Vic3VtZXMoYml0bWFwRmlsbGVkKSk7
CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuc3Vic3VtZXMoYml0bWFwMCkpOworICAg
IEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5zdWJzdW1lcyhiaXRtYXAxKSk7CisgICAgQVNTRVJU
X1RSVUUoYml0bWFwRmlsbGVkLnN1YnN1bWVzKGJpdG1hcDIpKTsKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXBGaWxsZWQuc3Vic3VtZXMoYml0bWFwMykpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZp
bGxlZC5zdWJzdW1lcyhiaXRtYXBGaWxsZWQpKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNt
YWxsRmlsbGVkLnN1YnN1bWVzKGJpdG1hcFNtYWxsRmlsbGVkKSk7CisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwU21hbGxGaWxsZWQuc3Vic3VtZXMoYml0bWFwU21hbGxaZXJvZWQpKTsKKworICAgIEFT
U0VSVF9GQUxTRShiaXRtYXBTbWFsbFplcm9lZC5zdWJzdW1lcyhiaXRtYXBTbWFsbEZpbGxlZCkp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLnN1YnN1bWVzKGJpdG1hcFNtYWxs
WmVyb2VkKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0
bWFwRm9yRWFjaFNldEJpdCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9U
RVNUKCk7CisKKyAgICBzaXplX3QgY291bnQgPSAwOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDAu
aXNFbXB0eSgpKTsKKyAgICBiaXRtYXAwLmZvckVhY2hTZXRCaXQoWyZdIChzaXplX3QgaSkgewor
ICAgICAgICBjb25zdGV4cHIgYm9vbCBub3RSZWFjaGVkID0gZmFsc2U7CisgICAgICAgIEFTU0VS
VF9UUlVFKG5vdFJlYWNoZWQpOworICAgICAgICBjb3VudCsrOworICAgIH0pOworICAgIEFTU0VS
VF9FUShjb3VudCwgemVyb1NpemUpOworCisgICAgY291bnQgPSAwOworICAgIGJpdG1hcDEuZm9y
RWFjaFNldEJpdChbJl0gKHNpemVfdCBpKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1hcDEu
Z2V0KGkpKTsKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMx
W2ldKTsKKyAgICAgICAgY291bnQrKzsKKyAgICB9KTsKKyAgICBBU1NFUlRfRVEoY291bnQsIGV4
cGVjdGVkTnVtYmVyT2ZTZXRCaXRzMSk7CisKKyAgICBjb3VudCA9IDA7CisgICAgQVNTRVJUX1RS
VUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBiaXRtYXBGaWxsZWQuZm9yRWFjaFNldEJp
dChbJl0gKHNpemVfdCBpKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5nZXQo
aSkpOworICAgICAgICBjb3VudCsrOworICAgIH0pOworICAgIEFTU0VSVF9FUShjb3VudCwgc2l6
ZSk7CisKKyAgICBjb3VudCA9IDA7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQu
aXNFbXB0eSgpKTsKKyAgICBiaXRtYXBTbWFsbFplcm9lZC5mb3JFYWNoU2V0Qml0KFsmXSAoc2l6
ZV90IGkpIHsKKyAgICAgICAgY29uc3RleHByIGJvb2wgbm90UmVhY2hlZCA9IGZhbHNlOworICAg
ICAgICBBU1NFUlRfVFJVRShub3RSZWFjaGVkKTsKKyAgICAgICAgY291bnQrKzsKKyAgICB9KTsK
KyAgICBBU1NFUlRfRVEoY291bnQsIHplcm9TaXplKTsKKworICAgIGNvdW50ID0gMDsKKyAgICBB
U1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgYml0bWFwU21hbGxG
aWxsZWQuZm9yRWFjaFNldEJpdChbJl0gKHNpemVfdCBpKSB7CisgICAgICAgIEFTU0VSVF9UUlVF
KGJpdG1hcFNtYWxsRmlsbGVkLmdldChpKSk7CisgICAgICAgIGNvdW50Kys7CisgICAgfSk7Cisg
ICAgQVNTRVJUX0VRKGNvdW50LCBzbWFsbFNpemUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBX
b3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcEZpbmRCaXQoKQoreworICAgIERFQ0xBUkVfQU5EX0lO
SVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgYXV0byBmaW5kRXhwZWN0ZWRCaXQgPSBbXSAo
YXV0byBleHBlY3RlZEJpdHMsIHNpemVfdCBzdGFydEluZGV4LCBib29sIHZhbHVlKSAtPiBzaXpl
X3QgeworICAgICAgICBmb3IgKGF1dG8gaW5kZXggPSBzdGFydEluZGV4OyBpbmRleCA8IHNpemU7
ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlmIChleHBlY3RlZEJpdHNbaW5kZXhdID09IHZhbHVl
KQorICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gc3RhcnRJbmRleDsKKyAgICB9OworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAxLCBsYXN0
SW5kZXggPSAxOyBpIDwgc2l6ZTsgbGFzdEluZGV4ID0gaSwgaSArPSBsYXN0SW5kZXgpIHsKKyAg
ICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZmluZEJpdChpLCB0cnVlKSwgZmluZEV4cGVjdGVkQml0
KGV4cGVjdGVkQml0czEsIGksIHRydWUpKTsKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZmlu
ZEJpdChpLCBmYWxzZSksIGZpbmRFeHBlY3RlZEJpdChleHBlY3RlZEJpdHMxLCBpLCBmYWxzZSkp
OworICAgICAgICBBU1NFUlRfRVEoYml0bWFwMi5maW5kQml0KGksIHRydWUpLCBmaW5kRXhwZWN0
ZWRCaXQoZXhwZWN0ZWRCaXRzMiwgaSwgdHJ1ZSkpOworICAgICAgICBBU1NFUlRfRVEoYml0bWFw
Mi5maW5kQml0KGksIGZhbHNlKSwgZmluZEV4cGVjdGVkQml0KGV4cGVjdGVkQml0czIsIGksIGZh
bHNlKSk7CisKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDIuZmluZEJpdChpLCB0cnVlKSwgYml0
bWFwMy5maW5kQml0KGksIHRydWUpKTsKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDIuZmluZEJp
dChpLCBmYWxzZSksIGJpdG1hcDMuZmluZEJpdChpLCBmYWxzZSkpOworICAgIH0KKworICAgIEFT
U0VSVF9FUShiaXRtYXAwLmZpbmRCaXQoMCwgZmFsc2UpLCB6ZXJvU2l6ZSk7CisgICAgQVNTRVJU
X0VRKGJpdG1hcDAuZmluZEJpdCgxMCwgZmFsc2UpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KDEwKSk7
CisgICAgQVNTRVJUX0VRKGJpdG1hcDAuZmluZEJpdChzaXplIC0gMSwgZmFsc2UpLCBzaXplLTEp
OworICAgIEFTU0VSVF9FUShiaXRtYXAwLmZpbmRCaXQoc2l6ZSwgZmFsc2UpLCBzaXplKTsKKyAg
ICBBU1NFUlRfRVEoYml0bWFwMC5maW5kQml0KHNpemUgKyAxLCBmYWxzZSksIHNpemUpOworCisg
ICAgQVNTRVJUX0VRKGJpdG1hcDAuZmluZEJpdCgwLCB0cnVlKSwgc2l6ZSk7CisgICAgQVNTRVJU
X0VRKGJpdG1hcDAuZmluZEJpdCgxMCwgdHJ1ZSksIHNpemUpOworICAgIEFTU0VSVF9FUShiaXRt
YXAwLmZpbmRCaXQoc2l6ZSAtIDEsIHRydWUpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFw
MC5maW5kQml0KHNpemUsIHRydWUpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMC5maW5k
Qml0KHNpemUgKyAxLCB0cnVlKSwgc2l6ZSk7CisKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVk
LmZpbmRCaXQoMCwgZmFsc2UpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLmZp
bmRCaXQoMTAsIGZhbHNlKSwgc2l6ZSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5k
Qml0KHNpemUgLSAxLCBmYWxzZSksIHNpemUpOworICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQu
ZmluZEJpdChzaXplLCBmYWxzZSksIHNpemUpOworICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQu
ZmluZEJpdChzaXplICsgMSwgZmFsc2UpLCBzaXplKTsKKworICAgIEFTU0VSVF9FUShiaXRtYXBG
aWxsZWQuZmluZEJpdCgwLCB0cnVlKSwgemVyb1NpemUpOworICAgIEFTU0VSVF9FUShiaXRtYXBG
aWxsZWQuZmluZEJpdCgxMCwgdHJ1ZSksIHN0YXRpY19jYXN0PHNpemVfdD4oMTApKTsKKyAgICBB
U1NFUlRfRVEoYml0bWFwRmlsbGVkLmZpbmRCaXQoc2l6ZSAtIDEsIHRydWUpLCBzaXplLTEpOwor
ICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQuZmluZEJpdChzaXplLCB0cnVlKSwgc2l6ZSk7Cisg
ICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5kQml0KHNpemUgKyAxLCB0cnVlKSwgc2l6ZSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwSXRlcmF0
aW9uKCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAg
IGF1dG8gY29tcHV0ZVNldEJpdHNDb3VudCA9IFs9XSAoYXV0byYgYml0bWFwKSAtPiBzaXplX3Qg
eworICAgICAgICBzaXplX3QgY291bnQgPSAwOworICAgICAgICBmb3IgKGF1dG8gYml0SW5kZXgg
OiBiaXRtYXApIHsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShiaXRJbmRleCk7CisgICAgICAg
ICAgICBjb3VudCsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjb3VudDsKKyAgICB9Owor
CisgICAgRVhQRUNUX0VRKGNvbXB1dGVTZXRCaXRzQ291bnQoYml0bWFwMCksIHplcm9TaXplKTsK
KyAgICBFWFBFQ1RfRVEoY29tcHV0ZVNldEJpdHNDb3VudChiaXRtYXAxKSwgZXhwZWN0ZWROdW1i
ZXJPZlNldEJpdHMxKTsKKyAgICBFWFBFQ1RfRVEoY29tcHV0ZVNldEJpdHNDb3VudChiaXRtYXAy
KSwgZXhwZWN0ZWROdW1iZXJPZlNldEJpdHMyKTsKKyAgICBFWFBFQ1RfRVEoY29tcHV0ZVNldEJp
dHNDb3VudChiaXRtYXAzKSwgZXhwZWN0ZWROdW1iZXJPZlNldEJpdHMyKTsKKyAgICBFWFBFQ1Rf
RVEoY29tcHV0ZVNldEJpdHNDb3VudChiaXRtYXBGaWxsZWQpLCBzaXplKTsKKyAgICBFWFBFQ1Rf
RVEoY29tcHV0ZVNldEJpdHNDb3VudChiaXRtYXBTbWFsbFplcm9lZCksIHplcm9TaXplKTsKKyAg
ICBFWFBFQ1RfRVEoY29tcHV0ZVNldEJpdHNDb3VudChiaXRtYXBTbWFsbEZpbGxlZCksIHNtYWxs
U2l6ZSk7CisKKyAgICBhdXRvIHZlcmlmeVNldEJpdHMgPSBbPV0gKGF1dG8mIGJpdG1hcCwgYXV0
byYgZXhwZWN0ZWRCaXRzKSB7CisgICAgICAgIGZvciAoYXV0byBiaXRJbmRleCA6IGJpdG1hcCkg
eworICAgICAgICAgICAgRVhQRUNUX1RSVUUoYml0bWFwLmdldChiaXRJbmRleCkpOworICAgICAg
ICAgICAgRVhQRUNUX0VRKGJpdG1hcC5nZXQoYml0SW5kZXgpLCBleHBlY3RlZEJpdHNbYml0SW5k
ZXhdKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2ZXJpZnlTZXRCaXRzKGJpdG1hcDEsIGV4
cGVjdGVkQml0czEpOworICAgIHZlcmlmeVNldEJpdHMoYml0bWFwMiwgZXhwZWN0ZWRCaXRzMik7
CisgICAgdmVyaWZ5U2V0Qml0cyhiaXRtYXAzLCBleHBlY3RlZEJpdHMyKTsKKworICAgIGF1dG8g
dmVyaWZ5Qml0c0FsbFNldCA9IFs9XSAoYXV0byYgYml0bWFwKSB7CisgICAgICAgIHNpemVfdCBs
YXN0Qml0SW5kZXggPSAwOworICAgICAgICBmb3IgKGF1dG8gYml0SW5kZXggOiBiaXRtYXApIHsK
KyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGJpdG1hcC5nZXQoYml0SW5kZXgpKTsKKyAgICAgICAg
ICAgIGlmIChiaXRJbmRleCkKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoYml0SW5kZXgsIGxh
c3RCaXRJbmRleCArIDEpOworICAgICAgICAgICAgbGFzdEJpdEluZGV4ID0gYml0SW5kZXg7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgdmVyaWZ5Qml0c0FsbFNldChiaXRtYXBGaWxsZWQpOwor
ICAgIHZlcmlmeUJpdHNBbGxTZXQoYml0bWFwU21hbGxGaWxsZWQpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcE1lcmdlQW5kQ2xlYXIoKQoreworICAg
IERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQml0bWFwPHNpemUs
IFdvcmRUeXBlPiB0ZW1wOworICAgIEJpdG1hcDxzaXplLCBXb3JkVHlwZT4gc2F2ZWRCaXRtYXAx
OworCisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDIuaXNFbXB0eSgpKTsKKworICAgIHNhdmVkQml0
bWFwMS5tZXJnZShiaXRtYXAxKTsKKyAgICBBU1NFUlRfRVEoc2F2ZWRCaXRtYXAxLCBiaXRtYXAx
KTsKKyAgICAKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgYml0bWFwMik7CisgICAgQVNTRVJUX05F
KGJpdG1hcDEsIGJpdG1hcDMpOworICAgIEFTU0VSVF9FUShiaXRtYXAzLCBiaXRtYXAyKTsKKyAg
ICBiaXRtYXAxLm1lcmdlQW5kQ2xlYXIoYml0bWFwMyk7CisgICAgQVNTRVJUX05FKGJpdG1hcDEs
IGJpdG1hcDIpOworICAgIEFTU0VSVF9ORShiaXRtYXAxLCBzYXZlZEJpdG1hcDEpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcDMuaXNFbXB0eSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICBib29sIGV4cGVjdGVkQml0ID0gZXhwZWN0ZWRCaXRzMVtp
XSB8IGV4cGVjdGVkQml0czJbaV07CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAxLmdldChpKSwg
ZXhwZWN0ZWRCaXQpOworICAgIH0KKworICAgIGJpdG1hcDMubWVyZ2UoYml0bWFwMik7IC8vIHJl
c3RvcmUgYml0bWFwMworICAgIEFTU0VSVF9FUShiaXRtYXAzLCBiaXRtYXAyKTsKKworICAgIEFT
U0VSVF9UUlVFKHRlbXAuaXNFbXB0eSgpKTsKKyAgICB0ZW1wLm1lcmdlQW5kQ2xlYXIoYml0bWFw
Myk7CisgICAgQVNTRVJUX0ZBTFNFKHRlbXAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRVEodGVt
cCwgYml0bWFwMik7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5pc0VtcHR5KCkpOworCisgICAg
Qml0bWFwPHNpemUsIFdvcmRUeXBlPiBzYXZlZEJpdG1hcEZpbGxlZDsKKyAgICBzYXZlZEJpdG1h
cEZpbGxlZC5tZXJnZShiaXRtYXBGaWxsZWQpOworCisgICAgdGVtcC5jbGVhckFsbCgpOworICAg
IEFTU0VSVF9UUlVFKHRlbXAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRkFMU0UodGVtcC5pc0Z1
bGwoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcEZpbGxlZC5pc0VtcHR5KCkpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgdGVtcC5tZXJnZUFuZENsZWFy
KGJpdG1hcEZpbGxlZCk7CisgICAgQVNTRVJUX0ZBTFNFKHRlbXAuaXNFbXB0eSgpKTsKKyAgICBB
U1NFUlRfVFJVRSh0ZW1wLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQu
aXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKwor
ICAgIGJpdG1hcDMubWVyZ2UoYml0bWFwMik7IC8vIHJlc3RvcmUgYml0bWFwMworICAgIEFTU0VS
VF9FUShiaXRtYXAzLCBiaXRtYXAyKTsKKyAgICBiaXRtYXBGaWxsZWQubWVyZ2Uoc2F2ZWRCaXRt
YXBGaWxsZWQpOyAvLyByZXN0b3JlIGJpdG1hcEZpbGxlZAorICAgIEFTU0VSVF9UUlVFKGJpdG1h
cEZpbGxlZC5pc0Z1bGwoKSk7CisKKyAgICBBU1NFUlRfVFJVRSh0ZW1wLmlzRnVsbCgpKTsKKyAg
ICB0ZW1wLm1lcmdlQW5kQ2xlYXIoYml0bWFwMyk7CisgICAgQVNTRVJUX1RSVUUodGVtcC5pc0Z1
bGwoKSk7CisgICAgQVNTRVJUX0VRKHRlbXAsIGJpdG1hcEZpbGxlZCk7CisgICAgQVNTRVJUX1RS
VUUoYml0bWFwMy5pc0VtcHR5KCkpOworCisgICAgQml0bWFwPHNtYWxsU2l6ZSwgV29yZFR5cGU+
IHNtYWxsVGVtcDsKKworICAgIHNtYWxsVGVtcC5tZXJnZShiaXRtYXBTbWFsbEZpbGxlZCk7Cisg
ICAgQVNTRVJUX1RSVUUoc21hbGxUZW1wLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRt
YXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIHNtYWxsVGVtcC5tZXJnZUFuZENsZWFyKGJp
dG1hcFNtYWxsWmVyb2VkKTsKKyAgICBBU1NFUlRfVFJVRShzbWFsbFRlbXAuaXNGdWxsKCkpOwor
ICAgIEFTU0VSVF9GQUxTRShzbWFsbFRlbXAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworCisgICAgc21hbGxUZW1wLmNsZWFyQWxsKCk7
CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VS
VF9UUlVFKHNtYWxsVGVtcC5pc0VtcHR5KCkpOworICAgIHNtYWxsVGVtcC5tZXJnZUFuZENsZWFy
KGJpdG1hcFNtYWxsRmlsbGVkKTsKKyAgICBBU1NFUlRfVFJVRShzbWFsbFRlbXAuaXNGdWxsKCkp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwU2V0QW5kQ2xlYXIoKQor
eworICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQml0bWFw
PHNpemUsIFdvcmRUeXBlPiB0ZW1wOworICAgIEJpdG1hcDxzaXplLCBXb3JkVHlwZT4gc2F2ZWRC
aXRtYXAxOworCisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDIuaXNFbXB0eSgpKTsKKworICAgIHNh
dmVkQml0bWFwMS5tZXJnZShiaXRtYXAxKTsKKyAgICBBU1NFUlRfRVEoc2F2ZWRCaXRtYXAxLCBi
aXRtYXAxKTsKKyAgICAKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgYml0bWFwMik7CisgICAgQVNT
RVJUX05FKGJpdG1hcDEsIGJpdG1hcDMpOworICAgIEFTU0VSVF9FUShiaXRtYXAzLCBiaXRtYXAy
KTsKKyAgICBiaXRtYXAxLnNldEFuZENsZWFyKGJpdG1hcDMpOworICAgIEFTU0VSVF9FUShiaXRt
YXAxLCBiaXRtYXAyKTsKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgc2F2ZWRCaXRtYXAxKTsKKyAg
ICBBU1NFUlRfVFJVRShiaXRtYXAzLmlzRW1wdHkoKSk7CisKKyAgICBiaXRtYXAzLm1lcmdlKGJp
dG1hcDIpOyAvLyByZXN0b3JlIGJpdG1hcDMKKyAgICBBU1NFUlRfRVEoYml0bWFwMywgYml0bWFw
Mik7CisKKyAgICBBU1NFUlRfVFJVRSh0ZW1wLmlzRW1wdHkoKSk7CisgICAgdGVtcC5zZXRBbmRD
bGVhcihiaXRtYXAzKTsKKyAgICBBU1NFUlRfRkFMU0UodGVtcC5pc0VtcHR5KCkpOworICAgIEFT
U0VSVF9FUSh0ZW1wLCBiaXRtYXAyKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAzLmlzRW1wdHko
KSk7CisKKyAgICB0ZW1wLmNsZWFyQWxsKCk7CisgICAgQVNTRVJUX1RSVUUodGVtcC5pc0VtcHR5
KCkpOworICAgIEFTU0VSVF9GQUxTRSh0ZW1wLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfRkFMU0Uo
Yml0bWFwRmlsbGVkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlz
RnVsbCgpKTsKKyAgICB0ZW1wLnNldEFuZENsZWFyKGJpdG1hcEZpbGxlZCk7CisgICAgQVNTRVJU
X0ZBTFNFKHRlbXAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRSh0ZW1wLmlzRnVsbCgpKTsK
KyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRkFM
U0UoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKworICAgIGJpdG1hcDMubWVyZ2UoYml0bWFwMik7
IC8vIHJlc3RvcmUgYml0bWFwMworICAgIEFTU0VSVF9FUShiaXRtYXAzLCBiaXRtYXAyKTsKKwor
ICAgIEFTU0VSVF9UUlVFKHRlbXAuaXNGdWxsKCkpOworICAgIHRlbXAuc2V0QW5kQ2xlYXIoYml0
bWFwMyk7CisgICAgQVNTRVJUX0ZBTFNFKHRlbXAuaXNGdWxsKCkpOworICAgIEFTU0VSVF9FUSh0
ZW1wLCBiaXRtYXAyKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAzLmlzRW1wdHkoKSk7CisKKyAg
ICBCaXRtYXA8c21hbGxTaXplLCBXb3JkVHlwZT4gc21hbGxUZW1wOworCisgICAgc21hbGxUZW1w
Lm1lcmdlKGJpdG1hcFNtYWxsRmlsbGVkKTsKKyAgICBBU1NFUlRfVFJVRShzbWFsbFRlbXAuaXNG
dWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7Cisg
ICAgc21hbGxUZW1wLnNldEFuZENsZWFyKGJpdG1hcFNtYWxsWmVyb2VkKTsKKyAgICBBU1NFUlRf
VFJVRShzbWFsbFRlbXAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbFpl
cm9lZC5pc0VtcHR5KCkpOworICAgIAorICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVk
LmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShzbWFsbFRlbXAuaXNFbXB0eSgpKTsKKyAgICBz
bWFsbFRlbXAuc2V0QW5kQ2xlYXIoYml0bWFwU21hbGxGaWxsZWQpOworICAgIEFTU0VSVF9UUlVF
KHNtYWxsVGVtcC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQu
aXNFbXB0eSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RC
aXRtYXBPcGVyYXRvckVxdWFsKCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9S
X1RFU1QoKTsKKworICAgIEVYUEVDVF9UUlVFKGJpdG1hcDAgPT0gYml0bWFwMCk7CisgICAgRVhQ
RUNUX0ZBTFNFKGJpdG1hcDAgPT0gYml0bWFwMSk7CisgICAgRVhQRUNUX1RSVUUoYml0bWFwMSA9
PSBiaXRtYXAxKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMSA9PSBiaXRtYXAyKTsKKyAgICBF
WFBFQ1RfRkFMU0UoYml0bWFwMSA9PSBiaXRtYXAzKTsKKyAgICBFWFBFQ1RfVFJVRShiaXRtYXAy
ID09IGJpdG1hcDMpOworICAgIEVYUEVDVF9GQUxTRShiaXRtYXBGaWxsZWQgPT0gYml0bWFwMSk7
CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkID09IGJpdG1hcFNtYWxsRmlsbGVk
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBPcGVy
YXRvck5vdEVxdWFsKCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1Qo
KTsKKworICAgIEVYUEVDVF9GQUxTRShiaXRtYXAwICE9IGJpdG1hcDApOworICAgIEVYUEVDVF9U
UlVFKGJpdG1hcDAgIT0gYml0bWFwMSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDEgIT0gYml0
bWFwMSk7CisgICAgRVhQRUNUX1RSVUUoYml0bWFwMSAhPSBiaXRtYXAyKTsKKyAgICBFWFBFQ1Rf
VFJVRShiaXRtYXAxICE9IGJpdG1hcDMpOworICAgIEVYUEVDVF9GQUxTRShiaXRtYXAyICE9IGJp
dG1hcDMpOworICAgIEVYUEVDVF9UUlVFKGJpdG1hcEZpbGxlZCAhPSBiaXRtYXAxKTsKKyAgICBF
WFBFQ1RfVFJVRShiaXRtYXBTbWFsbFplcm9lZCAhPSBiaXRtYXBTbWFsbEZpbGxlZCk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwSGFzaCgpCit7Cisg
ICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBjb25zdGV4cHIg
dW5zaWduZWQgd29yZFNpemUgPSBzaXplb2YoV29yZFR5cGUpICogODsKKyAgICBjb25zdGV4cHIg
c2l6ZV90IHdvcmRzID0gKHNpemUgKyB3b3JkU2l6ZSAtIDEpIC8gd29yZFNpemU7CisKKyAgICBh
dXRvIGV4cGVjdGVkQml0bWFwMEhhc2ggPSBbXSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgIHVu
c2lnbmVkIHJlc3VsdCA9IDA7CisgICAgICAgIFdvcmRUeXBlIHplcm9Xb3JkID0gMDsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQorICAgICAgICAgICAgcmVzdWx0
IF49IEludEhhc2g8V29yZFR5cGU+OjpoYXNoKHplcm9Xb3JkKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9OworCisgICAgYXV0byBleHBlY3RlZEJpdG1hcEZpbGxlZEhhc2ggPSBbXSAo
KSAtPiB1bnNpZ25lZCB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgICAgIFdv
cmRUeXBlIGZpbGxlZFdvcmQgPSBzdGF0aWNfY2FzdDxXb3JkVHlwZT4oLTEpOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCisgICAgICAgICAgICByZXN1bHQgXj0g
SW50SGFzaDxXb3JkVHlwZT46Omhhc2goZmlsbGVkV29yZCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfTsKKworICAgIEFTU0VSVF9FUShiaXRtYXAwLmhhc2goKSwgZXhwZWN0ZWRCaXRt
YXAwSGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLmhhc2goKSwgZXhwZWN0ZWRC
aXRtYXBGaWxsZWRIYXNoKCkpOworCisgICAgYXV0byBleHBlY3RlZEhhc2ggPSBbPV0gKGF1dG8g
ZXhwZWN0ZWRCaXRzLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAw
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7KSB7CisgICAgICAgICAgICBX
b3JkVHlwZSB3b3JkID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgd29y
ZFNpemUgJiYgaSA8IHNpemU7ICsraSwgKytqKQorICAgICAgICAgICAgICAgIHdvcmQgfD0gc3Rh
dGljX2Nhc3Q8V29yZFR5cGU+KCEhZXhwZWN0ZWRCaXRzW2ldKSA8PCBqOworICAgICAgICAgICAg
cmVzdWx0IF49IEludEhhc2g8V29yZFR5cGU+OjpoYXNoKHdvcmQpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIEFTU0VSVF9FUShiaXRtYXAxLmhhc2go
KSwgZXhwZWN0ZWRIYXNoKGV4cGVjdGVkQml0czEsIHNpemUpKTsKKyAgICBBU1NFUlRfRVEoYml0
bWFwMi5oYXNoKCksIGV4cGVjdGVkSGFzaChleHBlY3RlZEJpdHMyLCBzaXplKSk7CisKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgZXhwZWN0ZWRTbWFsbEJpdHNbc21hbGxTaXplXSA9IHsKKyAg
ICAgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCAgZmFsc2UsIGZhbHNlLCB0
cnVlLAorICAgICAgICB0cnVlLAorICAgIH07CisgICAgQml0bWFwPHNtYWxsU2l6ZSwgV29yZFR5
cGU+IHRlbXAxOworICAgIEJpdG1hcDxzbWFsbFNpemUsIFdvcmRUeXBlPiB0ZW1wMjsKKworICAg
IGF1dG8gaW5pdFRlbXAgPSBbJl0gKGF1dG8mIGJpdG1hcCkgeworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNtYWxsU2l6ZTsgKytpKQorICAgICAgICAgICAgYml0bWFwLnNldChpLCBl
eHBlY3RlZFNtYWxsQml0c1tpXSk7CisgICAgfTsKKworICAgIGluaXRUZW1wKHRlbXAxKTsKKyAg
ICBBU1NFUlRfRVEodGVtcDEuaGFzaCgpLCBleHBlY3RlZEhhc2goZXhwZWN0ZWRTbWFsbEJpdHMs
IHNtYWxsU2l6ZSkpOworCisgICAgdGVtcDIuaW52ZXJ0KCk7CisgICAgaW5pdFRlbXAodGVtcDIp
OworICAgIEFTU0VSVF9FUSh0ZW1wMi5oYXNoKCksIGV4cGVjdGVkSGFzaChleHBlY3RlZFNtYWxs
Qml0cywgc21hbGxTaXplKSk7CisgICAgQVNTRVJUX0VRKHRlbXAyLmhhc2goKSwgdGVtcDEuaGFz
aCgpKTsKK30KKworVEVTVChXVEZfQml0bWFwLCBTaXplX3VpbnQzMl90KSB7IHRlc3RCaXRtYXBT
aXplPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENvbnN0cnVjdGVkRW1wdHlfdWlu
dDMyX3QpIHsgdGVzdEJpdG1hcENvbnN0cnVjdGVkRW1wdHk8dWludDMyX3Q+KCk7IH0KK1RFU1Qo
V1RGX0JpdG1hcCwgU2V0R2V0X3VpbnQzMl90KSB7IHRlc3RCaXRtYXBTZXRHZXQ8dWludDMyX3Q+
KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgVGVzdEFuZFNldF91aW50MzJfdCkgeyB0ZXN0Qml0bWFw
VGVzdEFuZFNldDx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBUZXN0QW5kQ2xlYXJf
dWludDMyX3QpIHsgdGVzdEJpdG1hcFRlc3RBbmRDbGVhcjx1aW50MzJfdD4oKTsgfQorVEVTVChX
VEZfQml0bWFwLCBDb25jdXJyZW50VGVzdEFuZFNldF91aW50MzJfdCkgeyB0ZXN0Qml0bWFwQ29u
Y3VycmVudFRlc3RBbmRTZXQ8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ29uY3Vy
cmVudFRlc3RBbmRDbGVhcl91aW50MzJfdCkgeyB0ZXN0Qml0bWFwQ29uY3VycmVudFRlc3RBbmRD
bGVhcjx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDbGVhcl91aW50MzJfdCkgeyB0
ZXN0Qml0bWFwQ2xlYXI8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ2xlYXJBbGxf
dWludDMyX3QpIHsgdGVzdEJpdG1hcENsZWFyQWxsPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9C
aXRtYXAsIEludmVydF91aW50MzJfdCkgeyB0ZXN0Qml0bWFwSW52ZXJ0PHVpbnQzMl90PigpOyB9
CitURVNUKFdURl9CaXRtYXAsIEZpbmRSdW5PZlplcm9zX3VpbnQzMl90KSB7IHRlc3RCaXRtYXBG
aW5kUnVuT2ZaZXJvczx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDb3VudF91aW50
MzJfdCkgeyB0ZXN0Qml0bWFwQ291bnQ8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwg
SXNFbXB0eV91aW50MzJfdCkgeyB0ZXN0Qml0bWFwSXNFbXB0eTx1aW50MzJfdD4oKTsgfQorVEVT
VChXVEZfQml0bWFwLCBJc0Z1bGxfdWludDMyX3QpIHsgdGVzdEJpdG1hcElzRnVsbDx1aW50MzJf
dD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBNZXJnZV91aW50MzJfdCkgeyB0ZXN0Qml0bWFwTWVy
Z2U8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRmlsdGVyX3VpbnQzMl90KSB7IHRl
c3RCaXRtYXBGaWx0ZXI8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRXhjbHVkZV91
aW50MzJfdCkgeyB0ZXN0Qml0bWFwRXhjbHVkZTx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0
bWFwLCBDb25jdXJyZW50RmlsdGVyX3VpbnQzMl90KSB7IHRlc3RCaXRtYXBDb25jdXJyZW50Rmls
dGVyPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIFN1YnN1bWVzX3VpbnQzMl90KSB7
IHRlc3RCaXRtYXBTdWJzdW1lczx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBGb3JF
YWNoU2V0Qml0X3VpbnQzMl90KSB7IHRlc3RCaXRtYXBGb3JFYWNoU2V0Qml0PHVpbnQzMl90Pigp
OyB9CitURVNUKFdURl9CaXRtYXAsIEZpbmRCaXRfdWludDMyX3QpIHsgdGVzdEJpdG1hcEZpbmRC
aXQ8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgSXRlcmF0aW9uX3VpbnQzMl90KSB7
IHRlc3RCaXRtYXBJdGVyYXRpb248dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgTWVy
Z2VBbmRDbGVhcl91aW50MzJfdCkgeyB0ZXN0Qml0bWFwTWVyZ2VBbmRDbGVhcjx1aW50MzJfdD4o
KTsgfQorVEVTVChXVEZfQml0bWFwLCBTZXRBbmRDbGVhcl91aW50MzJfdCkgeyB0ZXN0Qml0bWFw
U2V0QW5kQ2xlYXI8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgT3BlcmF0b3JFcXVh
bEFjY2Vzc191aW50MzJfdCkgeyB0ZXN0Qml0bWFwT3BlcmF0b3JFcXVhbDx1aW50MzJfdD4oKTsg
fQorVEVTVChXVEZfQml0bWFwLCBPcGVyYXRvck5vdEVxdWFsQWNjZXNzX3VpbnQzMl90KSB7IHRl
c3RCaXRtYXBPcGVyYXRvck5vdEVxdWFsPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAs
IEhhc2hfdWludDMyX3QpIHsgdGVzdEJpdG1hcEhhc2g8dWludDMyX3Q+KCk7IH0KKworI2lmIENQ
VShSRUdJU1RFUjY0KQorCitURVNUKFdURl9CaXRtYXAsIFNpemVfdWludDY0X3QpIHsgdGVzdEJp
dG1hcFNpemU8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ29uc3RydWN0ZWRFbXB0
eV91aW50NjRfdCkgeyB0ZXN0Qml0bWFwQ29uc3RydWN0ZWRFbXB0eTx1aW50NjRfdD4oKTsgfQor
VEVTVChXVEZfQml0bWFwLCBTZXRHZXRfdWludDY0X3QpIHsgdGVzdEJpdG1hcFNldEdldDx1aW50
NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBUZXN0QW5kU2V0X3VpbnQ2NF90KSB7IHRlc3RC
aXRtYXBUZXN0QW5kU2V0PHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIFRlc3RBbmRD
bGVhcl91aW50NjRfdCkgeyB0ZXN0Qml0bWFwVGVzdEFuZENsZWFyPHVpbnQ2NF90PigpOyB9CitU
RVNUKFdURl9CaXRtYXAsIENvbmN1cnJlbnRUZXN0QW5kU2V0X3VpbnQ2NF90KSB7IHRlc3RCaXRt
YXBDb25jdXJyZW50VGVzdEFuZFNldDx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBD
b25jdXJyZW50VGVzdEFuZENsZWFyX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBDb25jdXJyZW50VGVz
dEFuZENsZWFyPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENsZWFyX3VpbnQ2NF90
KSB7IHRlc3RCaXRtYXBDbGVhcjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDbGVh
ckFsbF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwQ2xlYXJBbGw8dWludDY0X3Q+KCk7IH0KK1RFU1Qo
V1RGX0JpdG1hcCwgSW52ZXJ0X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBJbnZlcnQ8dWludDY0X3Q+
KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRmluZFJ1bk9mWmVyb3NfdWludDY0X3QpIHsgdGVzdEJp
dG1hcEZpbmRSdW5PZlplcm9zPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENvdW50
X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBDb3VudDx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0
bWFwLCBJc0VtcHR5X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBJc0VtcHR5PHVpbnQ2NF90PigpOyB9
CitURVNUKFdURl9CaXRtYXAsIElzRnVsbF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwSXNGdWxsPHVp
bnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIE1lcmdlX3VpbnQ2NF90KSB7IHRlc3RCaXRt
YXBNZXJnZTx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBGaWx0ZXJfdWludDY0X3Qp
IHsgdGVzdEJpdG1hcEZpbHRlcjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBFeGNs
dWRlX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBFeGNsdWRlPHVpbnQ2NF90PigpOyB9CitURVNUKFdU
Rl9CaXRtYXAsIENvbmN1cnJlbnRGaWx0ZXJfdWludDY0X3QpIHsgdGVzdEJpdG1hcENvbmN1cnJl
bnRGaWx0ZXI8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgU3Vic3VtZXNfdWludDY0
X3QpIHsgdGVzdEJpdG1hcFN1YnN1bWVzPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAs
IEZvckVhY2hTZXRCaXRfdWludDY0X3QpIHsgdGVzdEJpdG1hcEZvckVhY2hTZXRCaXQ8dWludDY0
X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRmluZEJpdF91aW50NjRfdCkgeyB0ZXN0Qml0bWFw
RmluZEJpdDx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBJdGVyYXRpb25fdWludDY0
X3QpIHsgdGVzdEJpdG1hcEl0ZXJhdGlvbjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFw
LCBNZXJnZUFuZENsZWFyX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBNZXJnZUFuZENsZWFyPHVpbnQ2
NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIFNldEFuZENsZWFyX3VpbnQ2NF90KSB7IHRlc3RC
aXRtYXBTZXRBbmRDbGVhcjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBPcGVyYXRv
ckVxdWFsQWNjZXNzX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBPcGVyYXRvckVxdWFsPHVpbnQ2NF90
PigpOyB9CitURVNUKFdURl9CaXRtYXAsIE9wZXJhdG9yTm90RXF1YWxBY2Nlc3NfdWludDY0X3Qp
IHsgdGVzdEJpdG1hcE9wZXJhdG9yTm90RXF1YWw8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0Jp
dG1hcCwgSGFzaF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwSGFzaDx1aW50NjRfdD4oKTsgfQorCisj
ZW5kaWYgLy8gQ1BVKFJFR0lTVEVSNjQpCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI2MTEzNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA1LTA0ICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQ
VVJlZ2lzdGVyIHdvcmQgc2l6ZSBmb3IgaW50ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzYyNzU1ODY1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGVkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1kZWxldGUt
c3RhbGUtdW5kby1pdGVtcy5odG1sIGV4cG9zZWQgYSBidWcgaW4KKyAgICAgICAgdGhpcyBwYXRj
aC4gIEhvd2V2ZXIsIHdoZW4gYSBmYWlsdXJlIG9jY3VycywgdGhpcyB0ZXN0IHJ1bnMgcGVycGV0
dWFsbHkgdW50aWwgaXQKKyAgICAgICAgdGltZXMgb3V0LiAgVGhlcmUncyBubyBuZWVkIHRvIGRv
IHRoaXMuICBBZnRlciBhIGZpbml0ZSBudW1iZXIgb2YgR0MgY3ljbGVzLAorICAgICAgICB1bnJl
YWNoYWJsZSBvYmplY3RzIHNob3VsZCBiZSBjb2xsZWN0ZWQuICBUaGlzIGlzIGVzcGVjaWFsbHkg
c28gYmVjYXVzZQorICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpIGRvZXMgYSBzeW5jaHJv
bm91cyBmdWxsIEdDLgorCisgICAgICAgIEFkZGVkIGEgY2FwIG9mIDEwIEdDIHRyaWVzLCBhbmQg
ZmFpbCBvdXQgaWYgdGhlIHRlc3QgZG9lcyBub3Qgc2VlIHRoZSBleHBlY3RlZAorICAgICAgICBy
ZXN1bHQuICBUaGlzIGFsbG93cyB0aGUgdGVzdCB0byBmYWlsIGZhc3QgYW5kIGF2b2lkIHRoZSBj
b3N0bHkgdGltZSBvdXQuCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1h
bmFnZXItZGVsZXRlLXN0YWxlLXVuZG8taXRlbXMuaHRtbDoKKwogMjAyMC0wNS0wNCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBPdmVyZmxvdyBzY3Jv
bGxiYXJzIGRvbid0IGdyb3cgd2hlbiBob3ZlcmVkCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItZGVsZXRlLXN0YWxlLXVuZG8taXRlbXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFn
ZXItZGVsZXRlLXN0YWxlLXVuZG8taXRlbXMuaHRtbAkocmV2aXNpb24gMjYxMTM1KQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWRlbGV0ZS1zdGFsZS11
bmRvLWl0ZW1zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDEyIEBACiAgICAgICAg
ICAgICAvLyBoYW5kbGVycyBhcmUgbm90IHByb3Blcmx5IHJlbGlucXVpc2hlZCBvbmNlIHRoZXkn
cmUgbm8gbG9uZ2VyIG5lZWRlZC4KICAgICAgICAgICAgIGNvbnN0IG1pbmltdW1OdW1iZXJPZldy
YXBwZXJzVG9Db2xsZWN0QmVmb3JlUGFzc2luZyA9IDMgKiB1bmRvSXRlbUNvdW50IC0gMzAwOwog
ICAgICAgICAgICAgb2JqZWN0Q291bnRBZnRlckNsZWFyaW5nVW5kb1N0YWNrID0gb2JqZWN0Q291
bnRCZWZvcmVDbGVhcmluZ1VuZG9TdGFjazsKKyAgICAgICAgICAgIHZhciB0cmllcyA9IDA7CiAg
ICAgICAgICAgICB3aGlsZSAob2JqZWN0Q291bnRCZWZvcmVDbGVhcmluZ1VuZG9TdGFjayAtIG9i
amVjdENvdW50QWZ0ZXJDbGVhcmluZ1VuZG9TdGFjayA8IG1pbmltdW1OdW1iZXJPZldyYXBwZXJz
VG9Db2xsZWN0QmVmb3JlUGFzc2luZykgewogICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKTsKICAgICAgICAgICAgICAg
ICBvYmplY3RDb3VudEFmdGVyQ2xlYXJpbmdVbmRvU3RhY2sgPSBvYmplY3RDb3VudEFmdGVyU2lt
dWxhdGluZ01lbW9yeVByZXNzdXJlQW5kR2FyYmFnZUNvbGxlY3Rpb24oKTsKKyAgICAgICAgICAg
ICAgICBpZiAodHJpZXMrKyA+IDEwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIm9iamVj
dENvdW50QmVmb3JlQ2xlYXJpbmdVbmRvU3RhY2sgLSBvYmplY3RDb3VudEFmdGVyQ2xlYXJpbmdV
bmRvU3RhY2siLCBgJHttaW5pbXVtTnVtYmVyT2ZXcmFwcGVyc1RvQ29sbGVjdEJlZm9yZVBhc3Np
bmd9YCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398478</attachid>
            <date>2020-05-04 23:44:39 -0700</date>
            <delta_ts>2020-05-05 00:25:07 -0700</delta_ts>
            <desc>proposed patch w/ Win build fixes.</desc>
            <filename>bug-211328.patch</filename>
            <type>text/plain</type>
            <size>59806</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA1LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVyIHdvcmQgc2l6ZSBmb3IgaW50
ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyNzU1ODY1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVy
L0NQVS5oOgorCiAyMDIwLTA1LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gQWRkIEBAdG9TdHJpbmdUYWcgdG8gV2ViQXNzZW1ibHkuR2xvYmFs
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgJKHJldmlzaW9uIDI2MTEz
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNywxNyArMjcsMTAgQEAKIAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRl
IDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBVU0UoSlNWQUxVRTY0KQotdXNpbmcgQ1BVUmVnaXN0ZXIg
PSBpbnQ2NF90OwotdXNpbmcgVUNQVVJlZ2lzdGVyID0gdWludDY0X3Q7Ci0jZWxzZQotdXNpbmcg
Q1BVUmVnaXN0ZXIgPSBpbnQzMl90OwotdXNpbmcgVUNQVVJlZ2lzdGVyID0gdWludDMyX3Q7Ci0j
ZW5kaWYKLQogdXNpbmcgVUNQVVN0cmljdEludDMyID0gVUNQVVJlZ2lzdGVyOwogCiBjb25zdGV4
cHIgYm9vbCBpc0FSTXY3SURJVlN1cHBvcnRlZCgpCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMTUwKQor
KysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAor
MjAyMC0wNS0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
b3cgQml0bWFwIHRvIHVzZSB1cCB0byBhIFVDUFVSZWdpc3RlciB3b3JkIHNpemUgZm9yIGludGVy
bmFsIGJpdCBzdG9yYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjExMzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjc1NTg2NT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBNb3ZlZCB0aGUg
ZGVmaW5pdGlvbiBvZiBDUFVSZWdpc3RlciBhbmQgVUNQVVJlZ2lzdGVyIGRvd24gaW50byBXVEYu
CisgICAgICAgICAgIEFkZGVkIENQVShSRUdJU1RFUjY0KSBhbmQgQ1BVKFJFR0lTVEVSMzIpIGZv
ciBkZXRlcm1pbmluZyB3aGF0IHNpemUgYSBDUFUKKyAgICAgICAgICAgZ2VuZXJhbCBwdXJwb3Nl
IHJlZ2lzdGVyIGlzLgorCisgICAgICAgIDIuIFVwZGF0ZWQgQml0bWFwIHNvIHRoYXQgaXQgd2ls
bCBhdXRvbWF0aWNhbGx5IGNob29zZSB0aGUgbWluaW1hbCByZXF1aXJlZAorICAgICAgICAgICB3
b3JkIHNpemUgZm9yIHRoZSBudW1iZXIgb2YgYml0cyBpdCBuZWVkcyB0byBzdG9yZS4gIFRoaXMg
bWVhbnMgdGhlIEJpdG1hcAorICAgICAgICAgICBjYW4gYXV0b21hdGljYWxseSBjaG9vc2UgYSBX
b3JkVHlwZSBmcm9tIHVpbnQ4X3QgdXAgdG8gVUNQVVJlZ2lzdGVyLgorICAgICAgICAgICBQcmV2
aW91c2x5LCB0aGUgV29yZFR5cGUgaXMgYWx3YXlzIHVpbnQzMl90IGJ5IGRlZmF1bHQuCisKKyAg
ICAgICAgICAgVGhpcyBzaG91bGQgaW1wcm92ZSBwZXJmIHdpdGggdXNlIG9mIEJpdG1hcCBvbiA2
NC1iaXQgcGxhdGZvcm1zLiAgVGhlIHNpemUKKyAgICAgICAgICAgb3B0aW1pemF0aW9uIGlzIG5l
Y2Vzc2FyeSB0byBwcmV2ZW50IGJsb2F0IG9uIDY0LWJpdCBwbGF0Zm9ybXMgd2hpY2ggd291bGQg
aGF2ZQorICAgICAgICAgICByZXN1bHRlZCBpZiB3ZSBzaW1wbHkgc2V0IHRoZSBkZWZhdWx0IHRv
IGFsd2F5cyBiZSBVQ1BVUmVnaXN0ZXIuCisKKyAgICAgICAgMy4gQWRkZWQgYSBjaGVjayBpbiBm
aW5kUnVuT2ZaZXJvcygpIGZvciBoYW5kbGluZyB0aGUgZWRnZSBjYXNlIHdoZXJlIHRoZQorICAg
ICAgICAgICByZXF1ZXN0ZWQgcnVuTGVuZ3RoIGV4Y2VlZHMgdGhlIGJpdG1hcFNpemUuCisKKyAg
ICAgICAgNC4gRml4ZWQgYSBidWcgaW4gY291bnQoKSB0aGF0IHdhcyB1bm5lY2Vzc2FyaWx5IGNh
c3RpbmcgdGhlIGJpdHMgdG8gdW5zaWduZWQKKyAgICAgICAgICAgaW5zdGVhZCBvZiBqdXN0IHVz
aW5nIHRoZSBCaXRtYXAgV29yZFR5cGUuICBBcyBhIHJlc3VsdCwgd2hlbiB1c2luZyBhIFdvcmRU
eXBlCisgICAgICAgICAgIG9mIHVpbnQ2NF90LCBpdCB3YXMgZGlzY2FyZGluZyBiaXRzIGZyb20g
dGhlIGNvdW50LgorCisgICAgICAgIDUuIEZpeGVkIGludmVydCgpIHRvIGxlYXZlIHRoZSBiaXRz
IGJleW9uZCBiaXRtYXBTaXplIHVudG91Y2hlZC4KKyAgICAgICAgICAgRml4ZWQgaXNGdWxsKCkg
dG8gaWdub3JlIHRoZSBiaXRzIGJleW9uZCBiaXRtYXBTaXplLgorCisgICAgICAgICAgIEJ5IGZp
eGluZyBpbnZlcnQoKSB0byBsZWF2ZSB0aG9zZSBiaXRzIGFzIDAsIGlzRW1wdHkoKSBhbmQgaGFz
aCgpIHdpbGwKKyAgICAgICAgICAgY29udGludWUgdG8gd29yay4gIE90aGVyd2lzZSwgaW52ZXJ0
aW5nIHRob3NlIGJpdHMgd2lsbCBjYXVzZSBpc0VtcHR5KCkgdG8KKyAgICAgICAgICAgYWx3YXlz
IGZhaWwsIGFuZCBoYXNoKCkncyByZXN1bHQgbWF5IGJlIGRpZmZlcmVudCBmb3IgdGhlIHNhbWUg
c2V0IG9mIGJpdAorICAgICAgICAgICB2YWx1ZXMgd2l0aGluIGJpdG1hcFNpemUuCisKKyAgICAg
ICAgICAgaXNGdWxsKCksIG9uIHRoZSBvdGhlciBoYW5kLCBjaGVja3MgZm9yIHNldCBiaXRzIGlu
IHRoZSB3b3Jkcy4gIFNpbmNlIHRoZXJlCisgICAgICAgICAgIG1heSBiZSAwIHZhbHVlZCBiaXRz
IGJleW9uZCBiaXRtYXBTaXplLCBpc0Z1bGwoKSBuZWVkcyB0byBiZSBmaXhlZCB0byBpZ25vcmUK
KyAgICAgICAgICAgdGhvc2UuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB3dGYvQml0bWFwLmg6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6
aW52ZXJ0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyBjb25zdCk6
CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y291bnQgY29uc3QpOgorICAgICAgICAoV1RGOjpX
b3JkVHlwZT46OmlzRnVsbCBjb25zdCk6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUNQVS5oOgorICAgICAgICAqIHd0Zi9TdGRJbnRFeHRyYXMu
aDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvU3RkSW50RXh0cmFzLmguCisKIDIwMjAtMDUt
MDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBub3ct
dW5uZWVkZWQgSEFWRShBQ0NFU1NJQklMSVRZX1NVUFBPUlQpCkluZGV4OiBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MTEzNSkKKysrIFNvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc1MSw2
ICs3NTEsNyBAQAogCQlGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFrZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkU4NkE4NzQxRTU5NDQwMjAwMTExQkJGIC8qIEZvcmJpZEhlYXBBbGxv
Y2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcmJpZEhlYXBBbGxv
Y2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODkyNUFGMUQwMERBRUMw
MDQ2OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmRlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTk3RjZBODI0NUNFNURE
MDBDNjNGQzYgLyogU3RkSW50RXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0ZEludEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2QjAz
NTIwMUJFMEI2MDBCOTU4QzEgLyogUG9pbnRlclByZXBhcmF0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQb2ludGVyUHJlcGFyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyog
U3RhY2tTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjM0LDYgKzEyMzUsNyBAQAogCQkJ
CUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8sCiAJCQkJMzEzRURF
Qzk3NzhFNDlDOUJFQTkxQ0ZDIC8qIFN0YWNrVHJhY2UuY3BwICovLAogCQkJCUVGN0Q2Q0Q1OUQ4
NjQyQThBMERBODZBRCAvKiBTdGFja1RyYWNlLmggKi8sCisJCQkJRkU5N0Y2QTgyNDVDRTVERDAw
QzYzRkM2IC8qIFN0ZEludEV4dHJhcy5oICovLAogCQkJCUE4QTQ3MzExMTUxQTgyNUIwMDQxMjNG
RiAvKiBTdGRMaWJFeHRyYXMuaCAqLywKIAkJCQlGRjBBNDM2NTg4OTU0RjNDQjA3REJFQ0EgLyog
U3RkTGlzdC5oICovLAogCQkJCTM5MUJENkJBNEQxNjRGRDI5NEY5QTkzRCAvKiBTdGRNYXAuaCAq
LywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0JpdG1hcC5oCShyZXZpc2lvbiAyNjExMzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9CaXRt
YXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTcgKzIyLDIxIEBACiAjaW5jbHVkZSA8YXJyYXk+
CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRJbnRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGUgPSB1aW50MzJfdD4KK3RlbXBsYXRlPHNpemVfdCBz
aXplPgordXNpbmcgQml0bWFwV29yZFR5cGUgPSBzdGQ6OmNvbmRpdGlvbmFsX3Q8KHNpemUgPD0g
MzIgJiYgc2l6ZW9mKFVDUFVSZWdpc3RlcikgPiBzaXplb2YodWludDMyX3QpKSwgdWludDMyX3Qs
IFVDUFVSZWdpc3Rlcj47CisKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZSA9IEJpdG1hcFdvcmRUeXBlPGJpdG1hcFNpemU+PgogY2xhc3MgQml0bWFwIGZpbmFs
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAKLSAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihXb3JkVHlwZSkgPD0gc2l6ZW9mKHVuc2lnbmVkKSwgIldvcmRUeXBlIG11c3Qgbm90
IGJlIGJpZ2dlciB0aGFuIHVuc2lnbmVkIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV29y
ZFR5cGUpIDw9IHNpemVvZihVQ1BVUmVnaXN0ZXIpLCAiV29yZFR5cGUgbXVzdCBub3QgYmUgYmln
Z2VyIHRoYW4gdGhlIENQVSBhdG9taWMgd29yZCBzaXplIik7CiBwdWJsaWM6CiAgICAgY29uc3Rl
eHByIEJpdG1hcCgpOwogCkBAIC0yMzAsNiArMjM0LDExIEBAIGlubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT4KIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRz
OyArK2kpCiAgICAgICAgIGJpdHNbaV0gPSB+Yml0c1tpXTsKKyAgICBpZiBjb25zdGV4cHIgKCEh
KGJpdG1hcFNpemUgJSB3b3JkU2l6ZSkpIHsKKyAgICAgICAgY29uc3RleHByIHNpemVfdCByZW1h
aW5pbmdCaXRzID0gYml0bWFwU2l6ZSAlIHdvcmRTaXplOworICAgICAgICBjb25zdGV4cHIgV29y
ZFR5cGUgbWFzayA9IChzdGF0aWNfY2FzdDxXb3JkVHlwZT4oMSkgPDwgcmVtYWluaW5nQml0cykg
LSAxOworICAgICAgICBiaXRzW3dvcmRzIC0gMV0gJj0gbWFzazsKKyAgICB9CiB9CiAKIHRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KQEAgLTI0Niw2ICsyNTUs
OSBAQCBpbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5CiAgICAgaWYgKCFy
dW5MZW5ndGgpIAogICAgICAgICBydW5MZW5ndGggPSAxOyAKICAgICAgCisgICAgaWYgKHJ1bkxl
bmd0aCA+IGJpdG1hcFNpemUpCisgICAgICAgIHJldHVybiAtMTsKKwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDw9IChiaXRtYXBTaXplIC0gcnVuTGVuZ3RoKSA7IGkrKykgewogICAgICAgICBi
b29sIGZvdW5kID0gdHJ1ZTsgCiAgICAgICAgIGZvciAoc2l6ZV90IGogPSBpOyBqIDw9IChpICsg
cnVuTGVuZ3RoIC0gMSkgOyBqKyspIHsgCkBAIC0yNjksNyArMjgxLDcgQEAgaW5saW5lIHNpemVf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cAogICAgICAgICAgICAgKytyZXN1bHQ7CiAgICAg
fQogICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydCAvIHdvcmRTaXplOyBpIDwgd29yZHM7ICsraSkK
LSAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0Q291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJp
dHNbaV0pKTsKKyAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0Q291bnQoYml0c1tpXSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjg2LDggKzI5OCwxNyBAQCB0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yCiBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmlzRnVsbCgpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB3b3JkczsgKytpKQotICAgICAgICBpZiAofmJpdHNbaV0pCisgICAgICAgIGlmICh+Yml0c1tp
XSkgeworICAgICAgICAgICAgaWYgY29uc3RleHByICghIShiaXRtYXBTaXplICUgd29yZFNpemUp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPT0gd29yZHMgLSAxKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0ZXhwciBzaXplX3QgcmVtYWluaW5nQml0cyA9IGJpdG1hcFNpemUgJSB3b3Jk
U2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3RleHByIFdvcmRUeXBlIG1hc2sgPSAoc3Rh
dGljX2Nhc3Q8V29yZFR5cGU+KDEpIDw8IHJlbWFpbmluZ0JpdHMpIC0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGJpdHNbaV0gJiBtYXNrID09IG1hc2spCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJ
bmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2MTEzNSkKKysrIFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNiArMjM4LDcgQEAgc2V0
KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFN0YWNrU2hvdFByb2ZpbGVyLmgKICAgICBTdGFja1N0
YXRzLmgKICAgICBTdGFja1RyYWNlLmgKKyAgICBTdGRJbnRFeHRyYXMuaAogICAgIFN0ZExpYkV4
dHJhcy5oCiAgICAgU3RkTGlzdC5oCiAgICAgU3RkTWFwLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtQ1BVLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1DUFUu
aAkocmV2aXNpb24gMjYxMTM1KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1DUFUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzExLDYgKzMxMSwxNSBAQAogI2VuZGlmCiAjZW5kaWYKIAorLyogQ1BV
IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlciB3aWR0aC4gKi8KKyNpZiBDUFUoQVJNNjQpIHx8IENQ
VShYODZfNjQpIHx8IENQVShNSVBTNjQpIHx8IENQVShQUEM2NCkKKyNkZWZpbmUgV1RGX0NQVV9S
RUdJU1RFUjY0IDEKKyNlbGlmIENQVShBUk0pIHx8IENQVShYODYpIHx8IENQVShNSVBTKSB8fCBD
UFUoUFBDKQorI2RlZmluZSBXVEZfQ1BVX1JFR0lTVEVSMzIgMQorI2Vsc2UKKyNlcnJvciAiVW5r
bm93biByZWdpc3RlciB3aWR0aCIKKyNlbmRpZgorCiAvKiBDUFUoQklHX0VORElBTikgb3IgQ1BV
KE1JRERMRV9FTkRJQU4pIG9yIG5laXRoZXIsIGFzIGFwcHJvcHJpYXRlLiAqLwogCiAjaWYgQ09N
UElMRVIoR0NDX0NPTVBBVElCTEUpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGRJbnRFeHRyYXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdGRJbnRFeHRyYXMuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TdGRJbnRFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxjc3RkaW50PgorCituYW1lc3BhY2UgV1RGIHsK
KworI2lmIENQVShSRUdJU1RFUjY0KQordXNpbmcgQ1BVUmVnaXN0ZXIgPSBpbnQ2NF90OwordXNp
bmcgVUNQVVJlZ2lzdGVyID0gdWludDY0X3Q7CisjZWxzZQordXNpbmcgQ1BVUmVnaXN0ZXIgPSBp
bnQzMl90OwordXNpbmcgVUNQVVJlZ2lzdGVyID0gdWludDMyX3Q7CisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q1BVUmVnaXN0ZXI7Cit1c2luZyBXVEY6OlVDUFVS
ZWdpc3RlcjsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI2MTEzNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA1LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBBbGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVy
IHdvcmQgc2l6ZSBmb3IgaW50ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYyNzU1ODY1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIEFQSSB0ZXN0cyBmb3IgV1RGOjpCaXRtYXAgdG8gbWFrZSBzdXJlIHRoYXQg
Qml0bWFwIGlzIGJlaGF2aW5nIGNvcnJlY3RseS4KKyAgICAgICAgU2luY2UgQml0bWFwIGlzIHVz
ZWQgaW4gY3JpdGljYWwgaW5mcmFzdHJ1Y3R1cmUgbGlrZSB0aGUgR0MsIGl0IGlzIGltcG9ydGFu
dCB0bworICAgICAgICBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gbGF0ZW50IGJ1Z3MuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0JpdG1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y291bnRCaXRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRt
YXBTaXplKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBDb25zdHJ1Y3RlZEVt
cHR5KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBTZXRHZXQpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcFRlc3RBbmRTZXQpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6dGVzdEJpdG1hcFRlc3RBbmRDbGVhcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojp0ZXN0Qml0bWFwQ29uY3VycmVudFRlc3RBbmRTZXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6dGVzdEJpdG1hcENvbmN1cnJlbnRUZXN0QW5kQ2xlYXIpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6dGVzdEJpdG1hcENsZWFyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRt
YXBDbGVhckFsbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwSW52ZXJ0KToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBGaW5kUnVuT2ZaZXJvcyk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwQ291bnQpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6dGVzdEJpdG1hcElzRW1wdHkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJp
dG1hcElzRnVsbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwTWVyZ2UpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEZpbHRlcik6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjp0ZXN0Qml0bWFwRXhjbHVkZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0
ZXN0Qml0bWFwQ29uY3VycmVudEZpbHRlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0
Qml0bWFwU3Vic3VtZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEZvckVh
Y2hTZXRCaXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEZpbmRCaXQpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEl0ZXJhdGlvbik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwTWVyZ2VBbmRDbGVhcik6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp0ZXN0Qml0bWFwU2V0QW5kQ2xlYXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
dGVzdEJpdG1hcE9wZXJhdG9yRXF1YWwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJp
dG1hcE9wZXJhdG9yTm90RXF1YWwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1h
cEhhc2gpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDUtMDQgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUmVtb3ZlIGEg
ZmV3IHVubmVlZGVkIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIGNoZWNrcwpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjExMzUpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwCiAK
ICAgICBUZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKKyAgICBUZXN0cy9XVEYvQml0bWFwLmNwcAog
ICAgIFRlc3RzL1dURi9CbG9vbUZpbHRlci5jcHAKICAgICBUZXN0cy9XVEYvQnVtcFBvaW50ZXJB
bGxvY2F0b3IuY3BwCiAgICAgVGVzdHMvV1RGL0NTdHJpbmcuY3BwCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjYxMTM1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEx
MzcsNiArMTEzNyw3IEBACiAJCUY2QjdCRTk3MTc0NjlCOTYwMDhBMzQ0NSAvKiBhc3NvY2lhdGUt
Zm9ybS1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2QjdCRTk2MTc0NjlCN0UwMDhBMzQ0NSAvKiBhc3NvY2lhdGUtZm9y
bS1jb250cm9scy5odG1sICovOyB9OwogCQlGNkY0OUM2QjE1NTQ1Q0E3MDAwN0YzOUQgLyogRE9N
V2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdp
bmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJRjZGRERERDYxNDI0MUM2
RjAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkZERERENTE0MjQxQzQ4MDA0RjE3MjkgLyogcHVz
aC1zdGF0ZS5odG1sICovOyB9OworCQlGRTJEOTQ3NDI0NUVCMkY0MDBFNDgxMzUgLyogQml0bWFw
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkQ5
NDczMjQ1RUIyREYwMEU0ODEzNSAvKiBCaXRtYXAuY3BwICovOyB9OwogLyogRW5kIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9u
ICovCkBAIC0yNzk3LDYgKzI3OTgsNyBAQAogCQlGNkY0OUM2NzE1NTQ1QzhEMDAwN0YzOUQgLyog
RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjZGRERERDIxNDI0MUFENDAwNEYxNzI5IC8qIFByaXZhdGVCcm93c2lu
Z1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERERDUxNDI0MUM0ODAwNEYxNzI5
IC8qIHB1c2gtc3RhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwdXNoLXN0
YXRlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTJEOTQ3MzI0NUVCMkRG
MDBFNDgxMzUgLyogQml0bWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJpdG1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQjZGNzRFMUIy
QkE0NEUwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOYWtlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBF
bmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKQEAgLTM5NDIsNiArMzk0NCw3IEBACiAJ
CQkJN0NCQkEwNzUxOUJCOEEwOTAwQkJGMDI1IC8qIGRhcndpbiAqLywKIAkJCQlCQzAyOUIxQTE0
ODZCMjM4MDA4MTdEQTkgLyogbnMgKi8sCiAJCQkJMjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8q
IEF0b21TdHJpbmcuY3BwICovLAorCQkJCUZFMkQ5NDczMjQ1RUIyREYwMEU0ODEzNSAvKiBCaXRt
YXAuY3BwICovLAogCQkJCUU0MDAxOTMwMUFDRTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5j
cHAgKi8sCiAJCQkJMDQ1MUE1QTYyMzVFNDM4RTAwOURGOTQ1IC8qIEJ1bXBQb2ludGVyQWxsb2Nh
dG9yLmNwcCAqLywKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRo
bWV0aWNPcGVyYXRpb25zLmNwcCAqLywKQEAgLTQ2OTIsNiArNDY5NSw3IEBACiAJCQkJRTM4RDY1
Q0IyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREY1OTFEMEE1OTBDMDBGRUJDRjMgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlGRTJEOTQ3NDI0NUVCMkY0MDBFNDgxMzUgLyogQml0bWFwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDODNERjEzMUQwQTU5MEMwMEZFQkNGMyAvKiBSZWRCbGFja1Ry
ZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTQxRDBBNTkwQzAwRkVCQ0YzIC8qIFJl
Zi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYxNTFEMEE1OTBDMDBGRUJDRjMgLyogUmVm
Q291bnRlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0JpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvQml0bWFwLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9CaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY29uc3RleHByIHNpemVfdCBzaXplID0gMTI4
OworY29uc3RleHByIHNpemVfdCBzbWFsbFNpemUgPSA5OworY29uc3RleHByIHNpemVfdCB6ZXJv
U2l6ZSA9IDA7CisKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBleHBlY3RlZEJpdHMxW3NpemVdID0g
eworICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsICBmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlLAorICAgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAgZmFsc2UsIGZhbHNl
LCB0cnVlLCAgZmFsc2UsCisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsICBmYWxzZSwg
ZmFsc2UsIHRydWUsICB0cnVlLAorICAgIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAgZmFs
c2UsIHRydWUsICBmYWxzZSwgZmFsc2UsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2Us
ICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLAorICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAgZmFsc2UsIHRydWUsICB0cnVlLCAgZmFsc2UsCisgICAgZmFsc2UsIHRydWUsICBmYWxz
ZSwgZmFsc2UsICBmYWxzZSwgdHJ1ZSwgIHRydWUsICB0cnVlLAorICAgIGZhbHNlLCBmYWxzZSwg
dHJ1ZSwgIGZhbHNlLCAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisgICAgZmFsc2UsIGZh
bHNlLCB0cnVlLCAgZmFsc2UsICB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLAorICAgIHRydWUs
ICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsCisgICAg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsICB0cnVlLCAgZmFsc2UsIHRydWUsICB0cnVlLAor
ICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgIHRydWUsICBmYWxzZSwgZmFs
c2UsCisgICAgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsICB0cnVlLCAgdHJ1ZSwgIGZhbHNl
LCB0cnVlLAorICAgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLCAgZmFsc2UsCisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsICB0cnVlLCAgdHJ1
ZSwgIHRydWUsICB0cnVlLAorfTsKKworc3RhdGljIGNvbnN0ZXhwciBib29sIGV4cGVjdGVkQml0
czJbc2l6ZV0gPSB7CisgICAgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgICBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIHRydWUsCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICBm
YWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
LCAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIHRydWUsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwg
dHJ1ZSwgICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlLCAgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsCisgICAgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgICBmYWxzZSwgdHJ1ZSwgIHRydWUsICBmYWxzZSwKKyAgICBmYWxzZSwg
ZmFsc2UsIHRydWUsICB0cnVlLCAgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgIHRydWUsCisgICAgZmFs
c2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKyAg
ICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUs
CisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgZmFsc2UsIHRydWUsICBm
YWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICB0cnVlLCAgIHRydWUsICBmYWxzZSwgdHJ1
ZSwgIHRydWUsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgdHJ1ZSwg
IGZhbHNlLCBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICB0cnVlLCAgIHRydWUsICB0
cnVlLCAgZmFsc2UsIHRydWUsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICB0cnVl
LCAgdHJ1ZSwgIHRydWUsICBmYWxzZSwKKyAgICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAg
IHRydWUsICB0cnVlLCAgdHJ1ZSwgIHRydWUsCit9OworCitjb25zdGV4cHIgc2l6ZV90IGNvdW50
Qml0cyhjb25zdCBib29sIGJvb2xBcnJheVtdLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBzaXplX3Qg
cmVzdWx0ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBpZiAoYm9vbEFycmF5W2ldKQorICAgICAgICAgICAgcmVzdWx0Kys7CisgICAgfQorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0ZXhwciBzaXplX3QgZXhwZWN0ZWROdW1iZXJPZlNl
dEJpdHMxID0gY291bnRCaXRzKGV4cGVjdGVkQml0czEsIHNpemUpOworY29uc3RleHByIHNpemVf
dCBleHBlY3RlZE51bWJlck9mU2V0Qml0czIgPSBjb3VudEJpdHMoZXhwZWN0ZWRCaXRzMiwgc2l6
ZSk7CisKKyNkZWZpbmUgREVDTEFSRV9CSVRNQVBTX0ZPUl9URVNUKCkgXAorICAgIEJpdG1hcDxz
aXplLCBXb3JkVHlwZT4gYml0bWFwMDsgLyogQWxsIGJpdHMgd2lsbCByZW1haW4gY2xlYXJlZC4g
Ki8gXAorICAgIEJpdG1hcDxzaXplLCBXb3JkVHlwZT4gYml0bWFwMTsgLyogV2lsbCBob2xkIHZh
bHVlcyBzcGVjaWZpZWQgaW4gZXhwZWN0ZWRCaXRzMS4gKi8gXAorICAgIEJpdG1hcDxzaXplLCBX
b3JkVHlwZT4gYml0bWFwMjsgLyogV2lsbCBob2xkIHZhbHVlcyBzcGVjaWZpZWQgaW4gZXhwZWN0
ZWRCaXRzMi4gKi8gXAorICAgIEJpdG1hcDxzaXplLCBXb3JkVHlwZT4gYml0bWFwMzsgLyogU2Ft
ZSBhcyBiaXRtYXAyLiAqLyBcCisgICAgQml0bWFwPHNpemUsIFdvcmRUeXBlPiBiaXRtYXBGaWxs
ZWQ7IFwKKyAgICBCaXRtYXA8c21hbGxTaXplLCBXb3JkVHlwZT4gYml0bWFwU21hbGxaZXJvZWQ7
IFwKKyAgICBCaXRtYXA8c21hbGxTaXplLCBXb3JkVHlwZT4gYml0bWFwU21hbGxGaWxsZWQ7CisK
KyNkZWZpbmUgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCkgXAorICAgIERFQ0xB
UkVfQklUTUFQU19GT1JfVEVTVCgpIFwKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeyBcCisgICAgICAgIGJpdG1hcDEuc2V0KGksIGV4cGVjdGVkQml0czFbaV0pOyBcCisg
ICAgICAgIGJpdG1hcDIuc2V0KGksIGV4cGVjdGVkQml0czJbaV0pOyBcCisgICAgICAgIGJpdG1h
cDMuc2V0KGksIGV4cGVjdGVkQml0czJbaV0pOyBcCisgICAgICAgIGJpdG1hcEZpbGxlZC5zZXQo
aSk7IFwKKyAgICB9IFwKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNtYWxsU2l6ZTsgKytp
KSBcCisgICAgICAgIGJpdG1hcFNtYWxsRmlsbGVkLnNldChpKTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBTaXplKCkKK3sKKyAgICBERUNMQVJFX0JJVE1B
UFNfRk9SX1RFU1QoKTsKKworICAgIGF1dG8gdmVyaWZ5U2l6ZSA9IFs9XSAoYXV0byYgYml0bWFw
LCBzaXplX3QgZXhwZWN0ZWRTaXplLCBzaXplX3Qgbm90RXhwZWN0ZWRTaXplKSB7CisgICAgICAg
IEVYUEVDVF9FUShiaXRtYXAuc2l6ZSgpLCBleHBlY3RlZFNpemUpOworICAgICAgICBFWFBFQ1Rf
TkUoYml0bWFwLnNpemUoKSwgbm90RXhwZWN0ZWRTaXplKTsKKyAgICB9OworCisgICAgdmVyaWZ5
U2l6ZShiaXRtYXAwLCBzaXplLCBzbWFsbFNpemUpOworICAgIHZlcmlmeVNpemUoYml0bWFwMSwg
c2l6ZSwgc21hbGxTaXplKTsKKyAgICB2ZXJpZnlTaXplKGJpdG1hcDIsIHNpemUsIHNtYWxsU2l6
ZSk7CisgICAgdmVyaWZ5U2l6ZShiaXRtYXAzLCBzaXplLCBzbWFsbFNpemUpOworICAgIHZlcmlm
eVNpemUoYml0bWFwRmlsbGVkLCBzaXplLCBzbWFsbFNpemUpOworICAgIHZlcmlmeVNpemUoYml0
bWFwU21hbGxaZXJvZWQsIHNtYWxsU2l6ZSwgc2l6ZSk7CisgICAgdmVyaWZ5U2l6ZShiaXRtYXBT
bWFsbEZpbGxlZCwgc21hbGxTaXplLCBzaXplKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29y
ZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBDb25zdHJ1Y3RlZEVtcHR5KCkKK3sKKyAgICBERUNMQVJF
X0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBkZWZhdWx0IGNv
bnN0cnVjdG9yIGluaXRpYWxpemVzIGFsbCBiaXRzIHRvIDAuCisgICAgYXV0byB2ZXJpZnlJc0Vt
cHR5ID0gWz1dIChjb25zdCBhdXRvJiBiaXRtYXApIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoYml0
bWFwLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUShiaXRtYXAuY291bnQoKSwgemVyb1Np
emUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJpdG1hcC5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShiaXRtYXAuZ2V0KGkpKTsKKyAgICB9OworCisgICAg
dmVyaWZ5SXNFbXB0eShiaXRtYXAwKTsKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcDEpOworICAg
IHZlcmlmeUlzRW1wdHkoYml0bWFwMik7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAzKTsKKyAg
ICB2ZXJpZnlJc0VtcHR5KGJpdG1hcEZpbGxlZCk7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXBT
bWFsbFplcm9lZCk7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXBTbWFsbEZpbGxlZCk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwU2V0R2V0KCkKK3sK
KyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIGF1dG8gdmVy
aWZ5SXNFbXB0eSA9IFs9XSAoY29uc3QgYXV0byYgYml0bWFwKSB7CisgICAgICAgIEVYUEVDVF9U
UlVFKGJpdG1hcC5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVEoYml0bWFwLmNvdW50KCks
IHplcm9TaXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiaXRtYXAuc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoYml0bWFwLmdldChpKSk7CisgICAgfTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBFWFBFQ1Rf
RVEoYml0bWFwMS5nZXQoaSksIGV4cGVjdGVkQml0czFbaV0pOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGJpdG1hcDIuZ2V0KGkp
LCBleHBlY3RlZEJpdHMyW2ldKTsKKyAgICAgICAgRVhQRUNUX0VRKGJpdG1hcDMuZ2V0KGkpLCBl
eHBlY3RlZEJpdHMyW2ldKTsKKyAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgIEVYUEVDVF9FUShiaXRtYXAyLmdldChpKSwgYml0bWFwMy5nZXQoaSkp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEVYUEVD
VF9UUlVFKGJpdG1hcEZpbGxlZC5nZXQoaSkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzbWFsbFNpemU7ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQu
Z2V0KGkpKTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHRoZXJlIGlzIG5vIG91dCBvZiBib3VuZHMg
d3JpdGUgZnJvbSB0aGUgYWJvdmUgc2V0IG9wZXJhdGlvbnMuCisgICAgdmVyaWZ5SXNFbXB0eShi
aXRtYXAwKTsKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcFNtYWxsWmVyb2VkKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBUZXN0QW5kU2V0KCkKK3sK
KyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEFTU0VSVF9G
QUxTRShiaXRtYXAxLmlzRnVsbCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ld
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNTRVJU
X0VRKGJpdG1hcDEudGVzdEFuZFNldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgQVNTRVJU
X1RSVUUoYml0bWFwMS5pc0Z1bGwoKSk7CisKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxa
ZXJvZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1w
dHkoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzbWFsbFNpemU7ICsraSkKKyAgICAg
ICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLnRlc3RBbmRTZXQoaSkpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBUZXN0QW5kQ2xlYXIoKQoreworICAgIERF
Q0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQVNTRVJUX0ZBTFNFKGJp
dG1hcDEuaXNFbXB0eSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkK
KyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNTRVJUX0VRKGJp
dG1hcDEudGVzdEFuZENsZWFyKGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXAxLmlzRW1wdHkoKSk7CisKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxGaWxs
ZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzbWFsbFNpemU7ICsraSkKKyAgICAgICAg
QVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQudGVzdEFuZENsZWFyKGkpKTsKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcENvbmN1cnJlbnRUZXN0QW5kU2V0KCkKK3sK
KyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIC8vIEZJWE1F
OiB0aGUgZm9sbG93aW5nIGRvZXMgbm90IHRlc3QgdGhlIGNvbmN1cnJlbnQgcGFydC4gSXQgb25s
eSBlbnN1cmVzIHRoYXQKKyAgICAvLyB0aGUgVGVzdEFuZFNldCBwYXJ0IG9mIHRoZSBvcGVyYXRp
b24gaXMgd29ya2luZy4KKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMS5pc0Z1bGwoKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShiaXRt
YXAxLmdldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAxLnRlc3RBbmRTZXQoaSksIGV4
cGVjdGVkQml0czFbaV0pOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDEuaXNGdWxsKCkpOworCisg
ICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRf
VFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc21hbGxTaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9GQUxTRShiaXRtYXBTbWFsbFpl
cm9lZC50ZXN0QW5kU2V0KGkpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5p
c0Z1bGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0
bWFwQ29uY3VycmVudFRlc3RBbmRDbGVhcigpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRN
QVBTX0ZPUl9URVNUKCk7CisKKyAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBkb2VzIG5vdCB0
ZXN0IHRoZSBjb25jdXJyZW50IHBhcnQuIEl0IG9ubHkgZW5zdXJlcyB0aGF0CisgICAgLy8gdGhl
IFRlc3RBbmRDbGVhciBwYXJ0IG9mIHRoZSBvcGVyYXRpb24gaXMgd29ya2luZy4KKyAgICBBU1NF
UlRfRkFMU0UoYml0bWFwMS5pc0VtcHR5KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQorICAgICAgICBBU1NFUlRfRVEoYml0bWFwMS5nZXQoaSksIGV4cGVjdGVkQml0
czFbaV0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBB
U1NFUlRfRVEoYml0bWFwMS50ZXN0QW5kQ2xlYXIoaSksIGV4cGVjdGVkQml0czFbaV0pOworICAg
IEFTU0VSVF9UUlVFKGJpdG1hcDEuaXNFbXB0eSgpKTsKKworICAgIEFTU0VSVF9GQUxTRShiaXRt
YXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmls
bGVkLmlzRnVsbCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNtYWxsU2l6ZTsgKytp
KQorICAgICAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC50ZXN0QW5kQ2xlYXIoaSkp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwQ2xlYXIoKQoreworICAg
IERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQml0czFbaV0pCisgICAgICAgICAgICBiaXRt
YXBGaWxsZWQuY2xlYXIoaSk7CisgICAgfQorICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQsIGJp
dG1hcDEpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1h
cENsZWFyQWxsKCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsK
KworICAgIGF1dG8gdmVyaWZ5SXNFbXB0eSA9IFs9XSAoY29uc3QgYXV0byYgYml0bWFwKSB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGJpdG1hcC5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVEo
Yml0bWFwLmNvdW50KCksIHplcm9TaXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBiaXRtYXAuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoYml0bWFwLmdl
dChpKSk7CisgICAgfTsKKworICAgIGF1dG8gdmVyaWZ5SXNGdWxsID0gWz1dIChjb25zdCBhdXRv
JiBiaXRtYXApIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoYml0bWFwLmlzRnVsbCgpKTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiaXRtYXAuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShiaXRtYXAuZ2V0KGkpKTsKKyAgICB9OworCisgICAgRVhQRUNUX0ZBTFNF
KGJpdG1hcDEuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXAxLmNsZWFyQWxsKCk7CisgICAgdmVyaWZ5
SXNFbXB0eShiaXRtYXAxKTsKKyAgICB2ZXJpZnlJc0Z1bGwoYml0bWFwRmlsbGVkKTsKKyAgICB2
ZXJpZnlJc0Z1bGwoYml0bWFwU21hbGxGaWxsZWQpOworCisgICAgRVhQRUNUX0ZBTFNFKGJpdG1h
cDIuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXAyLmNsZWFyQWxsKCk7CisgICAgdmVyaWZ5SXNFbXB0
eShiaXRtYXAxKTsKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcDIpOworICAgIHZlcmlmeUlzRnVs
bChiaXRtYXBGaWxsZWQpOworICAgIHZlcmlmeUlzRnVsbChiaXRtYXBTbWFsbEZpbGxlZCk7CisK
KyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMy5pc0VtcHR5KCkpOworICAgIGJpdG1hcDMuY2xlYXJB
bGwoKTsKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcDEpOworICAgIHZlcmlmeUlzRW1wdHkoYml0
bWFwMik7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAzKTsKKyAgICB2ZXJpZnlJc0Z1bGwoYml0
bWFwRmlsbGVkKTsKKyAgICB2ZXJpZnlJc0Z1bGwoYml0bWFwU21hbGxGaWxsZWQpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcEludmVydCgpCit7Cisg
ICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBhdXRvIHZlcmlm
eUludmVydCA9IFs9XSAoYXV0byYgYml0bWFwKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1h
cC5pc0Z1bGwoKSk7CisgICAgICAgIEFTU0VSVF9GQUxTRShiaXRtYXAuaXNFbXB0eSgpKTsKKyAg
ICAgICAgYml0bWFwLmludmVydCgpOworICAgICAgICBBU1NFUlRfRkFMU0UoYml0bWFwLmlzRnVs
bCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoYml0bWFwLmlzRW1wdHkoKSk7CisgICAgICAgIGJp
dG1hcC5pbnZlcnQoKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoYml0bWFwLmlzRnVsbCgpKTsKKyAg
ICAgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcC5pc0VtcHR5KCkpOworICAgIH07CisKKyAgICB2ZXJp
ZnlJbnZlcnQoYml0bWFwRmlsbGVkKTsKKyAgICB2ZXJpZnlJbnZlcnQoYml0bWFwU21hbGxGaWxs
ZWQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFT
U0VSVF9FUShiaXRtYXAxLmdldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgYml0bWFwMS5p
bnZlcnQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
QVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCAhZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgYml0bWFw
MS5pbnZlcnQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAg
ICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBGaW5kUnVuT2ZaZXJvcygp
Cit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBjb25z
dCBpbnQ2NF90IGJpdG1hcDFSdW5zT2ZaZXJvc1sxNV0gPSB7CisgICAgICAgIDAsIDAsIDAsIDMs
IDMsCisgICAgICAgIDMsIDMsIDMsIDMsIDMsCisgICAgICAgIDMsIDMsIDMsIC0xLCAtMQorICAg
IH07CisKKyAgICBjb25zdCBpbnQ2NF90IGJpdG1hcDJSdW5zT2ZaZXJvc1sxNV0gPSB7CisgICAg
ICAgIDAsIDAsIDQsIDQsIDQsCisgICAgICAgIDQsIDQsIDQsIC0xLCAtMSwKKyAgICAgICAgLTEs
IC0xLCAtMSwgLTEsIC0xLAorICAgIH07CisKKyAgICBCaXRtYXA8c21hbGxTaXplLCBXb3JkVHlw
ZT4gc21hbGxUZW1wOworICAgIHNtYWxsVGVtcC5zZXQoMSwgdHJ1ZSk7IC8vIGJpdHMgbG93IHRv
IGhpZ2ggYXJlOiAwMTAwIDAwMDAgMAorCisgICAgY29uc3QgaW50NjRfdCBzbWFsbFRlbXBSdW5z
T2ZaZXJvc1sxNV0gPSB7CisgICAgICAgIDAsIDAsIDIsIDIsIDIsCisgICAgICAgIDIsIDIsIDIs
IC0xLCAtMSwKKyAgICAgICAgLTEsIC0xLCAtMSwgLTEsIC0xCisgICAgfTsKKworICAgIGZvciAo
c2l6ZV90IHJ1bkxlbmd0aCA9IDA7IHJ1bkxlbmd0aCA8IDE1OyArK3J1bkxlbmd0aCkgeworICAg
ICAgICBBU1NFUlRfRVEoYml0bWFwMC5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCAwbGwpOwor
ICAgICAgICBBU1NFUlRfRVEoYml0bWFwMS5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCBiaXRt
YXAxUnVuc09mWmVyb3NbcnVuTGVuZ3RoXSk7CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAyLmZp
bmRSdW5PZlplcm9zKHJ1bkxlbmd0aCksIGJpdG1hcDJSdW5zT2ZaZXJvc1tydW5MZW5ndGhdKTsK
KyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgp
LCAtMWxsKTsKKworICAgICAgICBpZiAocnVuTGVuZ3RoIDw9IHNtYWxsU2l6ZSkKKyAgICAgICAg
ICAgIEFTU0VSVF9FUShiaXRtYXBTbWFsbFplcm9lZC5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgp
LCAwbGwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfRVEoYml0bWFwU21hbGxa
ZXJvZWQuZmluZFJ1bk9mWmVyb3MocnVuTGVuZ3RoKSwgLTFsbCk7CisKKyAgICAgICAgQVNTRVJU
X0VRKGJpdG1hcFNtYWxsRmlsbGVkLmZpbmRSdW5PZlplcm9zKHJ1bkxlbmd0aCksIC0xbGwpOwor
CisgICAgICAgIEFTU0VSVF9FUShzbWFsbFRlbXAuZmluZFJ1bk9mWmVyb3MocnVuTGVuZ3RoKSwg
c21hbGxUZW1wUnVuc09mWmVyb3NbcnVuTGVuZ3RoXSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcENvdW50KCkKK3sKKyAgICBERUNMQVJF
X0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEVYUEVDVF9FUShiaXRtYXAwLmNv
dW50KCksIHplcm9TaXplKTsKKyAgICBFWFBFQ1RfRVEoYml0bWFwMS5jb3VudCgpLCBleHBlY3Rl
ZE51bWJlck9mU2V0Qml0czEpOworICAgIEVYUEVDVF9FUShiaXRtYXAyLmNvdW50KCksIGV4cGVj
dGVkTnVtYmVyT2ZTZXRCaXRzMik7CisgICAgRVhQRUNUX0VRKGJpdG1hcDMuY291bnQoKSwgZXhw
ZWN0ZWROdW1iZXJPZlNldEJpdHMyKTsKKyAgICBFWFBFQ1RfRVEoYml0bWFwRmlsbGVkLmNvdW50
KCksIHNpemUpOworICAgIEVYUEVDVF9FUShiaXRtYXBTbWFsbFplcm9lZC5jb3VudCgpLCB6ZXJv
U2l6ZSk7CisgICAgRVhQRUNUX0VRKGJpdG1hcFNtYWxsRmlsbGVkLmNvdW50KCksIHNtYWxsU2l6
ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwSXNF
bXB0eSgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAg
ICBFWFBFQ1RfVFJVRShiaXRtYXAwLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1h
cDEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMi5pc0VtcHR5KCkpOworICAg
IEVYUEVDVF9GQUxTRShiaXRtYXAzLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1h
cEZpbGxlZC5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlz
RW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7
CisKKyAgICBhdXRvIHZlcmlmeUlzRW1wdHkgPSBbPV0gKGNvbnN0IGF1dG8mIGJpdG1hcCkgewor
ICAgICAgICBFWFBFQ1RfVFJVRShiaXRtYXAuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
KGJpdG1hcC5jb3VudCgpLCB6ZXJvU2l6ZSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYml0bWFwLnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcC5n
ZXQoaSkpOworICAgIH07CisKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcDApOworICAgIHZlcmlm
eUlzRW1wdHkoYml0bWFwU21hbGxaZXJvZWQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3Jk
VHlwZT4KK3ZvaWQgdGVzdEJpdG1hcElzRnVsbCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9C
SVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMC5pc0Z1bGwoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDEuaXNGdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShi
aXRtYXAyLmlzRnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMy5pc0Z1bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Yml0bWFwU21hbGxaZXJvZWQuaXNGdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJpdG1hcFNtYWxs
RmlsbGVkLmlzRnVsbCgpKTsKKworICAgIGF1dG8gdmVyaWZ5SXNGdWxsID0gWz1dIChhdXRvJiBi
aXRtYXApIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoYml0bWFwLmlzRnVsbCgpKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBiaXRtYXAuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBF
WFBFQ1RfVFJVRShiaXRtYXAuZ2V0KGkpKTsKKyAgICB9OworCisgICAgdmVyaWZ5SXNGdWxsKGJp
dG1hcEZpbGxlZCk7CisgICAgdmVyaWZ5SXNGdWxsKGJpdG1hcFNtYWxsRmlsbGVkKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBNZXJnZSgpCit7Cisg
ICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXAwLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOwor
ICAgIGJpdG1hcDIubWVyZ2UoYml0bWFwMCk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1h
cDMpOworICAgIAorICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAyKTsKKyAgICBBU1NFUlRf
TkUoYml0bWFwMSwgYml0bWFwMyk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOwor
ICAgIGJpdG1hcDMubWVyZ2UoYml0bWFwMSk7CisgICAgQVNTRVJUX05FKGJpdG1hcDIsIGJpdG1h
cDMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGJv
b2wgZXhwZWN0ZWRCaXQgPSBleHBlY3RlZEJpdHMyW2ldIHwgZXhwZWN0ZWRCaXRzMVtpXTsKKyAg
ICAgICAgQVNTRVJUX0VRKGJpdG1hcDMuZ2V0KGkpLCBleHBlY3RlZEJpdCk7CisgICAgfQorCisg
ICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXAwLmlzRW1wdHkoKSk7CisgICAgYml0bWFwRmlsbGVkLm1lcmdlKGJpdG1hcDApOworICAg
IEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0
bWFwMC5pc0VtcHR5KCkpOworCisgICAgYml0bWFwMC5tZXJnZShiaXRtYXAxKTsKKyAgICBBU1NF
UlRfRVEoYml0bWFwMCwgYml0bWFwMSk7CisKKyAgICBiaXRtYXAxLm1lcmdlKGJpdG1hcEZpbGxl
ZCk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDEsIGJpdG1hcEZpbGxlZCk7CisKKyAgICBBU1NFUlRf
VFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBiaXRtYXBTbWFsbFplcm9lZC5tZXJnZShiaXRt
YXBTbWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1w
dHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNGdWxsKCkpOworICAg
IEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICAKKyAgICBiaXRt
YXBTbWFsbFplcm9lZC5jbGVhckFsbCgpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVy
b2VkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxs
KCkpOworICAgIGJpdG1hcFNtYWxsRmlsbGVkLm1lcmdlKGJpdG1hcFNtYWxsWmVyb2VkKTsKKyAg
ICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RS
VUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
V29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBGaWx0ZXIoKQoreworICAgIERFQ0xBUkVfQU5EX0lO
SVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlz
RnVsbCgpKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgYml0bWFwMi5m
aWx0ZXIoYml0bWFwRmlsbGVkKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7Cisg
ICAgCisgICAgQVNTRVJUX05FKGJpdG1hcDEsIGJpdG1hcDIpOworICAgIEFTU0VSVF9ORShiaXRt
YXAxLCBiaXRtYXAzKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgYml0
bWFwMy5maWx0ZXIoYml0bWFwMSk7CisgICAgQVNTRVJUX05FKGJpdG1hcDIsIGJpdG1hcDMpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGJvb2wgZXhw
ZWN0ZWRCaXQgPSBleHBlY3RlZEJpdHMyW2ldICYgZXhwZWN0ZWRCaXRzMVtpXTsKKyAgICAgICAg
QVNTRVJUX0VRKGJpdG1hcDMuZ2V0KGkpLCBleHBlY3RlZEJpdCk7CisgICAgfQorCisgICAgQVNT
RVJUX1RSVUUoYml0bWFwMC5pc0VtcHR5KCkpOworICAgIGJpdG1hcDIuZmlsdGVyKGJpdG1hcDAp
OworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAwKTsKKworICAgIEFTU0VSVF9UUlVFKGJp
dG1hcDAuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXAwLmZpbHRlcihiaXRtYXAxKTsKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXAwLmlzRW1wdHkoKSk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxs
ZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcEZpbGxlZC5maWx0ZXIoYml0bWFwMSk7CisgICAgQVNT
RVJUX0VRKGJpdG1hcEZpbGxlZCwgYml0bWFwMSk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBT
bWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVk
LmlzRnVsbCgpKTsKKyAgICBiaXRtYXBTbWFsbFplcm9lZC5maWx0ZXIoYml0bWFwU21hbGxGaWxs
ZWQpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisgICAg
QVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgCisgICAgYml0bWFwU21hbGxGaWxs
ZWQuZmlsdGVyKGJpdG1hcFNtYWxsWmVyb2VkKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21h
bGxGaWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlz
RW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBFeGNsdWRl
KCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcDAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0
bWFwMyk7CisgICAgYml0bWFwMi5leGNsdWRlKGJpdG1hcDApOworICAgIEFTU0VSVF9FUShiaXRt
YXAyLCBiaXRtYXAzKTsKKyAgICAKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgYml0bWFwMik7Cisg
ICAgQVNTRVJUX05FKGJpdG1hcDEsIGJpdG1hcDMpOworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBi
aXRtYXAzKTsKKyAgICBiaXRtYXAzLmV4Y2x1ZGUoYml0bWFwMSk7CisgICAgQVNTRVJUX05FKGJp
dG1hcDIsIGJpdG1hcDMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
CisgICAgICAgIGJvb2wgZXhwZWN0ZWRCaXQgPSBleHBlY3RlZEJpdHMyW2ldICYgIWV4cGVjdGVk
Qml0czFbaV07CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAzLmdldChpKSwgZXhwZWN0ZWRCaXQp
OworICAgIH0KKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDAuaXNFbXB0eSgpKTsKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXBGaWxsZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcDIuZXhjbHVkZShiaXRt
YXBGaWxsZWQpOworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAwKTsKKworICAgIEFTU0VS
VF9UUlVFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgYml0bWFwRmlsbGVkLmV4Y2x1ZGUo
Yml0bWFwMSk7CisgICAgYml0bWFwMS5pbnZlcnQoKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmls
bGVkLCBiaXRtYXAxKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1w
dHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAg
IGJpdG1hcFNtYWxsWmVyb2VkLmV4Y2x1ZGUoYml0bWFwU21hbGxGaWxsZWQpOworICAgIEFTU0VS
VF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJp
dG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZp
bGxlZC5pc0Z1bGwoKSk7CisgICAgCisgICAgYml0bWFwU21hbGxGaWxsZWQuZXhjbHVkZShiaXRt
YXBTbWFsbFplcm9lZCk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxs
KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisKKyAg
ICBiaXRtYXBTbWFsbEZpbGxlZC5leGNsdWRlKGJpdG1hcFNtYWxsRmlsbGVkKTsKKyAgICBBU1NF
UlRfRkFMU0UoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJp
dG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRU
eXBlPgordm9pZCB0ZXN0Qml0bWFwQ29uY3VycmVudEZpbHRlcigpCit7CisgICAgREVDTEFSRV9B
TkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2lu
ZyBkb2VzIG5vdCB0ZXN0IHRoZSBjb25jdXJyZW50IHBhcnQuIEl0IG9ubHkgZW5zdXJlcyB0aGF0
CisgICAgLy8gdGhlIEZpbHRlciBwYXJ0IG9mIHRoZSBvcGVyYXRpb24gaXMgd29ya2luZy4KKyAg
ICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9FUShiaXRt
YXAyLCBiaXRtYXAzKTsKKyAgICBiaXRtYXAyLmNvbmN1cnJlbnRGaWx0ZXIoYml0bWFwRmlsbGVk
KTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgCisgICAgQVNTRVJUX05F
KGJpdG1hcDEsIGJpdG1hcDIpOworICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAzKTsKKyAg
ICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgYml0bWFwMy5jb25jdXJyZW50Rmls
dGVyKGJpdG1hcDEpOworICAgIEFTU0VSVF9ORShiaXRtYXAyLCBiaXRtYXAzKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBib29sIGV4cGVjdGVkQml0
ID0gZXhwZWN0ZWRCaXRzMltpXSAmIGV4cGVjdGVkQml0czFbaV07CisgICAgICAgIEFTU0VSVF9F
UShiaXRtYXAzLmdldChpKSwgZXhwZWN0ZWRCaXQpOworICAgIH0KKworICAgIEFTU0VSVF9UUlVF
KGJpdG1hcDAuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXAyLmNvbmN1cnJlbnRGaWx0ZXIoYml0bWFw
MCk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDApOworCisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwMC5pc0VtcHR5KCkpOworICAgIGJpdG1hcDAuY29uY3VycmVudEZpbHRlcihiaXRtYXAx
KTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAwLmlzRW1wdHkoKSk7CisKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXBGaWxsZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcEZpbGxlZC5jb25jdXJyZW50Rmls
dGVyKGJpdG1hcDEpOworICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQsIGJpdG1hcDEpOworCisg
ICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRf
VFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgYml0bWFwU21hbGxaZXJvZWQu
Y29uY3VycmVudEZpbHRlcihiaXRtYXBTbWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX1RSVUUoYml0
bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxa
ZXJvZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVs
bCgpKTsKKyAgICAKKyAgICBiaXRtYXBTbWFsbEZpbGxlZC5jb25jdXJyZW50RmlsdGVyKGJpdG1h
cFNtYWxsWmVyb2VkKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxs
KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7CisgICAg
QVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBTdWJzdW1lcygpCit7CisgICAgREVD
TEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRt
YXAwLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsK
KyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRt
YXAwLnN1YnN1bWVzKGJpdG1hcDApKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMC5zdWJzdW1l
cyhiaXRtYXAxKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDAuc3Vic3VtZXMoYml0bWFwMikp
OworICAgIEFTU0VSVF9GQUxTRShiaXRtYXAwLnN1YnN1bWVzKGJpdG1hcDMpKTsKKyAgICBBU1NF
UlRfRkFMU0UoYml0bWFwMC5zdWJzdW1lcyhiaXRtYXBGaWxsZWQpKTsKKworICAgIEFTU0VSVF9U
UlVFKGJpdG1hcDEuc3Vic3VtZXMoYml0bWFwMCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDEu
c3Vic3VtZXMoYml0bWFwMSkpOworICAgIEFTU0VSVF9GQUxTRShiaXRtYXAxLnN1YnN1bWVzKGJp
dG1hcDIpKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMS5zdWJzdW1lcyhiaXRtYXAzKSk7Cisg
ICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDEuc3Vic3VtZXMoYml0bWFwRmlsbGVkKSk7CisKKyAgICBB
U1NFUlRfVFJVRShiaXRtYXAyLnN1YnN1bWVzKGJpdG1hcDApKTsKKyAgICBBU1NFUlRfRkFMU0Uo
Yml0bWFwMi5zdWJzdW1lcyhiaXRtYXAxKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMi5zdWJz
dW1lcyhiaXRtYXAyKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMi5zdWJzdW1lcyhiaXRtYXAz
KSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDIuc3Vic3VtZXMoYml0bWFwRmlsbGVkKSk7CisK
KyAgICBBU1NFUlRfVFJVRShiaXRtYXAzLnN1YnN1bWVzKGJpdG1hcDApKTsKKyAgICBBU1NFUlRf
RkFMU0UoYml0bWFwMy5zdWJzdW1lcyhiaXRtYXAxKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFw
My5zdWJzdW1lcyhiaXRtYXAyKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5zdWJzdW1lcyhi
aXRtYXAzKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDMuc3Vic3VtZXMoYml0bWFwRmlsbGVk
KSk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuc3Vic3VtZXMoYml0bWFwMCkpOwor
ICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5zdWJzdW1lcyhiaXRtYXAxKSk7CisgICAgQVNT
RVJUX1RSVUUoYml0bWFwRmlsbGVkLnN1YnN1bWVzKGJpdG1hcDIpKTsKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXBGaWxsZWQuc3Vic3VtZXMoYml0bWFwMykpOworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cEZpbGxlZC5zdWJzdW1lcyhiaXRtYXBGaWxsZWQpKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cFNtYWxsRmlsbGVkLnN1YnN1bWVzKGJpdG1hcFNtYWxsRmlsbGVkKSk7CisgICAgQVNTRVJUX1RS
VUUoYml0bWFwU21hbGxGaWxsZWQuc3Vic3VtZXMoYml0bWFwU21hbGxaZXJvZWQpKTsKKworICAg
IEFTU0VSVF9GQUxTRShiaXRtYXBTbWFsbFplcm9lZC5zdWJzdW1lcyhiaXRtYXBTbWFsbEZpbGxl
ZCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLnN1YnN1bWVzKGJpdG1hcFNt
YWxsWmVyb2VkKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0
Qml0bWFwRm9yRWFjaFNldEJpdCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZP
Ul9URVNUKCk7CisKKyAgICBzaXplX3QgY291bnQgPSAwOworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cDAuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXAwLmZvckVhY2hTZXRCaXQoWyZdIChzaXplX3QgaSkg
eworICAgICAgICBjb25zdGV4cHIgYm9vbCBub3RSZWFjaGVkID0gZmFsc2U7CisgICAgICAgIEFT
U0VSVF9UUlVFKG5vdFJlYWNoZWQpOworICAgICAgICBjb3VudCsrOworICAgIH0pOworICAgIEFT
U0VSVF9FUShjb3VudCwgemVyb1NpemUpOworCisgICAgY291bnQgPSAwOworICAgIGJpdG1hcDEu
Zm9yRWFjaFNldEJpdChbJl0gKHNpemVfdCBpKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1h
cDEuZ2V0KGkpKTsKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJp
dHMxW2ldKTsKKyAgICAgICAgY291bnQrKzsKKyAgICB9KTsKKyAgICBBU1NFUlRfRVEoY291bnQs
IGV4cGVjdGVkTnVtYmVyT2ZTZXRCaXRzMSk7CisKKyAgICBjb3VudCA9IDA7CisgICAgQVNTRVJU
X1RSVUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBiaXRtYXBGaWxsZWQuZm9yRWFjaFNl
dEJpdChbJl0gKHNpemVfdCBpKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5n
ZXQoaSkpOworICAgICAgICBjb3VudCsrOworICAgIH0pOworICAgIEFTU0VSVF9FUShjb3VudCwg
c2l6ZSk7CisKKyAgICBjb3VudCA9IDA7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJv
ZWQuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXBTbWFsbFplcm9lZC5mb3JFYWNoU2V0Qml0KFsmXSAo
c2l6ZV90IGkpIHsKKyAgICAgICAgY29uc3RleHByIGJvb2wgbm90UmVhY2hlZCA9IGZhbHNlOwor
ICAgICAgICBBU1NFUlRfVFJVRShub3RSZWFjaGVkKTsKKyAgICAgICAgY291bnQrKzsKKyAgICB9
KTsKKyAgICBBU1NFUlRfRVEoY291bnQsIHplcm9TaXplKTsKKworICAgIGNvdW50ID0gMDsKKyAg
ICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgYml0bWFwU21h
bGxGaWxsZWQuZm9yRWFjaFNldEJpdChbJl0gKHNpemVfdCBpKSB7CisgICAgICAgIEFTU0VSVF9U
UlVFKGJpdG1hcFNtYWxsRmlsbGVkLmdldChpKSk7CisgICAgICAgIGNvdW50Kys7CisgICAgfSk7
CisgICAgQVNTRVJUX0VRKGNvdW50LCBzbWFsbFNpemUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcEZpbmRCaXQoKQoreworICAgIERFQ0xBUkVfQU5E
X0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgYXV0byBmaW5kRXhwZWN0ZWRCaXQgPSBb
PV0gKGF1dG8gZXhwZWN0ZWRCaXRzLCBzaXplX3Qgc3RhcnRJbmRleCwgYm9vbCB2YWx1ZSkgLT4g
c2l6ZV90IHsKKyAgICAgICAgZm9yIChhdXRvIGluZGV4ID0gc3RhcnRJbmRleDsgaW5kZXggPCBz
aXplOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoZXhwZWN0ZWRCaXRzW2luZGV4XSA9PSB2
YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHN0YXJ0SW5kZXg7CisgICAgfTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMSwg
bGFzdEluZGV4ID0gMTsgaSA8IHNpemU7IGxhc3RJbmRleCA9IGksIGkgKz0gbGFzdEluZGV4KSB7
CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAxLmZpbmRCaXQoaSwgdHJ1ZSksIGZpbmRFeHBlY3Rl
ZEJpdChleHBlY3RlZEJpdHMxLCBpLCB0cnVlKSk7CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAx
LmZpbmRCaXQoaSwgZmFsc2UpLCBmaW5kRXhwZWN0ZWRCaXQoZXhwZWN0ZWRCaXRzMSwgaSwgZmFs
c2UpKTsKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDIuZmluZEJpdChpLCB0cnVlKSwgZmluZEV4
cGVjdGVkQml0KGV4cGVjdGVkQml0czIsIGksIHRydWUpKTsKKyAgICAgICAgQVNTRVJUX0VRKGJp
dG1hcDIuZmluZEJpdChpLCBmYWxzZSksIGZpbmRFeHBlY3RlZEJpdChleHBlY3RlZEJpdHMyLCBp
LCBmYWxzZSkpOworCisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAyLmZpbmRCaXQoaSwgdHJ1ZSks
IGJpdG1hcDMuZmluZEJpdChpLCB0cnVlKSk7CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAyLmZp
bmRCaXQoaSwgZmFsc2UpLCBiaXRtYXAzLmZpbmRCaXQoaSwgZmFsc2UpKTsKKyAgICB9CisKKyAg
ICBBU1NFUlRfRVEoYml0bWFwMC5maW5kQml0KDAsIGZhbHNlKSwgemVyb1NpemUpOworICAgIEFT
U0VSVF9FUShiaXRtYXAwLmZpbmRCaXQoMTAsIGZhbHNlKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pigx
MCkpOworICAgIEFTU0VSVF9FUShiaXRtYXAwLmZpbmRCaXQoc2l6ZSAtIDEsIGZhbHNlKSwgc2l6
ZS0xKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMC5maW5kQml0KHNpemUsIGZhbHNlKSwgc2l6ZSk7
CisgICAgQVNTRVJUX0VRKGJpdG1hcDAuZmluZEJpdChzaXplICsgMSwgZmFsc2UpLCBzaXplKTsK
KworICAgIEFTU0VSVF9FUShiaXRtYXAwLmZpbmRCaXQoMCwgdHJ1ZSksIHNpemUpOworICAgIEFT
U0VSVF9FUShiaXRtYXAwLmZpbmRCaXQoMTAsIHRydWUpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEo
Yml0bWFwMC5maW5kQml0KHNpemUgLSAxLCB0cnVlKSwgc2l6ZSk7CisgICAgQVNTRVJUX0VRKGJp
dG1hcDAuZmluZEJpdChzaXplLCB0cnVlKSwgc2l6ZSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDAu
ZmluZEJpdChzaXplICsgMSwgdHJ1ZSksIHNpemUpOworCisgICAgQVNTRVJUX0VRKGJpdG1hcEZp
bGxlZC5maW5kQml0KDAsIGZhbHNlKSwgc2l6ZSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxl
ZC5maW5kQml0KDEwLCBmYWxzZSksIHNpemUpOworICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQu
ZmluZEJpdChzaXplIC0gMSwgZmFsc2UpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmls
bGVkLmZpbmRCaXQoc2l6ZSwgZmFsc2UpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmls
bGVkLmZpbmRCaXQoc2l6ZSArIDEsIGZhbHNlKSwgc2l6ZSk7CisKKyAgICBBU1NFUlRfRVEoYml0
bWFwRmlsbGVkLmZpbmRCaXQoMCwgdHJ1ZSksIHplcm9TaXplKTsKKyAgICBBU1NFUlRfRVEoYml0
bWFwRmlsbGVkLmZpbmRCaXQoMTAsIHRydWUpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KDEwKSk7Cisg
ICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5kQml0KHNpemUgLSAxLCB0cnVlKSwgc2l6ZS0x
KTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLmZpbmRCaXQoc2l6ZSwgdHJ1ZSksIHNpemUp
OworICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQuZmluZEJpdChzaXplICsgMSwgdHJ1ZSksIHNp
emUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcEl0
ZXJhdGlvbigpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisK
KyAgICBhdXRvIGNvbXB1dGVTZXRCaXRzQ291bnQgPSBbPV0gKGF1dG8mIGJpdG1hcCkgLT4gc2l6
ZV90IHsKKyAgICAgICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgZm9yIChhdXRvIGJpdElu
ZGV4IDogYml0bWFwKSB7CisgICAgICAgICAgICBVTlVTRURfUEFSQU0oYml0SW5kZXgpOworICAg
ICAgICAgICAgY291bnQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY291bnQ7CisgICAg
fTsKKworICAgIEVYUEVDVF9FUShjb21wdXRlU2V0Qml0c0NvdW50KGJpdG1hcDApLCB6ZXJvU2l6
ZSk7CisgICAgRVhQRUNUX0VRKGNvbXB1dGVTZXRCaXRzQ291bnQoYml0bWFwMSksIGV4cGVjdGVk
TnVtYmVyT2ZTZXRCaXRzMSk7CisgICAgRVhQRUNUX0VRKGNvbXB1dGVTZXRCaXRzQ291bnQoYml0
bWFwMiksIGV4cGVjdGVkTnVtYmVyT2ZTZXRCaXRzMik7CisgICAgRVhQRUNUX0VRKGNvbXB1dGVT
ZXRCaXRzQ291bnQoYml0bWFwMyksIGV4cGVjdGVkTnVtYmVyT2ZTZXRCaXRzMik7CisgICAgRVhQ
RUNUX0VRKGNvbXB1dGVTZXRCaXRzQ291bnQoYml0bWFwRmlsbGVkKSwgc2l6ZSk7CisgICAgRVhQ
RUNUX0VRKGNvbXB1dGVTZXRCaXRzQ291bnQoYml0bWFwU21hbGxaZXJvZWQpLCB6ZXJvU2l6ZSk7
CisgICAgRVhQRUNUX0VRKGNvbXB1dGVTZXRCaXRzQ291bnQoYml0bWFwU21hbGxGaWxsZWQpLCBz
bWFsbFNpemUpOworCisgICAgYXV0byB2ZXJpZnlTZXRCaXRzID0gWz1dIChhdXRvJiBiaXRtYXAs
IGF1dG8mIGV4cGVjdGVkQml0cykgeworICAgICAgICBmb3IgKGF1dG8gYml0SW5kZXggOiBiaXRt
YXApIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGJpdG1hcC5nZXQoYml0SW5kZXgpKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShiaXRtYXAuZ2V0KGJpdEluZGV4KSwgZXhwZWN0ZWRCaXRzW2Jp
dEluZGV4XSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdmVyaWZ5U2V0Qml0cyhiaXRtYXAx
LCBleHBlY3RlZEJpdHMxKTsKKyAgICB2ZXJpZnlTZXRCaXRzKGJpdG1hcDIsIGV4cGVjdGVkQml0
czIpOworICAgIHZlcmlmeVNldEJpdHMoYml0bWFwMywgZXhwZWN0ZWRCaXRzMik7CisKKyAgICBh
dXRvIHZlcmlmeUJpdHNBbGxTZXQgPSBbPV0gKGF1dG8mIGJpdG1hcCkgeworICAgICAgICBzaXpl
X3QgbGFzdEJpdEluZGV4ID0gMDsKKyAgICAgICAgZm9yIChhdXRvIGJpdEluZGV4IDogYml0bWFw
KSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShiaXRtYXAuZ2V0KGJpdEluZGV4KSk7CisgICAg
ICAgICAgICBpZiAoYml0SW5kZXgpCisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGJpdEluZGV4
LCBsYXN0Qml0SW5kZXggKyAxKTsKKyAgICAgICAgICAgIGxhc3RCaXRJbmRleCA9IGJpdEluZGV4
OworICAgICAgICB9CisgICAgfTsKKworICAgIHZlcmlmeUJpdHNBbGxTZXQoYml0bWFwRmlsbGVk
KTsKKyAgICB2ZXJpZnlCaXRzQWxsU2V0KGJpdG1hcFNtYWxsRmlsbGVkKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBNZXJnZUFuZENsZWFyKCkKK3sK
KyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEJpdG1hcDxz
aXplLCBXb3JkVHlwZT4gdGVtcDsKKyAgICBCaXRtYXA8c2l6ZSwgV29yZFR5cGU+IHNhdmVkQml0
bWFwMTsKKworICAgIEFTU0VSVF9GQUxTRShiaXRtYXAyLmlzRW1wdHkoKSk7CisKKyAgICBzYXZl
ZEJpdG1hcDEubWVyZ2UoYml0bWFwMSk7CisgICAgQVNTRVJUX0VRKHNhdmVkQml0bWFwMSwgYml0
bWFwMSk7CisgICAgCisgICAgQVNTRVJUX05FKGJpdG1hcDEsIGJpdG1hcDIpOworICAgIEFTU0VS
VF9ORShiaXRtYXAxLCBiaXRtYXAzKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMywgYml0bWFwMik7
CisgICAgYml0bWFwMS5tZXJnZUFuZENsZWFyKGJpdG1hcDMpOworICAgIEFTU0VSVF9ORShiaXRt
YXAxLCBiaXRtYXAyKTsKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgc2F2ZWRCaXRtYXAxKTsKKyAg
ICBBU1NFUlRfVFJVRShiaXRtYXAzLmlzRW1wdHkoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgYm9vbCBleHBlY3RlZEJpdCA9IGV4cGVjdGVkQml0
czFbaV0gfCBleHBlY3RlZEJpdHMyW2ldOworICAgICAgICBBU1NFUlRfRVEoYml0bWFwMS5nZXQo
aSksIGV4cGVjdGVkQml0KTsKKyAgICB9CisKKyAgICBiaXRtYXAzLm1lcmdlKGJpdG1hcDIpOyAv
LyByZXN0b3JlIGJpdG1hcDMKKyAgICBBU1NFUlRfRVEoYml0bWFwMywgYml0bWFwMik7CisKKyAg
ICBBU1NFUlRfVFJVRSh0ZW1wLmlzRW1wdHkoKSk7CisgICAgdGVtcC5tZXJnZUFuZENsZWFyKGJp
dG1hcDMpOworICAgIEFTU0VSVF9GQUxTRSh0ZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0VR
KHRlbXAsIGJpdG1hcDIpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDMuaXNFbXB0eSgpKTsKKwor
ICAgIEJpdG1hcDxzaXplLCBXb3JkVHlwZT4gc2F2ZWRCaXRtYXBGaWxsZWQ7CisgICAgc2F2ZWRC
aXRtYXBGaWxsZWQubWVyZ2UoYml0bWFwRmlsbGVkKTsKKworICAgIHRlbXAuY2xlYXJBbGwoKTsK
KyAgICBBU1NFUlRfVFJVRSh0ZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0ZBTFNFKHRlbXAu
aXNGdWxsKCkpOworICAgIEFTU0VSVF9GQUxTRShiaXRtYXBGaWxsZWQuaXNFbXB0eSgpKTsKKyAg
ICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuaXNGdWxsKCkpOworICAgIHRlbXAubWVyZ2VBbmRD
bGVhcihiaXRtYXBGaWxsZWQpOworICAgIEFTU0VSVF9GQUxTRSh0ZW1wLmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUX1RSVUUodGVtcC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmls
bGVkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7
CisKKyAgICBiaXRtYXAzLm1lcmdlKGJpdG1hcDIpOyAvLyByZXN0b3JlIGJpdG1hcDMKKyAgICBB
U1NFUlRfRVEoYml0bWFwMywgYml0bWFwMik7CisgICAgYml0bWFwRmlsbGVkLm1lcmdlKHNhdmVk
Qml0bWFwRmlsbGVkKTsgLy8gcmVzdG9yZSBiaXRtYXBGaWxsZWQKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXBGaWxsZWQuaXNGdWxsKCkpOworCisgICAgQVNTRVJUX1RSVUUodGVtcC5pc0Z1bGwoKSk7
CisgICAgdGVtcC5tZXJnZUFuZENsZWFyKGJpdG1hcDMpOworICAgIEFTU0VSVF9UUlVFKHRlbXAu
aXNGdWxsKCkpOworICAgIEFTU0VSVF9FUSh0ZW1wLCBiaXRtYXBGaWxsZWQpOworICAgIEFTU0VS
VF9UUlVFKGJpdG1hcDMuaXNFbXB0eSgpKTsKKworICAgIEJpdG1hcDxzbWFsbFNpemUsIFdvcmRU
eXBlPiBzbWFsbFRlbXA7CisKKyAgICBzbWFsbFRlbXAubWVyZ2UoYml0bWFwU21hbGxGaWxsZWQp
OworICAgIEFTU0VSVF9UUlVFKHNtYWxsVGVtcC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKKyAgICBzbWFsbFRlbXAubWVyZ2VBbmRDbGVh
cihiaXRtYXBTbWFsbFplcm9lZCk7CisgICAgQVNTRVJUX1RSVUUoc21hbGxUZW1wLmlzRnVsbCgp
KTsKKyAgICBBU1NFUlRfRkFMU0Uoc21hbGxUZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RS
VUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKKworICAgIHNtYWxsVGVtcC5jbGVhckFs
bCgpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBB
U1NFUlRfVFJVRShzbWFsbFRlbXAuaXNFbXB0eSgpKTsKKyAgICBzbWFsbFRlbXAubWVyZ2VBbmRD
bGVhcihiaXRtYXBTbWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX1RSVUUoc21hbGxUZW1wLmlzRnVs
bCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcFNldEFuZENsZWFy
KCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEJp
dG1hcDxzaXplLCBXb3JkVHlwZT4gdGVtcDsKKyAgICBCaXRtYXA8c2l6ZSwgV29yZFR5cGU+IHNh
dmVkQml0bWFwMTsKKworICAgIEFTU0VSVF9GQUxTRShiaXRtYXAyLmlzRW1wdHkoKSk7CisKKyAg
ICBzYXZlZEJpdG1hcDEubWVyZ2UoYml0bWFwMSk7CisgICAgQVNTRVJUX0VRKHNhdmVkQml0bWFw
MSwgYml0bWFwMSk7CisgICAgCisgICAgQVNTRVJUX05FKGJpdG1hcDEsIGJpdG1hcDIpOworICAg
IEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAzKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMywgYml0
bWFwMik7CisgICAgYml0bWFwMS5zZXRBbmRDbGVhcihiaXRtYXAzKTsKKyAgICBBU1NFUlRfRVEo
Yml0bWFwMSwgYml0bWFwMik7CisgICAgQVNTRVJUX05FKGJpdG1hcDEsIHNhdmVkQml0bWFwMSk7
CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5pc0VtcHR5KCkpOworCisgICAgYml0bWFwMy5tZXJn
ZShiaXRtYXAyKTsgLy8gcmVzdG9yZSBiaXRtYXAzCisgICAgQVNTRVJUX0VRKGJpdG1hcDMsIGJp
dG1hcDIpOworCisgICAgQVNTRVJUX1RSVUUodGVtcC5pc0VtcHR5KCkpOworICAgIHRlbXAuc2V0
QW5kQ2xlYXIoYml0bWFwMyk7CisgICAgQVNTRVJUX0ZBTFNFKHRlbXAuaXNFbXB0eSgpKTsKKyAg
ICBBU1NFUlRfRVEodGVtcCwgYml0bWFwMik7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5pc0Vt
cHR5KCkpOworCisgICAgdGVtcC5jbGVhckFsbCgpOworICAgIEFTU0VSVF9UUlVFKHRlbXAuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlRfRkFMU0UodGVtcC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX0ZB
TFNFKGJpdG1hcEZpbGxlZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxl
ZC5pc0Z1bGwoKSk7CisgICAgdGVtcC5zZXRBbmRDbGVhcihiaXRtYXBGaWxsZWQpOworICAgIEFT
U0VSVF9GQUxTRSh0ZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUodGVtcC5pc0Z1bGwo
KSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJU
X0ZBTFNFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisKKyAgICBiaXRtYXAzLm1lcmdlKGJpdG1h
cDIpOyAvLyByZXN0b3JlIGJpdG1hcDMKKyAgICBBU1NFUlRfRVEoYml0bWFwMywgYml0bWFwMik7
CisKKyAgICBBU1NFUlRfVFJVRSh0ZW1wLmlzRnVsbCgpKTsKKyAgICB0ZW1wLnNldEFuZENsZWFy
KGJpdG1hcDMpOworICAgIEFTU0VSVF9GQUxTRSh0ZW1wLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRf
RVEodGVtcCwgYml0bWFwMik7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5pc0VtcHR5KCkpOwor
CisgICAgQml0bWFwPHNtYWxsU2l6ZSwgV29yZFR5cGU+IHNtYWxsVGVtcDsKKworICAgIHNtYWxs
VGVtcC5tZXJnZShiaXRtYXBTbWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX1RSVUUoc21hbGxUZW1w
LmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkp
OworICAgIHNtYWxsVGVtcC5zZXRBbmRDbGVhcihiaXRtYXBTbWFsbFplcm9lZCk7CisgICAgQVNT
RVJUX1RSVUUoc21hbGxUZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21h
bGxaZXJvZWQuaXNFbXB0eSgpKTsKKyAgICAKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZp
bGxlZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoc21hbGxUZW1wLmlzRW1wdHkoKSk7Cisg
ICAgc21hbGxUZW1wLnNldEFuZENsZWFyKGJpdG1hcFNtYWxsRmlsbGVkKTsKKyAgICBBU1NFUlRf
VFJVRShzbWFsbFRlbXAuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmls
bGVkLmlzRW1wdHkoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0
ZXN0Qml0bWFwT3BlcmF0b3JFcXVhbCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBT
X0ZPUl9URVNUKCk7CisKKyAgICBFWFBFQ1RfVFJVRShiaXRtYXAwID09IGJpdG1hcDApOworICAg
IEVYUEVDVF9GQUxTRShiaXRtYXAwID09IGJpdG1hcDEpOworICAgIEVYUEVDVF9UUlVFKGJpdG1h
cDEgPT0gYml0bWFwMSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDEgPT0gYml0bWFwMik7Cisg
ICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDEgPT0gYml0bWFwMyk7CisgICAgRVhQRUNUX1RSVUUoYml0
bWFwMiA9PSBiaXRtYXAzKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwRmlsbGVkID09IGJpdG1h
cDEpOworICAgIEVYUEVDVF9GQUxTRShiaXRtYXBTbWFsbFplcm9lZCA9PSBiaXRtYXBTbWFsbEZp
bGxlZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFw
T3BlcmF0b3JOb3RFcXVhbCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9U
RVNUKCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMCAhPSBiaXRtYXAwKTsKKyAgICBFWFBF
Q1RfVFJVRShiaXRtYXAwICE9IGJpdG1hcDEpOworICAgIEVYUEVDVF9GQUxTRShiaXRtYXAxICE9
IGJpdG1hcDEpOworICAgIEVYUEVDVF9UUlVFKGJpdG1hcDEgIT0gYml0bWFwMik7CisgICAgRVhQ
RUNUX1RSVUUoYml0bWFwMSAhPSBiaXRtYXAzKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMiAh
PSBiaXRtYXAzKTsKKyAgICBFWFBFQ1RfVFJVRShiaXRtYXBGaWxsZWQgIT0gYml0bWFwMSk7Cisg
ICAgRVhQRUNUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQgIT0gYml0bWFwU21hbGxGaWxsZWQpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcEhhc2goKQor
eworICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgY29uc3Rl
eHByIHVuc2lnbmVkIHdvcmRTaXplID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CisgICAgY29uc3Rl
eHByIHNpemVfdCB3b3JkcyA9IChzaXplICsgd29yZFNpemUgLSAxKSAvIHdvcmRTaXplOworCisg
ICAgYXV0byBleHBlY3RlZEJpdG1hcDBIYXNoID0gWz1dICgpIC0+IHVuc2lnbmVkIHsKKyAgICAg
ICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAgICAgV29yZFR5cGUgemVyb1dvcmQgPSAwOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCisgICAgICAgICAgICBy
ZXN1bHQgXj0gSW50SGFzaDxXb3JkVHlwZT46Omhhc2goemVyb1dvcmQpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH07CisKKyAgICBhdXRvIGV4cGVjdGVkQml0bWFwRmlsbGVkSGFzaCA9
IFs9XSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAg
ICAgIFdvcmRUeXBlIGZpbGxlZFdvcmQgPSBzdGF0aWNfY2FzdDxXb3JkVHlwZT4oLTEpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCisgICAgICAgICAgICByZXN1
bHQgXj0gSW50SGFzaDxXb3JkVHlwZT46Omhhc2goZmlsbGVkV29yZCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfTsKKworICAgIEFTU0VSVF9FUShiaXRtYXAwLmhhc2goKSwgZXhwZWN0
ZWRCaXRtYXAwSGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLmhhc2goKSwgZXhw
ZWN0ZWRCaXRtYXBGaWxsZWRIYXNoKCkpOworCisgICAgYXV0byBleHBlY3RlZEhhc2ggPSBbPV0g
KGF1dG8gZXhwZWN0ZWRCaXRzLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICB1bnNpZ25lZCByZXN1
bHQgPSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7KSB7CisgICAgICAg
ICAgICBXb3JkVHlwZSB3b3JkID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgd29yZFNpemUgJiYgaSA8IHNpemU7ICsraSwgKytqKQorICAgICAgICAgICAgICAgIHdvcmQg
fD0gc3RhdGljX2Nhc3Q8V29yZFR5cGU+KCEhZXhwZWN0ZWRCaXRzW2ldKSA8PCBqOworICAgICAg
ICAgICAgcmVzdWx0IF49IEludEhhc2g8V29yZFR5cGU+OjpoYXNoKHdvcmQpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIEFTU0VSVF9FUShiaXRtYXAx
Lmhhc2goKSwgZXhwZWN0ZWRIYXNoKGV4cGVjdGVkQml0czEsIHNpemUpKTsKKyAgICBBU1NFUlRf
RVEoYml0bWFwMi5oYXNoKCksIGV4cGVjdGVkSGFzaChleHBlY3RlZEJpdHMyLCBzaXplKSk7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZXhwZWN0ZWRTbWFsbEJpdHNbc21hbGxTaXplXSA9
IHsKKyAgICAgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCAgZmFsc2UsIGZh
bHNlLCB0cnVlLAorICAgICAgICB0cnVlLAorICAgIH07CisgICAgQml0bWFwPHNtYWxsU2l6ZSwg
V29yZFR5cGU+IHRlbXAxOworICAgIEJpdG1hcDxzbWFsbFNpemUsIFdvcmRUeXBlPiB0ZW1wMjsK
KworICAgIGF1dG8gaW5pdFRlbXAgPSBbJl0gKGF1dG8mIGJpdG1hcCkgeworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNtYWxsU2l6ZTsgKytpKQorICAgICAgICAgICAgYml0bWFwLnNl
dChpLCBleHBlY3RlZFNtYWxsQml0c1tpXSk7CisgICAgfTsKKworICAgIGluaXRUZW1wKHRlbXAx
KTsKKyAgICBBU1NFUlRfRVEodGVtcDEuaGFzaCgpLCBleHBlY3RlZEhhc2goZXhwZWN0ZWRTbWFs
bEJpdHMsIHNtYWxsU2l6ZSkpOworCisgICAgdGVtcDIuaW52ZXJ0KCk7CisgICAgaW5pdFRlbXAo
dGVtcDIpOworICAgIEFTU0VSVF9FUSh0ZW1wMi5oYXNoKCksIGV4cGVjdGVkSGFzaChleHBlY3Rl
ZFNtYWxsQml0cywgc21hbGxTaXplKSk7CisgICAgQVNTRVJUX0VRKHRlbXAyLmhhc2goKSwgdGVt
cDEuaGFzaCgpKTsKK30KKworVEVTVChXVEZfQml0bWFwLCBTaXplX3VpbnQzMl90KSB7IHRlc3RC
aXRtYXBTaXplPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENvbnN0cnVjdGVkRW1w
dHlfdWludDMyX3QpIHsgdGVzdEJpdG1hcENvbnN0cnVjdGVkRW1wdHk8dWludDMyX3Q+KCk7IH0K
K1RFU1QoV1RGX0JpdG1hcCwgU2V0R2V0X3VpbnQzMl90KSB7IHRlc3RCaXRtYXBTZXRHZXQ8dWlu
dDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgVGVzdEFuZFNldF91aW50MzJfdCkgeyB0ZXN0
Qml0bWFwVGVzdEFuZFNldDx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBUZXN0QW5k
Q2xlYXJfdWludDMyX3QpIHsgdGVzdEJpdG1hcFRlc3RBbmRDbGVhcjx1aW50MzJfdD4oKTsgfQor
VEVTVChXVEZfQml0bWFwLCBDb25jdXJyZW50VGVzdEFuZFNldF91aW50MzJfdCkgeyB0ZXN0Qml0
bWFwQ29uY3VycmVudFRlc3RBbmRTZXQ8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwg
Q29uY3VycmVudFRlc3RBbmRDbGVhcl91aW50MzJfdCkgeyB0ZXN0Qml0bWFwQ29uY3VycmVudFRl
c3RBbmRDbGVhcjx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDbGVhcl91aW50MzJf
dCkgeyB0ZXN0Qml0bWFwQ2xlYXI8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ2xl
YXJBbGxfdWludDMyX3QpIHsgdGVzdEJpdG1hcENsZWFyQWxsPHVpbnQzMl90PigpOyB9CitURVNU
KFdURl9CaXRtYXAsIEludmVydF91aW50MzJfdCkgeyB0ZXN0Qml0bWFwSW52ZXJ0PHVpbnQzMl90
PigpOyB9CitURVNUKFdURl9CaXRtYXAsIEZpbmRSdW5PZlplcm9zX3VpbnQzMl90KSB7IHRlc3RC
aXRtYXBGaW5kUnVuT2ZaZXJvczx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDb3Vu
dF91aW50MzJfdCkgeyB0ZXN0Qml0bWFwQ291bnQ8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0Jp
dG1hcCwgSXNFbXB0eV91aW50MzJfdCkgeyB0ZXN0Qml0bWFwSXNFbXB0eTx1aW50MzJfdD4oKTsg
fQorVEVTVChXVEZfQml0bWFwLCBJc0Z1bGxfdWludDMyX3QpIHsgdGVzdEJpdG1hcElzRnVsbDx1
aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBNZXJnZV91aW50MzJfdCkgeyB0ZXN0Qml0
bWFwTWVyZ2U8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRmlsdGVyX3VpbnQzMl90
KSB7IHRlc3RCaXRtYXBGaWx0ZXI8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRXhj
bHVkZV91aW50MzJfdCkgeyB0ZXN0Qml0bWFwRXhjbHVkZTx1aW50MzJfdD4oKTsgfQorVEVTVChX
VEZfQml0bWFwLCBDb25jdXJyZW50RmlsdGVyX3VpbnQzMl90KSB7IHRlc3RCaXRtYXBDb25jdXJy
ZW50RmlsdGVyPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIFN1YnN1bWVzX3VpbnQz
Ml90KSB7IHRlc3RCaXRtYXBTdWJzdW1lczx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFw
LCBGb3JFYWNoU2V0Qml0X3VpbnQzMl90KSB7IHRlc3RCaXRtYXBGb3JFYWNoU2V0Qml0PHVpbnQz
Ml90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIEZpbmRCaXRfdWludDMyX3QpIHsgdGVzdEJpdG1h
cEZpbmRCaXQ8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgSXRlcmF0aW9uX3VpbnQz
Ml90KSB7IHRlc3RCaXRtYXBJdGVyYXRpb248dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1h
cCwgTWVyZ2VBbmRDbGVhcl91aW50MzJfdCkgeyB0ZXN0Qml0bWFwTWVyZ2VBbmRDbGVhcjx1aW50
MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBTZXRBbmRDbGVhcl91aW50MzJfdCkgeyB0ZXN0
Qml0bWFwU2V0QW5kQ2xlYXI8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgT3BlcmF0
b3JFcXVhbEFjY2Vzc191aW50MzJfdCkgeyB0ZXN0Qml0bWFwT3BlcmF0b3JFcXVhbDx1aW50MzJf
dD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBPcGVyYXRvck5vdEVxdWFsQWNjZXNzX3VpbnQzMl90
KSB7IHRlc3RCaXRtYXBPcGVyYXRvck5vdEVxdWFsPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9C
aXRtYXAsIEhhc2hfdWludDMyX3QpIHsgdGVzdEJpdG1hcEhhc2g8dWludDMyX3Q+KCk7IH0KKwor
I2lmIENQVShSRUdJU1RFUjY0KQorCitURVNUKFdURl9CaXRtYXAsIFNpemVfdWludDY0X3QpIHsg
dGVzdEJpdG1hcFNpemU8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ29uc3RydWN0
ZWRFbXB0eV91aW50NjRfdCkgeyB0ZXN0Qml0bWFwQ29uc3RydWN0ZWRFbXB0eTx1aW50NjRfdD4o
KTsgfQorVEVTVChXVEZfQml0bWFwLCBTZXRHZXRfdWludDY0X3QpIHsgdGVzdEJpdG1hcFNldEdl
dDx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBUZXN0QW5kU2V0X3VpbnQ2NF90KSB7
IHRlc3RCaXRtYXBUZXN0QW5kU2V0PHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIFRl
c3RBbmRDbGVhcl91aW50NjRfdCkgeyB0ZXN0Qml0bWFwVGVzdEFuZENsZWFyPHVpbnQ2NF90Pigp
OyB9CitURVNUKFdURl9CaXRtYXAsIENvbmN1cnJlbnRUZXN0QW5kU2V0X3VpbnQ2NF90KSB7IHRl
c3RCaXRtYXBDb25jdXJyZW50VGVzdEFuZFNldDx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0
bWFwLCBDb25jdXJyZW50VGVzdEFuZENsZWFyX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBDb25jdXJy
ZW50VGVzdEFuZENsZWFyPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENsZWFyX3Vp
bnQ2NF90KSB7IHRlc3RCaXRtYXBDbGVhcjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFw
LCBDbGVhckFsbF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwQ2xlYXJBbGw8dWludDY0X3Q+KCk7IH0K
K1RFU1QoV1RGX0JpdG1hcCwgSW52ZXJ0X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBJbnZlcnQ8dWlu
dDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRmluZFJ1bk9mWmVyb3NfdWludDY0X3QpIHsg
dGVzdEJpdG1hcEZpbmRSdW5PZlplcm9zPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAs
IENvdW50X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBDb3VudDx1aW50NjRfdD4oKTsgfQorVEVTVChX
VEZfQml0bWFwLCBJc0VtcHR5X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBJc0VtcHR5PHVpbnQ2NF90
PigpOyB9CitURVNUKFdURl9CaXRtYXAsIElzRnVsbF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwSXNG
dWxsPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIE1lcmdlX3VpbnQ2NF90KSB7IHRl
c3RCaXRtYXBNZXJnZTx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBGaWx0ZXJfdWlu
dDY0X3QpIHsgdGVzdEJpdG1hcEZpbHRlcjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFw
LCBFeGNsdWRlX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBFeGNsdWRlPHVpbnQ2NF90PigpOyB9CitU
RVNUKFdURl9CaXRtYXAsIENvbmN1cnJlbnRGaWx0ZXJfdWludDY0X3QpIHsgdGVzdEJpdG1hcENv
bmN1cnJlbnRGaWx0ZXI8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgU3Vic3VtZXNf
dWludDY0X3QpIHsgdGVzdEJpdG1hcFN1YnN1bWVzPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9C
aXRtYXAsIEZvckVhY2hTZXRCaXRfdWludDY0X3QpIHsgdGVzdEJpdG1hcEZvckVhY2hTZXRCaXQ8
dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRmluZEJpdF91aW50NjRfdCkgeyB0ZXN0
Qml0bWFwRmluZEJpdDx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBJdGVyYXRpb25f
dWludDY0X3QpIHsgdGVzdEJpdG1hcEl0ZXJhdGlvbjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZf
Qml0bWFwLCBNZXJnZUFuZENsZWFyX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBNZXJnZUFuZENsZWFy
PHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIFNldEFuZENsZWFyX3VpbnQ2NF90KSB7
IHRlc3RCaXRtYXBTZXRBbmRDbGVhcjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBP
cGVyYXRvckVxdWFsQWNjZXNzX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBPcGVyYXRvckVxdWFsPHVp
bnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIE9wZXJhdG9yTm90RXF1YWxBY2Nlc3NfdWlu
dDY0X3QpIHsgdGVzdEJpdG1hcE9wZXJhdG9yTm90RXF1YWw8dWludDY0X3Q+KCk7IH0KK1RFU1Qo
V1RGX0JpdG1hcCwgSGFzaF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwSGFzaDx1aW50NjRfdD4oKTsg
fQorCisjZW5kaWYgLy8gQ1BVKFJFR0lTVEVSNjQpCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTEzNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA1LTA0ICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRv
IGEgVUNQVVJlZ2lzdGVyIHdvcmQgc2l6ZSBmb3IgaW50ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzMjgKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYyNzU1ODY1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGVkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1k
ZWxldGUtc3RhbGUtdW5kby1pdGVtcy5odG1sIGV4cG9zZWQgYSBidWcgaW4KKyAgICAgICAgdGhp
cyBwYXRjaC4gIEhvd2V2ZXIsIHdoZW4gYSBmYWlsdXJlIG9jY3VycywgdGhpcyB0ZXN0IHJ1bnMg
cGVycGV0dWFsbHkgdW50aWwgaXQKKyAgICAgICAgdGltZXMgb3V0LiAgVGhlcmUncyBubyBuZWVk
IHRvIGRvIHRoaXMuICBBZnRlciBhIGZpbml0ZSBudW1iZXIgb2YgR0MgY3ljbGVzLAorICAgICAg
ICB1bnJlYWNoYWJsZSBvYmplY3RzIHNob3VsZCBiZSBjb2xsZWN0ZWQuICBUaGlzIGlzIGVzcGVj
aWFsbHkgc28gYmVjYXVzZQorICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpIGRvZXMgYSBz
eW5jaHJvbm91cyBmdWxsIEdDLgorCisgICAgICAgIEFkZGVkIGEgY2FwIG9mIDEwIEdDIHRyaWVz
LCBhbmQgZmFpbCBvdXQgaWYgdGhlIHRlc3QgZG9lcyBub3Qgc2VlIHRoZSBleHBlY3RlZAorICAg
ICAgICByZXN1bHQuICBUaGlzIGFsbG93cyB0aGUgdGVzdCB0byBmYWlsIGZhc3QgYW5kIGF2b2lk
IHRoZSBjb3N0bHkgdGltZSBvdXQuCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG8tbWFuYWdlci91
bmRvLW1hbmFnZXItZGVsZXRlLXN0YWxlLXVuZG8taXRlbXMuaHRtbDoKKwogMjAyMC0wNS0wNCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBPdmVyZmxv
dyBzY3JvbGxiYXJzIGRvbid0IGdyb3cgd2hlbiBob3ZlcmVkCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItZGVsZXRlLXN0YWxlLXVuZG8taXRlbXMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRv
LW1hbmFnZXItZGVsZXRlLXN0YWxlLXVuZG8taXRlbXMuaHRtbAkocmV2aXNpb24gMjYxMTM1KQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWRlbGV0ZS1z
dGFsZS11bmRvLWl0ZW1zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDEyIEBACiAg
ICAgICAgICAgICAvLyBoYW5kbGVycyBhcmUgbm90IHByb3Blcmx5IHJlbGlucXVpc2hlZCBvbmNl
IHRoZXkncmUgbm8gbG9uZ2VyIG5lZWRlZC4KICAgICAgICAgICAgIGNvbnN0IG1pbmltdW1OdW1i
ZXJPZldyYXBwZXJzVG9Db2xsZWN0QmVmb3JlUGFzc2luZyA9IDMgKiB1bmRvSXRlbUNvdW50IC0g
MzAwOwogICAgICAgICAgICAgb2JqZWN0Q291bnRBZnRlckNsZWFyaW5nVW5kb1N0YWNrID0gb2Jq
ZWN0Q291bnRCZWZvcmVDbGVhcmluZ1VuZG9TdGFjazsKKyAgICAgICAgICAgIHZhciB0cmllcyA9
IDA7CiAgICAgICAgICAgICB3aGlsZSAob2JqZWN0Q291bnRCZWZvcmVDbGVhcmluZ1VuZG9TdGFj
ayAtIG9iamVjdENvdW50QWZ0ZXJDbGVhcmluZ1VuZG9TdGFjayA8IG1pbmltdW1OdW1iZXJPZldy
YXBwZXJzVG9Db2xsZWN0QmVmb3JlUGFzc2luZykgewogICAgICAgICAgICAgICAgIGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKTsKICAgICAgICAg
ICAgICAgICBvYmplY3RDb3VudEFmdGVyQ2xlYXJpbmdVbmRvU3RhY2sgPSBvYmplY3RDb3VudEFm
dGVyU2ltdWxhdGluZ01lbW9yeVByZXNzdXJlQW5kR2FyYmFnZUNvbGxlY3Rpb24oKTsKKyAgICAg
ICAgICAgICAgICBpZiAodHJpZXMrKyA+IDEwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwo
Im9iamVjdENvdW50QmVmb3JlQ2xlYXJpbmdVbmRvU3RhY2sgLSBvYmplY3RDb3VudEFmdGVyQ2xl
YXJpbmdVbmRvU3RhY2siLCBgJHttaW5pbXVtTnVtYmVyT2ZXcmFwcGVyc1RvQ29sbGVjdEJlZm9y
ZVBhc3Npbmd9YCk7Cg==
</data>
<flag name="review"
          id="413888"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398484</attachid>
            <date>2020-05-05 00:25:07 -0700</date>
            <delta_ts>2020-05-05 08:41:53 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-211328.patch</filename>
            <type>text/plain</type>
            <size>60444</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA1LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVyIHdvcmQgc2l6ZSBmb3IgaW50
ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyNzU1ODY1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBhc3NlbWJsZXIv
Q1BVLmg6CisKIDIwMjAtMDUtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBERkcgTm90Q2VsbFVzZSBpcyB1c2VkIHdpdGhvdXQgY29uc2lkZXJp
bmcgYWJvdXQgQmlnSW50MzIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
Q1BVLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUu
aAkocmV2aXNpb24gMjYxMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9D
UFUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDE3ICsyNywxMCBAQAogCiAjaW5jbHVkZSAiT3B0
aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZEludEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIFVTRShKU1ZBTFVFNjQpCi11
c2luZyBDUFVSZWdpc3RlciA9IGludDY0X3Q7Ci11c2luZyBVQ1BVUmVnaXN0ZXIgPSB1aW50NjRf
dDsKLSNlbHNlCi11c2luZyBDUFVSZWdpc3RlciA9IGludDMyX3Q7Ci11c2luZyBVQ1BVUmVnaXN0
ZXIgPSB1aW50MzJfdDsKLSNlbmRpZgotCiB1c2luZyBVQ1BVU3RyaWN0SW50MzIgPSBVQ1BVUmVn
aXN0ZXI7CiAKIGNvbnN0ZXhwciBib29sIGlzQVJNdjdJRElWU3VwcG9ydGVkKCkKSW5kZXg6IFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjExNTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDU0IEBACisyMDIwLTA1LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBBbGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVyIHdv
cmQgc2l6ZSBmb3IgaW50ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYyNzU1ODY1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAg
ICAgMS4gTW92ZWQgdGhlIGRlZmluaXRpb24gb2YgQ1BVUmVnaXN0ZXIgYW5kIFVDUFVSZWdpc3Rl
ciBkb3duIGludG8gV1RGLgorICAgICAgICAgICBBZGRlZCBDUFUoUkVHSVNURVI2NCkgYW5kIENQ
VShSRUdJU1RFUjMyKSBmb3IgZGV0ZXJtaW5pbmcgd2hhdCBzaXplIGEgQ1BVCisgICAgICAgICAg
IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlciBpcy4KKworICAgICAgICAyLiBVcGRhdGVkIEJpdG1h
cCBzbyB0aGF0IGl0IHdpbGwgYXV0b21hdGljYWxseSBjaG9vc2UgdGhlIG1pbmltYWwgcmVxdWly
ZWQKKyAgICAgICAgICAgd29yZCBzaXplIGZvciB0aGUgbnVtYmVyIG9mIGJpdHMgaXQgbmVlZHMg
dG8gc3RvcmUuICBUaGlzIG1lYW5zIHRoZSBCaXRtYXAKKyAgICAgICAgICAgY2FuIGF1dG9tYXRp
Y2FsbHkgY2hvb3NlIGEgV29yZFR5cGUgZnJvbSB1aW50OF90IHVwIHRvIFVDUFVSZWdpc3Rlci4K
KyAgICAgICAgICAgUHJldmlvdXNseSwgdGhlIFdvcmRUeXBlIGlzIGFsd2F5cyB1aW50MzJfdCBi
eSBkZWZhdWx0LgorCisgICAgICAgICAgIFRoaXMgc2hvdWxkIGltcHJvdmUgcGVyZiB3aXRoIHVz
ZSBvZiBCaXRtYXAgb24gNjQtYml0IHBsYXRmb3Jtcy4gIFRoZSBzaXplCisgICAgICAgICAgIG9w
dGltaXphdGlvbiBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCBibG9hdCBvbiA2NC1iaXQgcGxhdGZv
cm1zIHdoaWNoIHdvdWxkIGhhdmUKKyAgICAgICAgICAgcmVzdWx0ZWQgaWYgd2Ugc2ltcGx5IHNl
dCB0aGUgZGVmYXVsdCB0byBhbHdheXMgYmUgVUNQVVJlZ2lzdGVyLgorCisgICAgICAgIDMuIEFk
ZGVkIGEgY2hlY2sgaW4gZmluZFJ1bk9mWmVyb3MoKSBmb3IgaGFuZGxpbmcgdGhlIGVkZ2UgY2Fz
ZSB3aGVyZSB0aGUKKyAgICAgICAgICAgcmVxdWVzdGVkIHJ1bkxlbmd0aCBleGNlZWRzIHRoZSBi
aXRtYXBTaXplLgorCisgICAgICAgIDQuIEZpeGVkIGEgYnVnIGluIGNvdW50KCkgdGhhdCB3YXMg
dW5uZWNlc3NhcmlseSBjYXN0aW5nIHRoZSBiaXRzIHRvIHVuc2lnbmVkCisgICAgICAgICAgIGlu
c3RlYWQgb2YganVzdCB1c2luZyB0aGUgQml0bWFwIFdvcmRUeXBlLiAgQXMgYSByZXN1bHQsIHdo
ZW4gdXNpbmcgYSBXb3JkVHlwZQorICAgICAgICAgICBvZiB1aW50NjRfdCwgaXQgd2FzIGRpc2Nh
cmRpbmcgYml0cyBmcm9tIHRoZSBjb3VudC4KKworICAgICAgICA1LiBGaXhlZCBpbnZlcnQoKSB0
byBsZWF2ZSB0aGUgYml0cyBiZXlvbmQgYml0bWFwU2l6ZSB1bnRvdWNoZWQuCisgICAgICAgICAg
IEZpeGVkIGlzRnVsbCgpIHRvIGlnbm9yZSB0aGUgYml0cyBiZXlvbmQgYml0bWFwU2l6ZS4KKwor
ICAgICAgICAgICBCeSBmaXhpbmcgaW52ZXJ0KCkgdG8gbGVhdmUgdGhvc2UgYml0cyBhcyAwLCBp
c0VtcHR5KCkgYW5kIGhhc2goKSB3aWxsCisgICAgICAgICAgIGNvbnRpbnVlIHRvIHdvcmsuICBP
dGhlcndpc2UsIGludmVydGluZyB0aG9zZSBiaXRzIHdpbGwgY2F1c2UgaXNFbXB0eSgpIHRvCisg
ICAgICAgICAgIGFsd2F5cyBmYWlsLCBhbmQgaGFzaCgpJ3MgcmVzdWx0IG1heSBiZSBkaWZmZXJl
bnQgZm9yIHRoZSBzYW1lIHNldCBvZiBiaXQKKyAgICAgICAgICAgdmFsdWVzIHdpdGhpbiBiaXRt
YXBTaXplLgorCisgICAgICAgICAgIGlzRnVsbCgpLCBvbiB0aGUgb3RoZXIgaGFuZCwgY2hlY2tz
IGZvciBzZXQgYml0cyBpbiB0aGUgd29yZHMuICBTaW5jZSB0aGVyZQorICAgICAgICAgICBtYXkg
YmUgMCB2YWx1ZWQgYml0cyBiZXlvbmQgYml0bWFwU2l6ZSwgaXNGdWxsKCkgbmVlZHMgdG8gYmUg
Zml4ZWQgdG8gaWdub3JlCisgICAgICAgICAgIHRob3NlLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0JpdG1hcC5oOgorICAgICAgICAo
V1RGOjpXb3JkVHlwZT46OmludmVydCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZmluZFJ1
bk9mWmVyb3MgY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojppc0Z1bGwgY29uc3QpOgorICAgICAgICAqIHd0Zi9D
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1DUFUuaDoKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm1Vc2UuaDoKKyAgICAgICAgKiB3dGYvU3RkSW50RXh0cmFzLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XVEYvd3RmL1N0ZEludEV4dHJhcy5oLgorCiAyMDIwLTA1LTA0ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBSZW1vdmUgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCBjaGVja3MgZm9yIHZlcnNpb25zIG9sZGVyIHRoYW4gMTAu
MTQKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjYxMTU1KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNzQ5LDYgKzc0OSw3IEBACiAJCUZFODIyNTMwMUIyQTFFNUIwMEJB
NjhGRCAvKiBOYWtlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYWtl
ZFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg2QTg3NDFFNTk0NDAyMDAx
MTFCQkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9yYmlkSGVhcEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFOTdGNkE4MjQ1Q0U1REQwMEM2M0ZDNiAvKiBTdGRJbnRFeHRyYXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RkSW50RXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFQjZCMDM1MjAxQkUwQjYwMEI5NThDMSAvKiBQb2ludGVyUHJlcGFy
YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJQcmVwYXJh
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAw
QzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFD
RDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyMzIsNiArMTIzMyw3IEBACiAJCQkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNr
U3RhdHMuaCAqLywKIAkJCQkzMTNFREVDOTc3OEU0OUM5QkVBOTFDRkMgLyogU3RhY2tUcmFjZS5j
cHAgKi8sCiAJCQkJRUY3RDZDRDU5RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLywK
KwkJCQlGRTk3RjZBODI0NUNFNUREMDBDNjNGQzYgLyogU3RkSW50RXh0cmFzLmggKi8sCiAJCQkJ
QThBNDczMTExNTFBODI1QjAwNDEyM0ZGIC8qIFN0ZExpYkV4dHJhcy5oICovLAogCQkJCUZGMEE0
MzY1ODg5NTRGM0NCMDdEQkVDQSAvKiBTdGRMaXN0LmggKi8sCiAJCQkJMzkxQkQ2QkE0RDE2NEZE
Mjk0RjlBOTNEIC8qIFN0ZE1hcC5oICovLApJbmRleDogU291cmNlL1dURi93dGYvQml0bWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQml0bWFwLmgJKHJldmlzaW9uIDI2MTE1NSkK
KysrIFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxNyArMjIs
MjEgQEAKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogbmFtZXNwYWNlIFdURiB7
CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZSA9IHVpbnQz
Ml90PgordGVtcGxhdGU8c2l6ZV90IHNpemU+Cit1c2luZyBCaXRtYXBXb3JkVHlwZSA9IHN0ZDo6
Y29uZGl0aW9uYWxfdDwoc2l6ZSA8PSAzMiAmJiBzaXplb2YoVUNQVVJlZ2lzdGVyKSA+IHNpemVv
Zih1aW50MzJfdCkpLCB1aW50MzJfdCwgVUNQVVJlZ2lzdGVyPjsKKwordGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlID0gQml0bWFwV29yZFR5cGU8Yml0bWFwU2l6
ZT4+CiBjbGFzcyBCaXRtYXAgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIAotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdvcmRUeXBlKSA8PSBzaXplb2YodW5zaWdu
ZWQpLCAiV29yZFR5cGUgbXVzdCBub3QgYmUgYmlnZ2VyIHRoYW4gdW5zaWduZWQiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihXb3JkVHlwZSkgPD0gc2l6ZW9mKFVDUFVSZWdpc3RlciksICJX
b3JkVHlwZSBtdXN0IG5vdCBiZSBiaWdnZXIgdGhhbiB0aGUgQ1BVIGF0b21pYyB3b3JkIHNpemUi
KTsKIHB1YmxpYzoKICAgICBjb25zdGV4cHIgQml0bWFwKCk7CiAKQEAgLTIzMCw2ICsyMzQsMTEg
QEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPgogewogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSA9IH5iaXRzW2ld
OworICAgIGlmIGNvbnN0ZXhwciAoISEoYml0bWFwU2l6ZSAlIHdvcmRTaXplKSkgeworICAgICAg
ICBjb25zdGV4cHIgc2l6ZV90IHJlbWFpbmluZ0JpdHMgPSBiaXRtYXBTaXplICUgd29yZFNpemU7
CisgICAgICAgIGNvbnN0ZXhwciBXb3JkVHlwZSBtYXNrID0gKHN0YXRpY19jYXN0PFdvcmRUeXBl
PigxKSA8PCByZW1haW5pbmdCaXRzKSAtIDE7CisgICAgICAgIGJpdHNbd29yZHMgLSAxXSAmPSBt
YXNrOworICAgIH0KIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgpAQCAtMjQ2LDYgKzI1NSw5IEBAIGlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHkKICAgICBpZiAoIXJ1bkxlbmd0aCkgCiAgICAgICAgIHJ1bkxlbmd0aCA9IDE7
IAogICAgICAKKyAgICBpZiAocnVuTGVuZ3RoID4gYml0bWFwU2l6ZSkKKyAgICAgICAgcmV0dXJu
IC0xOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPD0gKGJpdG1hcFNpemUgLSBydW5MZW5n
dGgpIDsgaSsrKSB7CiAgICAgICAgIGJvb2wgZm91bmQgPSB0cnVlOyAKICAgICAgICAgZm9yIChz
aXplX3QgaiA9IGk7IGogPD0gKGkgKyBydW5MZW5ndGggLSAxKSA7IGorKykgeyAKQEAgLTI2OSw3
ICsyODEsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwCiAgICAg
ICAgICAgICArK3Jlc3VsdDsKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0IC8gd29y
ZFNpemU7IGkgPCB3b3JkczsgKytpKQotICAgICAgICByZXN1bHQgKz0gV1RGOjpiaXRDb3VudChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0c1tpXSkpOworICAgICAgICByZXN1bHQgKz0gV1RGOjpi
aXRDb3VudChiaXRzW2ldKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yODYsOCArMjk4
LDE3IEBAIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3IKIGlubGluZSBz
aXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QKIHsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCi0gICAgICAgIGlmICh+Yml0c1tp
XSkKKyAgICAgICAgaWYgKH5iaXRzW2ldKSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKCEh
KGJpdG1hcFNpemUgJSB3b3JkU2l6ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA9PSB3b3Jk
cyAtIDEpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3RleHByIHNpemVfdCByZW1haW5pbmdC
aXRzID0gYml0bWFwU2l6ZSAlIHdvcmRTaXplOworICAgICAgICAgICAgICAgICAgICBjb25zdGV4
cHIgV29yZFR5cGUgbWFzayA9IChzdGF0aWNfY2FzdDxXb3JkVHlwZT4oMSkgPDwgcmVtYWluaW5n
Qml0cykgLSAxOworICAgICAgICAgICAgICAgICAgICBpZiAoYml0c1tpXSAmIG1hc2sgPT0gbWFz
aykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQog
ICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MjYxMTU1KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTIzOCw2ICsyMzgsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgU3RhY2tTaG90
UHJvZmlsZXIuaAogICAgIFN0YWNrU3RhdHMuaAogICAgIFN0YWNrVHJhY2UuaAorICAgIFN0ZElu
dEV4dHJhcy5oCiAgICAgU3RkTGliRXh0cmFzLmgKICAgICBTdGRMaXN0LmgKICAgICBTdGRNYXAu
aApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1DUFUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUNQVS5oCShyZXZpc2lvbiAyNjExNTUpCisrKyBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUNQVS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsNiArMzExLDE1IEBACiAj
ZW5kaWYKICNlbmRpZgogCisvKiBDUFUgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVyIHdpZHRoLiAq
LworI2lmICFkZWZpbmVkKFdURl9DUFVfUkVHSVNURVI2NCkgJiYgIWRlZmluZWQoV1RGX0NQVV9S
RUdJU1RFUjMyKQorI2lmIENQVShBRERSRVNTNjQpIHx8IENQVShBUk02NCkKKyNkZWZpbmUgV1RG
X0NQVV9SRUdJU1RFUjY0IDEKKyNlbHNlCisjZGVmaW5lIFdURl9DUFVfUkVHSVNURVIzMiAxCisj
ZW5kaWYKKyNlbmRpZgorCiAvKiBDUFUoQklHX0VORElBTikgb3IgQ1BVKE1JRERMRV9FTkRJQU4p
IG9yIG5laXRoZXIsIGFzIGFwcHJvcHJpYXRlLiAqLwogCiAjaWYgQ09NUElMRVIoR0NDX0NPTVBB
VElCTEUpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgJKHJldmlzaW9uIDI2MTE1NSkKKysrIFNvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMyArMTMxLDEx
IEBACiAjZGVmaW5lIFVTRV9TWVNURU1fTUFMTE9DIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQo
VVNFX0pTVkFMVUU2NCkgJiYgIWRlZmluZWQoVVNFX0pTVkFMVUUzMl82NCkKLSNpZiBDUFUoQURE
UkVTUzY0KSB8fCBDUFUoQVJNNjQpCisjaWYgQ1BVKFJFR0lTVEVSNjQpCiAjZGVmaW5lIFVTRV9K
U1ZBTFVFNjQgMQogI2Vsc2UKICNkZWZpbmUgVVNFX0pTVkFMVUUzMl82NCAxCiAjZW5kaWYKLSNl
bmRpZiAvKiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5lZChVU0VfSlNWQUxVRTMy
XzY0KSAqLwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICNkZWZpbmUgVVNFX0JJR0lOVDMyIDEKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1N0ZEludEV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1N0ZEludEV4dHJhcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0
ZEludEV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPGNzdGRpbnQ+CisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgQ1BVKFJFR0lTVEVSNjQpCit1
c2luZyBDUFVSZWdpc3RlciA9IGludDY0X3Q7Cit1c2luZyBVQ1BVUmVnaXN0ZXIgPSB1aW50NjRf
dDsKKyNlbHNlCit1c2luZyBDUFVSZWdpc3RlciA9IGludDMyX3Q7Cit1c2luZyBVQ1BVUmVnaXN0
ZXIgPSB1aW50MzJfdDsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RG
OjpDUFVSZWdpc3RlcjsKK3VzaW5nIFdURjo6VUNQVVJlZ2lzdGVyOwpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMTU1KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMjAt
MDUtMDQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IEJp
dG1hcCB0byB1c2UgdXAgdG8gYSBVQ1BVUmVnaXN0ZXIgd29yZCBzaXplIGZvciBpbnRlcm5hbCBi
aXQgc3RvcmFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMTMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjI3NTU4NjU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBBZGRlZCBBUEkgdGVzdHMgZm9y
IFdURjo6Qml0bWFwIHRvIG1ha2Ugc3VyZSB0aGF0IEJpdG1hcCBpcyBiZWhhdmluZyBjb3JyZWN0
bHkuCisgICAgICAgIFNpbmNlIEJpdG1hcCBpcyB1c2VkIGluIGNyaXRpY2FsIGluZnJhc3RydWN0
dXJlIGxpa2UgdGhlIEdDLCBpdCBpcyBpbXBvcnRhbnQgdG8KKyAgICAgICAgZW5zdXJlIHRoYXQg
dGhlcmUgYXJlIG5vIGxhdGVudCBidWdzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9C
aXRtYXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNvdW50Qml0cyk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwU2l6ZSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp0ZXN0Qml0bWFwQ29uc3RydWN0ZWRFbXB0eSk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjp0ZXN0Qml0bWFwU2V0R2V0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRt
YXBUZXN0QW5kU2V0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBUZXN0QW5k
Q2xlYXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcENvbmN1cnJlbnRUZXN0
QW5kU2V0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBDb25jdXJyZW50VGVz
dEFuZENsZWFyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBDbGVhcik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwQ2xlYXJBbGwpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6dGVzdEJpdG1hcEludmVydCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0
ZXN0Qml0bWFwRmluZFJ1bk9mWmVyb3MpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJp
dG1hcENvdW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBJc0VtcHR5KToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBJc0Z1bGwpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6dGVzdEJpdG1hcE1lcmdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRl
c3RCaXRtYXBGaWx0ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEV4Y2x1
ZGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcENvbmN1cnJlbnRGaWx0ZXIp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcFN1YnN1bWVzKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBGb3JFYWNoU2V0Qml0KToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnRlc3RCaXRtYXBGaW5kQml0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRl
c3RCaXRtYXBJdGVyYXRpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcE1l
cmdlQW5kQ2xlYXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcFNldEFuZENs
ZWFyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBPcGVyYXRvckVxdWFsKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBPcGVyYXRvck5vdEVxdWFsKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBIYXNoKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCiAyMDIwLTA1LTA0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWFjXSBSZW1vdmUgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCBjaGVja3MgZm9yIHZlcnNpb25zIG9sZGVyIHRoYW4gMTAuMTQKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjYxMTU1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQCBzZXQoVGVz
dFdURl9TT1VSQ0VTCiAgICAgV1RGU3RyaW5nVXRpbGl0aWVzLmNwcAogCiAgICAgVGVzdHMvV1RG
L0F0b21TdHJpbmcuY3BwCisgICAgVGVzdHMvV1RGL0JpdG1hcC5jcHAKICAgICBUZXN0cy9XVEYv
Qmxvb21GaWx0ZXIuY3BwCiAgICAgVGVzdHMvV1RGL0J1bXBQb2ludGVyQWxsb2NhdG9yLmNwcAog
ICAgIFRlc3RzL1dURi9DU3RyaW5nLmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI2MTE1NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM5LDYgKzExMzksNyBA
QAogCQlGNkI3QkU5NzE3NDY5Qjk2MDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNkI3QkU5NjE3NDY5QjdFMDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMuaHRt
bCAqLzsgfTsKIAkJRjZGNDlDNkIxNTU0NUNBNzAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lv
bk5vQ2FjaGVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY2RjQ5QzY2MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25O
b0NhY2hlX0J1bmRsZS5jcHAgKi87IH07CiAJCUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBw
dXNoLXN0YXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjZGRERERDUxNDI0MUM0ODAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCAq
LzsgfTsKKwkJRkUyRDk0NzQyNDVFQjJGNDAwRTQ4MTM1IC8qIEJpdG1hcC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTJEOTQ3MzI0NUVCMkRGMDBF
NDgxMzUgLyogQml0bWFwLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMjgwMiw2
ICsyODAzLDcgQEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVu
c2lvbk5vQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9N
V2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hp
c3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
cml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRl
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicHVzaC1zdGF0ZS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUyRDk0NzMyNDVFQjJERjAwRTQ4MTM1IC8qIEJp
dG1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRtYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIg
LyogTmFrZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFr
ZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0zOTQ5LDYgKzM5NTEsNyBAQAogCQkJCTdDQkJBMDc1MTlC
QjhBMDkwMEJCRjAyNSAvKiBkYXJ3aW4gKi8sCiAJCQkJQkMwMjlCMUExNDg2QjIzODAwODE3REE5
IC8qIG5zICovLAogCQkJCTI2RjFCNDQyMTVDQTQzNEYwMEQxRTRCRiAvKiBBdG9tU3RyaW5nLmNw
cCAqLywKKwkJCQlGRTJEOTQ3MzI0NUVCMkRGMDBFNDgxMzUgLyogQml0bWFwLmNwcCAqLywKIAkJ
CQlFNDAwMTkzMDFBQ0U5QjVDMDAxQjBBMkEgLyogQmxvb21GaWx0ZXIuY3BwICovLAogCQkJCTA0
NTFBNUE2MjM1RTQzOEUwMDlERjk0NSAvKiBCdW1wUG9pbnRlckFsbG9jYXRvci5jcHAgKi8sCiAJ
CQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9u
cy5jcHAgKi8sCkBAIC00Njk5LDYgKzQ3MDIsNyBAQAogCQkJCUUzOEQ2NUNCMjNBNDVGQUEwMDYz
RDY5QSAvKiBQYWNrZWRSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGNTkxRDBB
NTkwQzAwRkVCQ0YzIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTNFQzI1
NDExRTk2RkQ4NzAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkUyRDk0NzQyNDVFQjJGNDAwRTQ4MTM1IC8qIEJpdG1hcC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREYxMzFEMEE1OTBDMDBGRUJDRjMgLyogUmVkQmxhY2tUcmVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNERjE0MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWYuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0RGMTUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZkNvdW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9CaXRtYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0JpdG1hcC5j
cHAJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQml0bWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgorCituYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CisKK2NvbnN0ZXhwciBzaXplX3Qgc2l6ZSA9IDEyODsKK2NvbnN0ZXhwciBz
aXplX3Qgc21hbGxTaXplID0gOTsKK2NvbnN0ZXhwciBzaXplX3QgemVyb1NpemUgPSAwOworCitz
dGF0aWMgY29uc3RleHByIGJvb2wgZXhwZWN0ZWRCaXRzMVtzaXplXSA9IHsKKyAgICBmYWxzZSwg
ZmFsc2UsIHRydWUsICBmYWxzZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorICAgIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwKKyAg
ICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNl
LAorICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAg
dHJ1ZSwKKyAgICB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgIGZhbHNlLCB0cnVlLCAgZmFs
c2UsIGZhbHNlLAorICAgIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAgZmFsc2UsIHRydWUs
ICBmYWxzZSwgdHJ1ZSwKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgIGZhbHNlLCB0
cnVlLCAgdHJ1ZSwgIGZhbHNlLAorICAgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAgZmFs
c2UsIHRydWUsICB0cnVlLCAgdHJ1ZSwKKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwg
IHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLAorICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZh
bHNlLCAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwKKyAgICB0cnVlLCAgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgIHRydWUsICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLAorICAgIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwKKyAgICBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgIHRydWUsICB0cnVlLCAgZmFsc2UsIGZhbHNlLAorICAgIGZhbHNl
LCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgIHRydWUsICBmYWxzZSwgdHJ1ZSwKKyAgICBm
YWxzZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgIHRydWUsICB0cnVlLCAgdHJ1ZSwgIGZhbHNlLAor
ICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgdHJ1
ZSwKK307CisKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCBleHBlY3RlZEJpdHMyW3NpemVdID0gewor
ICAgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICBmYWxzZSwgZmFsc2UsIGZhbHNl
LCB0cnVlLAorICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsICAgZmFsc2UsIGZhbHNlLCB0
cnVlLCAgZmFsc2UsCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICBmYWxzZSwgZmFs
c2UsIHRydWUsICB0cnVlLAorICAgIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICAgZmFsc2Us
IHRydWUsICBmYWxzZSwgZmFsc2UsCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICBm
YWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLAorICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUs
ICAgZmFsc2UsIHRydWUsICB0cnVlLCAgZmFsc2UsCisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAg
dHJ1ZSwgICBmYWxzZSwgdHJ1ZSwgIHRydWUsICB0cnVlLAorICAgIGZhbHNlLCB0cnVlLCAgZmFs
c2UsIHRydWUsICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisgICAgZmFsc2UsIHRydWUs
ICBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLAorICAgIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIHRydWUsICAgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsCisgICAgZmFs
c2UsIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgICB0cnVlLCAgZmFsc2UsIHRydWUsICB0cnVlLAorICAg
IHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICAgdHJ1ZSwgIHRydWUsICBmYWxzZSwgZmFsc2Us
CisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgICB0cnVlLCAgdHJ1ZSwgIGZhbHNlLCB0
cnVlLAorICAgIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICAgdHJ1ZSwgIHRydWUsICB0cnVl
LCAgZmFsc2UsCisgICAgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgdHJ1ZSwg
IHRydWUsICB0cnVlLAorfTsKKworY29uc3RleHByIHNpemVfdCBjb3VudEJpdHMoY29uc3QgYm9v
bCBib29sQXJyYXlbXSwgc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKGJvb2xB
cnJheVtpXSkKKyAgICAgICAgICAgIHJlc3VsdCsrOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitjb25zdGV4cHIgc2l6ZV90IGV4cGVjdGVkTnVtYmVyT2ZTZXRCaXRzMSA9IGNvdW50
Qml0cyhleHBlY3RlZEJpdHMxLCBzaXplKTsKK2NvbnN0ZXhwciBzaXplX3QgZXhwZWN0ZWROdW1i
ZXJPZlNldEJpdHMyID0gY291bnRCaXRzKGV4cGVjdGVkQml0czIsIHNpemUpOworCisjZGVmaW5l
IERFQ0xBUkVfQklUTUFQU19GT1JfVEVTVCgpIFwKKyAgICBCaXRtYXA8c2l6ZSwgV29yZFR5cGU+
IGJpdG1hcDA7IC8qIEFsbCBiaXRzIHdpbGwgcmVtYWluIGNsZWFyZWQuICovIFwKKyAgICBCaXRt
YXA8c2l6ZSwgV29yZFR5cGU+IGJpdG1hcDE7IC8qIFdpbGwgaG9sZCB2YWx1ZXMgc3BlY2lmaWVk
IGluIGV4cGVjdGVkQml0czEuICovIFwKKyAgICBCaXRtYXA8c2l6ZSwgV29yZFR5cGU+IGJpdG1h
cDI7IC8qIFdpbGwgaG9sZCB2YWx1ZXMgc3BlY2lmaWVkIGluIGV4cGVjdGVkQml0czIuICovIFwK
KyAgICBCaXRtYXA8c2l6ZSwgV29yZFR5cGU+IGJpdG1hcDM7IC8qIFNhbWUgYXMgYml0bWFwMi4g
Ki8gXAorICAgIEJpdG1hcDxzaXplLCBXb3JkVHlwZT4gYml0bWFwRmlsbGVkOyBcCisgICAgQml0
bWFwPHNtYWxsU2l6ZSwgV29yZFR5cGU+IGJpdG1hcFNtYWxsWmVyb2VkOyBcCisgICAgQml0bWFw
PHNtYWxsU2l6ZSwgV29yZFR5cGU+IGJpdG1hcFNtYWxsRmlsbGVkOworCisjZGVmaW5lIERFQ0xB
UkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpIFwKKyAgICBERUNMQVJFX0JJVE1BUFNfRk9S
X1RFU1QoKSBcCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsgXAorICAg
ICAgICBiaXRtYXAxLnNldChpLCBleHBlY3RlZEJpdHMxW2ldKTsgXAorICAgICAgICBiaXRtYXAy
LnNldChpLCBleHBlY3RlZEJpdHMyW2ldKTsgXAorICAgICAgICBiaXRtYXAzLnNldChpLCBleHBl
Y3RlZEJpdHMyW2ldKTsgXAorICAgICAgICBiaXRtYXBGaWxsZWQuc2V0KGkpOyBcCisgICAgfSBc
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzbWFsbFNpemU7ICsraSkgXAorICAgICAgICBi
aXRtYXBTbWFsbEZpbGxlZC5zZXQoaSk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgor
dm9pZCB0ZXN0Qml0bWFwU2l6ZSgpCit7CisgICAgREVDTEFSRV9CSVRNQVBTX0ZPUl9URVNUKCk7
CisKKyAgICBhdXRvIHZlcmlmeVNpemUgPSBbPV0gKGF1dG8mIGJpdG1hcCwgc2l6ZV90IGV4cGVj
dGVkU2l6ZSwgc2l6ZV90IG5vdEV4cGVjdGVkU2l6ZSkgeworICAgICAgICBFWFBFQ1RfRVEoYml0
bWFwLnNpemUoKSwgZXhwZWN0ZWRTaXplKTsKKyAgICAgICAgRVhQRUNUX05FKGJpdG1hcC5zaXpl
KCksIG5vdEV4cGVjdGVkU2l6ZSk7CisgICAgfTsKKworICAgIHZlcmlmeVNpemUoYml0bWFwMCwg
c2l6ZSwgc21hbGxTaXplKTsKKyAgICB2ZXJpZnlTaXplKGJpdG1hcDEsIHNpemUsIHNtYWxsU2l6
ZSk7CisgICAgdmVyaWZ5U2l6ZShiaXRtYXAyLCBzaXplLCBzbWFsbFNpemUpOworICAgIHZlcmlm
eVNpemUoYml0bWFwMywgc2l6ZSwgc21hbGxTaXplKTsKKyAgICB2ZXJpZnlTaXplKGJpdG1hcEZp
bGxlZCwgc2l6ZSwgc21hbGxTaXplKTsKKyAgICB2ZXJpZnlTaXplKGJpdG1hcFNtYWxsWmVyb2Vk
LCBzbWFsbFNpemUsIHNpemUpOworICAgIHZlcmlmeVNpemUoYml0bWFwU21hbGxGaWxsZWQsIHNt
YWxsU2l6ZSwgc2l6ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0
ZXN0Qml0bWFwQ29uc3RydWN0ZWRFbXB0eSgpCit7CisgICAgREVDTEFSRV9CSVRNQVBTX0ZPUl9U
RVNUKCk7CisKKyAgICAvLyBWZXJpZnkgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBpbml0
aWFsaXplcyBhbGwgYml0cyB0byAwLgorICAgIGF1dG8gdmVyaWZ5SXNFbXB0eSA9IFs9XSAoY29u
c3QgYXV0byYgYml0bWFwKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGJpdG1hcC5pc0VtcHR5KCkp
OworICAgICAgICBFWFBFQ1RfRVEoYml0bWFwLmNvdW50KCksIHplcm9TaXplKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBiaXRtYXAuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBF
WFBFQ1RfRkFMU0UoYml0bWFwLmdldChpKSk7CisgICAgfTsKKworICAgIHZlcmlmeUlzRW1wdHko
Yml0bWFwMCk7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAxKTsKKyAgICB2ZXJpZnlJc0VtcHR5
KGJpdG1hcDIpOworICAgIHZlcmlmeUlzRW1wdHkoYml0bWFwMyk7CisgICAgdmVyaWZ5SXNFbXB0
eShiaXRtYXBGaWxsZWQpOworICAgIHZlcmlmeUlzRW1wdHkoYml0bWFwU21hbGxaZXJvZWQpOwor
ICAgIHZlcmlmeUlzRW1wdHkoYml0bWFwU21hbGxGaWxsZWQpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcFNldEdldCgpCit7CisgICAgREVDTEFSRV9B
TkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBhdXRvIHZlcmlmeUlzRW1wdHkgPSBb
PV0gKGNvbnN0IGF1dG8mIGJpdG1hcCkgeworICAgICAgICBFWFBFQ1RfVFJVRShiaXRtYXAuaXNF
bXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGJpdG1hcC5jb3VudCgpLCB6ZXJvU2l6ZSk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYml0bWFwLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcC5nZXQoaSkpOworICAgIH07CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgRVhQRUNUX0VRKGJpdG1hcDEuZ2V0
KGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUShiaXRtYXAyLmdldChpKSwgZXhwZWN0ZWRCaXRz
MltpXSk7CisgICAgICAgIEVYUEVDVF9FUShiaXRtYXAzLmdldChpKSwgZXhwZWN0ZWRCaXRzMltp
XSk7CisgICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAg
ICBFWFBFQ1RfRVEoYml0bWFwMi5nZXQoaSksIGJpdG1hcDMuZ2V0KGkpKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBFWFBFQ1RfVFJVRShiaXRtYXBG
aWxsZWQuZ2V0KGkpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc21hbGxTaXplOyAr
K2kpCisgICAgICAgIEVYUEVDVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmdldChpKSk7CisKKyAg
ICAvLyBWZXJpZnkgdGhhdCB0aGVyZSBpcyBubyBvdXQgb2YgYm91bmRzIHdyaXRlIGZyb20gdGhl
IGFib3ZlIHNldCBvcGVyYXRpb25zLgorICAgIHZlcmlmeUlzRW1wdHkoYml0bWFwMCk7CisgICAg
dmVyaWZ5SXNFbXB0eShiaXRtYXBTbWFsbFplcm9lZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwVGVzdEFuZFNldCgpCit7CisgICAgREVDTEFSRV9B
TkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMS5p
c0Z1bGwoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAg
IEFTU0VSVF9FUShiaXRtYXAxLmdldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAxLnRl
c3RBbmRTZXQoaSksIGV4cGVjdGVkQml0czFbaV0pOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDEu
aXNGdWxsKCkpOworCisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgp
KTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc21hbGxTaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9GQUxT
RShiaXRtYXBTbWFsbFplcm9lZC50ZXN0QW5kU2V0KGkpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRt
YXBTbWFsbFplcm9lZC5pc0Z1bGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBl
Pgordm9pZCB0ZXN0Qml0bWFwVGVzdEFuZENsZWFyKCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklU
X0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEFTU0VSVF9GQUxTRShiaXRtYXAxLmlzRW1wdHko
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFTU0VS
VF9FUShiaXRtYXAxLmdldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAxLnRlc3RBbmRD
bGVhcihpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMS5pc0Vt
cHR5KCkpOworCisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7
CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc21hbGxTaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9UUlVFKGJp
dG1hcFNtYWxsRmlsbGVkLnRlc3RBbmRDbGVhcihpKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFw
U21hbGxGaWxsZWQuaXNFbXB0eSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+
Cit2b2lkIHRlc3RCaXRtYXBDb25jdXJyZW50VGVzdEFuZFNldCgpCit7CisgICAgREVDTEFSRV9B
TkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2lu
ZyBkb2VzIG5vdCB0ZXN0IHRoZSBjb25jdXJyZW50IHBhcnQuIEl0IG9ubHkgZW5zdXJlcyB0aGF0
CisgICAgLy8gdGhlIFRlc3RBbmRTZXQgcGFydCBvZiB0aGUgb3BlcmF0aW9uIGlzIHdvcmtpbmcu
CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDEuaXNGdWxsKCkpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBBU1NFUlRfRVEoYml0bWFwMS5nZXQoaSksIGV4
cGVjdGVkQml0czFbaV0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQor
ICAgICAgICBBU1NFUlRfRVEoYml0bWFwMS50ZXN0QW5kU2V0KGkpLCBleHBlY3RlZEJpdHMxW2ld
KTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAxLmlzRnVsbCgpKTsKKworICAgIEFTU0VSVF9GQUxT
RShiaXRtYXBTbWFsbFplcm9lZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21h
bGxaZXJvZWQuaXNFbXB0eSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNtYWxsU2l6
ZTsgKytpKQorICAgICAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxaZXJvZWQudGVzdEFuZFNl
dChpKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNGdWxsKCkpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcENvbmN1cnJlbnRU
ZXN0QW5kQ2xlYXIoKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgp
OworCisgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgZG9lcyBub3QgdGVzdCB0aGUgY29uY3Vy
cmVudCBwYXJ0LiBJdCBvbmx5IGVuc3VyZXMgdGhhdAorICAgIC8vIHRoZSBUZXN0QW5kQ2xlYXIg
cGFydCBvZiB0aGUgb3BlcmF0aW9uIGlzIHdvcmtpbmcuCisgICAgQVNTRVJUX0ZBTFNFKGJpdG1h
cDEuaXNFbXB0eSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAg
ICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1h
cDEudGVzdEFuZENsZWFyKGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXAxLmlzRW1wdHkoKSk7CisKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxGaWxsZWQu
aXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzbWFsbFNpemU7ICsraSkKKyAgICAgICAgQVNT
RVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQudGVzdEFuZENsZWFyKGkpKTsKKyAgICBBU1NFUlRf
VFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcENsZWFyKCkKK3sKKyAgICBERUNMQVJFX0FORF9J
TklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5p
c0Z1bGwoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAg
ICAgaWYgKCFleHBlY3RlZEJpdHMxW2ldKQorICAgICAgICAgICAgYml0bWFwRmlsbGVkLmNsZWFy
KGkpOworICAgIH0KKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLCBiaXRtYXAxKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBDbGVhckFsbCgpCit7
CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBhdXRvIHZl
cmlmeUlzRW1wdHkgPSBbPV0gKGNvbnN0IGF1dG8mIGJpdG1hcCkgeworICAgICAgICBFWFBFQ1Rf
VFJVRShiaXRtYXAuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGJpdG1hcC5jb3VudCgp
LCB6ZXJvU2l6ZSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYml0bWFwLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcC5nZXQoaSkpOworICAgIH07
CisKKyAgICBhdXRvIHZlcmlmeUlzRnVsbCA9IFs9XSAoY29uc3QgYXV0byYgYml0bWFwKSB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGJpdG1hcC5pc0Z1bGwoKSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYml0bWFwLnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX1RSVUUo
Yml0bWFwLmdldChpKSk7CisgICAgfTsKKworICAgIEVYUEVDVF9GQUxTRShiaXRtYXAxLmlzRW1w
dHkoKSk7CisgICAgYml0bWFwMS5jbGVhckFsbCgpOworICAgIHZlcmlmeUlzRW1wdHkoYml0bWFw
MSk7CisgICAgdmVyaWZ5SXNGdWxsKGJpdG1hcEZpbGxlZCk7CisgICAgdmVyaWZ5SXNGdWxsKGJp
dG1hcFNtYWxsRmlsbGVkKTsKKworICAgIEVYUEVDVF9GQUxTRShiaXRtYXAyLmlzRW1wdHkoKSk7
CisgICAgYml0bWFwMi5jbGVhckFsbCgpOworICAgIHZlcmlmeUlzRW1wdHkoYml0bWFwMSk7Cisg
ICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAyKTsKKyAgICB2ZXJpZnlJc0Z1bGwoYml0bWFwRmlsbGVk
KTsKKyAgICB2ZXJpZnlJc0Z1bGwoYml0bWFwU21hbGxGaWxsZWQpOworCisgICAgRVhQRUNUX0ZB
TFNFKGJpdG1hcDMuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXAzLmNsZWFyQWxsKCk7CisgICAgdmVy
aWZ5SXNFbXB0eShiaXRtYXAxKTsKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcDIpOworICAgIHZl
cmlmeUlzRW1wdHkoYml0bWFwMyk7CisgICAgdmVyaWZ5SXNGdWxsKGJpdG1hcEZpbGxlZCk7Cisg
ICAgdmVyaWZ5SXNGdWxsKGJpdG1hcFNtYWxsRmlsbGVkKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBJbnZlcnQoKQoreworICAgIERFQ0xBUkVfQU5E
X0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgYXV0byB2ZXJpZnlJbnZlcnQgPSBbPV0g
KGF1dG8mIGJpdG1hcCkgeworICAgICAgICBBU1NFUlRfVFJVRShiaXRtYXAuaXNGdWxsKCkpOwor
ICAgICAgICBBU1NFUlRfRkFMU0UoYml0bWFwLmlzRW1wdHkoKSk7CisgICAgICAgIGJpdG1hcC5p
bnZlcnQoKTsKKyAgICAgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcC5pc0Z1bGwoKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKGJpdG1hcC5pc0VtcHR5KCkpOworICAgICAgICBiaXRtYXAuaW52ZXJ0KCk7
CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1hcC5pc0Z1bGwoKSk7CisgICAgICAgIEFTU0VSVF9G
QUxTRShiaXRtYXAuaXNFbXB0eSgpKTsKKyAgICB9OworCisgICAgdmVyaWZ5SW52ZXJ0KGJpdG1h
cEZpbGxlZCk7CisgICAgdmVyaWZ5SW52ZXJ0KGJpdG1hcFNtYWxsRmlsbGVkKTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBBU1NFUlRfRVEoYml0bWFw
MS5nZXQoaSksIGV4cGVjdGVkQml0czFbaV0pOworICAgIGJpdG1hcDEuaW52ZXJ0KCk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShiaXRt
YXAxLmdldChpKSwgIWV4cGVjdGVkQml0czFbaV0pOworICAgIGJpdG1hcDEuaW52ZXJ0KCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShi
aXRtYXAxLmdldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwRmluZFJ1bk9mWmVyb3MoKQoreworICAgIERFQ0xB
UkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgY29uc3QgaW50NjRfdCBiaXRt
YXAxUnVuc09mWmVyb3NbMTVdID0geworICAgICAgICAwLCAwLCAwLCAzLCAzLAorICAgICAgICAz
LCAzLCAzLCAzLCAzLAorICAgICAgICAzLCAzLCAzLCAtMSwgLTEKKyAgICB9OworCisgICAgY29u
c3QgaW50NjRfdCBiaXRtYXAyUnVuc09mWmVyb3NbMTVdID0geworICAgICAgICAwLCAwLCA0LCA0
LCA0LAorICAgICAgICA0LCA0LCA0LCAtMSwgLTEsCisgICAgICAgIC0xLCAtMSwgLTEsIC0xLCAt
MSwKKyAgICB9OworCisgICAgQml0bWFwPHNtYWxsU2l6ZSwgV29yZFR5cGU+IHNtYWxsVGVtcDsK
KyAgICBzbWFsbFRlbXAuc2V0KDEsIHRydWUpOyAvLyBiaXRzIGxvdyB0byBoaWdoIGFyZTogMDEw
MCAwMDAwIDAKKworICAgIGNvbnN0IGludDY0X3Qgc21hbGxUZW1wUnVuc09mWmVyb3NbMTVdID0g
eworICAgICAgICAwLCAwLCAyLCAyLCAyLAorICAgICAgICAyLCAyLCAyLCAtMSwgLTEsCisgICAg
ICAgIC0xLCAtMSwgLTEsIC0xLCAtMQorICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBydW5MZW5n
dGggPSAwOyBydW5MZW5ndGggPCAxNTsgKytydW5MZW5ndGgpIHsKKyAgICAgICAgQVNTRVJUX0VR
KGJpdG1hcDAuZmluZFJ1bk9mWmVyb3MocnVuTGVuZ3RoKSwgMGxsKTsKKyAgICAgICAgQVNTRVJU
X0VRKGJpdG1hcDEuZmluZFJ1bk9mWmVyb3MocnVuTGVuZ3RoKSwgYml0bWFwMVJ1bnNPZlplcm9z
W3J1bkxlbmd0aF0pOworICAgICAgICBBU1NFUlRfRVEoYml0bWFwMi5maW5kUnVuT2ZaZXJvcyhy
dW5MZW5ndGgpLCBiaXRtYXAyUnVuc09mWmVyb3NbcnVuTGVuZ3RoXSk7CisgICAgICAgIEFTU0VS
VF9FUShiaXRtYXBGaWxsZWQuZmluZFJ1bk9mWmVyb3MocnVuTGVuZ3RoKSwgLTFsbCk7CisKKyAg
ICAgICAgaWYgKHJ1bkxlbmd0aCA8PSBzbWFsbFNpemUpCisgICAgICAgICAgICBBU1NFUlRfRVEo
Yml0bWFwU21hbGxaZXJvZWQuZmluZFJ1bk9mWmVyb3MocnVuTGVuZ3RoKSwgMGxsKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX0VRKGJpdG1hcFNtYWxsWmVyb2VkLmZpbmRSdW5P
Zlplcm9zKHJ1bkxlbmd0aCksIC0xbGwpOworCisgICAgICAgIEFTU0VSVF9FUShiaXRtYXBTbWFs
bEZpbGxlZC5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCAtMWxsKTsKKworICAgICAgICBBU1NF
UlRfRVEoc21hbGxUZW1wLmZpbmRSdW5PZlplcm9zKHJ1bkxlbmd0aCksIHNtYWxsVGVtcFJ1bnNP
Zlplcm9zW3J1bkxlbmd0aF0pOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5
cGU+Cit2b2lkIHRlc3RCaXRtYXBDb3VudCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRN
QVBTX0ZPUl9URVNUKCk7CisKKyAgICBFWFBFQ1RfRVEoYml0bWFwMC5jb3VudCgpLCB6ZXJvU2l6
ZSk7CisgICAgRVhQRUNUX0VRKGJpdG1hcDEuY291bnQoKSwgZXhwZWN0ZWROdW1iZXJPZlNldEJp
dHMxKTsKKyAgICBFWFBFQ1RfRVEoYml0bWFwMi5jb3VudCgpLCBleHBlY3RlZE51bWJlck9mU2V0
Qml0czIpOworICAgIEVYUEVDVF9FUShiaXRtYXAzLmNvdW50KCksIGV4cGVjdGVkTnVtYmVyT2ZT
ZXRCaXRzMik7CisgICAgRVhQRUNUX0VRKGJpdG1hcEZpbGxlZC5jb3VudCgpLCBzaXplKTsKKyAg
ICBFWFBFQ1RfRVEoYml0bWFwU21hbGxaZXJvZWQuY291bnQoKSwgemVyb1NpemUpOworICAgIEVY
UEVDVF9FUShiaXRtYXBTbWFsbEZpbGxlZC5jb3VudCgpLCBzbWFsbFNpemUpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcElzRW1wdHkoKQoreworICAg
IERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgRVhQRUNUX1RSVUUo
Yml0bWFwMC5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9GQUxTRShiaXRtYXAxLmlzRW1wdHkoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDIuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Yml0bWFwMy5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9GQUxTRShiaXRtYXBGaWxsZWQuaXNFbXB0
eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAg
IEVYUEVDVF9GQUxTRShiaXRtYXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworCisgICAgYXV0byB2
ZXJpZnlJc0VtcHR5ID0gWz1dIChjb25zdCBhdXRvJiBiaXRtYXApIHsKKyAgICAgICAgRVhQRUNU
X1RSVUUoYml0bWFwLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUShiaXRtYXAuY291bnQo
KSwgemVyb1NpemUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJpdG1hcC5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShiaXRtYXAuZ2V0KGkpKTsKKyAgICB9
OworCisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAwKTsKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1h
cFNtYWxsWmVyb2VkKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRl
c3RCaXRtYXBJc0Z1bGwoKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVT
VCgpOworCisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDAuaXNGdWxsKCkpOworICAgIEVYUEVDVF9G
QUxTRShiaXRtYXAxLmlzRnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMi5pc0Z1bGwo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDMuaXNGdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcFNtYWxsWmVy
b2VkLmlzRnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwo
KSk7CisKKyAgICBhdXRvIHZlcmlmeUlzRnVsbCA9IFs9XSAoYXV0byYgYml0bWFwKSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKGJpdG1hcC5pc0Z1bGwoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYml0bWFwLnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX1RSVUUoYml0
bWFwLmdldChpKSk7CisgICAgfTsKKworICAgIHZlcmlmeUlzRnVsbChiaXRtYXBGaWxsZWQpOwor
ICAgIHZlcmlmeUlzRnVsbChiaXRtYXBTbWFsbEZpbGxlZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwTWVyZ2UoKQoreworICAgIERFQ0xBUkVfQU5E
X0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwMC5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAzKTsKKyAgICBiaXRtYXAyLm1l
cmdlKGJpdG1hcDApOworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAzKTsKKyAgICAKKyAg
ICBBU1NFUlRfTkUoYml0bWFwMSwgYml0bWFwMik7CisgICAgQVNTRVJUX05FKGJpdG1hcDEsIGJp
dG1hcDMpOworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAzKTsKKyAgICBiaXRtYXAzLm1l
cmdlKGJpdG1hcDEpOworICAgIEFTU0VSVF9ORShiaXRtYXAyLCBiaXRtYXAzKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBib29sIGV4cGVjdGVkQml0
ID0gZXhwZWN0ZWRCaXRzMltpXSB8IGV4cGVjdGVkQml0czFbaV07CisgICAgICAgIEFTU0VSVF9F
UShiaXRtYXAzLmdldChpKSwgZXhwZWN0ZWRCaXQpOworICAgIH0KKworICAgIEFTU0VSVF9UUlVF
KGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMC5pc0VtcHR5
KCkpOworICAgIGJpdG1hcEZpbGxlZC5tZXJnZShiaXRtYXAwKTsKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXBGaWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDAuaXNFbXB0eSgp
KTsKKworICAgIGJpdG1hcDAubWVyZ2UoYml0bWFwMSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDAs
IGJpdG1hcDEpOworCisgICAgYml0bWFwMS5tZXJnZShiaXRtYXBGaWxsZWQpOworICAgIEFTU0VS
VF9FUShiaXRtYXAxLCBiaXRtYXBGaWxsZWQpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21h
bGxaZXJvZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5p
c0Z1bGwoKSk7CisgICAgYml0bWFwU21hbGxaZXJvZWQubWVyZ2UoYml0bWFwU21hbGxGaWxsZWQp
OworICAgIEFTU0VSVF9GQUxTRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgCisgICAgYml0bWFwU21hbGxaZXJvZWQu
Y2xlYXJBbGwoKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBiaXRt
YXBTbWFsbEZpbGxlZC5tZXJnZShiaXRtYXBTbWFsbFplcm9lZCk7CisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxs
WmVyb2VkLmlzRW1wdHkoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9p
ZCB0ZXN0Qml0bWFwRmlsdGVyKCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9S
X1RFU1QoKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisgICAg
QVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOworICAgIGJpdG1hcDIuZmlsdGVyKGJpdG1hcEZp
bGxlZCk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOworICAgIAorICAgIEFTU0VS
VF9ORShiaXRtYXAxLCBiaXRtYXAyKTsKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgYml0bWFwMyk7
CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOworICAgIGJpdG1hcDMuZmlsdGVyKGJp
dG1hcDEpOworICAgIEFTU0VSVF9ORShiaXRtYXAyLCBiaXRtYXAzKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBib29sIGV4cGVjdGVkQml0ID0gZXhw
ZWN0ZWRCaXRzMltpXSAmIGV4cGVjdGVkQml0czFbaV07CisgICAgICAgIEFTU0VSVF9FUShiaXRt
YXAzLmdldChpKSwgZXhwZWN0ZWRCaXQpOworICAgIH0KKworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cDAuaXNFbXB0eSgpKTsKKyAgICBiaXRtYXAyLmZpbHRlcihiaXRtYXAwKTsKKyAgICBBU1NFUlRf
RVEoYml0bWFwMiwgYml0bWFwMCk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAwLmlzRW1wdHko
KSk7CisgICAgYml0bWFwMC5maWx0ZXIoYml0bWFwMSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFw
MC5pc0VtcHR5KCkpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsK
KyAgICBiaXRtYXBGaWxsZWQuZmlsdGVyKGJpdG1hcDEpOworICAgIEFTU0VSVF9FUShiaXRtYXBG
aWxsZWQsIGJpdG1hcDEpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7Cisg
ICAgYml0bWFwU21hbGxaZXJvZWQuZmlsdGVyKGJpdG1hcFNtYWxsRmlsbGVkKTsKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9GQUxTRShi
aXRtYXBTbWFsbFplcm9lZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxG
aWxsZWQuaXNGdWxsKCkpOworICAgIAorICAgIGJpdG1hcFNtYWxsRmlsbGVkLmZpbHRlcihiaXRt
YXBTbWFsbFplcm9lZCk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVs
bCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworICAg
IEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwRXhjbHVkZSgpCit7CisgICAgREVD
TEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRt
YXAwLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOworICAgIGJp
dG1hcDIuZXhjbHVkZShiaXRtYXAwKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7
CisgICAgCisgICAgQVNTRVJUX05FKGJpdG1hcDEsIGJpdG1hcDIpOworICAgIEFTU0VSVF9ORShi
aXRtYXAxLCBiaXRtYXAzKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAg
Yml0bWFwMy5leGNsdWRlKGJpdG1hcDEpOworICAgIEFTU0VSVF9ORShiaXRtYXAyLCBiaXRtYXAz
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBib29s
IGV4cGVjdGVkQml0ID0gZXhwZWN0ZWRCaXRzMltpXSAmICFleHBlY3RlZEJpdHMxW2ldOworICAg
ICAgICBBU1NFUlRfRVEoYml0bWFwMy5nZXQoaSksIGV4cGVjdGVkQml0KTsKKyAgICB9CisKKyAg
ICBBU1NFUlRfVFJVRShiaXRtYXAwLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFw
RmlsbGVkLmlzRnVsbCgpKTsKKyAgICBiaXRtYXAyLmV4Y2x1ZGUoYml0bWFwRmlsbGVkKTsKKyAg
ICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMCk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBG
aWxsZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcEZpbGxlZC5leGNsdWRlKGJpdG1hcDEpOworICAg
IGJpdG1hcDEuaW52ZXJ0KCk7CisgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZCwgYml0bWFwMSk7
CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBiaXRtYXBTbWFsbFpl
cm9lZC5leGNsdWRlKGJpdG1hcFNtYWxsRmlsbGVkKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBT
bWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9GQUxTRShiaXRtYXBTbWFsbFplcm9l
ZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkp
OworICAgIAorICAgIGJpdG1hcFNtYWxsRmlsbGVkLmV4Y2x1ZGUoYml0bWFwU21hbGxaZXJvZWQp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworCisgICAgYml0bWFwU21hbGxG
aWxsZWQuZXhjbHVkZShiaXRtYXBTbWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1h
cFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxl
ZC5pc0VtcHR5KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVz
dEJpdG1hcENvbmN1cnJlbnRGaWx0ZXIoKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQ
U19GT1JfVEVTVCgpOworCisgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgZG9lcyBub3QgdGVz
dCB0aGUgY29uY3VycmVudCBwYXJ0LiBJdCBvbmx5IGVuc3VyZXMgdGhhdAorICAgIC8vIHRoZSBG
aWx0ZXIgcGFydCBvZiB0aGUgb3BlcmF0aW9uIGlzIHdvcmtpbmcuCisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7
CisgICAgYml0bWFwMi5jb25jdXJyZW50RmlsdGVyKGJpdG1hcEZpbGxlZCk7CisgICAgQVNTRVJU
X0VRKGJpdG1hcDIsIGJpdG1hcDMpOworICAgIAorICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRt
YXAyKTsKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgYml0bWFwMyk7CisgICAgQVNTRVJUX0VRKGJp
dG1hcDIsIGJpdG1hcDMpOworICAgIGJpdG1hcDMuY29uY3VycmVudEZpbHRlcihiaXRtYXAxKTsK
KyAgICBBU1NFUlRfTkUoYml0bWFwMiwgYml0bWFwMyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgYm9vbCBleHBlY3RlZEJpdCA9IGV4cGVjdGVkQml0
czJbaV0gJiBleHBlY3RlZEJpdHMxW2ldOworICAgICAgICBBU1NFUlRfRVEoYml0bWFwMy5nZXQo
aSksIGV4cGVjdGVkQml0KTsKKyAgICB9CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAwLmlzRW1w
dHkoKSk7CisgICAgYml0bWFwMi5jb25jdXJyZW50RmlsdGVyKGJpdG1hcDApOworICAgIEFTU0VS
VF9FUShiaXRtYXAyLCBiaXRtYXAwKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDAuaXNFbXB0
eSgpKTsKKyAgICBiaXRtYXAwLmNvbmN1cnJlbnRGaWx0ZXIoYml0bWFwMSk7CisgICAgQVNTRVJU
X1RSVUUoYml0bWFwMC5pc0VtcHR5KCkpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVk
LmlzRnVsbCgpKTsKKyAgICBiaXRtYXBGaWxsZWQuY29uY3VycmVudEZpbHRlcihiaXRtYXAxKTsK
KyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLCBiaXRtYXAxKTsKKworICAgIEFTU0VSVF9UUlVF
KGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21h
bGxGaWxsZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcFNtYWxsWmVyb2VkLmNvbmN1cnJlbnRGaWx0
ZXIoYml0bWFwU21hbGxGaWxsZWQpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2Vk
LmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgp
KTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgCisg
ICAgYml0bWFwU21hbGxGaWxsZWQuY29uY3VycmVudEZpbHRlcihiaXRtYXBTbWFsbFplcm9lZCk7
CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJp
dG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRU
eXBlPgordm9pZCB0ZXN0Qml0bWFwU3Vic3VtZXMoKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRf
QklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwMC5pc0VtcHR5KCkp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX0VR
KGJpdG1hcDIsIGJpdG1hcDMpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwMC5zdWJzdW1lcyhi
aXRtYXAwKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDAuc3Vic3VtZXMoYml0bWFwMSkpOwor
ICAgIEFTU0VSVF9GQUxTRShiaXRtYXAwLnN1YnN1bWVzKGJpdG1hcDIpKTsKKyAgICBBU1NFUlRf
RkFMU0UoYml0bWFwMC5zdWJzdW1lcyhiaXRtYXAzKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1h
cDAuc3Vic3VtZXMoYml0bWFwRmlsbGVkKSk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAxLnN1
YnN1bWVzKGJpdG1hcDApKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAxLnN1YnN1bWVzKGJpdG1h
cDEpKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMS5zdWJzdW1lcyhiaXRtYXAyKSk7CisgICAg
QVNTRVJUX0ZBTFNFKGJpdG1hcDEuc3Vic3VtZXMoYml0bWFwMykpOworICAgIEFTU0VSVF9GQUxT
RShiaXRtYXAxLnN1YnN1bWVzKGJpdG1hcEZpbGxlZCkpOworCisgICAgQVNTRVJUX1RSVUUoYml0
bWFwMi5zdWJzdW1lcyhiaXRtYXAwKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDIuc3Vic3Vt
ZXMoYml0bWFwMSkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDIuc3Vic3VtZXMoYml0bWFwMikp
OworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDIuc3Vic3VtZXMoYml0bWFwMykpOworICAgIEFTU0VS
VF9GQUxTRShiaXRtYXAyLnN1YnN1bWVzKGJpdG1hcEZpbGxlZCkpOworCisgICAgQVNTRVJUX1RS
VUUoYml0bWFwMy5zdWJzdW1lcyhiaXRtYXAwKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDMu
c3Vic3VtZXMoYml0bWFwMSkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDMuc3Vic3VtZXMoYml0
bWFwMikpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDMuc3Vic3VtZXMoYml0bWFwMykpOworICAg
IEFTU0VSVF9GQUxTRShiaXRtYXAzLnN1YnN1bWVzKGJpdG1hcEZpbGxlZCkpOworCisgICAgQVNT
RVJUX1RSVUUoYml0bWFwRmlsbGVkLnN1YnN1bWVzKGJpdG1hcDApKTsKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXBGaWxsZWQuc3Vic3VtZXMoYml0bWFwMSkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cEZpbGxlZC5zdWJzdW1lcyhiaXRtYXAyKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVk
LnN1YnN1bWVzKGJpdG1hcDMpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuc3Vic3Vt
ZXMoYml0bWFwRmlsbGVkKSk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5z
dWJzdW1lcyhiaXRtYXBTbWFsbEZpbGxlZCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxs
RmlsbGVkLnN1YnN1bWVzKGJpdG1hcFNtYWxsWmVyb2VkKSk7CisKKyAgICBBU1NFUlRfRkFMU0Uo
Yml0bWFwU21hbGxaZXJvZWQuc3Vic3VtZXMoYml0bWFwU21hbGxGaWxsZWQpKTsKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5zdWJzdW1lcyhiaXRtYXBTbWFsbFplcm9lZCkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcEZvckVhY2hT
ZXRCaXQoKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisg
ICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAwLmlzRW1wdHkoKSk7
CisgICAgYml0bWFwMC5mb3JFYWNoU2V0Qml0KFsmXSAoc2l6ZV90IGkpIHsKKyAgICAgICAgY29u
c3RleHByIGJvb2wgbm90UmVhY2hlZCA9IGZhbHNlOworICAgICAgICBBU1NFUlRfVFJVRShub3RS
ZWFjaGVkKTsKKyAgICAgICAgY291bnQrKzsKKyAgICB9KTsKKyAgICBBU1NFUlRfRVEoY291bnQs
IHplcm9TaXplKTsKKworICAgIGNvdW50ID0gMDsKKyAgICBiaXRtYXAxLmZvckVhY2hTZXRCaXQo
WyZdIChzaXplX3QgaSkgeworICAgICAgICBBU1NFUlRfVFJVRShiaXRtYXAxLmdldChpKSk7Cisg
ICAgICAgIEFTU0VSVF9FUShiaXRtYXAxLmdldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAg
ICAgIGNvdW50Kys7CisgICAgfSk7CisgICAgQVNTRVJUX0VRKGNvdW50LCBleHBlY3RlZE51bWJl
ck9mU2V0Qml0czEpOworCisgICAgY291bnQgPSAwOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZp
bGxlZC5pc0Z1bGwoKSk7CisgICAgYml0bWFwRmlsbGVkLmZvckVhY2hTZXRCaXQoWyZdIChzaXpl
X3QgaSkgeworICAgICAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuZ2V0KGkpKTsKKyAgICAg
ICAgY291bnQrKzsKKyAgICB9KTsKKyAgICBBU1NFUlRfRVEoY291bnQsIHNpemUpOworCisgICAg
Y291bnQgPSAwOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7
CisgICAgYml0bWFwU21hbGxaZXJvZWQuZm9yRWFjaFNldEJpdChbJl0gKHNpemVfdCBpKSB7Cisg
ICAgICAgIGNvbnN0ZXhwciBib29sIG5vdFJlYWNoZWQgPSBmYWxzZTsKKyAgICAgICAgQVNTRVJU
X1RSVUUobm90UmVhY2hlZCk7CisgICAgICAgIGNvdW50Kys7CisgICAgfSk7CisgICAgQVNTRVJU
X0VRKGNvdW50LCB6ZXJvU2l6ZSk7CisKKyAgICBjb3VudCA9IDA7CisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcFNtYWxsRmlsbGVkLmZvckVh
Y2hTZXRCaXQoWyZdIChzaXplX3QgaSkgeworICAgICAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFs
bEZpbGxlZC5nZXQoaSkpOworICAgICAgICBjb3VudCsrOworICAgIH0pOworICAgIEFTU0VSVF9F
UShjb3VudCwgc21hbGxTaXplKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2
b2lkIHRlc3RCaXRtYXBGaW5kQml0KCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNf
Rk9SX1RFU1QoKTsKKworICAgIGF1dG8gZmluZEV4cGVjdGVkQml0ID0gWz1dIChhdXRvIGV4cGVj
dGVkQml0cywgc2l6ZV90IHN0YXJ0SW5kZXgsIGJvb2wgdmFsdWUpIC0+IHNpemVfdCB7CisgICAg
ICAgIGZvciAoYXV0byBpbmRleCA9IHN0YXJ0SW5kZXg7IGluZGV4IDwgc2l6ZTsgKytpbmRleCkg
eworICAgICAgICAgICAgaWYgKGV4cGVjdGVkQml0c1tpbmRleF0gPT0gdmFsdWUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdGFydElu
ZGV4OworICAgIH07CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDEsIGxhc3RJbmRleCA9IDE7
IGkgPCBzaXplOyBsYXN0SW5kZXggPSBpLCBpICs9IGxhc3RJbmRleCkgeworICAgICAgICBBU1NF
UlRfRVEoYml0bWFwMS5maW5kQml0KGksIHRydWUpLCBmaW5kRXhwZWN0ZWRCaXQoZXhwZWN0ZWRC
aXRzMSwgaSwgdHJ1ZSkpOworICAgICAgICBBU1NFUlRfRVEoYml0bWFwMS5maW5kQml0KGksIGZh
bHNlKSwgZmluZEV4cGVjdGVkQml0KGV4cGVjdGVkQml0czEsIGksIGZhbHNlKSk7CisgICAgICAg
IEFTU0VSVF9FUShiaXRtYXAyLmZpbmRCaXQoaSwgdHJ1ZSksIGZpbmRFeHBlY3RlZEJpdChleHBl
Y3RlZEJpdHMyLCBpLCB0cnVlKSk7CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAyLmZpbmRCaXQo
aSwgZmFsc2UpLCBmaW5kRXhwZWN0ZWRCaXQoZXhwZWN0ZWRCaXRzMiwgaSwgZmFsc2UpKTsKKwor
ICAgICAgICBBU1NFUlRfRVEoYml0bWFwMi5maW5kQml0KGksIHRydWUpLCBiaXRtYXAzLmZpbmRC
aXQoaSwgdHJ1ZSkpOworICAgICAgICBBU1NFUlRfRVEoYml0bWFwMi5maW5kQml0KGksIGZhbHNl
KSwgYml0bWFwMy5maW5kQml0KGksIGZhbHNlKSk7CisgICAgfQorCisgICAgQVNTRVJUX0VRKGJp
dG1hcDAuZmluZEJpdCgwLCBmYWxzZSksIHplcm9TaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFw
MC5maW5kQml0KDEwLCBmYWxzZSksIHN0YXRpY19jYXN0PHNpemVfdD4oMTApKTsKKyAgICBBU1NF
UlRfRVEoYml0bWFwMC5maW5kQml0KHNpemUgLSAxLCBmYWxzZSksIHNpemUtMSk7CisgICAgQVNT
RVJUX0VRKGJpdG1hcDAuZmluZEJpdChzaXplLCBmYWxzZSksIHNpemUpOworICAgIEFTU0VSVF9F
UShiaXRtYXAwLmZpbmRCaXQoc2l6ZSArIDEsIGZhbHNlKSwgc2l6ZSk7CisKKyAgICBBU1NFUlRf
RVEoYml0bWFwMC5maW5kQml0KDAsIHRydWUpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFw
MC5maW5kQml0KDEwLCB0cnVlKSwgc2l6ZSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDAuZmluZEJp
dChzaXplIC0gMSwgdHJ1ZSksIHNpemUpOworICAgIEFTU0VSVF9FUShiaXRtYXAwLmZpbmRCaXQo
c2l6ZSwgdHJ1ZSksIHNpemUpOworICAgIEFTU0VSVF9FUShiaXRtYXAwLmZpbmRCaXQoc2l6ZSAr
IDEsIHRydWUpLCBzaXplKTsKKworICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQuZmluZEJpdCgw
LCBmYWxzZSksIHNpemUpOworICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQuZmluZEJpdCgxMCwg
ZmFsc2UpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLmZpbmRCaXQoc2l6ZSAt
IDEsIGZhbHNlKSwgc2l6ZSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5kQml0KHNp
emUsIGZhbHNlKSwgc2l6ZSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5kQml0KHNp
emUgKyAxLCBmYWxzZSksIHNpemUpOworCisgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5k
Qml0KDAsIHRydWUpLCB6ZXJvU2l6ZSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5k
Qml0KDEwLCB0cnVlKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PigxMCkpOworICAgIEFTU0VSVF9FUShi
aXRtYXBGaWxsZWQuZmluZEJpdChzaXplIC0gMSwgdHJ1ZSksIHNpemUtMSk7CisgICAgQVNTRVJU
X0VRKGJpdG1hcEZpbGxlZC5maW5kQml0KHNpemUsIHRydWUpLCBzaXplKTsKKyAgICBBU1NFUlRf
RVEoYml0bWFwRmlsbGVkLmZpbmRCaXQoc2l6ZSArIDEsIHRydWUpLCBzaXplKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBJdGVyYXRpb24oKQorewor
ICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgYXV0byBjb21w
dXRlU2V0Qml0c0NvdW50ID0gWz1dIChhdXRvJiBiaXRtYXApIC0+IHNpemVfdCB7CisgICAgICAg
IHNpemVfdCBjb3VudCA9IDA7CisgICAgICAgIGZvciAoYXV0byBiaXRJbmRleCA6IGJpdG1hcCkg
eworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGJpdEluZGV4KTsKKyAgICAgICAgICAgIGNvdW50
Kys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvdW50OworICAgIH07CisKKyAgICBFWFBF
Q1RfRVEoY29tcHV0ZVNldEJpdHNDb3VudChiaXRtYXAwKSwgemVyb1NpemUpOworICAgIEVYUEVD
VF9FUShjb21wdXRlU2V0Qml0c0NvdW50KGJpdG1hcDEpLCBleHBlY3RlZE51bWJlck9mU2V0Qml0
czEpOworICAgIEVYUEVDVF9FUShjb21wdXRlU2V0Qml0c0NvdW50KGJpdG1hcDIpLCBleHBlY3Rl
ZE51bWJlck9mU2V0Qml0czIpOworICAgIEVYUEVDVF9FUShjb21wdXRlU2V0Qml0c0NvdW50KGJp
dG1hcDMpLCBleHBlY3RlZE51bWJlck9mU2V0Qml0czIpOworICAgIEVYUEVDVF9FUShjb21wdXRl
U2V0Qml0c0NvdW50KGJpdG1hcEZpbGxlZCksIHNpemUpOworICAgIEVYUEVDVF9FUShjb21wdXRl
U2V0Qml0c0NvdW50KGJpdG1hcFNtYWxsWmVyb2VkKSwgemVyb1NpemUpOworICAgIEVYUEVDVF9F
UShjb21wdXRlU2V0Qml0c0NvdW50KGJpdG1hcFNtYWxsRmlsbGVkKSwgc21hbGxTaXplKTsKKwor
ICAgIGF1dG8gdmVyaWZ5U2V0Qml0cyA9IFs9XSAoYXV0byYgYml0bWFwLCBhdXRvJiBleHBlY3Rl
ZEJpdHMpIHsKKyAgICAgICAgZm9yIChhdXRvIGJpdEluZGV4IDogYml0bWFwKSB7CisgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShiaXRtYXAuZ2V0KGJpdEluZGV4KSk7CisgICAgICAgICAgICBFWFBF
Q1RfRVEoYml0bWFwLmdldChiaXRJbmRleCksIGV4cGVjdGVkQml0c1tiaXRJbmRleF0pOworICAg
ICAgICB9CisgICAgfTsKKworICAgIHZlcmlmeVNldEJpdHMoYml0bWFwMSwgZXhwZWN0ZWRCaXRz
MSk7CisgICAgdmVyaWZ5U2V0Qml0cyhiaXRtYXAyLCBleHBlY3RlZEJpdHMyKTsKKyAgICB2ZXJp
ZnlTZXRCaXRzKGJpdG1hcDMsIGV4cGVjdGVkQml0czIpOworCisgICAgYXV0byB2ZXJpZnlCaXRz
QWxsU2V0ID0gWz1dIChhdXRvJiBiaXRtYXApIHsKKyAgICAgICAgc2l6ZV90IGxhc3RCaXRJbmRl
eCA9IDA7CisgICAgICAgIGZvciAoYXV0byBiaXRJbmRleCA6IGJpdG1hcCkgeworICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoYml0bWFwLmdldChiaXRJbmRleCkpOworICAgICAgICAgICAgaWYgKGJp
dEluZGV4KQorICAgICAgICAgICAgICAgIEVYUEVDVF9FUShiaXRJbmRleCwgbGFzdEJpdEluZGV4
ICsgMSk7CisgICAgICAgICAgICBsYXN0Qml0SW5kZXggPSBiaXRJbmRleDsKKyAgICAgICAgfQor
ICAgIH07CisKKyAgICB2ZXJpZnlCaXRzQWxsU2V0KGJpdG1hcEZpbGxlZCk7CisgICAgdmVyaWZ5
Qml0c0FsbFNldChiaXRtYXBTbWFsbEZpbGxlZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdv
cmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwTWVyZ2VBbmRDbGVhcigpCit7CisgICAgREVDTEFSRV9B
TkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBCaXRtYXA8c2l6ZSwgV29yZFR5cGU+
IHRlbXA7CisgICAgQml0bWFwPHNpemUsIFdvcmRUeXBlPiBzYXZlZEJpdG1hcDE7CisKKyAgICBB
U1NFUlRfRkFMU0UoYml0bWFwMi5pc0VtcHR5KCkpOworCisgICAgc2F2ZWRCaXRtYXAxLm1lcmdl
KGJpdG1hcDEpOworICAgIEFTU0VSVF9FUShzYXZlZEJpdG1hcDEsIGJpdG1hcDEpOworICAgIAor
ICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAyKTsKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwg
Yml0bWFwMyk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDMsIGJpdG1hcDIpOworICAgIGJpdG1hcDEu
bWVyZ2VBbmRDbGVhcihiaXRtYXAzKTsKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgYml0bWFwMik7
CisgICAgQVNTRVJUX05FKGJpdG1hcDEsIHNhdmVkQml0bWFwMSk7CisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwMy5pc0VtcHR5KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CisgICAgICAgIGJvb2wgZXhwZWN0ZWRCaXQgPSBleHBlY3RlZEJpdHMxW2ldIHwgZXhwZWN0
ZWRCaXRzMltpXTsKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJp
dCk7CisgICAgfQorCisgICAgYml0bWFwMy5tZXJnZShiaXRtYXAyKTsgLy8gcmVzdG9yZSBiaXRt
YXAzCisgICAgQVNTRVJUX0VRKGJpdG1hcDMsIGJpdG1hcDIpOworCisgICAgQVNTRVJUX1RSVUUo
dGVtcC5pc0VtcHR5KCkpOworICAgIHRlbXAubWVyZ2VBbmRDbGVhcihiaXRtYXAzKTsKKyAgICBB
U1NFUlRfRkFMU0UodGVtcC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9FUSh0ZW1wLCBiaXRtYXAy
KTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAzLmlzRW1wdHkoKSk7CisKKyAgICBCaXRtYXA8c2l6
ZSwgV29yZFR5cGU+IHNhdmVkQml0bWFwRmlsbGVkOworICAgIHNhdmVkQml0bWFwRmlsbGVkLm1l
cmdlKGJpdG1hcEZpbGxlZCk7CisKKyAgICB0ZW1wLmNsZWFyQWxsKCk7CisgICAgQVNTRVJUX1RS
VUUodGVtcC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9GQUxTRSh0ZW1wLmlzRnVsbCgpKTsKKyAg
ICBBU1NFUlRfRkFMU0UoYml0bWFwRmlsbGVkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICB0ZW1wLm1lcmdlQW5kQ2xlYXIoYml0bWFwRmls
bGVkKTsKKyAgICBBU1NFUlRfRkFMU0UodGVtcC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVF
KHRlbXAuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5pc0VtcHR5KCkp
OworICAgIEFTU0VSVF9GQUxTRShiaXRtYXBGaWxsZWQuaXNGdWxsKCkpOworCisgICAgYml0bWFw
My5tZXJnZShiaXRtYXAyKTsgLy8gcmVzdG9yZSBiaXRtYXAzCisgICAgQVNTRVJUX0VRKGJpdG1h
cDMsIGJpdG1hcDIpOworICAgIGJpdG1hcEZpbGxlZC5tZXJnZShzYXZlZEJpdG1hcEZpbGxlZCk7
IC8vIHJlc3RvcmUgYml0bWFwRmlsbGVkCisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlz
RnVsbCgpKTsKKworICAgIEFTU0VSVF9UUlVFKHRlbXAuaXNGdWxsKCkpOworICAgIHRlbXAubWVy
Z2VBbmRDbGVhcihiaXRtYXAzKTsKKyAgICBBU1NFUlRfVFJVRSh0ZW1wLmlzRnVsbCgpKTsKKyAg
ICBBU1NFUlRfRVEodGVtcCwgYml0bWFwRmlsbGVkKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAz
LmlzRW1wdHkoKSk7CisKKyAgICBCaXRtYXA8c21hbGxTaXplLCBXb3JkVHlwZT4gc21hbGxUZW1w
OworCisgICAgc21hbGxUZW1wLm1lcmdlKGJpdG1hcFNtYWxsRmlsbGVkKTsKKyAgICBBU1NFUlRf
VFJVRShzbWFsbFRlbXAuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVy
b2VkLmlzRW1wdHkoKSk7CisgICAgc21hbGxUZW1wLm1lcmdlQW5kQ2xlYXIoYml0bWFwU21hbGxa
ZXJvZWQpOworICAgIEFTU0VSVF9UUlVFKHNtYWxsVGVtcC5pc0Z1bGwoKSk7CisgICAgQVNTRVJU
X0ZBTFNFKHNtYWxsVGVtcC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxs
WmVyb2VkLmlzRW1wdHkoKSk7CisKKyAgICBzbWFsbFRlbXAuY2xlYXJBbGwoKTsKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoc21h
bGxUZW1wLmlzRW1wdHkoKSk7CisgICAgc21hbGxUZW1wLm1lcmdlQW5kQ2xlYXIoYml0bWFwU21h
bGxGaWxsZWQpOworICAgIEFTU0VSVF9UUlVFKHNtYWxsVGVtcC5pc0Z1bGwoKSk7CisgICAgQVNT
RVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNFbXB0eSgpKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBTZXRBbmRDbGVhcigpCit7CisgICAgREVD
TEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBCaXRtYXA8c2l6ZSwgV29y
ZFR5cGU+IHRlbXA7CisgICAgQml0bWFwPHNpemUsIFdvcmRUeXBlPiBzYXZlZEJpdG1hcDE7CisK
KyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMi5pc0VtcHR5KCkpOworCisgICAgc2F2ZWRCaXRtYXAx
Lm1lcmdlKGJpdG1hcDEpOworICAgIEFTU0VSVF9FUShzYXZlZEJpdG1hcDEsIGJpdG1hcDEpOwor
ICAgIAorICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAyKTsKKyAgICBBU1NFUlRfTkUoYml0
bWFwMSwgYml0bWFwMyk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDMsIGJpdG1hcDIpOworICAgIGJp
dG1hcDEuc2V0QW5kQ2xlYXIoYml0bWFwMyk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDEsIGJpdG1h
cDIpOworICAgIEFTU0VSVF9ORShiaXRtYXAxLCBzYXZlZEJpdG1hcDEpOworICAgIEFTU0VSVF9U
UlVFKGJpdG1hcDMuaXNFbXB0eSgpKTsKKworICAgIGJpdG1hcDMubWVyZ2UoYml0bWFwMik7IC8v
IHJlc3RvcmUgYml0bWFwMworICAgIEFTU0VSVF9FUShiaXRtYXAzLCBiaXRtYXAyKTsKKworICAg
IEFTU0VSVF9UUlVFKHRlbXAuaXNFbXB0eSgpKTsKKyAgICB0ZW1wLnNldEFuZENsZWFyKGJpdG1h
cDMpOworICAgIEFTU0VSVF9GQUxTRSh0ZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0VRKHRl
bXAsIGJpdG1hcDIpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDMuaXNFbXB0eSgpKTsKKworICAg
IHRlbXAuY2xlYXJBbGwoKTsKKyAgICBBU1NFUlRfVFJVRSh0ZW1wLmlzRW1wdHkoKSk7CisgICAg
QVNTRVJUX0ZBTFNFKHRlbXAuaXNGdWxsKCkpOworICAgIEFTU0VSVF9GQUxTRShiaXRtYXBGaWxs
ZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuaXNGdWxsKCkpOwor
ICAgIHRlbXAuc2V0QW5kQ2xlYXIoYml0bWFwRmlsbGVkKTsKKyAgICBBU1NFUlRfRkFMU0UodGVt
cC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKHRlbXAuaXNGdWxsKCkpOworICAgIEFTU0VS
VF9UUlVFKGJpdG1hcEZpbGxlZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9GQUxTRShiaXRtYXBG
aWxsZWQuaXNGdWxsKCkpOworCisgICAgYml0bWFwMy5tZXJnZShiaXRtYXAyKTsgLy8gcmVzdG9y
ZSBiaXRtYXAzCisgICAgQVNTRVJUX0VRKGJpdG1hcDMsIGJpdG1hcDIpOworCisgICAgQVNTRVJU
X1RSVUUodGVtcC5pc0Z1bGwoKSk7CisgICAgdGVtcC5zZXRBbmRDbGVhcihiaXRtYXAzKTsKKyAg
ICBBU1NFUlRfRkFMU0UodGVtcC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX0VRKHRlbXAsIGJpdG1h
cDIpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDMuaXNFbXB0eSgpKTsKKworICAgIEJpdG1hcDxz
bWFsbFNpemUsIFdvcmRUeXBlPiBzbWFsbFRlbXA7CisKKyAgICBzbWFsbFRlbXAubWVyZ2UoYml0
bWFwU21hbGxGaWxsZWQpOworICAgIEFTU0VSVF9UUlVFKHNtYWxsVGVtcC5pc0Z1bGwoKSk7Cisg
ICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKKyAgICBzbWFsbFRl
bXAuc2V0QW5kQ2xlYXIoYml0bWFwU21hbGxaZXJvZWQpOworICAgIEFTU0VSVF9UUlVFKHNtYWxs
VGVtcC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1w
dHkoKSk7CisgICAgCisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkp
OworICAgIEFTU0VSVF9UUlVFKHNtYWxsVGVtcC5pc0VtcHR5KCkpOworICAgIHNtYWxsVGVtcC5z
ZXRBbmRDbGVhcihiaXRtYXBTbWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX1RSVUUoc21hbGxUZW1w
LmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcE9wZXJh
dG9yRXF1YWwoKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOwor
CisgICAgRVhQRUNUX1RSVUUoYml0bWFwMCA9PSBiaXRtYXAwKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Yml0bWFwMCA9PSBiaXRtYXAxKTsKKyAgICBFWFBFQ1RfVFJVRShiaXRtYXAxID09IGJpdG1hcDEp
OworICAgIEVYUEVDVF9GQUxTRShiaXRtYXAxID09IGJpdG1hcDIpOworICAgIEVYUEVDVF9GQUxT
RShiaXRtYXAxID09IGJpdG1hcDMpOworICAgIEVYUEVDVF9UUlVFKGJpdG1hcDIgPT0gYml0bWFw
Myk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcEZpbGxlZCA9PSBiaXRtYXAxKTsKKyAgICBFWFBF
Q1RfRkFMU0UoYml0bWFwU21hbGxaZXJvZWQgPT0gYml0bWFwU21hbGxGaWxsZWQpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcE9wZXJhdG9yTm90RXF1
YWwoKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAg
RVhQRUNUX0ZBTFNFKGJpdG1hcDAgIT0gYml0bWFwMCk7CisgICAgRVhQRUNUX1RSVUUoYml0bWFw
MCAhPSBiaXRtYXAxKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMSAhPSBiaXRtYXAxKTsKKyAg
ICBFWFBFQ1RfVFJVRShiaXRtYXAxICE9IGJpdG1hcDIpOworICAgIEVYUEVDVF9UUlVFKGJpdG1h
cDEgIT0gYml0bWFwMyk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDIgIT0gYml0bWFwMyk7Cisg
ICAgRVhQRUNUX1RSVUUoYml0bWFwRmlsbGVkICE9IGJpdG1hcDEpOworICAgIEVYUEVDVF9UUlVF
KGJpdG1hcFNtYWxsWmVyb2VkICE9IGJpdG1hcFNtYWxsRmlsbGVkKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBIYXNoKCkKK3sKKyAgICBERUNMQVJF
X0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB3
b3JkU2l6ZSA9IHNpemVvZihXb3JkVHlwZSkgKiA4OworICAgIGNvbnN0ZXhwciBzaXplX3Qgd29y
ZHMgPSAoc2l6ZSArIHdvcmRTaXplIC0gMSkgLyB3b3JkU2l6ZTsKKworICAgIGF1dG8gZXhwZWN0
ZWRCaXRtYXAwSGFzaCA9IFs9XSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgIHVuc2lnbmVkIHJl
c3VsdCA9IDA7CisgICAgICAgIFdvcmRUeXBlIHplcm9Xb3JkID0gMDsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQorICAgICAgICAgICAgcmVzdWx0IF49IEludEhh
c2g8V29yZFR5cGU+OjpoYXNoKHplcm9Xb3JkKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9OworCisgICAgYXV0byBleHBlY3RlZEJpdG1hcEZpbGxlZEhhc2ggPSBbPV0gKCkgLT4gdW5z
aWduZWQgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgICAgICBXb3JkVHlwZSBm
aWxsZWRXb3JkID0gc3RhdGljX2Nhc3Q8V29yZFR5cGU+KC0xKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQorICAgICAgICAgICAgcmVzdWx0IF49IEludEhhc2g8
V29yZFR5cGU+OjpoYXNoKGZpbGxlZFdvcmQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH07CisKKyAgICBBU1NFUlRfRVEoYml0bWFwMC5oYXNoKCksIGV4cGVjdGVkQml0bWFwMEhhc2go
KSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5oYXNoKCksIGV4cGVjdGVkQml0bWFwRmls
bGVkSGFzaCgpKTsKKworICAgIGF1dG8gZXhwZWN0ZWRIYXNoID0gWz1dIChhdXRvIGV4cGVjdGVk
Qml0cywgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOykgeworICAgICAgICAgICAgV29yZFR5cGUg
d29yZCA9IDA7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHdvcmRTaXplICYm
IGkgPCBzaXplOyArK2ksICsraikKKyAgICAgICAgICAgICAgICB3b3JkIHw9IHN0YXRpY19jYXN0
PFdvcmRUeXBlPighIWV4cGVjdGVkQml0c1tpXSkgPDwgajsKKyAgICAgICAgICAgIHJlc3VsdCBe
PSBJbnRIYXNoPFdvcmRUeXBlPjo6aGFzaCh3b3JkKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH07CisKKyAgICBBU1NFUlRfRVEoYml0bWFwMS5oYXNoKCksIGV4cGVj
dGVkSGFzaChleHBlY3RlZEJpdHMxLCBzaXplKSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIuaGFz
aCgpLCBleHBlY3RlZEhhc2goZXhwZWN0ZWRCaXRzMiwgc2l6ZSkpOworCisgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGV4cGVjdGVkU21hbGxCaXRzW3NtYWxsU2l6ZV0gPSB7CisgICAgICAgIHRy
dWUsICBmYWxzZSwgZmFsc2UsIHRydWUsICBmYWxzZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwKKyAg
ICAgICAgdHJ1ZSwKKyAgICB9OworICAgIEJpdG1hcDxzbWFsbFNpemUsIFdvcmRUeXBlPiB0ZW1w
MTsKKyAgICBCaXRtYXA8c21hbGxTaXplLCBXb3JkVHlwZT4gdGVtcDI7CisKKyAgICBhdXRvIGlu
aXRUZW1wID0gWyZdIChhdXRvJiBiaXRtYXApIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzbWFsbFNpemU7ICsraSkKKyAgICAgICAgICAgIGJpdG1hcC5zZXQoaSwgZXhwZWN0ZWRT
bWFsbEJpdHNbaV0pOworICAgIH07CisKKyAgICBpbml0VGVtcCh0ZW1wMSk7CisgICAgQVNTRVJU
X0VRKHRlbXAxLmhhc2goKSwgZXhwZWN0ZWRIYXNoKGV4cGVjdGVkU21hbGxCaXRzLCBzbWFsbFNp
emUpKTsKKworICAgIHRlbXAyLmludmVydCgpOworICAgIGluaXRUZW1wKHRlbXAyKTsKKyAgICBB
U1NFUlRfRVEodGVtcDIuaGFzaCgpLCBleHBlY3RlZEhhc2goZXhwZWN0ZWRTbWFsbEJpdHMsIHNt
YWxsU2l6ZSkpOworICAgIEFTU0VSVF9FUSh0ZW1wMi5oYXNoKCksIHRlbXAxLmhhc2goKSk7Cit9
CisKK1RFU1QoV1RGX0JpdG1hcCwgU2l6ZV91aW50MzJfdCkgeyB0ZXN0Qml0bWFwU2l6ZTx1aW50
MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDb25zdHJ1Y3RlZEVtcHR5X3VpbnQzMl90KSB7
IHRlc3RCaXRtYXBDb25zdHJ1Y3RlZEVtcHR5PHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRt
YXAsIFNldEdldF91aW50MzJfdCkgeyB0ZXN0Qml0bWFwU2V0R2V0PHVpbnQzMl90PigpOyB9CitU
RVNUKFdURl9CaXRtYXAsIFRlc3RBbmRTZXRfdWludDMyX3QpIHsgdGVzdEJpdG1hcFRlc3RBbmRT
ZXQ8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgVGVzdEFuZENsZWFyX3VpbnQzMl90
KSB7IHRlc3RCaXRtYXBUZXN0QW5kQ2xlYXI8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1h
cCwgQ29uY3VycmVudFRlc3RBbmRTZXRfdWludDMyX3QpIHsgdGVzdEJpdG1hcENvbmN1cnJlbnRU
ZXN0QW5kU2V0PHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENvbmN1cnJlbnRUZXN0
QW5kQ2xlYXJfdWludDMyX3QpIHsgdGVzdEJpdG1hcENvbmN1cnJlbnRUZXN0QW5kQ2xlYXI8dWlu
dDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ2xlYXJfdWludDMyX3QpIHsgdGVzdEJpdG1h
cENsZWFyPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENsZWFyQWxsX3VpbnQzMl90
KSB7IHRlc3RCaXRtYXBDbGVhckFsbDx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBJ
bnZlcnRfdWludDMyX3QpIHsgdGVzdEJpdG1hcEludmVydDx1aW50MzJfdD4oKTsgfQorVEVTVChX
VEZfQml0bWFwLCBGaW5kUnVuT2ZaZXJvc191aW50MzJfdCkgeyB0ZXN0Qml0bWFwRmluZFJ1bk9m
WmVyb3M8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ291bnRfdWludDMyX3QpIHsg
dGVzdEJpdG1hcENvdW50PHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIElzRW1wdHlf
dWludDMyX3QpIHsgdGVzdEJpdG1hcElzRW1wdHk8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0Jp
dG1hcCwgSXNGdWxsX3VpbnQzMl90KSB7IHRlc3RCaXRtYXBJc0Z1bGw8dWludDMyX3Q+KCk7IH0K
K1RFU1QoV1RGX0JpdG1hcCwgTWVyZ2VfdWludDMyX3QpIHsgdGVzdEJpdG1hcE1lcmdlPHVpbnQz
Ml90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIEZpbHRlcl91aW50MzJfdCkgeyB0ZXN0Qml0bWFw
RmlsdGVyPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIEV4Y2x1ZGVfdWludDMyX3Qp
IHsgdGVzdEJpdG1hcEV4Y2x1ZGU8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ29u
Y3VycmVudEZpbHRlcl91aW50MzJfdCkgeyB0ZXN0Qml0bWFwQ29uY3VycmVudEZpbHRlcjx1aW50
MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBTdWJzdW1lc191aW50MzJfdCkgeyB0ZXN0Qml0
bWFwU3Vic3VtZXM8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRm9yRWFjaFNldEJp
dF91aW50MzJfdCkgeyB0ZXN0Qml0bWFwRm9yRWFjaFNldEJpdDx1aW50MzJfdD4oKTsgfQorVEVT
VChXVEZfQml0bWFwLCBGaW5kQml0X3VpbnQzMl90KSB7IHRlc3RCaXRtYXBGaW5kQml0PHVpbnQz
Ml90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIEl0ZXJhdGlvbl91aW50MzJfdCkgeyB0ZXN0Qml0
bWFwSXRlcmF0aW9uPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIE1lcmdlQW5kQ2xl
YXJfdWludDMyX3QpIHsgdGVzdEJpdG1hcE1lcmdlQW5kQ2xlYXI8dWludDMyX3Q+KCk7IH0KK1RF
U1QoV1RGX0JpdG1hcCwgU2V0QW5kQ2xlYXJfdWludDMyX3QpIHsgdGVzdEJpdG1hcFNldEFuZENs
ZWFyPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIE9wZXJhdG9yRXF1YWxBY2Nlc3Nf
dWludDMyX3QpIHsgdGVzdEJpdG1hcE9wZXJhdG9yRXF1YWw8dWludDMyX3Q+KCk7IH0KK1RFU1Qo
V1RGX0JpdG1hcCwgT3BlcmF0b3JOb3RFcXVhbEFjY2Vzc191aW50MzJfdCkgeyB0ZXN0Qml0bWFw
T3BlcmF0b3JOb3RFcXVhbDx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBIYXNoX3Vp
bnQzMl90KSB7IHRlc3RCaXRtYXBIYXNoPHVpbnQzMl90PigpOyB9CisKKyNpZiBDUFUoUkVHSVNU
RVI2NCkKKworVEVTVChXVEZfQml0bWFwLCBTaXplX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBTaXpl
PHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENvbnN0cnVjdGVkRW1wdHlfdWludDY0
X3QpIHsgdGVzdEJpdG1hcENvbnN0cnVjdGVkRW1wdHk8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RG
X0JpdG1hcCwgU2V0R2V0X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBTZXRHZXQ8dWludDY0X3Q+KCk7
IH0KK1RFU1QoV1RGX0JpdG1hcCwgVGVzdEFuZFNldF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwVGVz
dEFuZFNldDx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBUZXN0QW5kQ2xlYXJfdWlu
dDY0X3QpIHsgdGVzdEJpdG1hcFRlc3RBbmRDbGVhcjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZf
Qml0bWFwLCBDb25jdXJyZW50VGVzdEFuZFNldF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwQ29uY3Vy
cmVudFRlc3RBbmRTZXQ8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ29uY3VycmVu
dFRlc3RBbmRDbGVhcl91aW50NjRfdCkgeyB0ZXN0Qml0bWFwQ29uY3VycmVudFRlc3RBbmRDbGVh
cjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDbGVhcl91aW50NjRfdCkgeyB0ZXN0
Qml0bWFwQ2xlYXI8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ2xlYXJBbGxfdWlu
dDY0X3QpIHsgdGVzdEJpdG1hcENsZWFyQWxsPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRt
YXAsIEludmVydF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwSW52ZXJ0PHVpbnQ2NF90PigpOyB9CitU
RVNUKFdURl9CaXRtYXAsIEZpbmRSdW5PZlplcm9zX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBGaW5k
UnVuT2ZaZXJvczx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDb3VudF91aW50NjRf
dCkgeyB0ZXN0Qml0bWFwQ291bnQ8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgSXNF
bXB0eV91aW50NjRfdCkgeyB0ZXN0Qml0bWFwSXNFbXB0eTx1aW50NjRfdD4oKTsgfQorVEVTVChX
VEZfQml0bWFwLCBJc0Z1bGxfdWludDY0X3QpIHsgdGVzdEJpdG1hcElzRnVsbDx1aW50NjRfdD4o
KTsgfQorVEVTVChXVEZfQml0bWFwLCBNZXJnZV91aW50NjRfdCkgeyB0ZXN0Qml0bWFwTWVyZ2U8
dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRmlsdGVyX3VpbnQ2NF90KSB7IHRlc3RC
aXRtYXBGaWx0ZXI8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRXhjbHVkZV91aW50
NjRfdCkgeyB0ZXN0Qml0bWFwRXhjbHVkZTx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFw
LCBDb25jdXJyZW50RmlsdGVyX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBDb25jdXJyZW50RmlsdGVy
PHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIFN1YnN1bWVzX3VpbnQ2NF90KSB7IHRl
c3RCaXRtYXBTdWJzdW1lczx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBGb3JFYWNo
U2V0Qml0X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBGb3JFYWNoU2V0Qml0PHVpbnQ2NF90PigpOyB9
CitURVNUKFdURl9CaXRtYXAsIEZpbmRCaXRfdWludDY0X3QpIHsgdGVzdEJpdG1hcEZpbmRCaXQ8
dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgSXRlcmF0aW9uX3VpbnQ2NF90KSB7IHRl
c3RCaXRtYXBJdGVyYXRpb248dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgTWVyZ2VB
bmRDbGVhcl91aW50NjRfdCkgeyB0ZXN0Qml0bWFwTWVyZ2VBbmRDbGVhcjx1aW50NjRfdD4oKTsg
fQorVEVTVChXVEZfQml0bWFwLCBTZXRBbmRDbGVhcl91aW50NjRfdCkgeyB0ZXN0Qml0bWFwU2V0
QW5kQ2xlYXI8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgT3BlcmF0b3JFcXVhbEFj
Y2Vzc191aW50NjRfdCkgeyB0ZXN0Qml0bWFwT3BlcmF0b3JFcXVhbDx1aW50NjRfdD4oKTsgfQor
VEVTVChXVEZfQml0bWFwLCBPcGVyYXRvck5vdEVxdWFsQWNjZXNzX3VpbnQ2NF90KSB7IHRlc3RC
aXRtYXBPcGVyYXRvck5vdEVxdWFsPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIEhh
c2hfdWludDY0X3QpIHsgdGVzdEJpdG1hcEhhc2g8dWludDY0X3Q+KCk7IH0KKworI2VuZGlmIC8v
IENQVShSRUdJU1RFUjY0KQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjExNTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wNS0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWxsb3cgQml0bWFwIHRvIHVzZSB1cCB0byBhIFVDUFVSZWdpc3Rl
ciB3b3JkIHNpemUgZm9yIGludGVybmFsIGJpdCBzdG9yYWdlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMzI4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82Mjc1NTg2NT4KKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgIGVkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1kZWxldGUtc3RhbGUtdW5k
by1pdGVtcy5odG1sIGV4cG9zZWQgYSBidWcgaW4KKyAgICAgICAgdGhpcyBwYXRjaC4gIEhvd2V2
ZXIsIHdoZW4gYSBmYWlsdXJlIG9jY3VycywgdGhpcyB0ZXN0IHJ1bnMgcGVycGV0dWFsbHkgdW50
aWwgaXQKKyAgICAgICAgdGltZXMgb3V0LiAgVGhlcmUncyBubyBuZWVkIHRvIGRvIHRoaXMuICBB
ZnRlciBhIGZpbml0ZSBudW1iZXIgb2YgR0MgY3ljbGVzLAorICAgICAgICB1bnJlYWNoYWJsZSBv
YmplY3RzIHNob3VsZCBiZSBjb2xsZWN0ZWQuICBUaGlzIGlzIGVzcGVjaWFsbHkgc28gYmVjYXVz
ZQorICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpIGRvZXMgYSBzeW5jaHJvbm91cyBmdWxs
IEdDLgorCisgICAgICAgIEFkZGVkIGEgY2FwIG9mIDEwIEdDIHRyaWVzLCBhbmQgZmFpbCBvdXQg
aWYgdGhlIHRlc3QgZG9lcyBub3Qgc2VlIHRoZSBleHBlY3RlZAorICAgICAgICByZXN1bHQuICBU
aGlzIGFsbG93cyB0aGUgdGVzdCB0byBmYWlsIGZhc3QgYW5kIGF2b2lkIHRoZSBjb3N0bHkgdGlt
ZSBvdXQuCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFnZXItZGVs
ZXRlLXN0YWxlLXVuZG8taXRlbXMuaHRtbDoKKwogMjAyMC0wNS0wNCAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBzdmcvYmF0aWsvdGV4
dC94bWxTcGFjZS5zdmcgdG8geWllbGQgY29uc2lzdGVudCB0ZXh0IG1ldHJpY3MKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1kZWxldGUtc3RhbGUt
dW5kby1pdGVtcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kby1t
YW5hZ2VyL3VuZG8tbWFuYWdlci1kZWxldGUtc3RhbGUtdW5kby1pdGVtcy5odG1sCShyZXZpc2lv
biAyNjExNTUpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8tbWFuYWdlci91bmRvLW1hbmFn
ZXItZGVsZXRlLXN0YWxlLXVuZG8taXRlbXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNDgsOSAr
NDgsMTIgQEAKICAgICAgICAgICAgIC8vIGhhbmRsZXJzIGFyZSBub3QgcHJvcGVybHkgcmVsaW5x
dWlzaGVkIG9uY2UgdGhleSdyZSBubyBsb25nZXIgbmVlZGVkLgogICAgICAgICAgICAgY29uc3Qg
bWluaW11bU51bWJlck9mV3JhcHBlcnNUb0NvbGxlY3RCZWZvcmVQYXNzaW5nID0gMyAqIHVuZG9J
dGVtQ291bnQgLSAzMDA7CiAgICAgICAgICAgICBvYmplY3RDb3VudEFmdGVyQ2xlYXJpbmdVbmRv
U3RhY2sgPSBvYmplY3RDb3VudEJlZm9yZUNsZWFyaW5nVW5kb1N0YWNrOworICAgICAgICAgICAg
dmFyIHRyaWVzID0gMDsKICAgICAgICAgICAgIHdoaWxlIChvYmplY3RDb3VudEJlZm9yZUNsZWFy
aW5nVW5kb1N0YWNrIC0gb2JqZWN0Q291bnRBZnRlckNsZWFyaW5nVW5kb1N0YWNrIDwgbWluaW11
bU51bWJlck9mV3JhcHBlcnNUb0NvbGxlY3RCZWZvcmVQYXNzaW5nKSB7CiAgICAgICAgICAgICAg
ICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMCkp
OwogICAgICAgICAgICAgICAgIG9iamVjdENvdW50QWZ0ZXJDbGVhcmluZ1VuZG9TdGFjayA9IG9i
amVjdENvdW50QWZ0ZXJTaW11bGF0aW5nTWVtb3J5UHJlc3N1cmVBbmRHYXJiYWdlQ29sbGVjdGlv
bigpOworICAgICAgICAgICAgICAgIGlmICh0cmllcysrID4gMTApCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBzaG91bGRCZUdyZWF0ZXJU
aGFuT3JFcXVhbCgib2JqZWN0Q291bnRCZWZvcmVDbGVhcmluZ1VuZG9TdGFjayAtIG9iamVjdENv
dW50QWZ0ZXJDbGVhcmluZ1VuZG9TdGFjayIsIGAke21pbmltdW1OdW1iZXJPZldyYXBwZXJzVG9D
b2xsZWN0QmVmb3JlUGFzc2luZ31gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398512</attachid>
            <date>2020-05-05 08:41:53 -0700</date>
            <delta_ts>2020-05-05 08:41:53 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-211328.patch</filename>
            <type>text/plain</type>
            <size>60446</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxMTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA1LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
bGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVyIHdvcmQgc2l6ZSBmb3IgaW50
ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyNzU1ODY1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgKiBhc3NlbWJsZXIv
Q1BVLmg6CisKIDIwMjAtMDUtMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBERkcgTm90Q2VsbFVzZSBpcyB1c2VkIHdpdGhvdXQgY29uc2lkZXJp
bmcgYWJvdXQgQmlnSW50MzIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
Q1BVLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUu
aAkocmV2aXNpb24gMjYxMTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9D
UFUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDE3ICsyNywxMCBAQAogCiAjaW5jbHVkZSAiT3B0
aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZEludEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIFVTRShKU1ZBTFVFNjQpCi11
c2luZyBDUFVSZWdpc3RlciA9IGludDY0X3Q7Ci11c2luZyBVQ1BVUmVnaXN0ZXIgPSB1aW50NjRf
dDsKLSNlbHNlCi11c2luZyBDUFVSZWdpc3RlciA9IGludDMyX3Q7Ci11c2luZyBVQ1BVUmVnaXN0
ZXIgPSB1aW50MzJfdDsKLSNlbmRpZgotCiB1c2luZyBVQ1BVU3RyaWN0SW50MzIgPSBVQ1BVUmVn
aXN0ZXI7CiAKIGNvbnN0ZXhwciBib29sIGlzQVJNdjdJRElWU3VwcG9ydGVkKCkKSW5kZXg6IFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjExNTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDU0IEBACisyMDIwLTA1LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBBbGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lzdGVyIHdv
cmQgc2l6ZSBmb3IgaW50ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYyNzU1ODY1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAg
ICAgMS4gTW92ZWQgdGhlIGRlZmluaXRpb24gb2YgQ1BVUmVnaXN0ZXIgYW5kIFVDUFVSZWdpc3Rl
ciBkb3duIGludG8gV1RGLgorICAgICAgICAgICBBZGRlZCBDUFUoUkVHSVNURVI2NCkgYW5kIENQ
VShSRUdJU1RFUjMyKSBmb3IgZGV0ZXJtaW5pbmcgd2hhdCBzaXplIGEgQ1BVCisgICAgICAgICAg
IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlciBpcy4KKworICAgICAgICAyLiBVcGRhdGVkIEJpdG1h
cCBzbyB0aGF0IGl0IHdpbGwgYXV0b21hdGljYWxseSBjaG9vc2UgdGhlIG1pbmltYWwgcmVxdWly
ZWQKKyAgICAgICAgICAgd29yZCBzaXplIGZvciB0aGUgbnVtYmVyIG9mIGJpdHMgaXQgbmVlZHMg
dG8gc3RvcmUuICBUaGlzIG1lYW5zIHRoZSBCaXRtYXAKKyAgICAgICAgICAgY2FuIGF1dG9tYXRp
Y2FsbHkgY2hvb3NlIGEgV29yZFR5cGUgZnJvbSB1aW50OF90IHVwIHRvIFVDUFVSZWdpc3Rlci4K
KyAgICAgICAgICAgUHJldmlvdXNseSwgdGhlIFdvcmRUeXBlIGlzIGFsd2F5cyB1aW50MzJfdCBi
eSBkZWZhdWx0LgorCisgICAgICAgICAgIFRoaXMgc2hvdWxkIGltcHJvdmUgcGVyZiB3aXRoIHVz
ZSBvZiBCaXRtYXAgb24gNjQtYml0IHBsYXRmb3Jtcy4gIFRoZSBzaXplCisgICAgICAgICAgIG9w
dGltaXphdGlvbiBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCBibG9hdCBvbiA2NC1iaXQgcGxhdGZv
cm1zIHdoaWNoIHdvdWxkIGhhdmUKKyAgICAgICAgICAgcmVzdWx0ZWQgaWYgd2Ugc2ltcGx5IHNl
dCB0aGUgZGVmYXVsdCB0byBhbHdheXMgYmUgVUNQVVJlZ2lzdGVyLgorCisgICAgICAgIDMuIEFk
ZGVkIGEgY2hlY2sgaW4gZmluZFJ1bk9mWmVyb3MoKSBmb3IgaGFuZGxpbmcgdGhlIGVkZ2UgY2Fz
ZSB3aGVyZSB0aGUKKyAgICAgICAgICAgcmVxdWVzdGVkIHJ1bkxlbmd0aCBleGNlZWRzIHRoZSBi
aXRtYXBTaXplLgorCisgICAgICAgIDQuIEZpeGVkIGEgYnVnIGluIGNvdW50KCkgdGhhdCB3YXMg
dW5uZWNlc3NhcmlseSBjYXN0aW5nIHRoZSBiaXRzIHRvIHVuc2lnbmVkCisgICAgICAgICAgIGlu
c3RlYWQgb2YganVzdCB1c2luZyB0aGUgQml0bWFwIFdvcmRUeXBlLiAgQXMgYSByZXN1bHQsIHdo
ZW4gdXNpbmcgYSBXb3JkVHlwZQorICAgICAgICAgICBvZiB1aW50NjRfdCwgaXQgd2FzIGRpc2Nh
cmRpbmcgYml0cyBmcm9tIHRoZSBjb3VudC4KKworICAgICAgICA1LiBGaXhlZCBpbnZlcnQoKSB0
byBsZWF2ZSB0aGUgYml0cyBiZXlvbmQgYml0bWFwU2l6ZSB1bnRvdWNoZWQuCisgICAgICAgICAg
IEZpeGVkIGlzRnVsbCgpIHRvIGlnbm9yZSB0aGUgYml0cyBiZXlvbmQgYml0bWFwU2l6ZS4KKwor
ICAgICAgICAgICBCeSBmaXhpbmcgaW52ZXJ0KCkgdG8gbGVhdmUgdGhvc2UgYml0cyBhcyAwLCBp
c0VtcHR5KCkgYW5kIGhhc2goKSB3aWxsCisgICAgICAgICAgIGNvbnRpbnVlIHRvIHdvcmsuICBP
dGhlcndpc2UsIGludmVydGluZyB0aG9zZSBiaXRzIHdpbGwgY2F1c2UgaXNFbXB0eSgpIHRvCisg
ICAgICAgICAgIGFsd2F5cyBmYWlsLCBhbmQgaGFzaCgpJ3MgcmVzdWx0IG1heSBiZSBkaWZmZXJl
bnQgZm9yIHRoZSBzYW1lIHNldCBvZiBiaXQKKyAgICAgICAgICAgdmFsdWVzIHdpdGhpbiBiaXRt
YXBTaXplLgorCisgICAgICAgICAgIGlzRnVsbCgpLCBvbiB0aGUgb3RoZXIgaGFuZCwgY2hlY2tz
IGZvciBzZXQgYml0cyBpbiB0aGUgd29yZHMuICBTaW5jZSB0aGVyZQorICAgICAgICAgICBtYXkg
YmUgMCB2YWx1ZWQgYml0cyBiZXlvbmQgYml0bWFwU2l6ZSwgaXNGdWxsKCkgbmVlZHMgdG8gYmUg
Zml4ZWQgdG8gaWdub3JlCisgICAgICAgICAgIHRob3NlLgorCisgICAgICAgICogV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0JpdG1hcC5oOgorICAgICAgICAo
V1RGOjpXb3JkVHlwZT46OmludmVydCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZmluZFJ1
bk9mWmVyb3MgY29uc3QpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojppc0Z1bGwgY29uc3QpOgorICAgICAgICAqIHd0Zi9D
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1DUFUuaDoKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm1Vc2UuaDoKKyAgICAgICAgKiB3dGYvU3RkSW50RXh0cmFzLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XVEYvd3RmL1N0ZEludEV4dHJhcy5oLgorCiAyMDIwLTA1LTA0ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBSZW1vdmUgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCBjaGVja3MgZm9yIHZlcnNpb25zIG9sZGVyIHRoYW4gMTAu
MTQKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjYxMTU1KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNzQ5LDYgKzc0OSw3IEBACiAJCUZFODIyNTMwMUIyQTFFNUIwMEJB
NjhGRCAvKiBOYWtlZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYWtl
ZFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg2QTg3NDFFNTk0NDAyMDAx
MTFCQkYgLyogRm9yYmlkSGVhcEFsbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9yYmlkSGVhcEFsbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFOTdGNkE4MjQ1Q0U1REQwMEM2M0ZDNiAvKiBTdGRJbnRFeHRyYXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RkSW50RXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFQjZCMDM1MjAxQkUwQjYwMEI5NThDMSAvKiBQb2ludGVyUHJlcGFy
YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJQcmVwYXJh
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAw
QzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFD
RDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyMzIsNiArMTIzMyw3IEBACiAJCQkJRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNr
U3RhdHMuaCAqLywKIAkJCQkzMTNFREVDOTc3OEU0OUM5QkVBOTFDRkMgLyogU3RhY2tUcmFjZS5j
cHAgKi8sCiAJCQkJRUY3RDZDRDU5RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLywK
KwkJCQlGRTk3RjZBODI0NUNFNUREMDBDNjNGQzYgLyogU3RkSW50RXh0cmFzLmggKi8sCiAJCQkJ
QThBNDczMTExNTFBODI1QjAwNDEyM0ZGIC8qIFN0ZExpYkV4dHJhcy5oICovLAogCQkJCUZGMEE0
MzY1ODg5NTRGM0NCMDdEQkVDQSAvKiBTdGRMaXN0LmggKi8sCiAJCQkJMzkxQkQ2QkE0RDE2NEZE
Mjk0RjlBOTNEIC8qIFN0ZE1hcC5oICovLApJbmRleDogU291cmNlL1dURi93dGYvQml0bWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQml0bWFwLmgJKHJldmlzaW9uIDI2MTE1NSkK
KysrIFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxNyArMjIs
MjEgQEAKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL1N0ZEludEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNs
dWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAogbmFtZXNwYWNlIFdURiB7
CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZSA9IHVpbnQz
Ml90PgordGVtcGxhdGU8c2l6ZV90IHNpemU+Cit1c2luZyBCaXRtYXBXb3JkVHlwZSA9IHN0ZDo6
Y29uZGl0aW9uYWxfdDwoc2l6ZSA8PSAzMiAmJiBzaXplb2YoVUNQVVJlZ2lzdGVyKSA+IHNpemVv
Zih1aW50MzJfdCkpLCB1aW50MzJfdCwgVUNQVVJlZ2lzdGVyPjsKKwordGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlID0gQml0bWFwV29yZFR5cGU8Yml0bWFwU2l6
ZT4+CiBjbGFzcyBCaXRtYXAgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIAotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdvcmRUeXBlKSA8PSBzaXplb2YodW5zaWdu
ZWQpLCAiV29yZFR5cGUgbXVzdCBub3QgYmUgYmlnZ2VyIHRoYW4gdW5zaWduZWQiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihXb3JkVHlwZSkgPD0gc2l6ZW9mKFVDUFVSZWdpc3RlciksICJX
b3JkVHlwZSBtdXN0IG5vdCBiZSBiaWdnZXIgdGhhbiB0aGUgQ1BVIGF0b21pYyB3b3JkIHNpemUi
KTsKIHB1YmxpYzoKICAgICBjb25zdGV4cHIgQml0bWFwKCk7CiAKQEAgLTIzMCw2ICsyMzQsMTEg
QEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPgogewogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSA9IH5iaXRzW2ld
OworICAgIGlmIGNvbnN0ZXhwciAoISEoYml0bWFwU2l6ZSAlIHdvcmRTaXplKSkgeworICAgICAg
ICBjb25zdGV4cHIgc2l6ZV90IHJlbWFpbmluZ0JpdHMgPSBiaXRtYXBTaXplICUgd29yZFNpemU7
CisgICAgICAgIGNvbnN0ZXhwciBXb3JkVHlwZSBtYXNrID0gKHN0YXRpY19jYXN0PFdvcmRUeXBl
PigxKSA8PCByZW1haW5pbmdCaXRzKSAtIDE7CisgICAgICAgIGJpdHNbd29yZHMgLSAxXSAmPSBt
YXNrOworICAgIH0KIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgpAQCAtMjQ2LDYgKzI1NSw5IEBAIGlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHkKICAgICBpZiAoIXJ1bkxlbmd0aCkgCiAgICAgICAgIHJ1bkxlbmd0aCA9IDE7
IAogICAgICAKKyAgICBpZiAocnVuTGVuZ3RoID4gYml0bWFwU2l6ZSkKKyAgICAgICAgcmV0dXJu
IC0xOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPD0gKGJpdG1hcFNpemUgLSBydW5MZW5n
dGgpIDsgaSsrKSB7CiAgICAgICAgIGJvb2wgZm91bmQgPSB0cnVlOyAKICAgICAgICAgZm9yIChz
aXplX3QgaiA9IGk7IGogPD0gKGkgKyBydW5MZW5ndGggLSAxKSA7IGorKykgeyAKQEAgLTI2OSw3
ICsyODEsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwCiAgICAg
ICAgICAgICArK3Jlc3VsdDsKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0IC8gd29y
ZFNpemU7IGkgPCB3b3JkczsgKytpKQotICAgICAgICByZXN1bHQgKz0gV1RGOjpiaXRDb3VudChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0c1tpXSkpOworICAgICAgICByZXN1bHQgKz0gV1RGOjpi
aXRDb3VudChiaXRzW2ldKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yODYsOCArMjk4
LDE3IEBAIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3IKIGlubGluZSBz
aXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QKIHsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCi0gICAgICAgIGlmICh+Yml0c1tp
XSkKKyAgICAgICAgaWYgKH5iaXRzW2ldKSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKCEh
KGJpdG1hcFNpemUgJSB3b3JkU2l6ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA9PSB3b3Jk
cyAtIDEpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3RleHByIHNpemVfdCByZW1haW5pbmdC
aXRzID0gYml0bWFwU2l6ZSAlIHdvcmRTaXplOworICAgICAgICAgICAgICAgICAgICBjb25zdGV4
cHIgV29yZFR5cGUgbWFzayA9IChzdGF0aWNfY2FzdDxXb3JkVHlwZT4oMSkgPDwgcmVtYWluaW5n
Qml0cykgLSAxOworICAgICAgICAgICAgICAgICAgICBpZiAoKGJpdHNbaV0gJiBtYXNrKSA9PSBt
YXNrKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyNjExNTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMjM4LDYgKzIzOCw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBTdGFja1No
b3RQcm9maWxlci5oCiAgICAgU3RhY2tTdGF0cy5oCiAgICAgU3RhY2tUcmFjZS5oCisgICAgU3Rk
SW50RXh0cmFzLmgKICAgICBTdGRMaWJFeHRyYXMuaAogICAgIFN0ZExpc3QuaAogICAgIFN0ZE1h
cC5oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUNQVS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtQ1BVLmgJKHJldmlzaW9uIDI2MTE1NSkKKysrIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtQ1BVLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMSw2ICszMTEsMTUgQEAK
ICNlbmRpZgogI2VuZGlmCiAKKy8qIENQVSBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXIgd2lkdGgu
ICovCisjaWYgIWRlZmluZWQoV1RGX0NQVV9SRUdJU1RFUjY0KSAmJiAhZGVmaW5lZChXVEZfQ1BV
X1JFR0lTVEVSMzIpCisjaWYgQ1BVKEFERFJFU1M2NCkgfHwgQ1BVKEFSTTY0KQorI2RlZmluZSBX
VEZfQ1BVX1JFR0lTVEVSNjQgMQorI2Vsc2UKKyNkZWZpbmUgV1RGX0NQVV9SRUdJU1RFUjMyIDEK
KyNlbmRpZgorI2VuZGlmCisKIC8qIENQVShCSUdfRU5ESUFOKSBvciBDUFUoTUlERExFX0VORElB
Tikgb3IgbmVpdGhlciwgYXMgYXBwcm9wcmlhdGUuICovCiAKICNpZiBDT01QSUxFUihHQ0NfQ09N
UEFUSUJMRSkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAkocmV2aXNpb24gMjYxMTU1KQorKysgU291
cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDEzICsxMzEs
MTEgQEAKICNkZWZpbmUgVVNFX1NZU1RFTV9NQUxMT0MgMQogI2VuZGlmCiAKLSNpZiAhZGVmaW5l
ZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5lZChVU0VfSlNWQUxVRTMyXzY0KQotI2lmIENQVShB
RERSRVNTNjQpIHx8IENQVShBUk02NCkKKyNpZiBDUFUoUkVHSVNURVI2NCkKICNkZWZpbmUgVVNF
X0pTVkFMVUU2NCAxCiAjZWxzZQogI2RlZmluZSBVU0VfSlNWQUxVRTMyXzY0IDEKICNlbmRpZgot
I2VuZGlmIC8qICFkZWZpbmVkKFVTRV9KU1ZBTFVFNjQpICYmICFkZWZpbmVkKFVTRV9KU1ZBTFVF
MzJfNjQpICovCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogI2RlZmluZSBVU0VfQklHSU5UMzIgMQpJ
bmRleDogU291cmNlL1dURi93dGYvU3RkSW50RXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvU3RkSW50RXh0cmFzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYv
U3RkSW50RXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8Y3N0ZGludD4KKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiBDUFUoUkVHSVNURVI2NCkK
K3VzaW5nIENQVVJlZ2lzdGVyID0gaW50NjRfdDsKK3VzaW5nIFVDUFVSZWdpc3RlciA9IHVpbnQ2
NF90OworI2Vsc2UKK3VzaW5nIENQVVJlZ2lzdGVyID0gaW50MzJfdDsKK3VzaW5nIFVDUFVSZWdp
c3RlciA9IHVpbnQzMl90OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBX
VEY6OkNQVVJlZ2lzdGVyOwordXNpbmcgV1RGOjpVQ1BVUmVnaXN0ZXI7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjExNTUp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OCBAQAorMjAy
MC0wNS0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cg
Qml0bWFwIHRvIHVzZSB1cCB0byBhIFVDUFVSZWdpc3RlciB3b3JkIHNpemUgZm9yIGludGVybmFs
IGJpdCBzdG9yYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjExMzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjc1NTg2NT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIEFkZGVkIEFQSSB0ZXN0cyBm
b3IgV1RGOjpCaXRtYXAgdG8gbWFrZSBzdXJlIHRoYXQgQml0bWFwIGlzIGJlaGF2aW5nIGNvcnJl
Y3RseS4KKyAgICAgICAgU2luY2UgQml0bWFwIGlzIHVzZWQgaW4gY3JpdGljYWwgaW5mcmFzdHJ1
Y3R1cmUgbGlrZSB0aGUgR0MsIGl0IGlzIGltcG9ydGFudCB0bworICAgICAgICBlbnN1cmUgdGhh
dCB0aGVyZSBhcmUgbm8gbGF0ZW50IGJ1Z3MuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0JpdG1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y291bnRCaXRzKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBTaXplKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnRlc3RCaXRtYXBDb25zdHJ1Y3RlZEVtcHR5KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnRlc3RCaXRtYXBTZXRHZXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJp
dG1hcFRlc3RBbmRTZXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcFRlc3RB
bmRDbGVhcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwQ29uY3VycmVudFRl
c3RBbmRTZXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcENvbmN1cnJlbnRU
ZXN0QW5kQ2xlYXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcENsZWFyKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RCaXRtYXBDbGVhckFsbCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwSW52ZXJ0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnRlc3RCaXRtYXBGaW5kUnVuT2ZaZXJvcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0
Qml0bWFwQ291bnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcElzRW1wdHkp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcElzRnVsbCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwTWVyZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
dGVzdEJpdG1hcEZpbHRlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwRXhj
bHVkZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwQ29uY3VycmVudEZpbHRl
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwU3Vic3VtZXMpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEZvckVhY2hTZXRCaXQpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6dGVzdEJpdG1hcEZpbmRCaXQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
dGVzdEJpdG1hcEl0ZXJhdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFw
TWVyZ2VBbmRDbGVhcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0Qml0bWFwU2V0QW5k
Q2xlYXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcE9wZXJhdG9yRXF1YWwp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcE9wZXJhdG9yTm90RXF1YWwpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEJpdG1hcEhhc2gpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDUtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNYWNdIFJlbW92ZSBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEIGNoZWNrcyBmb3IgdmVyc2lvbnMgb2xkZXIgdGhhbiAxMC4xNApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjExNTUpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBAIHNldChU
ZXN0V1RGX1NPVVJDRVMKICAgICBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwCiAKICAgICBUZXN0cy9X
VEYvQXRvbVN0cmluZy5jcHAKKyAgICBUZXN0cy9XVEYvQml0bWFwLmNwcAogICAgIFRlc3RzL1dU
Ri9CbG9vbUZpbHRlci5jcHAKICAgICBUZXN0cy9XVEYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuY3Bw
CiAgICAgVGVzdHMvV1RGL0NTdHJpbmcuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjYxMTU1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExMzksNiArMTEzOSw3
IEBACiAJCUY2QjdCRTk3MTc0NjlCOTYwMDhBMzQ0NSAvKiBhc3NvY2lhdGUtZm9ybS1jb250cm9s
cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY2QjdCRTk2MTc0NjlCN0UwMDhBMzQ0NSAvKiBhc3NvY2lhdGUtZm9ybS1jb250cm9scy5o
dG1sICovOyB9OwogCQlGNkY0OUM2QjE1NTQ1Q0E3MDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5z
aW9uTm9DYWNoZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lv
bk5vQ2FjaGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJRjZGRERERDYxNDI0MUM2RjAwNEYxNzI5IC8q
IHB1c2gtc3RhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNkZERERENTE0MjQxQzQ4MDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1s
ICovOyB9OworCQlGRTJEOTQ3NDI0NUVCMkY0MDBFNDgxMzUgLyogQml0bWFwLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkQ5NDczMjQ1RUIyREYw
MEU0ODEzNSAvKiBCaXRtYXAuY3BwICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0yODAy
LDYgKzI4MDMsNyBAQAogCQlGNkY0OUM2NzE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0
ZW5zaW9uTm9DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
T01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjZGRERERDIxNDI0MUFENDAwNEYxNzI5IC8qIFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5v
SGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERERDUxNDI0MUM0ODAwNEYxNzI5IC8qIHB1c2gtc3Rh
dGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwdXNoLXN0YXRlLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTJEOTQ3MzI0NUVCMkRGMDBFNDgxMzUgLyog
Qml0bWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQjZGNzRFMUIyQkE0NEUwMDlFNDky
MiAvKiBOYWtlZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
YWtlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCiAKQEAgLTM5NDksNiArMzk1MSw3IEBACiAJCQkJN0NCQkEwNzUx
OUJCOEEwOTAwQkJGMDI1IC8qIGRhcndpbiAqLywKIAkJCQlCQzAyOUIxQTE0ODZCMjM4MDA4MTdE
QTkgLyogbnMgKi8sCiAJCQkJMjZGMUI0NDIxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21TdHJpbmcu
Y3BwICovLAorCQkJCUZFMkQ5NDczMjQ1RUIyREYwMEU0ODEzNSAvKiBCaXRtYXAuY3BwICovLAog
CQkJCUU0MDAxOTMwMUFDRTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5jcHAgKi8sCiAJCQkJ
MDQ1MUE1QTYyMzVFNDM4RTAwOURGOTQ1IC8qIEJ1bXBQb2ludGVyQWxsb2NhdG9yLmNwcCAqLywK
IAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRp
b25zLmNwcCAqLywKQEAgLTQ2OTksNiArNDcwMiw3IEBACiAJCQkJRTM4RDY1Q0IyM0E0NUZBQTAw
NjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREY1OTFE
MEE1OTBDMDBGRUJDRjMgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1M0VD
MjU0MTFFOTZGRDg3MDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlGRTJEOTQ3NDI0NUVCMkY0MDBFNDgxMzUgLyogQml0bWFwLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERjEzMUQwQTU5MEMwMEZFQkNGMyAvKiBSZWRCbGFja1RyZWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0RGMTQxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzREYxNTFEMEE1OTBDMDBGRUJDRjMgLyogUmVmQ291bnRlci5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0JpdG1h
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQml0bWFw
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9CaXRt
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworY29uc3RleHByIHNpemVfdCBzaXplID0gMTI4OworY29uc3RleHBy
IHNpemVfdCBzbWFsbFNpemUgPSA5OworY29uc3RleHByIHNpemVfdCB6ZXJvU2l6ZSA9IDA7CisK
K3N0YXRpYyBjb25zdGV4cHIgYm9vbCBleHBlY3RlZEJpdHMxW3NpemVdID0geworICAgIGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisgICAg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLAor
ICAgIGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFs
c2UsCisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsICBmYWxzZSwgZmFsc2UsIHRydWUs
ICB0cnVlLAorICAgIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLCAgZmFsc2UsIHRydWUsICBm
YWxzZSwgZmFsc2UsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsICBmYWxzZSwgdHJ1
ZSwgIGZhbHNlLCB0cnVlLAorICAgIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAgZmFsc2Us
IHRydWUsICB0cnVlLCAgZmFsc2UsCisgICAgZmFsc2UsIHRydWUsICBmYWxzZSwgZmFsc2UsICBm
YWxzZSwgdHJ1ZSwgIHRydWUsICB0cnVlLAorICAgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNl
LCAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAg
ZmFsc2UsICB0cnVlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLAorICAgIHRydWUsICBmYWxzZSwgZmFs
c2UsIGZhbHNlLCAgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgZmFsc2UsCisgICAgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsICB0cnVlLCAgZmFsc2UsIHRydWUsICB0cnVlLAorICAgIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgIHRydWUsICBmYWxzZSwgZmFsc2UsCisgICAgZmFs
c2UsIHRydWUsICBmYWxzZSwgZmFsc2UsICB0cnVlLCAgdHJ1ZSwgIGZhbHNlLCB0cnVlLAorICAg
IGZhbHNlLCB0cnVlLCAgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgIHRydWUsICB0cnVlLCAgZmFsc2Us
CisgICAgZmFsc2UsIGZhbHNlLCB0cnVlLCAgZmFsc2UsICB0cnVlLCAgdHJ1ZSwgIHRydWUsICB0
cnVlLAorfTsKKworc3RhdGljIGNvbnN0ZXhwciBib29sIGV4cGVjdGVkQml0czJbc2l6ZV0gPSB7
CisgICAgZmFsc2UsIHRydWUsICBmYWxzZSwgdHJ1ZSwgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIHRydWUsCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICBmYWxzZSwgZmFsc2Us
IHRydWUsICBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAgIGZhbHNlLCBm
YWxzZSwgdHJ1ZSwgIHRydWUsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICBmYWxz
ZSwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCAg
IGZhbHNlLCB0cnVlLCAgZmFsc2UsIHRydWUsCisgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1
ZSwgICBmYWxzZSwgdHJ1ZSwgIHRydWUsICBmYWxzZSwKKyAgICBmYWxzZSwgZmFsc2UsIHRydWUs
ICB0cnVlLCAgIGZhbHNlLCB0cnVlLCAgdHJ1ZSwgIHRydWUsCisgICAgZmFsc2UsIHRydWUsICBm
YWxzZSwgdHJ1ZSwgICB0cnVlLCAgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKyAgICBmYWxzZSwgdHJ1
ZSwgIGZhbHNlLCB0cnVlLCAgIHRydWUsICBmYWxzZSwgZmFsc2UsIHRydWUsCisgICAgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgZmFsc2UsIHRydWUsICBmYWxzZSwKKyAgICBm
YWxzZSwgZmFsc2UsIHRydWUsICB0cnVlLCAgIHRydWUsICBmYWxzZSwgdHJ1ZSwgIHRydWUsCisg
ICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgdHJ1ZSwgIGZhbHNlLCBmYWxz
ZSwKKyAgICBmYWxzZSwgZmFsc2UsIHRydWUsICB0cnVlLCAgIHRydWUsICB0cnVlLCAgZmFsc2Us
IHRydWUsCisgICAgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgICB0cnVlLCAgdHJ1ZSwgIHRy
dWUsICBmYWxzZSwKKyAgICBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCB0cnVlLCAgIHRydWUsICB0cnVl
LCAgdHJ1ZSwgIHRydWUsCit9OworCitjb25zdGV4cHIgc2l6ZV90IGNvdW50Qml0cyhjb25zdCBi
b29sIGJvb2xBcnJheVtdLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoYm9v
bEFycmF5W2ldKQorICAgICAgICAgICAgcmVzdWx0Kys7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2NvbnN0ZXhwciBzaXplX3QgZXhwZWN0ZWROdW1iZXJPZlNldEJpdHMxID0gY291
bnRCaXRzKGV4cGVjdGVkQml0czEsIHNpemUpOworY29uc3RleHByIHNpemVfdCBleHBlY3RlZE51
bWJlck9mU2V0Qml0czIgPSBjb3VudEJpdHMoZXhwZWN0ZWRCaXRzMiwgc2l6ZSk7CisKKyNkZWZp
bmUgREVDTEFSRV9CSVRNQVBTX0ZPUl9URVNUKCkgXAorICAgIEJpdG1hcDxzaXplLCBXb3JkVHlw
ZT4gYml0bWFwMDsgLyogQWxsIGJpdHMgd2lsbCByZW1haW4gY2xlYXJlZC4gKi8gXAorICAgIEJp
dG1hcDxzaXplLCBXb3JkVHlwZT4gYml0bWFwMTsgLyogV2lsbCBob2xkIHZhbHVlcyBzcGVjaWZp
ZWQgaW4gZXhwZWN0ZWRCaXRzMS4gKi8gXAorICAgIEJpdG1hcDxzaXplLCBXb3JkVHlwZT4gYml0
bWFwMjsgLyogV2lsbCBob2xkIHZhbHVlcyBzcGVjaWZpZWQgaW4gZXhwZWN0ZWRCaXRzMi4gKi8g
XAorICAgIEJpdG1hcDxzaXplLCBXb3JkVHlwZT4gYml0bWFwMzsgLyogU2FtZSBhcyBiaXRtYXAy
LiAqLyBcCisgICAgQml0bWFwPHNpemUsIFdvcmRUeXBlPiBiaXRtYXBGaWxsZWQ7IFwKKyAgICBC
aXRtYXA8c21hbGxTaXplLCBXb3JkVHlwZT4gYml0bWFwU21hbGxaZXJvZWQ7IFwKKyAgICBCaXRt
YXA8c21hbGxTaXplLCBXb3JkVHlwZT4gYml0bWFwU21hbGxGaWxsZWQ7CisKKyNkZWZpbmUgREVD
TEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCkgXAorICAgIERFQ0xBUkVfQklUTUFQU19G
T1JfVEVTVCgpIFwKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeyBcCisg
ICAgICAgIGJpdG1hcDEuc2V0KGksIGV4cGVjdGVkQml0czFbaV0pOyBcCisgICAgICAgIGJpdG1h
cDIuc2V0KGksIGV4cGVjdGVkQml0czJbaV0pOyBcCisgICAgICAgIGJpdG1hcDMuc2V0KGksIGV4
cGVjdGVkQml0czJbaV0pOyBcCisgICAgICAgIGJpdG1hcEZpbGxlZC5zZXQoaSk7IFwKKyAgICB9
IFwKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNtYWxsU2l6ZTsgKytpKSBcCisgICAgICAg
IGJpdG1hcFNtYWxsRmlsbGVkLnNldChpKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+
Cit2b2lkIHRlc3RCaXRtYXBTaXplKCkKK3sKKyAgICBERUNMQVJFX0JJVE1BUFNfRk9SX1RFU1Qo
KTsKKworICAgIGF1dG8gdmVyaWZ5U2l6ZSA9IFs9XSAoYXV0byYgYml0bWFwLCBzaXplX3QgZXhw
ZWN0ZWRTaXplLCBzaXplX3Qgbm90RXhwZWN0ZWRTaXplKSB7CisgICAgICAgIEVYUEVDVF9FUShi
aXRtYXAuc2l6ZSgpLCBleHBlY3RlZFNpemUpOworICAgICAgICBFWFBFQ1RfTkUoYml0bWFwLnNp
emUoKSwgbm90RXhwZWN0ZWRTaXplKTsKKyAgICB9OworCisgICAgdmVyaWZ5U2l6ZShiaXRtYXAw
LCBzaXplLCBzbWFsbFNpemUpOworICAgIHZlcmlmeVNpemUoYml0bWFwMSwgc2l6ZSwgc21hbGxT
aXplKTsKKyAgICB2ZXJpZnlTaXplKGJpdG1hcDIsIHNpemUsIHNtYWxsU2l6ZSk7CisgICAgdmVy
aWZ5U2l6ZShiaXRtYXAzLCBzaXplLCBzbWFsbFNpemUpOworICAgIHZlcmlmeVNpemUoYml0bWFw
RmlsbGVkLCBzaXplLCBzbWFsbFNpemUpOworICAgIHZlcmlmeVNpemUoYml0bWFwU21hbGxaZXJv
ZWQsIHNtYWxsU2l6ZSwgc2l6ZSk7CisgICAgdmVyaWZ5U2l6ZShiaXRtYXBTbWFsbEZpbGxlZCwg
c21hbGxTaXplLCBzaXplKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lk
IHRlc3RCaXRtYXBDb25zdHJ1Y3RlZEVtcHR5KCkKK3sKKyAgICBERUNMQVJFX0JJVE1BUFNfRk9S
X1RFU1QoKTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGlu
aXRpYWxpemVzIGFsbCBiaXRzIHRvIDAuCisgICAgYXV0byB2ZXJpZnlJc0VtcHR5ID0gWz1dIChj
b25zdCBhdXRvJiBiaXRtYXApIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoYml0bWFwLmlzRW1wdHko
KSk7CisgICAgICAgIEVYUEVDVF9FUShiaXRtYXAuY291bnQoKSwgemVyb1NpemUpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJpdG1hcC5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IEVYUEVDVF9GQUxTRShiaXRtYXAuZ2V0KGkpKTsKKyAgICB9OworCisgICAgdmVyaWZ5SXNFbXB0
eShiaXRtYXAwKTsKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcDEpOworICAgIHZlcmlmeUlzRW1w
dHkoYml0bWFwMik7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAzKTsKKyAgICB2ZXJpZnlJc0Vt
cHR5KGJpdG1hcEZpbGxlZCk7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXBTbWFsbFplcm9lZCk7
CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXBTbWFsbEZpbGxlZCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwU2V0R2V0KCkKK3sKKyAgICBERUNMQVJF
X0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIGF1dG8gdmVyaWZ5SXNFbXB0eSA9
IFs9XSAoY29uc3QgYXV0byYgYml0bWFwKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGJpdG1hcC5p
c0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVEoYml0bWFwLmNvdW50KCksIHplcm9TaXplKTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiaXRtYXAuc2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0UoYml0bWFwLmdldChpKSk7CisgICAgfTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBFWFBFQ1RfRVEoYml0bWFwMS5n
ZXQoaSksIGV4cGVjdGVkQml0czFbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGJpdG1hcDIuZ2V0KGkpLCBleHBlY3RlZEJp
dHMyW2ldKTsKKyAgICAgICAgRVhQRUNUX0VRKGJpdG1hcDMuZ2V0KGkpLCBleHBlY3RlZEJpdHMy
W2ldKTsKKyAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAg
ICAgIEVYUEVDVF9FUShiaXRtYXAyLmdldChpKSwgYml0bWFwMy5nZXQoaSkpOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEVYUEVDVF9UUlVFKGJpdG1h
cEZpbGxlZC5nZXQoaSkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzbWFsbFNpemU7
ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuZ2V0KGkpKTsKKwor
ICAgIC8vIFZlcmlmeSB0aGF0IHRoZXJlIGlzIG5vIG91dCBvZiBib3VuZHMgd3JpdGUgZnJvbSB0
aGUgYWJvdmUgc2V0IG9wZXJhdGlvbnMuCisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAwKTsKKyAg
ICB2ZXJpZnlJc0VtcHR5KGJpdG1hcFNtYWxsWmVyb2VkKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBUZXN0QW5kU2V0KCkKK3sKKyAgICBERUNMQVJF
X0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEFTU0VSVF9GQUxTRShiaXRtYXAx
LmlzRnVsbCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAg
ICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEu
dGVzdEFuZFNldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFw
MS5pc0Z1bGwoKSk7CisKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxaZXJvZWQuaXNGdWxs
KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzbWFsbFNpemU7ICsraSkKKyAgICAgICAgQVNTRVJUX0ZB
TFNFKGJpdG1hcFNtYWxsWmVyb2VkLnRlc3RBbmRTZXQoaSkpOworICAgIEFTU0VSVF9UUlVFKGJp
dG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5
cGU+Cit2b2lkIHRlc3RCaXRtYXBUZXN0QW5kQ2xlYXIoKQoreworICAgIERFQ0xBUkVfQU5EX0lO
SVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDEuaXNFbXB0
eSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNT
RVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEudGVzdEFu
ZENsZWFyKGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAxLmlz
RW1wdHkoKSk7CisKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxGaWxsZWQuaXNFbXB0eSgp
KTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzbWFsbFNpemU7ICsraSkKKyAgICAgICAgQVNTRVJUX1RSVUUo
Yml0bWFwU21hbGxGaWxsZWQudGVzdEFuZENsZWFyKGkpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRt
YXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlw
ZT4KK3ZvaWQgdGVzdEJpdG1hcENvbmN1cnJlbnRUZXN0QW5kU2V0KCkKK3sKKyAgICBERUNMQVJF
X0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93
aW5nIGRvZXMgbm90IHRlc3QgdGhlIGNvbmN1cnJlbnQgcGFydC4gSXQgb25seSBlbnN1cmVzIHRo
YXQKKyAgICAvLyB0aGUgVGVzdEFuZFNldCBwYXJ0IG9mIHRoZSBvcGVyYXRpb24gaXMgd29ya2lu
Zy4KKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMS5pc0Z1bGwoKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAxLmdldChpKSwg
ZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAxLnRlc3RBbmRTZXQoaSksIGV4cGVjdGVkQml0czFb
aV0pOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDEuaXNGdWxsKCkpOworCisgICAgQVNTRVJUX0ZB
TFNFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBT
bWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc21hbGxT
aXplOyArK2kpCisgICAgICAgIEFTU0VSVF9GQUxTRShiaXRtYXBTbWFsbFplcm9lZC50ZXN0QW5k
U2V0KGkpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0Z1bGwoKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwQ29uY3VycmVu
dFRlc3RBbmRDbGVhcigpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNU
KCk7CisKKyAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBkb2VzIG5vdCB0ZXN0IHRoZSBjb25j
dXJyZW50IHBhcnQuIEl0IG9ubHkgZW5zdXJlcyB0aGF0CisgICAgLy8gdGhlIFRlc3RBbmRDbGVh
ciBwYXJ0IG9mIHRoZSBvcGVyYXRpb24gaXMgd29ya2luZy4KKyAgICBBU1NFUlRfRkFMU0UoYml0
bWFwMS5pc0VtcHR5KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQor
ICAgICAgICBBU1NFUlRfRVEoYml0bWFwMS5nZXQoaSksIGV4cGVjdGVkQml0czFbaV0pOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBBU1NFUlRfRVEoYml0
bWFwMS50ZXN0QW5kQ2xlYXIoaSksIGV4cGVjdGVkQml0czFbaV0pOworICAgIEFTU0VSVF9UUlVF
KGJpdG1hcDEuaXNFbXB0eSgpKTsKKworICAgIEFTU0VSVF9GQUxTRShiaXRtYXBTbWFsbEZpbGxl
ZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNtYWxsU2l6ZTsgKytpKQorICAgICAgICBB
U1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC50ZXN0QW5kQ2xlYXIoaSkpOworICAgIEFTU0VS
VF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwQ2xlYXIoKQoreworICAgIERFQ0xBUkVfQU5E
X0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVk
LmlzRnVsbCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBpZiAoIWV4cGVjdGVkQml0czFbaV0pCisgICAgICAgICAgICBiaXRtYXBGaWxsZWQuY2xl
YXIoaSk7CisgICAgfQorICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQsIGJpdG1hcDEpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcENsZWFyQWxsKCkK
K3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIGF1dG8g
dmVyaWZ5SXNFbXB0eSA9IFs9XSAoY29uc3QgYXV0byYgYml0bWFwKSB7CisgICAgICAgIEVYUEVD
VF9UUlVFKGJpdG1hcC5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVEoYml0bWFwLmNvdW50
KCksIHplcm9TaXplKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiaXRtYXAuc2l6
ZSgpOyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoYml0bWFwLmdldChpKSk7CisgICAg
fTsKKworICAgIGF1dG8gdmVyaWZ5SXNGdWxsID0gWz1dIChjb25zdCBhdXRvJiBiaXRtYXApIHsK
KyAgICAgICAgRVhQRUNUX1RSVUUoYml0bWFwLmlzRnVsbCgpKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBiaXRtYXAuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfVFJV
RShiaXRtYXAuZ2V0KGkpKTsKKyAgICB9OworCisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDEuaXNF
bXB0eSgpKTsKKyAgICBiaXRtYXAxLmNsZWFyQWxsKCk7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRt
YXAxKTsKKyAgICB2ZXJpZnlJc0Z1bGwoYml0bWFwRmlsbGVkKTsKKyAgICB2ZXJpZnlJc0Z1bGwo
Yml0bWFwU21hbGxGaWxsZWQpOworCisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDIuaXNFbXB0eSgp
KTsKKyAgICBiaXRtYXAyLmNsZWFyQWxsKCk7CisgICAgdmVyaWZ5SXNFbXB0eShiaXRtYXAxKTsK
KyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcDIpOworICAgIHZlcmlmeUlzRnVsbChiaXRtYXBGaWxs
ZWQpOworICAgIHZlcmlmeUlzRnVsbChiaXRtYXBTbWFsbEZpbGxlZCk7CisKKyAgICBFWFBFQ1Rf
RkFMU0UoYml0bWFwMy5pc0VtcHR5KCkpOworICAgIGJpdG1hcDMuY2xlYXJBbGwoKTsKKyAgICB2
ZXJpZnlJc0VtcHR5KGJpdG1hcDEpOworICAgIHZlcmlmeUlzRW1wdHkoYml0bWFwMik7CisgICAg
dmVyaWZ5SXNFbXB0eShiaXRtYXAzKTsKKyAgICB2ZXJpZnlJc0Z1bGwoYml0bWFwRmlsbGVkKTsK
KyAgICB2ZXJpZnlJc0Z1bGwoYml0bWFwU21hbGxGaWxsZWQpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcEludmVydCgpCit7CisgICAgREVDTEFSRV9B
TkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBhdXRvIHZlcmlmeUludmVydCA9IFs9
XSAoYXV0byYgYml0bWFwKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1hcC5pc0Z1bGwoKSk7
CisgICAgICAgIEFTU0VSVF9GQUxTRShiaXRtYXAuaXNFbXB0eSgpKTsKKyAgICAgICAgYml0bWFw
LmludmVydCgpOworICAgICAgICBBU1NFUlRfRkFMU0UoYml0bWFwLmlzRnVsbCgpKTsKKyAgICAg
ICAgQVNTRVJUX1RSVUUoYml0bWFwLmlzRW1wdHkoKSk7CisgICAgICAgIGJpdG1hcC5pbnZlcnQo
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUoYml0bWFwLmlzRnVsbCgpKTsKKyAgICAgICAgQVNTRVJU
X0ZBTFNFKGJpdG1hcC5pc0VtcHR5KCkpOworICAgIH07CisKKyAgICB2ZXJpZnlJbnZlcnQoYml0
bWFwRmlsbGVkKTsKKyAgICB2ZXJpZnlJbnZlcnQoYml0bWFwU21hbGxGaWxsZWQpOworCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIEFTU0VSVF9FUShiaXRt
YXAxLmdldChpKSwgZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgYml0bWFwMS5pbnZlcnQoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNTRVJUX0VRKGJp
dG1hcDEuZ2V0KGkpLCAhZXhwZWN0ZWRCaXRzMVtpXSk7CisgICAgYml0bWFwMS5pbnZlcnQoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQVNTRVJUX0VR
KGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBGaW5kUnVuT2ZaZXJvcygpCit7CisgICAgREVD
TEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBjb25zdCBpbnQ2NF90IGJp
dG1hcDFSdW5zT2ZaZXJvc1sxNV0gPSB7CisgICAgICAgIDAsIDAsIDAsIDMsIDMsCisgICAgICAg
IDMsIDMsIDMsIDMsIDMsCisgICAgICAgIDMsIDMsIDMsIC0xLCAtMQorICAgIH07CisKKyAgICBj
b25zdCBpbnQ2NF90IGJpdG1hcDJSdW5zT2ZaZXJvc1sxNV0gPSB7CisgICAgICAgIDAsIDAsIDQs
IDQsIDQsCisgICAgICAgIDQsIDQsIDQsIC0xLCAtMSwKKyAgICAgICAgLTEsIC0xLCAtMSwgLTEs
IC0xLAorICAgIH07CisKKyAgICBCaXRtYXA8c21hbGxTaXplLCBXb3JkVHlwZT4gc21hbGxUZW1w
OworICAgIHNtYWxsVGVtcC5zZXQoMSwgdHJ1ZSk7IC8vIGJpdHMgbG93IHRvIGhpZ2ggYXJlOiAw
MTAwIDAwMDAgMAorCisgICAgY29uc3QgaW50NjRfdCBzbWFsbFRlbXBSdW5zT2ZaZXJvc1sxNV0g
PSB7CisgICAgICAgIDAsIDAsIDIsIDIsIDIsCisgICAgICAgIDIsIDIsIDIsIC0xLCAtMSwKKyAg
ICAgICAgLTEsIC0xLCAtMSwgLTEsIC0xCisgICAgfTsKKworICAgIGZvciAoc2l6ZV90IHJ1bkxl
bmd0aCA9IDA7IHJ1bkxlbmd0aCA8IDE1OyArK3J1bkxlbmd0aCkgeworICAgICAgICBBU1NFUlRf
RVEoYml0bWFwMC5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCAwbGwpOworICAgICAgICBBU1NF
UlRfRVEoYml0bWFwMS5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCBiaXRtYXAxUnVuc09mWmVy
b3NbcnVuTGVuZ3RoXSk7CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAyLmZpbmRSdW5PZlplcm9z
KHJ1bkxlbmd0aCksIGJpdG1hcDJSdW5zT2ZaZXJvc1tydW5MZW5ndGhdKTsKKyAgICAgICAgQVNT
RVJUX0VRKGJpdG1hcEZpbGxlZC5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCAtMWxsKTsKKwor
ICAgICAgICBpZiAocnVuTGVuZ3RoIDw9IHNtYWxsU2l6ZSkKKyAgICAgICAgICAgIEFTU0VSVF9F
UShiaXRtYXBTbWFsbFplcm9lZC5maW5kUnVuT2ZaZXJvcyhydW5MZW5ndGgpLCAwbGwpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfRVEoYml0bWFwU21hbGxaZXJvZWQuZmluZFJ1
bk9mWmVyb3MocnVuTGVuZ3RoKSwgLTFsbCk7CisKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcFNt
YWxsRmlsbGVkLmZpbmRSdW5PZlplcm9zKHJ1bkxlbmd0aCksIC0xbGwpOworCisgICAgICAgIEFT
U0VSVF9FUShzbWFsbFRlbXAuZmluZFJ1bk9mWmVyb3MocnVuTGVuZ3RoKSwgc21hbGxUZW1wUnVu
c09mWmVyb3NbcnVuTGVuZ3RoXSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3Jk
VHlwZT4KK3ZvaWQgdGVzdEJpdG1hcENvdW50KCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUX0JJ
VE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEVYUEVDVF9FUShiaXRtYXAwLmNvdW50KCksIHplcm9T
aXplKTsKKyAgICBFWFBFQ1RfRVEoYml0bWFwMS5jb3VudCgpLCBleHBlY3RlZE51bWJlck9mU2V0
Qml0czEpOworICAgIEVYUEVDVF9FUShiaXRtYXAyLmNvdW50KCksIGV4cGVjdGVkTnVtYmVyT2ZT
ZXRCaXRzMik7CisgICAgRVhQRUNUX0VRKGJpdG1hcDMuY291bnQoKSwgZXhwZWN0ZWROdW1iZXJP
ZlNldEJpdHMyKTsKKyAgICBFWFBFQ1RfRVEoYml0bWFwRmlsbGVkLmNvdW50KCksIHNpemUpOwor
ICAgIEVYUEVDVF9FUShiaXRtYXBTbWFsbFplcm9lZC5jb3VudCgpLCB6ZXJvU2l6ZSk7CisgICAg
RVhQRUNUX0VRKGJpdG1hcFNtYWxsRmlsbGVkLmNvdW50KCksIHNtYWxsU2l6ZSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwSXNFbXB0eSgpCit7Cisg
ICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBFWFBFQ1RfVFJV
RShiaXRtYXAwLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDEuaXNFbXB0eSgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMi5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9GQUxT
RShiaXRtYXAzLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcEZpbGxlZC5pc0Vt
cHR5KCkpOworICAgIEVYUEVDVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7CisKKyAgICBhdXRv
IHZlcmlmeUlzRW1wdHkgPSBbPV0gKGNvbnN0IGF1dG8mIGJpdG1hcCkgeworICAgICAgICBFWFBF
Q1RfVFJVRShiaXRtYXAuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGJpdG1hcC5jb3Vu
dCgpLCB6ZXJvU2l6ZSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYml0bWFwLnNp
emUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcC5nZXQoaSkpOworICAg
IH07CisKKyAgICB2ZXJpZnlJc0VtcHR5KGJpdG1hcDApOworICAgIHZlcmlmeUlzRW1wdHkoYml0
bWFwU21hbGxaZXJvZWQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQg
dGVzdEJpdG1hcElzRnVsbCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9U
RVNUKCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMC5pc0Z1bGwoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGJpdG1hcDEuaXNGdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShiaXRtYXAyLmlzRnVs
bCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMy5pc0Z1bGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwU21hbGxa
ZXJvZWQuaXNGdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVs
bCgpKTsKKworICAgIGF1dG8gdmVyaWZ5SXNGdWxsID0gWz1dIChhdXRvJiBiaXRtYXApIHsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoYml0bWFwLmlzRnVsbCgpKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBiaXRtYXAuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfVFJVRShi
aXRtYXAuZ2V0KGkpKTsKKyAgICB9OworCisgICAgdmVyaWZ5SXNGdWxsKGJpdG1hcEZpbGxlZCk7
CisgICAgdmVyaWZ5SXNGdWxsKGJpdG1hcFNtYWxsRmlsbGVkKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBNZXJnZSgpCit7CisgICAgREVDTEFSRV9B
TkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAwLmlz
RW1wdHkoKSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOworICAgIGJpdG1hcDIu
bWVyZ2UoYml0bWFwMCk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOworICAgIAor
ICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAyKTsKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwg
Yml0bWFwMyk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDIsIGJpdG1hcDMpOworICAgIGJpdG1hcDMu
bWVyZ2UoYml0bWFwMSk7CisgICAgQVNTRVJUX05FKGJpdG1hcDIsIGJpdG1hcDMpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGJvb2wgZXhwZWN0ZWRC
aXQgPSBleHBlY3RlZEJpdHMyW2ldIHwgZXhwZWN0ZWRCaXRzMVtpXTsKKyAgICAgICAgQVNTRVJU
X0VRKGJpdG1hcDMuZ2V0KGkpLCBleHBlY3RlZEJpdCk7CisgICAgfQorCisgICAgQVNTRVJUX1RS
VUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAwLmlzRW1w
dHkoKSk7CisgICAgYml0bWFwRmlsbGVkLm1lcmdlKGJpdG1hcDApOworICAgIEFTU0VSVF9UUlVF
KGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMC5pc0VtcHR5
KCkpOworCisgICAgYml0bWFwMC5tZXJnZShiaXRtYXAxKTsKKyAgICBBU1NFUlRfRVEoYml0bWFw
MCwgYml0bWFwMSk7CisKKyAgICBiaXRtYXAxLm1lcmdlKGJpdG1hcEZpbGxlZCk7CisgICAgQVNT
RVJUX0VRKGJpdG1hcDEsIGJpdG1hcEZpbGxlZCk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBT
bWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVk
LmlzRnVsbCgpKTsKKyAgICBiaXRtYXBTbWFsbFplcm9lZC5tZXJnZShiaXRtYXBTbWFsbEZpbGxl
ZCk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisgICAg
QVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVF
KGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICAKKyAgICBiaXRtYXBTbWFsbFplcm9l
ZC5jbGVhckFsbCgpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHko
KSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIGJp
dG1hcFNtYWxsRmlsbGVkLm1lcmdlKGJpdG1hcFNtYWxsWmVyb2VkKTsKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21h
bGxaZXJvZWQuaXNFbXB0eSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2
b2lkIHRlc3RCaXRtYXBGaWx0ZXIoKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQU19G
T1JfVEVTVCgpOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAg
ICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgYml0bWFwMi5maWx0ZXIoYml0bWFw
RmlsbGVkKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgCisgICAgQVNT
RVJUX05FKGJpdG1hcDEsIGJpdG1hcDIpOworICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAz
KTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgYml0bWFwMy5maWx0ZXIo
Yml0bWFwMSk7CisgICAgQVNTRVJUX05FKGJpdG1hcDIsIGJpdG1hcDMpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGJvb2wgZXhwZWN0ZWRCaXQgPSBl
eHBlY3RlZEJpdHMyW2ldICYgZXhwZWN0ZWRCaXRzMVtpXTsKKyAgICAgICAgQVNTRVJUX0VRKGJp
dG1hcDMuZ2V0KGkpLCBleHBlY3RlZEJpdCk7CisgICAgfQorCisgICAgQVNTRVJUX1RSVUUoYml0
bWFwMC5pc0VtcHR5KCkpOworICAgIGJpdG1hcDIuZmlsdGVyKGJpdG1hcDApOworICAgIEFTU0VS
VF9FUShiaXRtYXAyLCBiaXRtYXAwKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDAuaXNFbXB0
eSgpKTsKKyAgICBiaXRtYXAwLmZpbHRlcihiaXRtYXAxKTsKKyAgICBBU1NFUlRfVFJVRShiaXRt
YXAwLmlzRW1wdHkoKSk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuaXNGdWxsKCkp
OworICAgIGJpdG1hcEZpbGxlZC5maWx0ZXIoYml0bWFwMSk7CisgICAgQVNTRVJUX0VRKGJpdG1h
cEZpbGxlZCwgYml0bWFwMSk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5p
c0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsK
KyAgICBiaXRtYXBTbWFsbFplcm9lZC5maWx0ZXIoYml0bWFwU21hbGxGaWxsZWQpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0ZBTFNF
KGJpdG1hcFNtYWxsWmVyb2VkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFs
bEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgCisgICAgYml0bWFwU21hbGxGaWxsZWQuZmlsdGVyKGJp
dG1hcFNtYWxsWmVyb2VkKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxGaWxsZWQuaXNG
dWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgV29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBFeGNsdWRlKCkKK3sKKyAgICBE
RUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEFTU0VSVF9UUlVFKGJp
dG1hcDAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAg
Yml0bWFwMi5leGNsdWRlKGJpdG1hcDApOworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAz
KTsKKyAgICAKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgYml0bWFwMik7CisgICAgQVNTRVJUX05F
KGJpdG1hcDEsIGJpdG1hcDMpOworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAzKTsKKyAg
ICBiaXRtYXAzLmV4Y2x1ZGUoYml0bWFwMSk7CisgICAgQVNTRVJUX05FKGJpdG1hcDIsIGJpdG1h
cDMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGJv
b2wgZXhwZWN0ZWRCaXQgPSBleHBlY3RlZEJpdHMyW2ldICYgIWV4cGVjdGVkQml0czFbaV07Cisg
ICAgICAgIEFTU0VSVF9FUShiaXRtYXAzLmdldChpKSwgZXhwZWN0ZWRCaXQpOworICAgIH0KKwor
ICAgIEFTU0VSVF9UUlVFKGJpdG1hcDAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRt
YXBGaWxsZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcDIuZXhjbHVkZShiaXRtYXBGaWxsZWQpOwor
ICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAwKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgYml0bWFwRmlsbGVkLmV4Y2x1ZGUoYml0bWFwMSk7Cisg
ICAgYml0bWFwMS5pbnZlcnQoKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLCBiaXRtYXAx
KTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisgICAg
QVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcFNtYWxs
WmVyb2VkLmV4Y2x1ZGUoYml0bWFwU21hbGxGaWxsZWQpOworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcFNtYWxsWmVy
b2VkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwo
KSk7CisgICAgCisgICAgYml0bWFwU21hbGxGaWxsZWQuZXhjbHVkZShiaXRtYXBTbWFsbFplcm9l
ZCk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLmlzRW1wdHkoKSk7CisKKyAgICBiaXRtYXBTbWFs
bEZpbGxlZC5leGNsdWRlKGJpdG1hcFNtYWxsRmlsbGVkKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0
bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmls
bGVkLmlzRW1wdHkoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0
ZXN0Qml0bWFwQ29uY3VycmVudEZpbHRlcigpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRN
QVBTX0ZPUl9URVNUKCk7CisKKyAgICAvLyBGSVhNRTogdGhlIGZvbGxvd2luZyBkb2VzIG5vdCB0
ZXN0IHRoZSBjb25jdXJyZW50IHBhcnQuIEl0IG9ubHkgZW5zdXJlcyB0aGF0CisgICAgLy8gdGhl
IEZpbHRlciBwYXJ0IG9mIHRoZSBvcGVyYXRpb24gaXMgd29ya2luZy4KKyAgICBBU1NFUlRfVFJV
RShiaXRtYXBGaWxsZWQuaXNGdWxsKCkpOworICAgIEFTU0VSVF9FUShiaXRtYXAyLCBiaXRtYXAz
KTsKKyAgICBiaXRtYXAyLmNvbmN1cnJlbnRGaWx0ZXIoYml0bWFwRmlsbGVkKTsKKyAgICBBU1NF
UlRfRVEoYml0bWFwMiwgYml0bWFwMyk7CisgICAgCisgICAgQVNTRVJUX05FKGJpdG1hcDEsIGJp
dG1hcDIpOworICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAzKTsKKyAgICBBU1NFUlRfRVEo
Yml0bWFwMiwgYml0bWFwMyk7CisgICAgYml0bWFwMy5jb25jdXJyZW50RmlsdGVyKGJpdG1hcDEp
OworICAgIEFTU0VSVF9ORShiaXRtYXAyLCBiaXRtYXAzKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBib29sIGV4cGVjdGVkQml0ID0gZXhwZWN0ZWRC
aXRzMltpXSAmIGV4cGVjdGVkQml0czFbaV07CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAzLmdl
dChpKSwgZXhwZWN0ZWRCaXQpOworICAgIH0KKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDAuaXNF
bXB0eSgpKTsKKyAgICBiaXRtYXAyLmNvbmN1cnJlbnRGaWx0ZXIoYml0bWFwMCk7CisgICAgQVNT
RVJUX0VRKGJpdG1hcDIsIGJpdG1hcDApOworCisgICAgQVNTRVJUX1RSVUUoYml0bWFwMC5pc0Vt
cHR5KCkpOworICAgIGJpdG1hcDAuY29uY3VycmVudEZpbHRlcihiaXRtYXAxKTsKKyAgICBBU1NF
UlRfVFJVRShiaXRtYXAwLmlzRW1wdHkoKSk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxs
ZWQuaXNGdWxsKCkpOworICAgIGJpdG1hcEZpbGxlZC5jb25jdXJyZW50RmlsdGVyKGJpdG1hcDEp
OworICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQsIGJpdG1hcDEpOworCisgICAgQVNTRVJUX1RS
VUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBT
bWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgYml0bWFwU21hbGxaZXJvZWQuY29uY3VycmVudEZp
bHRlcihiaXRtYXBTbWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJv
ZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxaZXJvZWQuaXNGdWxs
KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICAK
KyAgICBiaXRtYXBTbWFsbEZpbGxlZC5jb25jdXJyZW50RmlsdGVyKGJpdG1hcFNtYWxsWmVyb2Vk
KTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwU21hbGxGaWxsZWQuaXNGdWxsKCkpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUo
Yml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgV29y
ZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBTdWJzdW1lcygpCit7CisgICAgREVDTEFSRV9BTkRfSU5J
VF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAwLmlzRW1wdHko
KSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRf
RVEoYml0bWFwMiwgYml0bWFwMyk7CisKKyAgICBBU1NFUlRfVFJVRShiaXRtYXAwLnN1YnN1bWVz
KGJpdG1hcDApKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMC5zdWJzdW1lcyhiaXRtYXAxKSk7
CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDAuc3Vic3VtZXMoYml0bWFwMikpOworICAgIEFTU0VS
VF9GQUxTRShiaXRtYXAwLnN1YnN1bWVzKGJpdG1hcDMpKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0
bWFwMC5zdWJzdW1lcyhiaXRtYXBGaWxsZWQpKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDEu
c3Vic3VtZXMoYml0bWFwMCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDEuc3Vic3VtZXMoYml0
bWFwMSkpOworICAgIEFTU0VSVF9GQUxTRShiaXRtYXAxLnN1YnN1bWVzKGJpdG1hcDIpKTsKKyAg
ICBBU1NFUlRfRkFMU0UoYml0bWFwMS5zdWJzdW1lcyhiaXRtYXAzKSk7CisgICAgQVNTRVJUX0ZB
TFNFKGJpdG1hcDEuc3Vic3VtZXMoYml0bWFwRmlsbGVkKSk7CisKKyAgICBBU1NFUlRfVFJVRShi
aXRtYXAyLnN1YnN1bWVzKGJpdG1hcDApKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFwMi5zdWJz
dW1lcyhiaXRtYXAxKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMi5zdWJzdW1lcyhiaXRtYXAy
KSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMi5zdWJzdW1lcyhiaXRtYXAzKSk7CisgICAgQVNT
RVJUX0ZBTFNFKGJpdG1hcDIuc3Vic3VtZXMoYml0bWFwRmlsbGVkKSk7CisKKyAgICBBU1NFUlRf
VFJVRShiaXRtYXAzLnN1YnN1bWVzKGJpdG1hcDApKTsKKyAgICBBU1NFUlRfRkFMU0UoYml0bWFw
My5zdWJzdW1lcyhiaXRtYXAxKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5zdWJzdW1lcyhi
aXRtYXAyKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5zdWJzdW1lcyhiaXRtYXAzKSk7Cisg
ICAgQVNTRVJUX0ZBTFNFKGJpdG1hcDMuc3Vic3VtZXMoYml0bWFwRmlsbGVkKSk7CisKKyAgICBB
U1NFUlRfVFJVRShiaXRtYXBGaWxsZWQuc3Vic3VtZXMoYml0bWFwMCkpOworICAgIEFTU0VSVF9U
UlVFKGJpdG1hcEZpbGxlZC5zdWJzdW1lcyhiaXRtYXAxKSk7CisgICAgQVNTRVJUX1RSVUUoYml0
bWFwRmlsbGVkLnN1YnN1bWVzKGJpdG1hcDIpKTsKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxs
ZWQuc3Vic3VtZXMoYml0bWFwMykpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5zdWJz
dW1lcyhiaXRtYXBGaWxsZWQpKTsKKworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVk
LnN1YnN1bWVzKGJpdG1hcFNtYWxsRmlsbGVkKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21h
bGxGaWxsZWQuc3Vic3VtZXMoYml0bWFwU21hbGxaZXJvZWQpKTsKKworICAgIEFTU0VSVF9GQUxT
RShiaXRtYXBTbWFsbFplcm9lZC5zdWJzdW1lcyhiaXRtYXBTbWFsbEZpbGxlZCkpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcFNtYWxsWmVyb2VkLnN1YnN1bWVzKGJpdG1hcFNtYWxsWmVyb2VkKSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwRm9yRWFj
aFNldEJpdCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisK
KyAgICBzaXplX3QgY291bnQgPSAwOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDAuaXNFbXB0eSgp
KTsKKyAgICBiaXRtYXAwLmZvckVhY2hTZXRCaXQoWyZdIChzaXplX3QgaSkgeworICAgICAgICBj
b25zdGV4cHIgYm9vbCBub3RSZWFjaGVkID0gZmFsc2U7CisgICAgICAgIEFTU0VSVF9UUlVFKG5v
dFJlYWNoZWQpOworICAgICAgICBjb3VudCsrOworICAgIH0pOworICAgIEFTU0VSVF9FUShjb3Vu
dCwgemVyb1NpemUpOworCisgICAgY291bnQgPSAwOworICAgIGJpdG1hcDEuZm9yRWFjaFNldEJp
dChbJl0gKHNpemVfdCBpKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1hcDEuZ2V0KGkpKTsK
KyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDEuZ2V0KGkpLCBleHBlY3RlZEJpdHMxW2ldKTsKKyAg
ICAgICAgY291bnQrKzsKKyAgICB9KTsKKyAgICBBU1NFUlRfRVEoY291bnQsIGV4cGVjdGVkTnVt
YmVyT2ZTZXRCaXRzMSk7CisKKyAgICBjb3VudCA9IDA7CisgICAgQVNTRVJUX1RSVUUoYml0bWFw
RmlsbGVkLmlzRnVsbCgpKTsKKyAgICBiaXRtYXBGaWxsZWQuZm9yRWFjaFNldEJpdChbJl0gKHNp
emVfdCBpKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5nZXQoaSkpOworICAg
ICAgICBjb3VudCsrOworICAgIH0pOworICAgIEFTU0VSVF9FUShjb3VudCwgc2l6ZSk7CisKKyAg
ICBjb3VudCA9IDA7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNFbXB0eSgp
KTsKKyAgICBiaXRtYXBTbWFsbFplcm9lZC5mb3JFYWNoU2V0Qml0KFsmXSAoc2l6ZV90IGkpIHsK
KyAgICAgICAgY29uc3RleHByIGJvb2wgbm90UmVhY2hlZCA9IGZhbHNlOworICAgICAgICBBU1NF
UlRfVFJVRShub3RSZWFjaGVkKTsKKyAgICAgICAgY291bnQrKzsKKyAgICB9KTsKKyAgICBBU1NF
UlRfRVEoY291bnQsIHplcm9TaXplKTsKKworICAgIGNvdW50ID0gMDsKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwoKSk7CisgICAgYml0bWFwU21hbGxGaWxsZWQuZm9y
RWFjaFNldEJpdChbJl0gKHNpemVfdCBpKSB7CisgICAgICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNt
YWxsRmlsbGVkLmdldChpKSk7CisgICAgICAgIGNvdW50Kys7CisgICAgfSk7CisgICAgQVNTRVJU
X0VRKGNvdW50LCBzbWFsbFNpemUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4K
K3ZvaWQgdGVzdEJpdG1hcEZpbmRCaXQoKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRfQklUTUFQ
U19GT1JfVEVTVCgpOworCisgICAgYXV0byBmaW5kRXhwZWN0ZWRCaXQgPSBbPV0gKGF1dG8gZXhw
ZWN0ZWRCaXRzLCBzaXplX3Qgc3RhcnRJbmRleCwgYm9vbCB2YWx1ZSkgLT4gc2l6ZV90IHsKKyAg
ICAgICAgZm9yIChhdXRvIGluZGV4ID0gc3RhcnRJbmRleDsgaW5kZXggPCBzaXplOyArK2luZGV4
KSB7CisgICAgICAgICAgICBpZiAoZXhwZWN0ZWRCaXRzW2luZGV4XSA9PSB2YWx1ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXJ0
SW5kZXg7CisgICAgfTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMSwgbGFzdEluZGV4ID0g
MTsgaSA8IHNpemU7IGxhc3RJbmRleCA9IGksIGkgKz0gbGFzdEluZGV4KSB7CisgICAgICAgIEFT
U0VSVF9FUShiaXRtYXAxLmZpbmRCaXQoaSwgdHJ1ZSksIGZpbmRFeHBlY3RlZEJpdChleHBlY3Rl
ZEJpdHMxLCBpLCB0cnVlKSk7CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAxLmZpbmRCaXQoaSwg
ZmFsc2UpLCBmaW5kRXhwZWN0ZWRCaXQoZXhwZWN0ZWRCaXRzMSwgaSwgZmFsc2UpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKGJpdG1hcDIuZmluZEJpdChpLCB0cnVlKSwgZmluZEV4cGVjdGVkQml0KGV4
cGVjdGVkQml0czIsIGksIHRydWUpKTsKKyAgICAgICAgQVNTRVJUX0VRKGJpdG1hcDIuZmluZEJp
dChpLCBmYWxzZSksIGZpbmRFeHBlY3RlZEJpdChleHBlY3RlZEJpdHMyLCBpLCBmYWxzZSkpOwor
CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAyLmZpbmRCaXQoaSwgdHJ1ZSksIGJpdG1hcDMuZmlu
ZEJpdChpLCB0cnVlKSk7CisgICAgICAgIEFTU0VSVF9FUShiaXRtYXAyLmZpbmRCaXQoaSwgZmFs
c2UpLCBiaXRtYXAzLmZpbmRCaXQoaSwgZmFsc2UpKTsKKyAgICB9CisKKyAgICBBU1NFUlRfRVEo
Yml0bWFwMC5maW5kQml0KDAsIGZhbHNlKSwgemVyb1NpemUpOworICAgIEFTU0VSVF9FUShiaXRt
YXAwLmZpbmRCaXQoMTAsIGZhbHNlKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PigxMCkpOworICAgIEFT
U0VSVF9FUShiaXRtYXAwLmZpbmRCaXQoc2l6ZSAtIDEsIGZhbHNlKSwgc2l6ZS0xKTsKKyAgICBB
U1NFUlRfRVEoYml0bWFwMC5maW5kQml0KHNpemUsIGZhbHNlKSwgc2l6ZSk7CisgICAgQVNTRVJU
X0VRKGJpdG1hcDAuZmluZEJpdChzaXplICsgMSwgZmFsc2UpLCBzaXplKTsKKworICAgIEFTU0VS
VF9FUShiaXRtYXAwLmZpbmRCaXQoMCwgdHJ1ZSksIHNpemUpOworICAgIEFTU0VSVF9FUShiaXRt
YXAwLmZpbmRCaXQoMTAsIHRydWUpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMC5maW5k
Qml0KHNpemUgLSAxLCB0cnVlKSwgc2l6ZSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDAuZmluZEJp
dChzaXplLCB0cnVlKSwgc2l6ZSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcDAuZmluZEJpdChzaXpl
ICsgMSwgdHJ1ZSksIHNpemUpOworCisgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5kQml0
KDAsIGZhbHNlKSwgc2l6ZSk7CisgICAgQVNTRVJUX0VRKGJpdG1hcEZpbGxlZC5maW5kQml0KDEw
LCBmYWxzZSksIHNpemUpOworICAgIEFTU0VSVF9FUShiaXRtYXBGaWxsZWQuZmluZEJpdChzaXpl
IC0gMSwgZmFsc2UpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLmZpbmRCaXQo
c2l6ZSwgZmFsc2UpLCBzaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLmZpbmRCaXQo
c2l6ZSArIDEsIGZhbHNlKSwgc2l6ZSk7CisKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLmZp
bmRCaXQoMCwgdHJ1ZSksIHplcm9TaXplKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLmZp
bmRCaXQoMTAsIHRydWUpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KDEwKSk7CisgICAgQVNTRVJUX0VR
KGJpdG1hcEZpbGxlZC5maW5kQml0KHNpemUgLSAxLCB0cnVlKSwgc2l6ZS0xKTsKKyAgICBBU1NF
UlRfRVEoYml0bWFwRmlsbGVkLmZpbmRCaXQoc2l6ZSwgdHJ1ZSksIHNpemUpOworICAgIEFTU0VS
VF9FUShiaXRtYXBGaWxsZWQuZmluZEJpdChzaXplICsgMSwgdHJ1ZSksIHNpemUpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcEl0ZXJhdGlvbigpCit7
CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAgICBhdXRvIGNv
bXB1dGVTZXRCaXRzQ291bnQgPSBbPV0gKGF1dG8mIGJpdG1hcCkgLT4gc2l6ZV90IHsKKyAgICAg
ICAgc2l6ZV90IGNvdW50ID0gMDsKKyAgICAgICAgZm9yIChhdXRvIGJpdEluZGV4IDogYml0bWFw
KSB7CisgICAgICAgICAgICBVTlVTRURfUEFSQU0oYml0SW5kZXgpOworICAgICAgICAgICAgY291
bnQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY291bnQ7CisgICAgfTsKKworICAgIEVY
UEVDVF9FUShjb21wdXRlU2V0Qml0c0NvdW50KGJpdG1hcDApLCB6ZXJvU2l6ZSk7CisgICAgRVhQ
RUNUX0VRKGNvbXB1dGVTZXRCaXRzQ291bnQoYml0bWFwMSksIGV4cGVjdGVkTnVtYmVyT2ZTZXRC
aXRzMSk7CisgICAgRVhQRUNUX0VRKGNvbXB1dGVTZXRCaXRzQ291bnQoYml0bWFwMiksIGV4cGVj
dGVkTnVtYmVyT2ZTZXRCaXRzMik7CisgICAgRVhQRUNUX0VRKGNvbXB1dGVTZXRCaXRzQ291bnQo
Yml0bWFwMyksIGV4cGVjdGVkTnVtYmVyT2ZTZXRCaXRzMik7CisgICAgRVhQRUNUX0VRKGNvbXB1
dGVTZXRCaXRzQ291bnQoYml0bWFwRmlsbGVkKSwgc2l6ZSk7CisgICAgRVhQRUNUX0VRKGNvbXB1
dGVTZXRCaXRzQ291bnQoYml0bWFwU21hbGxaZXJvZWQpLCB6ZXJvU2l6ZSk7CisgICAgRVhQRUNU
X0VRKGNvbXB1dGVTZXRCaXRzQ291bnQoYml0bWFwU21hbGxGaWxsZWQpLCBzbWFsbFNpemUpOwor
CisgICAgYXV0byB2ZXJpZnlTZXRCaXRzID0gWz1dIChhdXRvJiBiaXRtYXAsIGF1dG8mIGV4cGVj
dGVkQml0cykgeworICAgICAgICBmb3IgKGF1dG8gYml0SW5kZXggOiBiaXRtYXApIHsKKyAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKGJpdG1hcC5nZXQoYml0SW5kZXgpKTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShiaXRtYXAuZ2V0KGJpdEluZGV4KSwgZXhwZWN0ZWRCaXRzW2JpdEluZGV4XSk7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgdmVyaWZ5U2V0Qml0cyhiaXRtYXAxLCBleHBlY3RlZEJp
dHMxKTsKKyAgICB2ZXJpZnlTZXRCaXRzKGJpdG1hcDIsIGV4cGVjdGVkQml0czIpOworICAgIHZl
cmlmeVNldEJpdHMoYml0bWFwMywgZXhwZWN0ZWRCaXRzMik7CisKKyAgICBhdXRvIHZlcmlmeUJp
dHNBbGxTZXQgPSBbPV0gKGF1dG8mIGJpdG1hcCkgeworICAgICAgICBzaXplX3QgbGFzdEJpdElu
ZGV4ID0gMDsKKyAgICAgICAgZm9yIChhdXRvIGJpdEluZGV4IDogYml0bWFwKSB7CisgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShiaXRtYXAuZ2V0KGJpdEluZGV4KSk7CisgICAgICAgICAgICBpZiAo
Yml0SW5kZXgpCisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGJpdEluZGV4LCBsYXN0Qml0SW5k
ZXggKyAxKTsKKyAgICAgICAgICAgIGxhc3RCaXRJbmRleCA9IGJpdEluZGV4OworICAgICAgICB9
CisgICAgfTsKKworICAgIHZlcmlmeUJpdHNBbGxTZXQoYml0bWFwRmlsbGVkKTsKKyAgICB2ZXJp
ZnlCaXRzQWxsU2V0KGJpdG1hcFNtYWxsRmlsbGVkKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
V29yZFR5cGU+Cit2b2lkIHRlc3RCaXRtYXBNZXJnZUFuZENsZWFyKCkKK3sKKyAgICBERUNMQVJF
X0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEJpdG1hcDxzaXplLCBXb3JkVHlw
ZT4gdGVtcDsKKyAgICBCaXRtYXA8c2l6ZSwgV29yZFR5cGU+IHNhdmVkQml0bWFwMTsKKworICAg
IEFTU0VSVF9GQUxTRShiaXRtYXAyLmlzRW1wdHkoKSk7CisKKyAgICBzYXZlZEJpdG1hcDEubWVy
Z2UoYml0bWFwMSk7CisgICAgQVNTRVJUX0VRKHNhdmVkQml0bWFwMSwgYml0bWFwMSk7CisgICAg
CisgICAgQVNTRVJUX05FKGJpdG1hcDEsIGJpdG1hcDIpOworICAgIEFTU0VSVF9ORShiaXRtYXAx
LCBiaXRtYXAzKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMywgYml0bWFwMik7CisgICAgYml0bWFw
MS5tZXJnZUFuZENsZWFyKGJpdG1hcDMpOworICAgIEFTU0VSVF9ORShiaXRtYXAxLCBiaXRtYXAy
KTsKKyAgICBBU1NFUlRfTkUoYml0bWFwMSwgc2F2ZWRCaXRtYXAxKTsKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXAzLmlzRW1wdHkoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgYm9vbCBleHBlY3RlZEJpdCA9IGV4cGVjdGVkQml0czFbaV0gfCBleHBl
Y3RlZEJpdHMyW2ldOworICAgICAgICBBU1NFUlRfRVEoYml0bWFwMS5nZXQoaSksIGV4cGVjdGVk
Qml0KTsKKyAgICB9CisKKyAgICBiaXRtYXAzLm1lcmdlKGJpdG1hcDIpOyAvLyByZXN0b3JlIGJp
dG1hcDMKKyAgICBBU1NFUlRfRVEoYml0bWFwMywgYml0bWFwMik7CisKKyAgICBBU1NFUlRfVFJV
RSh0ZW1wLmlzRW1wdHkoKSk7CisgICAgdGVtcC5tZXJnZUFuZENsZWFyKGJpdG1hcDMpOworICAg
IEFTU0VSVF9GQUxTRSh0ZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0VRKHRlbXAsIGJpdG1h
cDIpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcDMuaXNFbXB0eSgpKTsKKworICAgIEJpdG1hcDxz
aXplLCBXb3JkVHlwZT4gc2F2ZWRCaXRtYXBGaWxsZWQ7CisgICAgc2F2ZWRCaXRtYXBGaWxsZWQu
bWVyZ2UoYml0bWFwRmlsbGVkKTsKKworICAgIHRlbXAuY2xlYXJBbGwoKTsKKyAgICBBU1NFUlRf
VFJVRSh0ZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0ZBTFNFKHRlbXAuaXNGdWxsKCkpOwor
ICAgIEFTU0VSVF9GQUxTRShiaXRtYXBGaWxsZWQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfVFJV
RShiaXRtYXBGaWxsZWQuaXNGdWxsKCkpOworICAgIHRlbXAubWVyZ2VBbmRDbGVhcihiaXRtYXBG
aWxsZWQpOworICAgIEFTU0VSVF9GQUxTRSh0ZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RS
VUUodGVtcC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRW1wdHko
KSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7CisKKyAgICBiaXRt
YXAzLm1lcmdlKGJpdG1hcDIpOyAvLyByZXN0b3JlIGJpdG1hcDMKKyAgICBBU1NFUlRfRVEoYml0
bWFwMywgYml0bWFwMik7CisgICAgYml0bWFwRmlsbGVkLm1lcmdlKHNhdmVkQml0bWFwRmlsbGVk
KTsgLy8gcmVzdG9yZSBiaXRtYXBGaWxsZWQKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBGaWxsZWQu
aXNGdWxsKCkpOworCisgICAgQVNTRVJUX1RSVUUodGVtcC5pc0Z1bGwoKSk7CisgICAgdGVtcC5t
ZXJnZUFuZENsZWFyKGJpdG1hcDMpOworICAgIEFTU0VSVF9UUlVFKHRlbXAuaXNGdWxsKCkpOwor
ICAgIEFTU0VSVF9FUSh0ZW1wLCBiaXRtYXBGaWxsZWQpOworICAgIEFTU0VSVF9UUlVFKGJpdG1h
cDMuaXNFbXB0eSgpKTsKKworICAgIEJpdG1hcDxzbWFsbFNpemUsIFdvcmRUeXBlPiBzbWFsbFRl
bXA7CisKKyAgICBzbWFsbFRlbXAubWVyZ2UoYml0bWFwU21hbGxGaWxsZWQpOworICAgIEFTU0VS
VF9UUlVFKHNtYWxsVGVtcC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxa
ZXJvZWQuaXNFbXB0eSgpKTsKKyAgICBzbWFsbFRlbXAubWVyZ2VBbmRDbGVhcihiaXRtYXBTbWFs
bFplcm9lZCk7CisgICAgQVNTRVJUX1RSVUUoc21hbGxUZW1wLmlzRnVsbCgpKTsKKyAgICBBU1NF
UlRfRkFMU0Uoc21hbGxUZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21h
bGxaZXJvZWQuaXNFbXB0eSgpKTsKKworICAgIHNtYWxsVGVtcC5jbGVhckFsbCgpOworICAgIEFT
U0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfVFJVRShz
bWFsbFRlbXAuaXNFbXB0eSgpKTsKKyAgICBzbWFsbFRlbXAubWVyZ2VBbmRDbGVhcihiaXRtYXBT
bWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX1RSVUUoc21hbGxUZW1wLmlzRnVsbCgpKTsKKyAgICBB
U1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0VtcHR5KCkpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcFNldEFuZENsZWFyKCkKK3sKKyAgICBE
RUNMQVJFX0FORF9JTklUX0JJVE1BUFNfRk9SX1RFU1QoKTsKKworICAgIEJpdG1hcDxzaXplLCBX
b3JkVHlwZT4gdGVtcDsKKyAgICBCaXRtYXA8c2l6ZSwgV29yZFR5cGU+IHNhdmVkQml0bWFwMTsK
KworICAgIEFTU0VSVF9GQUxTRShiaXRtYXAyLmlzRW1wdHkoKSk7CisKKyAgICBzYXZlZEJpdG1h
cDEubWVyZ2UoYml0bWFwMSk7CisgICAgQVNTRVJUX0VRKHNhdmVkQml0bWFwMSwgYml0bWFwMSk7
CisgICAgCisgICAgQVNTRVJUX05FKGJpdG1hcDEsIGJpdG1hcDIpOworICAgIEFTU0VSVF9ORShi
aXRtYXAxLCBiaXRtYXAzKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMywgYml0bWFwMik7CisgICAg
Yml0bWFwMS5zZXRBbmRDbGVhcihiaXRtYXAzKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMSwgYml0
bWFwMik7CisgICAgQVNTRVJUX05FKGJpdG1hcDEsIHNhdmVkQml0bWFwMSk7CisgICAgQVNTRVJU
X1RSVUUoYml0bWFwMy5pc0VtcHR5KCkpOworCisgICAgYml0bWFwMy5tZXJnZShiaXRtYXAyKTsg
Ly8gcmVzdG9yZSBiaXRtYXAzCisgICAgQVNTRVJUX0VRKGJpdG1hcDMsIGJpdG1hcDIpOworCisg
ICAgQVNTRVJUX1RSVUUodGVtcC5pc0VtcHR5KCkpOworICAgIHRlbXAuc2V0QW5kQ2xlYXIoYml0
bWFwMyk7CisgICAgQVNTRVJUX0ZBTFNFKHRlbXAuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlRfRVEo
dGVtcCwgYml0bWFwMik7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5pc0VtcHR5KCkpOworCisg
ICAgdGVtcC5jbGVhckFsbCgpOworICAgIEFTU0VSVF9UUlVFKHRlbXAuaXNFbXB0eSgpKTsKKyAg
ICBBU1NFUlRfRkFMU0UodGVtcC5pc0Z1bGwoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1hcEZp
bGxlZC5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcEZpbGxlZC5pc0Z1bGwoKSk7
CisgICAgdGVtcC5zZXRBbmRDbGVhcihiaXRtYXBGaWxsZWQpOworICAgIEFTU0VSVF9GQUxTRSh0
ZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUodGVtcC5pc0Z1bGwoKSk7CisgICAgQVNT
RVJUX1RSVUUoYml0bWFwRmlsbGVkLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGJpdG1h
cEZpbGxlZC5pc0Z1bGwoKSk7CisKKyAgICBiaXRtYXAzLm1lcmdlKGJpdG1hcDIpOyAvLyByZXN0
b3JlIGJpdG1hcDMKKyAgICBBU1NFUlRfRVEoYml0bWFwMywgYml0bWFwMik7CisKKyAgICBBU1NF
UlRfVFJVRSh0ZW1wLmlzRnVsbCgpKTsKKyAgICB0ZW1wLnNldEFuZENsZWFyKGJpdG1hcDMpOwor
ICAgIEFTU0VSVF9GQUxTRSh0ZW1wLmlzRnVsbCgpKTsKKyAgICBBU1NFUlRfRVEodGVtcCwgYml0
bWFwMik7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwMy5pc0VtcHR5KCkpOworCisgICAgQml0bWFw
PHNtYWxsU2l6ZSwgV29yZFR5cGU+IHNtYWxsVGVtcDsKKworICAgIHNtYWxsVGVtcC5tZXJnZShi
aXRtYXBTbWFsbEZpbGxlZCk7CisgICAgQVNTRVJUX1RSVUUoc21hbGxUZW1wLmlzRnVsbCgpKTsK
KyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbFplcm9lZC5pc0VtcHR5KCkpOworICAgIHNtYWxs
VGVtcC5zZXRBbmRDbGVhcihiaXRtYXBTbWFsbFplcm9lZCk7CisgICAgQVNTRVJUX1RSVUUoc21h
bGxUZW1wLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1RSVUUoYml0bWFwU21hbGxaZXJvZWQuaXNF
bXB0eSgpKTsKKyAgICAKKyAgICBBU1NFUlRfVFJVRShiaXRtYXBTbWFsbEZpbGxlZC5pc0Z1bGwo
KSk7CisgICAgQVNTRVJUX1RSVUUoc21hbGxUZW1wLmlzRW1wdHkoKSk7CisgICAgc21hbGxUZW1w
LnNldEFuZENsZWFyKGJpdG1hcFNtYWxsRmlsbGVkKTsKKyAgICBBU1NFUlRfVFJVRShzbWFsbFRl
bXAuaXNGdWxsKCkpOworICAgIEFTU0VSVF9UUlVFKGJpdG1hcFNtYWxsRmlsbGVkLmlzRW1wdHko
KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwT3Bl
cmF0b3JFcXVhbCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7
CisKKyAgICBFWFBFQ1RfVFJVRShiaXRtYXAwID09IGJpdG1hcDApOworICAgIEVYUEVDVF9GQUxT
RShiaXRtYXAwID09IGJpdG1hcDEpOworICAgIEVYUEVDVF9UUlVFKGJpdG1hcDEgPT0gYml0bWFw
MSk7CisgICAgRVhQRUNUX0ZBTFNFKGJpdG1hcDEgPT0gYml0bWFwMik7CisgICAgRVhQRUNUX0ZB
TFNFKGJpdG1hcDEgPT0gYml0bWFwMyk7CisgICAgRVhQRUNUX1RSVUUoYml0bWFwMiA9PSBiaXRt
YXAzKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwRmlsbGVkID09IGJpdG1hcDEpOworICAgIEVY
UEVDVF9GQUxTRShiaXRtYXBTbWFsbFplcm9lZCA9PSBiaXRtYXBTbWFsbEZpbGxlZCk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFdvcmRUeXBlPgordm9pZCB0ZXN0Qml0bWFwT3BlcmF0b3JOb3RF
cXVhbCgpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVF9CSVRNQVBTX0ZPUl9URVNUKCk7CisKKyAg
ICBFWFBFQ1RfRkFMU0UoYml0bWFwMCAhPSBiaXRtYXAwKTsKKyAgICBFWFBFQ1RfVFJVRShiaXRt
YXAwICE9IGJpdG1hcDEpOworICAgIEVYUEVDVF9GQUxTRShiaXRtYXAxICE9IGJpdG1hcDEpOwor
ICAgIEVYUEVDVF9UUlVFKGJpdG1hcDEgIT0gYml0bWFwMik7CisgICAgRVhQRUNUX1RSVUUoYml0
bWFwMSAhPSBiaXRtYXAzKTsKKyAgICBFWFBFQ1RfRkFMU0UoYml0bWFwMiAhPSBiaXRtYXAzKTsK
KyAgICBFWFBFQ1RfVFJVRShiaXRtYXBGaWxsZWQgIT0gYml0bWFwMSk7CisgICAgRVhQRUNUX1RS
VUUoYml0bWFwU21hbGxaZXJvZWQgIT0gYml0bWFwU21hbGxGaWxsZWQpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBXb3JkVHlwZT4KK3ZvaWQgdGVzdEJpdG1hcEhhc2goKQoreworICAgIERFQ0xB
UkVfQU5EX0lOSVRfQklUTUFQU19GT1JfVEVTVCgpOworCisgICAgY29uc3RleHByIHVuc2lnbmVk
IHdvcmRTaXplID0gc2l6ZW9mKFdvcmRUeXBlKSAqIDg7CisgICAgY29uc3RleHByIHNpemVfdCB3
b3JkcyA9IChzaXplICsgd29yZFNpemUgLSAxKSAvIHdvcmRTaXplOworCisgICAgYXV0byBleHBl
Y3RlZEJpdG1hcDBIYXNoID0gWz1dICgpIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgdW5zaWduZWQg
cmVzdWx0ID0gMDsKKyAgICAgICAgV29yZFR5cGUgemVyb1dvcmQgPSAwOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCisgICAgICAgICAgICByZXN1bHQgXj0gSW50
SGFzaDxXb3JkVHlwZT46Omhhc2goemVyb1dvcmQpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH07CisKKyAgICBhdXRvIGV4cGVjdGVkQml0bWFwRmlsbGVkSGFzaCA9IFs9XSAoKSAtPiB1
bnNpZ25lZCB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisgICAgICAgIFdvcmRUeXBl
IGZpbGxlZFdvcmQgPSBzdGF0aWNfY2FzdDxXb3JkVHlwZT4oLTEpOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCisgICAgICAgICAgICByZXN1bHQgXj0gSW50SGFz
aDxXb3JkVHlwZT46Omhhc2goZmlsbGVkV29yZCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfTsKKworICAgIEFTU0VSVF9FUShiaXRtYXAwLmhhc2goKSwgZXhwZWN0ZWRCaXRtYXAwSGFz
aCgpKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwRmlsbGVkLmhhc2goKSwgZXhwZWN0ZWRCaXRtYXBG
aWxsZWRIYXNoKCkpOworCisgICAgYXV0byBleHBlY3RlZEhhc2ggPSBbPV0gKGF1dG8gZXhwZWN0
ZWRCaXRzLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7KSB7CisgICAgICAgICAgICBXb3JkVHlw
ZSB3b3JkID0gMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgd29yZFNpemUg
JiYgaSA8IHNpemU7ICsraSwgKytqKQorICAgICAgICAgICAgICAgIHdvcmQgfD0gc3RhdGljX2Nh
c3Q8V29yZFR5cGU+KCEhZXhwZWN0ZWRCaXRzW2ldKSA8PCBqOworICAgICAgICAgICAgcmVzdWx0
IF49IEludEhhc2g8V29yZFR5cGU+OjpoYXNoKHdvcmQpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfTsKKworICAgIEFTU0VSVF9FUShiaXRtYXAxLmhhc2goKSwgZXhw
ZWN0ZWRIYXNoKGV4cGVjdGVkQml0czEsIHNpemUpKTsKKyAgICBBU1NFUlRfRVEoYml0bWFwMi5o
YXNoKCksIGV4cGVjdGVkSGFzaChleHBlY3RlZEJpdHMyLCBzaXplKSk7CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgZXhwZWN0ZWRTbWFsbEJpdHNbc21hbGxTaXplXSA9IHsKKyAgICAgICAg
dHJ1ZSwgIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIGZhbHNlLCAgZmFsc2UsIGZhbHNlLCB0cnVlLAor
ICAgICAgICB0cnVlLAorICAgIH07CisgICAgQml0bWFwPHNtYWxsU2l6ZSwgV29yZFR5cGU+IHRl
bXAxOworICAgIEJpdG1hcDxzbWFsbFNpemUsIFdvcmRUeXBlPiB0ZW1wMjsKKworICAgIGF1dG8g
aW5pdFRlbXAgPSBbJl0gKGF1dG8mIGJpdG1hcCkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNtYWxsU2l6ZTsgKytpKQorICAgICAgICAgICAgYml0bWFwLnNldChpLCBleHBlY3Rl
ZFNtYWxsQml0c1tpXSk7CisgICAgfTsKKworICAgIGluaXRUZW1wKHRlbXAxKTsKKyAgICBBU1NF
UlRfRVEodGVtcDEuaGFzaCgpLCBleHBlY3RlZEhhc2goZXhwZWN0ZWRTbWFsbEJpdHMsIHNtYWxs
U2l6ZSkpOworCisgICAgdGVtcDIuaW52ZXJ0KCk7CisgICAgaW5pdFRlbXAodGVtcDIpOworICAg
IEFTU0VSVF9FUSh0ZW1wMi5oYXNoKCksIGV4cGVjdGVkSGFzaChleHBlY3RlZFNtYWxsQml0cywg
c21hbGxTaXplKSk7CisgICAgQVNTRVJUX0VRKHRlbXAyLmhhc2goKSwgdGVtcDEuaGFzaCgpKTsK
K30KKworVEVTVChXVEZfQml0bWFwLCBTaXplX3VpbnQzMl90KSB7IHRlc3RCaXRtYXBTaXplPHVp
bnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENvbnN0cnVjdGVkRW1wdHlfdWludDMyX3Qp
IHsgdGVzdEJpdG1hcENvbnN0cnVjdGVkRW1wdHk8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0Jp
dG1hcCwgU2V0R2V0X3VpbnQzMl90KSB7IHRlc3RCaXRtYXBTZXRHZXQ8dWludDMyX3Q+KCk7IH0K
K1RFU1QoV1RGX0JpdG1hcCwgVGVzdEFuZFNldF91aW50MzJfdCkgeyB0ZXN0Qml0bWFwVGVzdEFu
ZFNldDx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBUZXN0QW5kQ2xlYXJfdWludDMy
X3QpIHsgdGVzdEJpdG1hcFRlc3RBbmRDbGVhcjx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0
bWFwLCBDb25jdXJyZW50VGVzdEFuZFNldF91aW50MzJfdCkgeyB0ZXN0Qml0bWFwQ29uY3VycmVu
dFRlc3RBbmRTZXQ8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ29uY3VycmVudFRl
c3RBbmRDbGVhcl91aW50MzJfdCkgeyB0ZXN0Qml0bWFwQ29uY3VycmVudFRlc3RBbmRDbGVhcjx1
aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDbGVhcl91aW50MzJfdCkgeyB0ZXN0Qml0
bWFwQ2xlYXI8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ2xlYXJBbGxfdWludDMy
X3QpIHsgdGVzdEJpdG1hcENsZWFyQWxsPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAs
IEludmVydF91aW50MzJfdCkgeyB0ZXN0Qml0bWFwSW52ZXJ0PHVpbnQzMl90PigpOyB9CitURVNU
KFdURl9CaXRtYXAsIEZpbmRSdW5PZlplcm9zX3VpbnQzMl90KSB7IHRlc3RCaXRtYXBGaW5kUnVu
T2ZaZXJvczx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDb3VudF91aW50MzJfdCkg
eyB0ZXN0Qml0bWFwQ291bnQ8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgSXNFbXB0
eV91aW50MzJfdCkgeyB0ZXN0Qml0bWFwSXNFbXB0eTx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZf
Qml0bWFwLCBJc0Z1bGxfdWludDMyX3QpIHsgdGVzdEJpdG1hcElzRnVsbDx1aW50MzJfdD4oKTsg
fQorVEVTVChXVEZfQml0bWFwLCBNZXJnZV91aW50MzJfdCkgeyB0ZXN0Qml0bWFwTWVyZ2U8dWlu
dDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRmlsdGVyX3VpbnQzMl90KSB7IHRlc3RCaXRt
YXBGaWx0ZXI8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgRXhjbHVkZV91aW50MzJf
dCkgeyB0ZXN0Qml0bWFwRXhjbHVkZTx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBD
b25jdXJyZW50RmlsdGVyX3VpbnQzMl90KSB7IHRlc3RCaXRtYXBDb25jdXJyZW50RmlsdGVyPHVp
bnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIFN1YnN1bWVzX3VpbnQzMl90KSB7IHRlc3RC
aXRtYXBTdWJzdW1lczx1aW50MzJfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBGb3JFYWNoU2V0
Qml0X3VpbnQzMl90KSB7IHRlc3RCaXRtYXBGb3JFYWNoU2V0Qml0PHVpbnQzMl90PigpOyB9CitU
RVNUKFdURl9CaXRtYXAsIEZpbmRCaXRfdWludDMyX3QpIHsgdGVzdEJpdG1hcEZpbmRCaXQ8dWlu
dDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgSXRlcmF0aW9uX3VpbnQzMl90KSB7IHRlc3RC
aXRtYXBJdGVyYXRpb248dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgTWVyZ2VBbmRD
bGVhcl91aW50MzJfdCkgeyB0ZXN0Qml0bWFwTWVyZ2VBbmRDbGVhcjx1aW50MzJfdD4oKTsgfQor
VEVTVChXVEZfQml0bWFwLCBTZXRBbmRDbGVhcl91aW50MzJfdCkgeyB0ZXN0Qml0bWFwU2V0QW5k
Q2xlYXI8dWludDMyX3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgT3BlcmF0b3JFcXVhbEFjY2Vz
c191aW50MzJfdCkgeyB0ZXN0Qml0bWFwT3BlcmF0b3JFcXVhbDx1aW50MzJfdD4oKTsgfQorVEVT
VChXVEZfQml0bWFwLCBPcGVyYXRvck5vdEVxdWFsQWNjZXNzX3VpbnQzMl90KSB7IHRlc3RCaXRt
YXBPcGVyYXRvck5vdEVxdWFsPHVpbnQzMl90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIEhhc2hf
dWludDMyX3QpIHsgdGVzdEJpdG1hcEhhc2g8dWludDMyX3Q+KCk7IH0KKworI2lmIENQVShSRUdJ
U1RFUjY0KQorCitURVNUKFdURl9CaXRtYXAsIFNpemVfdWludDY0X3QpIHsgdGVzdEJpdG1hcFNp
emU8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgQ29uc3RydWN0ZWRFbXB0eV91aW50
NjRfdCkgeyB0ZXN0Qml0bWFwQ29uc3RydWN0ZWRFbXB0eTx1aW50NjRfdD4oKTsgfQorVEVTVChX
VEZfQml0bWFwLCBTZXRHZXRfdWludDY0X3QpIHsgdGVzdEJpdG1hcFNldEdldDx1aW50NjRfdD4o
KTsgfQorVEVTVChXVEZfQml0bWFwLCBUZXN0QW5kU2V0X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBU
ZXN0QW5kU2V0PHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIFRlc3RBbmRDbGVhcl91
aW50NjRfdCkgeyB0ZXN0Qml0bWFwVGVzdEFuZENsZWFyPHVpbnQ2NF90PigpOyB9CitURVNUKFdU
Rl9CaXRtYXAsIENvbmN1cnJlbnRUZXN0QW5kU2V0X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBDb25j
dXJyZW50VGVzdEFuZFNldDx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDb25jdXJy
ZW50VGVzdEFuZENsZWFyX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBDb25jdXJyZW50VGVzdEFuZENs
ZWFyPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENsZWFyX3VpbnQ2NF90KSB7IHRl
c3RCaXRtYXBDbGVhcjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBDbGVhckFsbF91
aW50NjRfdCkgeyB0ZXN0Qml0bWFwQ2xlYXJBbGw8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0Jp
dG1hcCwgSW52ZXJ0X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBJbnZlcnQ8dWludDY0X3Q+KCk7IH0K
K1RFU1QoV1RGX0JpdG1hcCwgRmluZFJ1bk9mWmVyb3NfdWludDY0X3QpIHsgdGVzdEJpdG1hcEZp
bmRSdW5PZlplcm9zPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIENvdW50X3VpbnQ2
NF90KSB7IHRlc3RCaXRtYXBDb3VudDx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBJ
c0VtcHR5X3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBJc0VtcHR5PHVpbnQ2NF90PigpOyB9CitURVNU
KFdURl9CaXRtYXAsIElzRnVsbF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwSXNGdWxsPHVpbnQ2NF90
PigpOyB9CitURVNUKFdURl9CaXRtYXAsIE1lcmdlX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBNZXJn
ZTx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBGaWx0ZXJfdWludDY0X3QpIHsgdGVz
dEJpdG1hcEZpbHRlcjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBFeGNsdWRlX3Vp
bnQ2NF90KSB7IHRlc3RCaXRtYXBFeGNsdWRlPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRt
YXAsIENvbmN1cnJlbnRGaWx0ZXJfdWludDY0X3QpIHsgdGVzdEJpdG1hcENvbmN1cnJlbnRGaWx0
ZXI8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwgU3Vic3VtZXNfdWludDY0X3QpIHsg
dGVzdEJpdG1hcFN1YnN1bWVzPHVpbnQ2NF90PigpOyB9CitURVNUKFdURl9CaXRtYXAsIEZvckVh
Y2hTZXRCaXRfdWludDY0X3QpIHsgdGVzdEJpdG1hcEZvckVhY2hTZXRCaXQ8dWludDY0X3Q+KCk7
IH0KK1RFU1QoV1RGX0JpdG1hcCwgRmluZEJpdF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwRmluZEJp
dDx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBJdGVyYXRpb25fdWludDY0X3QpIHsg
dGVzdEJpdG1hcEl0ZXJhdGlvbjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBNZXJn
ZUFuZENsZWFyX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBNZXJnZUFuZENsZWFyPHVpbnQ2NF90Pigp
OyB9CitURVNUKFdURl9CaXRtYXAsIFNldEFuZENsZWFyX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBT
ZXRBbmRDbGVhcjx1aW50NjRfdD4oKTsgfQorVEVTVChXVEZfQml0bWFwLCBPcGVyYXRvckVxdWFs
QWNjZXNzX3VpbnQ2NF90KSB7IHRlc3RCaXRtYXBPcGVyYXRvckVxdWFsPHVpbnQ2NF90PigpOyB9
CitURVNUKFdURl9CaXRtYXAsIE9wZXJhdG9yTm90RXF1YWxBY2Nlc3NfdWludDY0X3QpIHsgdGVz
dEJpdG1hcE9wZXJhdG9yTm90RXF1YWw8dWludDY0X3Q+KCk7IH0KK1RFU1QoV1RGX0JpdG1hcCwg
SGFzaF91aW50NjRfdCkgeyB0ZXN0Qml0bWFwSGFzaDx1aW50NjRfdD4oKTsgfQorCisjZW5kaWYg
Ly8gQ1BVKFJFR0lTVEVSNjQpCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI2MTE1NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA1LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBBbGxvdyBCaXRtYXAgdG8gdXNlIHVwIHRvIGEgVUNQVVJlZ2lz
dGVyIHdvcmQgc2l6ZSBmb3IgaW50ZXJuYWwgYml0IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzMjgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYyNzU1ODY1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisK
KyAgICAgICAgZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWRlbGV0ZS1zdGFsZS11
bmRvLWl0ZW1zLmh0bWwgZXhwb3NlZCBhIGJ1ZyBpbgorICAgICAgICB0aGlzIHBhdGNoLiAgSG93
ZXZlciwgd2hlbiBhIGZhaWx1cmUgb2NjdXJzLCB0aGlzIHRlc3QgcnVucyBwZXJwZXR1YWxseSB1
bnRpbCBpdAorICAgICAgICB0aW1lcyBvdXQuICBUaGVyZSdzIG5vIG5lZWQgdG8gZG8gdGhpcy4g
IEFmdGVyIGEgZmluaXRlIG51bWJlciBvZiBHQyBjeWNsZXMsCisgICAgICAgIHVucmVhY2hhYmxl
IG9iamVjdHMgc2hvdWxkIGJlIGNvbGxlY3RlZC4gIFRoaXMgaXMgZXNwZWNpYWxseSBzbyBiZWNh
dXNlCisgICAgICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCkgZG9lcyBhIHN5bmNocm9ub3VzIGZ1
bGwgR0MuCisKKyAgICAgICAgQWRkZWQgYSBjYXAgb2YgMTAgR0MgdHJpZXMsIGFuZCBmYWlsIG91
dCBpZiB0aGUgdGVzdCBkb2VzIG5vdCBzZWUgdGhlIGV4cGVjdGVkCisgICAgICAgIHJlc3VsdC4g
IFRoaXMgYWxsb3dzIHRoZSB0ZXN0IHRvIGZhaWwgZmFzdCBhbmQgYXZvaWQgdGhlIGNvc3RseSB0
aW1lIG91dC4KKworICAgICAgICAqIGVkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFuYWdlci1k
ZWxldGUtc3RhbGUtdW5kby1pdGVtcy5odG1sOgorCiAyMDIwLTA1LTA0ICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHN2Zy9iYXRpay90
ZXh0L3htbFNwYWNlLnN2ZyB0byB5aWVsZCBjb25zaXN0ZW50IHRleHQgbWV0cmljcwpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvLW1hbmFnZXIvdW5kby1tYW5hZ2VyLWRlbGV0ZS1zdGFs
ZS11bmRvLWl0ZW1zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRv
LW1hbmFnZXIvdW5kby1tYW5hZ2VyLWRlbGV0ZS1zdGFsZS11bmRvLWl0ZW1zLmh0bWwJKHJldmlz
aW9uIDI2MTE1NSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kby1tYW5hZ2VyL3VuZG8tbWFu
YWdlci1kZWxldGUtc3RhbGUtdW5kby1pdGVtcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00OCw5
ICs0OCwxMiBAQAogICAgICAgICAgICAgLy8gaGFuZGxlcnMgYXJlIG5vdCBwcm9wZXJseSByZWxp
bnF1aXNoZWQgb25jZSB0aGV5J3JlIG5vIGxvbmdlciBuZWVkZWQuCiAgICAgICAgICAgICBjb25z
dCBtaW5pbXVtTnVtYmVyT2ZXcmFwcGVyc1RvQ29sbGVjdEJlZm9yZVBhc3NpbmcgPSAzICogdW5k
b0l0ZW1Db3VudCAtIDMwMDsKICAgICAgICAgICAgIG9iamVjdENvdW50QWZ0ZXJDbGVhcmluZ1Vu
ZG9TdGFjayA9IG9iamVjdENvdW50QmVmb3JlQ2xlYXJpbmdVbmRvU3RhY2s7CisgICAgICAgICAg
ICB2YXIgdHJpZXMgPSAwOwogICAgICAgICAgICAgd2hpbGUgKG9iamVjdENvdW50QmVmb3JlQ2xl
YXJpbmdVbmRvU3RhY2sgLSBvYmplY3RDb3VudEFmdGVyQ2xlYXJpbmdVbmRvU3RhY2sgPCBtaW5p
bXVtTnVtYmVyT2ZXcmFwcGVyc1RvQ29sbGVjdEJlZm9yZVBhc3NpbmcpIHsKICAgICAgICAgICAg
ICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAw
KSk7CiAgICAgICAgICAgICAgICAgb2JqZWN0Q291bnRBZnRlckNsZWFyaW5nVW5kb1N0YWNrID0g
b2JqZWN0Q291bnRBZnRlclNpbXVsYXRpbmdNZW1vcnlQcmVzc3VyZUFuZEdhcmJhZ2VDb2xsZWN0
aW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKHRyaWVzKysgPiAxMCkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHNob3VsZEJlR3JlYXRl
clRoYW5PckVxdWFsKCJvYmplY3RDb3VudEJlZm9yZUNsZWFyaW5nVW5kb1N0YWNrIC0gb2JqZWN0
Q291bnRBZnRlckNsZWFyaW5nVW5kb1N0YWNrIiwgYCR7bWluaW11bU51bWJlck9mV3JhcHBlcnNU
b0NvbGxlY3RCZWZvcmVQYXNzaW5nfWApOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>