<?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>226984</bug_id>
          
          <creation_ts>2021-06-14 12:38:29 -0700</creation_ts>
          <short_desc>Add a new pattern to instruction selector to utilize UBFX supported by ARM64</short_desc>
          <delta_ts>2021-06-17 12:04:02 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yijia Huang">yijia_huang</reporter>
          <assigned_to name="Yijia Huang">yijia_huang</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769502</commentid>
    <comment_count>0</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-14 12:38:29 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770386</commentid>
    <comment_count>1</comment_count>
      <attachid>431600</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-16 14:10:13 -0700</bug_when>
    <thetext>Created attachment 431600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770396</commentid>
    <comment_count>2</comment_count>
      <attachid>431603</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-16 14:25:44 -0700</bug_when>
    <thetext>Created attachment 431603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770485</commentid>
    <comment_count>3</comment_count>
      <attachid>431625</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-16 17:42:25 -0700</bug_when>
    <thetext>Created attachment 431625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770510</commentid>
    <comment_count>4</comment_count>
      <attachid>431625</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-06-16 19:38:09 -0700</bug_when>
    <thetext>Comment on attachment 431625
Patch

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

I think it looks right. I just have stylistic comments. The one about using multiple lines to declare multiple variables is important since that’s the style we use in JSC (though apparently WebKit style not is ok with what you did there). 

I do recommend you try to detect if an int has the low 1 bits in a somewhat more clever way, though the way you did it is right (I think). It’s just there are these cheap tricks for doing it, like mask &amp; (mask + 1).

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2720
&gt; +                    auto contiguousOnesFromLSB = [&amp;] (int64_t n) -&gt; int64_t {

I feel like you could be a lot more creative in how you implement this and probably come up with something that is easier to deal with. 

You want a value that is one less than a power of two. So, if you add one, you should either get zero (because it was already all 1 bits) or you will get a value where __builtin_popcount(value) == 1. 

Another technique is mask &amp; (mask + 1). If that is zero then you must have had the all-1 pattern in the low bits. 

There may be a function in WTF/wtf/MathExtras.h or StdLibExtras.h that does something like this.

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2721
&gt; +                        int64_t mask = 1, width = 1;

I think we would usually use separate lines:

int64_t mask = 1;
int64_t width = 1;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770521</commentid>
    <comment_count>5</comment_count>
      <attachid>431631</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-16 21:36:37 -0700</bug_when>
    <thetext>Created attachment 431631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770522</commentid>
    <comment_count>6</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-16 21:37:30 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #4)
&gt; Comment on attachment 431625 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431625&amp;action=review
&gt; 
&gt; I think it looks right. I just have stylistic comments. The one about using
&gt; multiple lines to declare multiple variables is important since that’s the
&gt; style we use in JSC (though apparently WebKit style not is ok with what you
&gt; did there). 
&gt; 
&gt; I do recommend you try to detect if an int has the low 1 bits in a somewhat
&gt; more clever way, though the way you did it is right (I think). It’s just
&gt; there are these cheap tricks for doing it, like mask &amp; (mask + 1).
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2720
&gt; &gt; +                    auto contiguousOnesFromLSB = [&amp;] (int64_t n) -&gt; int64_t {
&gt; 
&gt; I feel like you could be a lot more creative in how you implement this and
&gt; probably come up with something that is easier to deal with. 
&gt; 
&gt; You want a value that is one less than a power of two. So, if you add one,
&gt; you should either get zero (because it was already all 1 bits) or you will
&gt; get a value where __builtin_popcount(value) == 1. 
&gt; 
&gt; Another technique is mask &amp; (mask + 1). If that is zero then you must have
&gt; had the all-1 pattern in the low bits. 
&gt; 
&gt; There may be a function in WTF/wtf/MathExtras.h or StdLibExtras.h that does
&gt; something like this.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2721
&gt; &gt; +                        int64_t mask = 1, width = 1;
&gt; 
&gt; I think we would usually use separate lines:
&gt; 
&gt; int64_t mask = 1;
&gt; int64_t width = 1;

Thank you for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770525</commentid>
    <comment_count>7</comment_count>
      <attachid>431633</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-16 22:24:03 -0700</bug_when>
    <thetext>Created attachment 431633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770634</commentid>
    <comment_count>8</comment_count>
      <attachid>431633</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-06-17 08:08:34 -0700</bug_when>
    <thetext>Comment on attachment 431633
Patch

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

It still looks good, but I would check that you&apos;re not missing an obvious additional matching opportunity.

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2728
&gt; +                        &amp;&amp; lsb + width &lt; (32 &lt;&lt; (opcode == Ubfx64))

Is that right?

So, it&apos;s not possible to do, say, (src &gt;&gt; 16) &amp; 0xFFFF?

It feels like this should be a &lt;=, not a &lt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770640</commentid>
    <comment_count>9</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-17 08:27:53 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #8)
&gt; Comment on attachment 431633 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431633&amp;action=review
&gt; 
&gt; It still looks good, but I would check that you&apos;re not missing an obvious
&gt; additional matching opportunity.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2728
&gt; &gt; +                        &amp;&amp; lsb + width &lt; (32 &lt;&lt; (opcode == Ubfx64))
&gt; 
&gt; Is that right?
&gt; 
&gt; So, it&apos;s not possible to do, say, (src &gt;&gt; 16) &amp; 0xFFFF?
&gt; 
&gt; It feels like this should be a &lt;=, not a &lt;.

I have been thinking about the same question for a while. The reason why I use &lt; instead of &lt;= is due to the benefit and efficiency. Saam suggested I check with godbolt.org about how GCC optimized code (from c++ program to assembly).

In godbolt.org, I set &quot;ARM64 gcc trunk&quot; with &quot;-O2&quot;. Then, I tested the following code:

#include &lt;stdint.h&gt;

uint64_t p64(uint64_t src) {
    char lsb = 34;
    char width = 30;
    return (src &gt;&gt; lsb) &amp; ((1ULL &lt;&lt; width) - 1ULL);
}

uint32_t p11(uint32_t src) {
    char lsb = 18;
    char width = 14;
    return (src &gt;&gt; lsb) &amp; ((1U &lt;&lt; width) - 1U);
}

The corresponding output provides:

p64(unsigned long):
        lsr     x0, x0, 34
        ret
p11(unsigned int):
        lsr     w0, w0, 18
        ret

So, it seems like the compiler prefers ubfx, when lsb + width &lt; 32 or 64.

Please correct me if I am wrong. And please let me know what should I do for this.

1. Use ubfx for &lt;=
2. Use lsr when ==
3. Skip pattern match when ==</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770650</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-06-17 08:53:11 -0700</bug_when>
    <thetext>I see, in the case where it’s ==, we could have just emitted a right shift without any masking. 

Do we do that?

I would guess we do that anyway because reduceStrength should turn (x &gt;&gt; 16) &amp; 0xffff into just x&gt;&gt; 16. If it doesn’t then we need that rule anyway and that could be a great follow up patch for you. 

So, once we have that strength reduction, if the instruction selector does &lt;= then this rule would only match if reduceStrength missed something. But it’s correct. I think I’ve usually erred on the side of the instruction selector supporting every legal pattern matching opportunity, even ones that are redundant with reduceStrength rules, if doing so doesn’t make the code more complex. 

In this case, using &lt;= definitely doesn’t make the code more complex. It makes it simpler in the sense that anyone looking at this code won’t be scratching their heads thinking we are missing something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770672</commentid>
    <comment_count>11</comment_count>
      <attachid>431679</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-17 09:15:45 -0700</bug_when>
    <thetext>Created attachment 431679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770675</commentid>
    <comment_count>12</comment_count>
      <attachid>431680</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-17 09:19:05 -0700</bug_when>
    <thetext>Created attachment 431680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770712</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-17 10:17:02 -0700</bug_when>
    <thetext>Committed r278994 (238920@main): &lt;https://commits.webkit.org/238920@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431680.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770750</commentid>
    <comment_count>14</comment_count>
      <attachid>431680</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-17 12:04:02 -0700</bug_when>
    <thetext>Comment on attachment 431680
Patch

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

nice, lgtm. Just some nits on making the code a bit simpler to read using variable names to express some tricky conditions.

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2716
&gt; +            // UBFX Pattern: dest = (src &gt;&gt; lsb) &amp; ((1 &lt;&lt; width) - 1)

I think it&apos;s worth highlighting here that &quot;((1 &lt;&lt; width) - 1)&quot; is really just a constant. Maybe say something like:
&quot;dest = (src &gt;&gt; lab) &amp; mask, where mask is of the form ((1 &lt;&lt; width) - 1)&quot;

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2723
&gt; +                    uint8_t width = static_cast&lt;uint8_t&gt;(!(mask &amp; (mask + 1))) * WTF::bitCount(mask);

this code is a bit too tricky for my liking:

Why not something a bit more obvious for less smart people like me:

bool isValidMask = mask &amp;&amp; !(mask &amp; (mask + 1)), and just branch on that? You can also remove the &quot;width &gt; 0&quot; check below if you do

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2728
&gt; +                        &amp;&amp; lsb + width &lt;= (32 &lt;&lt; (opcode == Ubfx64))

&quot;(32 &lt;&lt; (opcode == Ubfx64))&quot; is quite subtle. Not that I don&apos;t get it, but why not just help readers here and define a variable above to be:

&quot;maxBitWidth = opcode == Ubfx64 ? 64 : 32&quot;;

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2729
&gt; +                        &amp;&amp; isValidForm(opcode, Arg::Tmp, Arg::Imm, Arg::Imm, Arg::Tmp))  {

I&apos;d do this &quot;isValidForm&quot; check way above as the very first thing you branch on, since it should be proven by the compiler as false on x86.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431600</attachid>
            <date>2021-06-16 14:10:13 -0700</date>
            <delta_ts>2021-06-16 14:25:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226984-20210616161012.patch</filename>
            <type>text/plain</type>
            <size>12846</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MGViZmFiYjVlZjU2NTlhZWU4YjI4ZTM1YjBiNTViYjBlMWM5OGQ0Li5mYzAzNmYyZWE2ZGIxNTY2
NjVhYjBjNGRlYmMyZGM1Zjk3MTk1MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMS0wNi0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBVQkZYIHN1cHBvcnRlZCBieSBBUk02NAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZ4MzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZ4NjQpOgorICAgICAgICAqIGFzc2VtYmxl
ci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RVYmZ4MzIpOgorICAgICAgICAoSlND
Ojp0ZXN0VWJmeDY0KToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAq
IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAg
ICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKToK
KyAgICAgICAgKHRlc3RVYmZ4MzJQYXR0ZXJuTWF0Y2gpOgorICAgICAgICAoYWRkQml0VGVzdHMp
OgorCiAyMDIxLTA2LTE0ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgQWlyIG9wY29kZSBzdWIzMi82NChSZWcsIEltbSwgUmVnKSBmb3JtIGZvciBB
Uk02NCBhbmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGY4
NmFlYzFjNTQwMDZlZWQxZDVjNWRkM2Q1NmQ4ZDAwM2ZmNzYxMmIuLjI2YjllMjBlZWY4YjJhNjA3
YmEyOTZkYjU4YmFmNTNlOGUyMDI4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zOTAsNiArMzkwLDE2IEBA
IHB1YmxpYzoKICAgICAgICAgYW5kMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCB1YmZ4MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0
ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudWJmeDwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAg
fQorCisgICAgdm9pZCB1YmZ4NjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRy
dXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIudWJmeDw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kXzw2ND4oZGVz
dCwgc3JjMSwgc3JjMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1h
c20uY3BwCmluZGV4IGJhNTEwMmEyYmI5OTlhZDU3NDhmNjg0NzVkNmM4YzQ1ZDUwYTIxYjYuLjRk
NWExNDVhYjdhNmVhMzhmNjI4MjlmODQzOGQ4MzkyNWQzZjBjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0xMDQyLDYgKzEwNDIsNTQgQEAg
dm9pZCB0ZXN0U3ViNjRBcmdJbW02NCgpCiAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
NjRfdD4oc3ViLCB2YWx1ZSksIHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlIC0gaW1tZWRpYXRl
KSk7CiAgICAgfQogfQorCit2b2lkIHRlc3RVYmZ4MzIoKQoreworICAgIGludDMyX3Qgc3JjID0g
MHhmZmZmZmZmZjsKKyAgICBWZWN0b3I8aW50MzJfdD4gaW1tcyA9IHsgLTEsIDAsIDEsIDMwLCAz
MSwgMzIsIDYyLCA2MywgNjQgfTsKKyAgICBmb3IgKGF1dG8gbHNiIDogaW1tcykgeworICAgICAg
ICBmb3IgKGF1dG8gd2lkdGggOiBpbW1zKSB7CisgICAgICAgICAgICBpZiAobHNiID49IDAgJiYg
d2lkdGggPiAwICYmIGxzYiArIHdpZHRoIDwgMzIpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHVi
ZngzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGpp
dC51YmZ4MzIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNiKSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3aWR0aCksIAorICAgICAgICAgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAg
IGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8
aW50MzJfdD4odWJmeDMyLCBzcmMpLCAoKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRoKSAtIDEp
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFViZng2
NCgpCit7CisgICAgaW50NjRfdCBzcmMgPSAweGZmZmZmZmZmZmZmZmZmZmY7CisgICAgVmVjdG9y
PGludDMyX3Q+IGltbXMgPSB7IC0xLCAwLCAxLCAzMCwgMzEsIDMyLCA2MiwgNjMsIDY0IH07Cisg
ICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAgZm9yIChhdXRvIHdpZHRoIDogaW1t
cykgeworICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdpZHRoID4gMCAmJiBsc2IgKyB3aWR0
aCA8IDMyKSB7CisgICAgICAgICAgICAgICAgYXV0byB1YmZ4NjQgPSBjb21waWxlKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQudWJmeDY0KEdQUkluZm86OnJldHVy
blZhbHVlR1BSLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGxzYiksIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShq
aXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KHViZng2NCwgc3JjKSwg
KChzcmMgPj4gbHNiKSAmICgoMUxMIDw8IHdpZHRoKSAtIDFMTCkpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgogCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82
NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMjc2OSw2ICsyODE3LDggQEAgdm9pZCBydW4oY29uc3QgY2hh
ciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAgICAgUlVOKHRl
c3RTdWI2NEFyZ0ltbTMyKCkpOwogICAgIFJVTih0ZXN0U3ViNjRJbW02NCgpKTsKICAgICBSVU4o
dGVzdFN1YjY0QXJnSW1tNjQoKSk7CisgICAgUlVOKHRlc3RVYmZ4MzIoKSk7CisgICAgUlVOKHRl
c3RVYmZ4NjQoKSk7CiAjZW5kaWYKIAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQ
VShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXgg
ODMzZDEyZTQ2NTc2NmM3NzIyZmEyNGVkYjIzZmZiMDI0ODhjNGJiYy4uNTIxOGIxYmMwNThjZDBi
ZDYyMDUxOGRiNDBiYjYxNjA1MmVlY2FkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKQEAgLTI2OTQsMjMgKzI2OTQsNjIgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogCiAgICAgICAgIGNhc2UgQml0QW5kOiB7Ci0gICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hp
bGQoMSktPmlzSW50KDB4ZmYpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxaZXJvRXh0
ZW5kOFRvMzIsIFplcm9FeHRlbmQ4VG8zMj4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAg
ICAgVmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKKyAgICAgICAgICAgIFZhbHVlKiBy
aWdodCA9IG1fdmFsdWUtPmNoaWxkKDEpOworCisgICAgICAgICAgICBpZiAocmlnaHQtPmlzSW50
KDB4ZmYpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxaZXJvRXh0ZW5kOFRvMzIsIFpl
cm9FeHRlbmQ4VG8zMj4obGVmdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlz
SW50KDB4ZmZmZikpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9FeHRlbmQxNlRv
MzIsIFplcm9FeHRlbmQxNlRvMzI+KG1fdmFsdWUtPmNoaWxkKDApKTsKKworICAgICAgICAgICAg
aWYgKHJpZ2h0LT5pc0ludCgweGZmZmYpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxa
ZXJvRXh0ZW5kMTZUbzMyLCBaZXJvRXh0ZW5kMTZUbzMyPihsZWZ0KTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGls
ZCgxKS0+aXNJbnQ2NCgweGZmZmZmZmZmKSB8fCBtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQzMigw
eGZmZmZmZmZmKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8TW92ZTMyLCBNb3ZlMzI+
KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIGlmIChyaWdodC0+aXNJbnQ2NCgweGZm
ZmZmZmZmKSB8fCByaWdodC0+aXNJbnQzMigweGZmZmZmZmZmKSkgeworICAgICAgICAgICAgICAg
IGFwcGVuZFVuT3A8TW92ZTMyLCBNb3ZlMzI+KGxlZnQpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgYXBwZW5kQmluT3A8
QW5kMzIsIEFuZDY0LCBBbmREb3VibGUsIEFuZEZsb2F0LCBDb21tdXRhdGl2ZT4oCi0gICAgICAg
ICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKworICAgICAg
ICAgICAgLy8gVUJGWCBQYXR0ZXJuOiBkZXN0ID0gKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRo
KSAtIDEpCisgICAgICAgICAgICBpZiAoY2FuQmVJbnRlcm5hbChsZWZ0KSAmJiBsZWZ0LT5vcGNv
ZGUoKSA9PSBaU2hyKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIHNyY1ZhbHVlID0gbGVmdC0+
Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIGxzYlZhbHVlID0gbGVmdC0+Y2hpbGQo
MSk7CisgICAgICAgICAgICAgICAgaWYgKCFpbW0oc3JjVmFsdWUpICYmIGltbShsc2JWYWx1ZSkg
JiYgcmlnaHQtPmhhc0ludCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gY29udGlndW91
c09uZXNGcm9tTFNCID0gWyZdIChpbnQ2NF90IG4pIC0+IGludDY0X3QgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaW50NjRfdCBtYXNrID0gMSwgd2lkdGggPSAxOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCEobiAmIG1hc2spKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDYzOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDw8PSAxOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChuICYgbWFzaykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZG9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3dpZHRoOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB3aWR0aDsKKyAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IGxzYiA9IGxzYlZhbHVlLT5hc0ludCgpOworICAgICAgICAgICAgICAg
ICAgICBpbnQ2NF90IHdpZHRoID0gY29udGlndW91c09uZXNGcm9tTFNCKHJpZ2h0LT5hc0ludCgp
KTsgLy8gRXhhbXBsZSBvZiBSaWdodDogMGIwMDExMTExMQorICAgICAgICAgICAgICAgICAgICBB
aXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKFViZngzMiwgVWJmeDY0LCBzcmNWYWx1
ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wY29kZQorICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgbHNiID49IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIHdpZHRo
ID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgbHNiICsgd2lkdGggPCAoKG9wY29kZSA9
PSBVYmZ4MzIpID8gMzIgOiA2NCkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzVmFsaWRG
b3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6OkltbSwgQXJnOjpUbXApKSAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKHNyY1ZhbHVlKSwgaW1t
KGxzYlZhbHVlKSwgaW1tKHdpZHRoKSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxBbmQzMiwgQW5kNjQsIEFuZERvdWJsZSwg
QW5kRmxvYXQsIENvbW11dGF0aXZlPihsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMKaW5kZXggMTM4MDhkZTgzYmRiMTE3NzAxZjE4YTU2NTU2OTgyZGUzOGQzYjNiOC4u
NTI0MzI1OGQ5Njg3M2U4MWIxYWMyMmVlODhmMDQwMDRkYmY3NWU2OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC0zNTcsNiArMzU3LDEy
IEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4ODY6IEltbSwgQWRkcgogICAgIHg4Njog
SW1tLCBJbmRleAogCithcm02NDogVWJmeDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6
MzIKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IFViZng2NCBVOkc6NjQsIFU6Rzoz
MiwgVTpHOjMyLCBEOkc6NjQKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKwogNjQ6IEFuZDY0IFU6
Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wCiAgICAgYXJtNjQ6IEJpdElt
bTY0LCBUbXAsIFRtcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDY4MDY1M2M2MTY1
YWNlYzY3ZTVlNGI2ZGUyZmRjYTBkYTQxMDk3NzcuLjkxMjhkODE1MmNhNTA0ZWVjN2VkYjAzOTAw
OTlmODE3NTEzOTdiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTEwNzQsNCAr
MTA3NCw3IEBAIHZvaWQgYWRkQ29weVRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVm
UHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+Jik7CiAKIGJvb2wgc2hvdWxkUnVuKGNvbnN0IGNoYXIq
IGZpbHRlciwgY29uc3QgY2hhciogdGVzdE5hbWUpOwogCit2b2lkIHRlc3RVYmZ4NjRQYXR0ZXJu
TWF0Y2goKTsKK3ZvaWQgdGVzdFViZngzMlBhdHRlcm5NYXRjaCgpOworCiAjZW5kaWYgLy8gRU5B
QkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
Mi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDQ4MjM2
MDI3NGMyN2M4N2VhZTA0N2E0NTdmMjI2YmMwNThlNWM4Y2QuLmI2NDk4MzdiYTI3MGY4NjE3MWZi
MTcxZDk5MDg3NzBkNjE5Y2ZlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNw
cApAQCAtMjU0MCw2ICsyNTQwLDgwIEBAIHZvaWQgdGVzdE5lZ0Zsb2F0V2l0aFVzZWxlc3NEb3Vi
bGVDb252ZXJzaW9uKGZsb2F0IGEpCiAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgLWEpKTsKIH0KIAordm9p
ZCB0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKCkKK3sKKyAgICAvLyAoc3JjID4+IGxzYikgJiAoKDEg
PDwgd2lkdGgpIC0gMSkKKyAgICB1aW50NjRfdCBzcmMgPSAweGZmZmZmZmZmZmZmZmZmZmY7Cisg
ICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCAzMCwgMzEsIDMyLCA2MiwgNjMsIDY0
IH07CisKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IGxzYiwgdWludDMyX3Qgd2lkdGgp
IC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHNyY1ZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbHNiKTsKKyAgICAgICAgVmFsdWUqIHdp
ZHRoVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
d2lkdGgpOworICAgICAgICBWYWx1ZSogY29uc3RWYWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29u
c3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgICAgIFZhbHVlKiBjb25zdFZhbHVl
QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKwor
ICAgICAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwg
T3JpZ2luKCksIHNyY1ZhbHVlLCBsc2JWYWx1ZSk7CisgICAgICAgIFZhbHVlKiByaWdodCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwg
Y29uc3RWYWx1ZUEsIHdpZHRoVmFsdWUpLCBjb25zdFZhbHVlQik7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2lu
KCksIGxlZnQsIHJpZ2h0KSk7CisKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVBbmRSdW48dWludDY0
X3Q+KHByb2MsIHNyYyk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBsc2IgOiBpbW1zKSB7Cisg
ICAgICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGxo
cyA9IHRlc3QobHNiLCB3aWR0aCk7CisgICAgICAgICAgICB1aW50NjRfdCByaHMgPSAoKHNyYyA+
PiBsc2IpICYgKCgxVUxMIDw8IHdpZHRoKSAtIDFVTEwpKTsKKyAgICAgICAgICAgIENIRUNLKGxo
cyA9PSByaHMpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RVYmZ4MzJQYXR0ZXJu
TWF0Y2goKQoreworICAgIC8vIChzcmMgPj4gbHNiKSAmICgoMSA8PCB3aWR0aCkgLSAxKQorICAg
IHVpbnQzMl90IHNyYyA9IDB4ZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0g
eyAwLCAxLCAzMCwgMzEsIDMyLCA2MiwgNjMsIDY0IH07CisKKyAgICBhdXRvIHRlc3QgPSBbJl0g
KHVpbnQzMl90IGxzYiwgdWludDMyX3Qgd2lkdGgpIC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICAgICAgVmFsdWUqIHNyY1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbHNiKTsKKyAgICAgICAgVmFsdWUqIHdpZHRoVmFsdWUg
PSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgd2lkdGgpOwor
ICAgICAgICBWYWx1ZSogY29uc3RWYWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgICAgIFZhbHVlKiBjb25zdFZhbHVlQiA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBW
YWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCks
IHNyY1ZhbHVlLCBsc2JWYWx1ZSk7CisgICAgICAgIFZhbHVlKiByaWdodCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgY29uc3RWYWx1
ZUEsIHdpZHRoVmFsdWUpLCBjb25zdFZhbHVlQik7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGxlZnQs
IHJpZ2h0KSk7CisKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVBbmRSdW48dWludDMyX3Q+KHByb2Ms
IHNyYyk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBsc2IgOiBpbW1zKSB7CisgICAgICAgIGZv
ciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGxocyA9IHRlc3Qo
bHNiLCB3aWR0aCk7CisgICAgICAgICAgICB1aW50MzJfdCByaHMgPSAoKHNyYyA+PiBsc2IpICYg
KCgxVSA8PCB3aWR0aCkgLSAxVSkpOworICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RCaXRBbmRBcmdzKGludDY0X3Qg
YSwgaW50NjRfdCBiKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMzM1NCw2ICszNDI4LDkg
QEAgc3RhdGljIHZvaWQgdGVzdEJpdE9ySW1tQXJnMzIoaW50IGEsIGludCBiKQogCiB2b2lkIGFk
ZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9p
ZCgpPj4+JiB0YXNrcykKIHsKKyAgICBSVU4odGVzdFViZng2NFBhdHRlcm5NYXRjaCgpKTsKKyAg
ICBSVU4odGVzdFViZngzMlBhdHRlcm5NYXRjaCgpKTsKKwogICAgIFJVTih0ZXN0Qml0QW5kQXJn
cyg0MywgNDMpKTsKICAgICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMsIDApKTsKICAgICBSVU4odGVz
dEJpdEFuZEFyZ3MoMTAsIDMpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431603</attachid>
            <date>2021-06-16 14:25:44 -0700</date>
            <delta_ts>2021-06-16 17:42:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226984-20210616162543.patch</filename>
            <type>text/plain</type>
            <size>12848</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MGViZmFiYjVlZjU2NTlhZWU4YjI4ZTM1YjBiNTViYjBlMWM5OGQ0Li5mYzAzNmYyZWE2ZGIxNTY2
NjVhYjBjNGRlYmMyZGM1Zjk3MTk1MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMS0wNi0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBVQkZYIHN1cHBvcnRlZCBieSBBUk02NAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZ4MzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZ4NjQpOgorICAgICAgICAqIGFzc2VtYmxl
ci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RVYmZ4MzIpOgorICAgICAgICAoSlND
Ojp0ZXN0VWJmeDY0KToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAq
IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAg
ICAgKiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKToK
KyAgICAgICAgKHRlc3RVYmZ4MzJQYXR0ZXJuTWF0Y2gpOgorICAgICAgICAoYWRkQml0VGVzdHMp
OgorCiAyMDIxLTA2LTE0ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgQWlyIG9wY29kZSBzdWIzMi82NChSZWcsIEltbSwgUmVnKSBmb3JtIGZvciBB
Uk02NCBhbmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGY4
NmFlYzFjNTQwMDZlZWQxZDVjNWRkM2Q1NmQ4ZDAwM2ZmNzYxMmIuLjI2YjllMjBlZWY4YjJhNjA3
YmEyOTZkYjU4YmFmNTNlOGUyMDI4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zOTAsNiArMzkwLDE2IEBA
IHB1YmxpYzoKICAgICAgICAgYW5kMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCB1YmZ4MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0
ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudWJmeDwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAg
fQorCisgICAgdm9pZCB1YmZ4NjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRy
dXN0ZWRJbW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIudWJmeDw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kXzw2ND4oZGVz
dCwgc3JjMSwgc3JjMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1h
c20uY3BwCmluZGV4IGJhNTEwMmEyYmI5OTlhZDU3NDhmNjg0NzVkNmM4YzQ1ZDUwYTIxYjYuLjE4
NjA4MWRlMzU4ODkwNzYyNDhiYWI5MjAzYmNmZjdkNjkyMmFmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0xMDQyLDYgKzEwNDIsNTQgQEAg
dm9pZCB0ZXN0U3ViNjRBcmdJbW02NCgpCiAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
NjRfdD4oc3ViLCB2YWx1ZSksIHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlIC0gaW1tZWRpYXRl
KSk7CiAgICAgfQogfQorCit2b2lkIHRlc3RVYmZ4MzIoKQoreworICAgIHVpbnQzMl90IHNyYyA9
IDB4ZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCAzMCwgMzEs
IDMyLCA2MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAg
Zm9yIChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdp
ZHRoID4gMCAmJiBsc2IgKyB3aWR0aCA8IDMyKSB7CisgICAgICAgICAgICAgICAgYXV0byB1YmZ4
MzIgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQu
dWJmeDMyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBl
bWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVp
bnQzMl90Pih1YmZ4MzIsIHNyYyksICgoc3JjID4+IGxzYikgJiAoKDFVIDw8IHdpZHRoKSAtIDFV
KSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RVYmZ4
NjQoKQoreworICAgIHVpbnQ2NF90IHNyYyA9IDB4ZmZmZmZmZmZmZmZmZmZmZjsKKyAgICBWZWN0
b3I8dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDMwLCAzMSwgMzIsIDYyLCA2MywgNjQgfTsKKyAg
ICBmb3IgKGF1dG8gbHNiIDogaW1tcykgeworICAgICAgICBmb3IgKGF1dG8gd2lkdGggOiBpbW1z
KSB7CisgICAgICAgICAgICBpZiAobHNiID49IDAgJiYgd2lkdGggPiAwICYmIGxzYiArIHdpZHRo
IDwgMzIpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHViZng2NCA9IGNvbXBpbGUoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1
ZShqaXQpOworCisgICAgICAgICAgICAgICAgICAgIGppdC51YmZ4NjQoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIobHNiKSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMih3aWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGpp
dCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KHViZng2NCwgc3JjKSwg
KChzcmMgPj4gbHNiKSAmICgoMUxMVSA8PCB3aWR0aCkgLSAxTExVKSkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQogI2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpCkBAIC0yNzY5LDYgKzI4MTcsOCBAQCB2b2lkIHJ1bihjb25zdCBj
aGFyKiBmaWx0ZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBSVU4o
dGVzdFN1YjY0QXJnSW1tMzIoKSk7CiAgICAgUlVOKHRlc3RTdWI2NEltbTY0KCkpOwogICAgIFJV
Tih0ZXN0U3ViNjRBcmdJbW02NCgpKTsKKyAgICBSVU4odGVzdFViZngzMigpKTsKKyAgICBSVU4o
dGVzdFViZng2NCgpKTsKICNlbmRpZgogCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRl
eCA4MzNkMTJlNDY1NzY2Yzc3MjJmYTI0ZWRiMjNmZmIwMjQ4OGM0YmJjLi41MjE4YjFiYzA1OGNk
MGJkNjIwNTE4ZGI0MGJiNjE2MDUyZWVjYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcApAQCAtMjY5NCwyMyArMjY5NCw2MiBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBCaXRBbmQ6IHsKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5j
aGlsZCgxKS0+aXNJbnQoMHhmZikpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9F
eHRlbmQ4VG8zMiwgWmVyb0V4dGVuZDhUbzMyPihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICBWYWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUq
IHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKKyAgICAgICAgICAgIGlmIChyaWdodC0+aXNJ
bnQoMHhmZikpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9FeHRlbmQ4VG8zMiwg
WmVyb0V4dGVuZDhUbzMyPihsZWZ0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+
aXNJbnQoMHhmZmZmKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8WmVyb0V4dGVuZDE2
VG8zMiwgWmVyb0V4dGVuZDE2VG8zMj4obV92YWx1ZS0+Y2hpbGQoMCkpOworCisgICAgICAgICAg
ICBpZiAocmlnaHQtPmlzSW50KDB4ZmZmZikpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRVbk9w
PFplcm9FeHRlbmQxNlRvMzIsIFplcm9FeHRlbmQxNlRvMzI+KGxlZnQpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDEpLT5pc0ludDY0KDB4ZmZmZmZmZmYpIHx8IG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludDMy
KDB4ZmZmZmZmZmYpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxNb3ZlMzIsIE1vdmUz
Mj4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgaWYgKHJpZ2h0LT5pc0ludDY0KDB4
ZmZmZmZmZmYpIHx8IHJpZ2h0LT5pc0ludDMyKDB4ZmZmZmZmZmYpKSB7CisgICAgICAgICAgICAg
ICAgYXBwZW5kVW5PcDxNb3ZlMzIsIE1vdmUzMj4obGVmdCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBhcHBlbmRCaW5P
cDxBbmQzMiwgQW5kNjQsIEFuZERvdWJsZSwgQW5kRmxvYXQsIENvbW11dGF0aXZlPigKLSAgICAg
ICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworCisgICAg
ICAgICAgICAvLyBVQkZYIFBhdHRlcm46IGRlc3QgPSAoc3JjID4+IGxzYikgJiAoKDEgPDwgd2lk
dGgpIC0gMSkKKyAgICAgICAgICAgIGlmIChjYW5CZUludGVybmFsKGxlZnQpICYmIGxlZnQtPm9w
Y29kZSgpID09IFpTaHIpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogc3JjVmFsdWUgPSBsZWZ0
LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSBsZWZ0LT5jaGls
ZCgxKTsKKyAgICAgICAgICAgICAgICBpZiAoIWltbShzcmNWYWx1ZSkgJiYgaW1tKGxzYlZhbHVl
KSAmJiByaWdodC0+aGFzSW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBjb250aWd1
b3VzT25lc0Zyb21MU0IgPSBbJl0gKGludDY0X3QgbikgLT4gaW50NjRfdCB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90IG1hc2sgPSAxLCB3aWR0aCA9IDE7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIShuICYgbWFzaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjM7ICsraSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgPDw9IDE7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG4gJiBtYXNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChkb25lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrd2lkdGg7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
bmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHdpZHRoOworICAgICAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICAgICAgICAgIGludDY0X3QgbHNiID0gbHNiVmFsdWUtPmFzSW50KCk7CisgICAgICAgICAgICAg
ICAgICAgIGludDY0X3Qgd2lkdGggPSBjb250aWd1b3VzT25lc0Zyb21MU0IocmlnaHQtPmFzSW50
KCkpOyAvLyBFeGFtcGxlIG9mIFJpZ2h0OiAwYjAwMTExMTExCisgICAgICAgICAgICAgICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoVWJmeDMyLCBVYmZ4NjQsIHNyY1Zh
bHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob3Bjb2RlCisgICAgICAgICAg
ICAgICAgICAgICAgICAmJiBsc2IgPj0gMAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgd2lk
dGggPiAwCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBsc2IgKyB3aWR0aCA8ICgob3Bjb2Rl
ID09IFViZngzMikgPyAzMiA6IDY0KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNWYWxp
ZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6SW1tLCBBcmc6OlRtcCkpICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoc3JjVmFsdWUpLCBp
bW0obHNiVmFsdWUpLCBpbW0od2lkdGgpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobGVmdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQW5kRG91Ymxl
LCBBbmRGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNv
ZGUub3Bjb2RlcwppbmRleCAxMzgwOGRlODNiZGIxMTc3MDFmMThhNTY1NTY5ODJkZTM4ZDNiM2I4
Li41MjQzMjU4ZDk2ODczZTgxYjFhYzIyZWU4OGYwNDAwNGRiZjc1ZTY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTM1Nyw2ICszNTcs
MTIgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIHg4NjogSW1tLCBBZGRyCiAgICAgeDg2
OiBJbW0sIEluZGV4CiAKK2FybTY0OiBVYmZ4MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6
RzozMgorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogVWJmeDY0IFU6Rzo2NCwgVTpH
OjMyLCBVOkc6MzIsIEQ6Rzo2NAorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCiA2NDogQW5kNjQg
VTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKICAgICBhcm02NDogQml0
SW1tNjQsIFRtcCwgVG1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggNjgwNjUzYzYx
NjVhY2VjNjdlNWU0YjZkZTJmZGNhMGRhNDEwOTc3Ny4uOTEyOGQ4MTUyY2E1MDRlZWM3ZWRiMDM5
MDA5OWY4MTc1MTM5N2JjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtMTA3NCw0
ICsxMDc0LDcgQEAgdm9pZCBhZGRDb3B5VGVzdHMoY29uc3QgY2hhciogZmlsdGVyLCBEZXF1ZTxS
ZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mKTsKIAogYm9vbCBzaG91bGRSdW4oY29uc3QgY2hh
ciogZmlsdGVyLCBjb25zdCBjaGFyKiB0ZXN0TmFtZSk7CiAKK3ZvaWQgdGVzdFViZng2NFBhdHRl
cm5NYXRjaCgpOwordm9pZCB0ZXN0VWJmeDMyUGF0dGVybk1hdGNoKCk7CisKICNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
M18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggNDgy
MzYwMjc0YzI3Yzg3ZWFlMDQ3YTQ1N2YyMjZiYzA1OGU1YzhjZC4uYjY0OTgzN2JhMjcwZjg2MTcx
ZmIxNzFkOTkwODc3MGQ2MTljZmUwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIu
Y3BwCkBAIC0yNTQwLDYgKzI1NDAsODAgQEAgdm9pZCB0ZXN0TmVnRmxvYXRXaXRoVXNlbGVzc0Rv
dWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCAtYSkpOwogfQogCit2
b2lkIHRlc3RVYmZ4NjRQYXR0ZXJuTWF0Y2goKQoreworICAgIC8vIChzcmMgPj4gbHNiKSAmICgo
MSA8PCB3aWR0aCkgLSAxKQorICAgIHVpbnQ2NF90IHNyYyA9IDB4ZmZmZmZmZmZmZmZmZmZmZjsK
KyAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7IDAsIDEsIDMwLCAzMSwgMzIsIDYyLCA2Mywg
NjQgfTsKKworICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDMyX3QgbHNiLCB1aW50MzJfdCB3aWR0
aCkgLT4gdWludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogc3JjVmFsdWUg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAgICAgICBWYWx1ZSog
d2lkdGhWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB3aWR0aCk7CisgICAgICAgIFZhbHVlKiBjb25zdFZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0VmFs
dWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOwor
CisgICAgICAgIFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hy
LCBPcmlnaW4oKSwgc3JjVmFsdWUsIGxzYlZhbHVlKTsKKyAgICAgICAgVmFsdWUqIHJpZ2h0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigp
LCBjb25zdFZhbHVlQSwgd2lkdGhWYWx1ZSksIGNvbnN0VmFsdWVCKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmln
aW4oKSwgbGVmdCwgcmlnaHQpKTsKKworICAgICAgICByZXR1cm4gY29tcGlsZUFuZFJ1bjx1aW50
NjRfdD4ocHJvYywgc3JjKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsK
KyAgICAgICAgZm9yIChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgdWludDY0X3Qg
bGhzID0gdGVzdChsc2IsIHdpZHRoKTsKKyAgICAgICAgICAgIHVpbnQ2NF90IHJocyA9ICgoc3Jj
ID4+IGxzYikgJiAoKDFVTEwgPDwgd2lkdGgpIC0gMVVMTCkpOworICAgICAgICAgICAgQ0hFQ0so
bGhzID09IHJocyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFViZngzMlBhdHRl
cm5NYXRjaCgpCit7CisgICAgLy8gKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRoKSAtIDEpCisg
ICAgdWludDMyX3Qgc3JjID0gMHhmZmZmZmZmZjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMg
PSB7IDAsIDEsIDMwLCAzMSwgMzIsIDYyLCA2MywgNjQgfTsKKworICAgIGF1dG8gdGVzdCA9IFsm
XSAodWludDMyX3QgbHNiLCB1aW50MzJfdCB3aWR0aCkgLT4gdWludDMyX3QgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKworICAgICAgICBWYWx1ZSogc3JjVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAgICAgICBWYWx1ZSogd2lkdGhWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB3aWR0aCk7
CisgICAgICAgIFZhbHVlKiBjb25zdFZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0VmFsdWVCID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworCisgICAgICAg
IFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4o
KSwgc3JjVmFsdWUsIGxzYlZhbHVlKTsKKyAgICAgICAgVmFsdWUqIHJpZ2h0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBjb25zdFZh
bHVlQSwgd2lkdGhWYWx1ZSksIGNvbnN0VmFsdWVCKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgbGVm
dCwgcmlnaHQpKTsKKworICAgICAgICByZXR1cm4gY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJv
Yywgc3JjKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAg
Zm9yIChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgdWludDMyX3QgbGhzID0gdGVz
dChsc2IsIHdpZHRoKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHJocyA9ICgoc3JjID4+IGxzYikg
JiAoKDFVIDw8IHdpZHRoKSAtIDFVKSk7CisgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwogc3RhdGljIHZvaWQgdGVzdEJpdEFuZEFyZ3MoaW50NjRf
dCBhLCBpbnQ2NF90IGIpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0zMzU0LDYgKzM0Mjgs
OSBAQCBzdGF0aWMgdm9pZCB0ZXN0Qml0T3JJbW1BcmczMihpbnQgYSwgaW50IGIpCiAKIHZvaWQg
YWRkQml0VGVzdHMoY29uc3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2
b2lkKCk+Pj4mIHRhc2tzKQogeworICAgIFJVTih0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKCkpOwor
ICAgIFJVTih0ZXN0VWJmeDMyUGF0dGVybk1hdGNoKCkpOworCiAgICAgUlVOKHRlc3RCaXRBbmRB
cmdzKDQzLCA0MykpOwogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgMCkpOwogICAgIFJVTih0
ZXN0Qml0QW5kQXJncygxMCwgMykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431625</attachid>
            <date>2021-06-16 17:42:25 -0700</date>
            <delta_ts>2021-06-16 21:36:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226984-20210616194224.patch</filename>
            <type>text/plain</type>
            <size>17078</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MGViZmFiYjVlZjU2NTlhZWU4YjI4ZTM1YjBiNTViYjBlMWM5OGQ0Li4wZTRhZjY1NGQ3NjhhYTMz
NWY1MmUzNmFhZGExZjI3Y2IwMmFkNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMS0wNi0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBVQkZYIHN1cHBvcnRlZCBieSBBUk02NAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVUJGWCwgc3VwcG9ydGVkIGJ5IEFSTTY0LCBjb3Bp
ZXMgYWRqYWNlbnQgYml0cyBmcm9tIHRoZSBzb3VyY2UgcmVnaXN0ZXIgaW50byAKKyAgICAgICAg
dGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgYSBkZXN0aW5hdGlvbiByZWdpc3RlciBpbiB6
ZXJvIGV4dGVuc2lvbi4gVGhlIAorICAgICAgICBpbnN0cnVjdGlvbiBzZWxlY3RvciBjYW4gdXRp
bGl6ZSB0aGlzIHRvIGxvd2VyaW5nIGNlcnRhaW4gcGF0dGVybnMgaW4gQjMgSVIgCisgICAgICAg
IGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgdWJmeCBkZXN0LCBz
cmMsIGxzYiwgd2lkdGgKKyAgICAgICAgICAgdG1wLCB0bXAsIGltbSwgaW1tCisKKyAgICAgICAg
VGhpcyBpcyBlcXVpdmFsZW50IHRvICJkZXN0ID0gKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRo
KSAtIDEpIi4gU2luY2Ugd2FzbSAKKyAgICAgICAgaW50cm9kdWNlcyBjb25zdGFudCBmb2xkaW5n
LCB0aGVuIHRoZSBwYXR0ZXJuIHdvdWxkIGJlOgorCisgICAgICAgIGRlc3QgPSAoc3JjID4+IGxz
YikgJiBtYXNrCisKKyAgICAgICAgd2hlcmUgdGhlIG1hc2sgc2hvdWxkIGhhdmUgYSBiaW5hcnkg
Zm9ybWF0IGluIGNvbnRpZ3VvdXMgb25lcyBzdGFydGluZyBmcm9tIAorICAgICAgICB0aGUgbGVh
c3Qgc2lnbmlmaWNhbnQgYml0LiBGb3IgZXhhbXBsZToKKworICAgICAgICAwYjAwMTExMTExCisK
KyAgICAgICAgVG8gbWFrZSB0aGUgcGF0dGVybiBtYXRjaGluZyBpbiBpbnN0cnVjdGlvbiBzZWxl
Y3Rpb24gYmVuZWZpY2lhbCB0byBKSVQsIHRoZXNlIAorICAgICAgICBjb25zdHJhaW50cyBzaG91
bGQgYmUgaW50cm9kdWNlZDoKKworICAgICAgICAxLiBsc2IgPj0gMCAKKyAgICAgICAgMi4gd2lk
dGggPiAwCisgICAgICAgIDMuIGxzYiArIHdpZHRoIDwgYml0IGZpZWxkIGxpbWl0ICgzMiBvciA2
NCkKKworICAgICAgICBHaXZlbjoKKyAgICAgICAgLy8gQjMgSVIKKyAgICAgICAgSW50IEAwID0g
QXJndW1lbnRSZWcoJTApCisgICAgICAgIEludCBAMSA9IGxzYgorICAgICAgICBJbnQgQDIgPSAw
YjAwMTEKKyAgICAgICAgSW50IEAzID0gWlNocihAMCwgQDEpCisgICAgICAgIEludCBANCA9IEJp
dEFuZChAMywgQDIpICAKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkgICAg
ICAKKworICAgICAgICB3L28gVUJGWCBQYXR0ZXJuOgorICAgICAgICAvLyBPbGQgb3B0aW1pemVk
IEFJUgorICAgICAgICBVcnNoaWZ0ICV4MCwgbHNiLCAleDAsIEAzCisgICAgICAgIEFuZCAgMGIw
MDExLCAleDAsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAleDAsICAgICAgICAgICBANQorCisg
ICAgICAgIHcvIFVCRlggUGF0dGVybjoKKyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAg
ICAgICAgVWJmeCAleDAsIGxzYiwgMiwgJXgwLCBANAorICAgICAgICBSZXQgICV4MCwgICAgICAg
ICAgICAgIEA1CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZ4MzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZ4NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0
bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RVYmZ4MzIpOgorICAgICAgICAoSlNDOjp0ZXN0
VWJmeDY0KToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBi
My90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKToKKyAgICAg
ICAgKHRlc3RVYmZ4MzJQYXR0ZXJuTWF0Y2gpOgorICAgICAgICAoYWRkQml0VGVzdHMpOgorCiAy
MDIxLTA2LTE0ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgQWlyIG9wY29kZSBzdWIzMi82NChSZWcsIEltbSwgUmVnKSBmb3JtIGZvciBBUk02NCBh
bmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGY4NmFlYzFj
NTQwMDZlZWQxZDVjNWRkM2Q1NmQ4ZDAwM2ZmNzYxMmIuLjI2YjllMjBlZWY4YjJhNjA3YmEyOTZk
YjU4YmFmNTNlOGUyMDI4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zOTAsNiArMzkwLDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgYW5kMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAg
dm9pZCB1YmZ4MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0z
MiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudWJm
eDwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisg
ICAgdm9pZCB1YmZ4NjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJ
bW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
dWJmeDw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQor
CiAgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kXzw2ND4oZGVzdCwgc3Jj
MSwgc3JjMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CmluZGV4IGJhNTEwMmEyYmI5OTlhZDU3NDhmNjg0NzVkNmM4YzQ1ZDUwYTIxYjYuLjNhNWU1ZDk5
NDc0NmQ2NzgxM2Q0MGIzNzQwNDc5YzhmYmYzMTdiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0xMDQyLDYgKzEwNDIsNTQgQEAgdm9pZCB0
ZXN0U3ViNjRBcmdJbW02NCgpCiAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4o
c3ViLCB2YWx1ZSksIHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlIC0gaW1tZWRpYXRlKSk7CiAg
ICAgfQogfQorCit2b2lkIHRlc3RVYmZ4MzIoKQoreworICAgIHVpbnQzMl90IHNyYyA9IDB4ZmZm
ZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCAzMCwgMzEsIDMyLCA2
MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAgZm9yIChh
dXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdpZHRoID4g
MCAmJiBsc2IgKyB3aWR0aCA8IDMyKSB7CisgICAgICAgICAgICAgICAgYXV0byB1YmZ4MzIgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQudWJmeDMy
KEdQUkluZm86OnJldHVyblZhbHVlR1BSLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQzMl90
Pih1YmZ4MzIsIHNyYyksICgoc3JjID4+IGxzYikgJiAoKDFVIDw8IHdpZHRoKSAtIDFVKSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RVYmZ4NjQoKQor
eworICAgIHVpbnQ2NF90IHNyYyA9IDB4ZmZmZmZmZmZmZmZmZmZmZjsKKyAgICBWZWN0b3I8dWlu
dDMyX3Q+IGltbXMgPSB7IDAsIDEsIDMwLCAzMSwgMzIsIDYyLCA2MywgNjQgfTsKKyAgICBmb3Ig
KGF1dG8gbHNiIDogaW1tcykgeworICAgICAgICBmb3IgKGF1dG8gd2lkdGggOiBpbW1zKSB7Cisg
ICAgICAgICAgICBpZiAobHNiID49IDAgJiYgd2lkdGggPiAwICYmIGxzYiArIHdpZHRoIDwgMzIp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIHViZng2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQp
OworCisgICAgICAgICAgICAgICAgICAgIGppdC51YmZ4NjQoR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bHNiKSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mih3aWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KHViZng2NCwgc3JjKSwgKChzcmMg
Pj4gbHNiKSAmICgoMVVMTCA8PCB3aWR0aCkgLSAxVUxMKSkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQogI2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpCkBAIC0yNzY5LDYgKzI4MTcsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBm
aWx0ZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBSVU4odGVzdFN1
YjY0QXJnSW1tMzIoKSk7CiAgICAgUlVOKHRlc3RTdWI2NEltbTY0KCkpOwogICAgIFJVTih0ZXN0
U3ViNjRBcmdJbW02NCgpKTsKKyAgICBSVU4odGVzdFViZngzMigpKTsKKyAgICBSVU4odGVzdFVi
Zng2NCgpKTsKICNlbmRpZgogCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFS
TTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA4MzNk
MTJlNDY1NzY2Yzc3MjJmYTI0ZWRiMjNmZmIwMjQ4OGM0YmJjLi41MjE4YjFiYzA1OGNkMGJkNjIw
NTE4ZGI0MGJiNjE2MDUyZWVjYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcApAQCAtMjY5NCwyMyArMjY5NCw2MiBAQCBwcml2YXRlOgogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBCaXRBbmQ6IHsKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgx
KS0+aXNJbnQoMHhmZikpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9FeHRlbmQ4
VG8zMiwgWmVyb0V4dGVuZDhUbzMyPihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICBW
YWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUqIHJpZ2h0
ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKKyAgICAgICAgICAgIGlmIChyaWdodC0+aXNJbnQoMHhm
ZikpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9FeHRlbmQ4VG8zMiwgWmVyb0V4
dGVuZDhUbzMyPihsZWZ0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQo
MHhmZmZmKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8WmVyb0V4dGVuZDE2VG8zMiwg
WmVyb0V4dGVuZDE2VG8zMj4obV92YWx1ZS0+Y2hpbGQoMCkpOworCisgICAgICAgICAgICBpZiAo
cmlnaHQtPmlzSW50KDB4ZmZmZikpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9F
eHRlbmQxNlRvMzIsIFplcm9FeHRlbmQxNlRvMzI+KGxlZnQpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEp
LT5pc0ludDY0KDB4ZmZmZmZmZmYpIHx8IG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludDMyKDB4ZmZm
ZmZmZmYpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxNb3ZlMzIsIE1vdmUzMj4obV92
YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgaWYgKHJpZ2h0LT5pc0ludDY0KDB4ZmZmZmZm
ZmYpIHx8IHJpZ2h0LT5pc0ludDMyKDB4ZmZmZmZmZmYpKSB7CisgICAgICAgICAgICAgICAgYXBw
ZW5kVW5PcDxNb3ZlMzIsIE1vdmUzMj4obGVmdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBhcHBlbmRCaW5PcDxBbmQz
MiwgQW5kNjQsIEFuZERvdWJsZSwgQW5kRmxvYXQsIENvbW11dGF0aXZlPigKLSAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworCisgICAgICAgICAg
ICAvLyBVQkZYIFBhdHRlcm46IGRlc3QgPSAoc3JjID4+IGxzYikgJiAoKDEgPDwgd2lkdGgpIC0g
MSkKKyAgICAgICAgICAgIGlmIChjYW5CZUludGVybmFsKGxlZnQpICYmIGxlZnQtPm9wY29kZSgp
ID09IFpTaHIpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogc3JjVmFsdWUgPSBsZWZ0LT5jaGls
ZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSBsZWZ0LT5jaGlsZCgxKTsK
KyAgICAgICAgICAgICAgICBpZiAoIWltbShzcmNWYWx1ZSkgJiYgaW1tKGxzYlZhbHVlKSAmJiBy
aWdodC0+aGFzSW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBjb250aWd1b3VzT25l
c0Zyb21MU0IgPSBbJl0gKGludDY0X3QgbikgLT4gaW50NjRfdCB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQ2NF90IG1hc2sgPSAxLCB3aWR0aCA9IDE7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIShuICYgbWFzaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjM7ICsraSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hc2sgPDw9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG4gJiBtYXNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChk
b25lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrd2lkdGg7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHdpZHRoOworICAgICAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAg
ICAgIGludDY0X3QgbHNiID0gbHNiVmFsdWUtPmFzSW50KCk7CisgICAgICAgICAgICAgICAgICAg
IGludDY0X3Qgd2lkdGggPSBjb250aWd1b3VzT25lc0Zyb21MU0IocmlnaHQtPmFzSW50KCkpOyAv
LyBFeGFtcGxlIG9mIFJpZ2h0OiAwYjAwMTExMTExCisgICAgICAgICAgICAgICAgICAgIEFpcjo6
T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoVWJmeDMyLCBVYmZ4NjQsIHNyY1ZhbHVlLT50
eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAob3Bjb2RlCisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiBsc2IgPj0gMAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgd2lkdGggPiAw
CisgICAgICAgICAgICAgICAgICAgICAgICAmJiBsc2IgKyB3aWR0aCA8ICgob3Bjb2RlID09IFVi
ZngzMikgPyAzMiA6IDY0KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNWYWxpZEZvcm0o
b3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6SW1tLCBBcmc6OlRtcCkpICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoc3JjVmFsdWUpLCBpbW0obHNi
VmFsdWUpLCBpbW0od2lkdGgpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWl0SW50ZXJuYWwobGVmdCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQW5kRG91YmxlLCBBbmRG
bG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9w
Y29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bj
b2RlcwppbmRleCAxMzgwOGRlODNiZGIxMTc3MDFmMThhNTY1NTY5ODJkZTM4ZDNiM2I4Li41MjQz
MjU4ZDk2ODczZTgxYjFhYzIyZWU4OGYwNDAwNGRiZjc1ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTM1Nyw2ICszNTcsMTIgQEAg
QW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIHg4NjogSW1tLCBBZGRyCiAgICAgeDg2OiBJbW0s
IEluZGV4CiAKK2FybTY0OiBVYmZ4MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgor
ICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogVWJmeDY0IFU6Rzo2NCwgVTpHOjMyLCBV
Okc6MzIsIEQ6Rzo2NAorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCiA2NDogQW5kNjQgVTpHOjY0
LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKICAgICBhcm02NDogQml0SW1tNjQs
IFRtcCwgVG1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggNjgwNjUzYzYxNjVhY2Vj
NjdlNWU0YjZkZTJmZGNhMGRhNDEwOTc3Ny4uNDNhNzM0N2U4ZTU0OTdiODk3MjZiZTI5OTE2OTI0
YWEwMWFjMGQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtNDE2LDYgKzQxNiwx
MCBAQCBpbmxpbmUgZG91YmxlIG1vZGVsTG9hZDxkb3VibGUsIGRvdWJsZT4oZG91YmxlIHZhbHVl
KSB7IHJldHVybiB2YWx1ZTsgfQogCiB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpOwogdm9p
ZCB0ZXN0Qml0QW5kU0V4dDMyKGludDMyX3QgdmFsdWUsIGludDY0X3QgbWFzayk7Cit2b2lkIHRl
c3RVYmZ4MzIoKTsKK3ZvaWQgdGVzdFViZngzMlBhdHRlcm5NYXRjaCgpOwordm9pZCB0ZXN0VWJm
eDY0KCk7Cit2b2lkIHRlc3RVYmZ4NjRQYXR0ZXJuTWF0Y2goKTsKIHZvaWQgdGVzdEJhc2ljU2Vs
ZWN0KCk7CiB2b2lkIHRlc3RTZWxlY3RUZXN0KCk7CiB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRG91
YmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAppbmRleCA0ODIzNjAyNzRj
MjdjODdlYWUwNDdhNDU3ZjIyNmJjMDU4ZTVjOGNkLi5iMTdlYWFlYTM4MGU5ODE4YjFkMzUxNmY4
ODA2MWM4ZGFhNjFjZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKQEAg
LTI1NDAsNiArMjU0MCwxNTQgQEAgdm9pZCB0ZXN0TmVnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNv
bnZlcnNpb24oZmxvYXQgYSkKICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZs
b2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCAtYSkpOwogfQogCit2b2lkIHRl
c3RVYmZ4MzIoKQoreworICAgIC8vIChzcmMgPj4gbHNiKSAmIG1hc2sKKyAgICB1aW50MzJfdCBz
cmMgPSAweGZmZmZmZmZmOworICAgIFZlY3Rvcjx1aW50MzJfdD4gbHNicyA9IHsgMCwgMTUsIDMw
IH07CisgICAgVmVjdG9yPHVpbnQzMl90PiB3aWR0aHMgPSB7IDMwLCAxNiwgMSB9OworCisgICAg
YXV0byB0ZXN0ID0gWyZdICh1aW50MzJfdCBsc2IsIHVpbnQzMl90IG1hc2spIC0+IHVpbnQzMl90
IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHNyY1ZhbHVlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbHNiKTsKKyAgICAgICAgVmFs
dWUqIG1hc2tWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBtYXNrKTsKKworICAgICAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIHNyY1ZhbHVlLCBsc2JWYWx1ZSk7CisgICAgICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwg
T3JpZ2luKCksIGxlZnQsIG1hc2tWYWx1ZSkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNv
bXBpbGVBbmRSdW48dWludDMyX3Q+KHByb2MsIHNyYyk7CisgICAgfTsKKworICAgIGF1dG8gZ2Vu
ZXJhdGVNYXNrID0gWyZdICh1aW50MzJfdCB3aWR0aCkgLT4gdWludDMyX3QgeworICAgICAgICBy
ZXR1cm4gKDFVIDw8IHdpZHRoKSAtIDFVOworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxzYnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdWludDMyX3QgbHNiID0gbHNicy5h
dChpKTsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IGdlbmVyYXRlTWFzayh3aWR0aHMuYXQoaSkp
OworICAgICAgICB1aW50MzJfdCBsaHMgPSB0ZXN0KGxzYiwgbWFzayk7CisgICAgICAgIHVpbnQz
Ml90IHJocyA9ICgoc3JjID4+IGxzYikgJiBtYXNrKTsKKyAgICAgICAgQ0hFQ0sobGhzID09IHJo
cyk7CisgICAgfQorfQorCit2b2lkIHRlc3RVYmZ4MzJQYXR0ZXJuTWF0Y2goKQoreworICAgIC8v
IChzcmMgPj4gbHNiKSAmICgoMSA8PCB3aWR0aCkgLSAxKQorICAgIHVpbnQzMl90IHNyYyA9IDB4
ZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCAzMCwgMzEsIDMy
LCA2MiwgNjMsIDY0IH07CisKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IGxzYiwgdWlu
dDMyX3Qgd2lkdGgpIC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUq
IHNyY1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBW
YWx1ZSogbHNiVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgbHNiKTsKKyAgICAgICAgVmFsdWUqIHdpZHRoVmFsdWUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgd2lkdGgpOworICAgICAgICBWYWx1ZSogY29u
c3RWYWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MSk7CisgICAgICAgIFZhbHVlKiBjb25zdFZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbGVmdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIHNyY1ZhbHVlLCBsc2JWYWx1
ZSk7CisgICAgICAgIFZhbHVlKiByaWdodCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgY29uc3RWYWx1ZUEsIHdpZHRoVmFsdWUpLCBj
b25zdFZhbHVlQik7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGxlZnQsIHJpZ2h0KSk7CisKKyAgICAg
ICAgcmV0dXJuIGNvbXBpbGVBbmRSdW48dWludDMyX3Q+KHByb2MsIHNyYyk7CisgICAgfTsKKwor
ICAgIGZvciAoYXV0byBsc2IgOiBpbW1zKSB7CisgICAgICAgIGZvciAoYXV0byB3aWR0aCA6IGlt
bXMpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGxocyA9IHRlc3QobHNiLCB3aWR0aCk7CisgICAg
ICAgICAgICB1aW50MzJfdCByaHMgPSAoKHNyYyA+PiBsc2IpICYgKCgxVSA8PCB3aWR0aCkgLSAx
VSkpOworICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgdGVzdFViZng2NCgpCit7CisgICAgLy8gKHNyYyA+PiBsc2IpICYgbWFzaworICAg
IHVpbnQ2NF90IHNyYyA9IDB4ZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBsc2JzID0g
eyAwLCAzMSwgNjIgfTsKKyAgICBWZWN0b3I8dWludDY0X3Q+IHdpZHRocyA9IHsgNjMsIDMyLCAx
IH07CisKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQ2NF90IGxzYiwgdWludDY0X3QgbWFzaykg
LT4gdWludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogc3JjVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAgICAgICBWYWx1ZSogbWFz
a1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1h
c2spOworCisgICAgICAgIFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBaU2hyLCBPcmlnaW4oKSwgc3JjVmFsdWUsIGxzYlZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4o
KSwgbGVmdCwgbWFza1ZhbHVlKSk7CisKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVBbmRSdW48dWlu
dDY0X3Q+KHByb2MsIHNyYyk7CisgICAgfTsKKworICAgIGF1dG8gZ2VuZXJhdGVNYXNrID0gWyZd
ICh1aW50NjRfdCB3aWR0aCkgLT4gdWludDY0X3QgeworICAgICAgICByZXR1cm4gKDFVTEwgPDwg
d2lkdGgpIC0gMVVMTDsKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsc2Jz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIHVpbnQ2NF90IGxzYiA9IGxzYnMuYXQoaSk7CisgICAg
ICAgIHVpbnQ2NF90IG1hc2sgPSBnZW5lcmF0ZU1hc2sod2lkdGhzLmF0KGkpKTsKKyAgICAgICAg
dWludDY0X3QgbGhzID0gdGVzdChsc2IsIG1hc2spOworICAgICAgICB1aW50NjRfdCByaHMgPSAo
KHNyYyA+PiBsc2IpICYgbWFzayk7CisgICAgICAgIENIRUNLKGxocyA9PSByaHMpOworICAgIH0K
K30KKwordm9pZCB0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKCkKK3sKKyAgICAvLyAoc3JjID4+IGxz
YikgJiAoKDEgPDwgd2lkdGgpIC0gMSkKKyAgICB1aW50NjRfdCBzcmMgPSAweGZmZmZmZmZmZmZm
ZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCAzMCwgMzEsIDMyLCA2
MiwgNjMsIDY0IH07CisKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IGxzYiwgdWludDMy
X3Qgd2lkdGgpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHNy
Y1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbHNiKTsKKyAgICAgICAg
VmFsdWUqIHdpZHRoVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgd2lkdGgpOworICAgICAgICBWYWx1ZSogY29uc3RWYWx1ZUEgPSByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgICAgIFZhbHVlKiBj
b25zdFZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCAxKTsKKworICAgICAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgWlNociwgT3JpZ2luKCksIHNyY1ZhbHVlLCBsc2JWYWx1ZSk7CisgICAgICAgIFZhbHVlKiBy
aWdodCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBP
cmlnaW4oKSwgY29uc3RWYWx1ZUEsIHdpZHRoVmFsdWUpLCBjb25zdFZhbHVlQik7CisgICAgICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFu
ZCwgT3JpZ2luKCksIGxlZnQsIHJpZ2h0KSk7CisKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVBbmRS
dW48dWludDY0X3Q+KHByb2MsIHNyYyk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBsc2IgOiBp
bW1zKSB7CisgICAgICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIHVp
bnQ2NF90IGxocyA9IHRlc3QobHNiLCB3aWR0aCk7CisgICAgICAgICAgICB1aW50NjRfdCByaHMg
PSAoKHNyYyA+PiBsc2IpICYgKCgxVUxMIDw8IHdpZHRoKSAtIDFVTEwpKTsKKyAgICAgICAgICAg
IENIRUNLKGxocyA9PSByaHMpOworICAgICAgICB9CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCB0
ZXN0Qml0QW5kQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikKIHsKICAgICBQcm9jZWR1cmUgcHJv
YzsKQEAgLTMzNTQsNiArMzUwMiwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0Qml0T3JJbW1BcmczMihp
bnQgYSwgaW50IGIpCiAKIHZvaWQgYWRkQml0VGVzdHMoY29uc3QgY2hhciogZmlsdGVyLCBEZXF1
ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQogeworICAgIFJVTih0ZXN0VWJm
eDMyKCkpOworICAgIFJVTih0ZXN0VWJmeDMyUGF0dGVybk1hdGNoKCkpOworICAgIFJVTih0ZXN0
VWJmeDY0KCkpOworICAgIFJVTih0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKCkpOworCiAgICAgUlVO
KHRlc3RCaXRBbmRBcmdzKDQzLCA0MykpOwogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgMCkp
OwogICAgIFJVTih0ZXN0Qml0QW5kQXJncygxMCwgMykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431631</attachid>
            <date>2021-06-16 21:36:37 -0700</date>
            <delta_ts>2021-06-16 22:29:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226984-20210616233636.patch</filename>
            <type>text/plain</type>
            <size>16416</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MGViZmFiYjVlZjU2NTlhZWU4YjI4ZTM1YjBiNTViYjBlMWM5OGQ0Li4wZTRhZjY1NGQ3NjhhYTMz
NWY1MmUzNmFhZGExZjI3Y2IwMmFkNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMS0wNi0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBVQkZYIHN1cHBvcnRlZCBieSBBUk02NAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVUJGWCwgc3VwcG9ydGVkIGJ5IEFSTTY0LCBjb3Bp
ZXMgYWRqYWNlbnQgYml0cyBmcm9tIHRoZSBzb3VyY2UgcmVnaXN0ZXIgaW50byAKKyAgICAgICAg
dGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgYSBkZXN0aW5hdGlvbiByZWdpc3RlciBpbiB6
ZXJvIGV4dGVuc2lvbi4gVGhlIAorICAgICAgICBpbnN0cnVjdGlvbiBzZWxlY3RvciBjYW4gdXRp
bGl6ZSB0aGlzIHRvIGxvd2VyaW5nIGNlcnRhaW4gcGF0dGVybnMgaW4gQjMgSVIgCisgICAgICAg
IGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgdWJmeCBkZXN0LCBz
cmMsIGxzYiwgd2lkdGgKKyAgICAgICAgICAgdG1wLCB0bXAsIGltbSwgaW1tCisKKyAgICAgICAg
VGhpcyBpcyBlcXVpdmFsZW50IHRvICJkZXN0ID0gKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRo
KSAtIDEpIi4gU2luY2Ugd2FzbSAKKyAgICAgICAgaW50cm9kdWNlcyBjb25zdGFudCBmb2xkaW5n
LCB0aGVuIHRoZSBwYXR0ZXJuIHdvdWxkIGJlOgorCisgICAgICAgIGRlc3QgPSAoc3JjID4+IGxz
YikgJiBtYXNrCisKKyAgICAgICAgd2hlcmUgdGhlIG1hc2sgc2hvdWxkIGhhdmUgYSBiaW5hcnkg
Zm9ybWF0IGluIGNvbnRpZ3VvdXMgb25lcyBzdGFydGluZyBmcm9tIAorICAgICAgICB0aGUgbGVh
c3Qgc2lnbmlmaWNhbnQgYml0LiBGb3IgZXhhbXBsZToKKworICAgICAgICAwYjAwMTExMTExCisK
KyAgICAgICAgVG8gbWFrZSB0aGUgcGF0dGVybiBtYXRjaGluZyBpbiBpbnN0cnVjdGlvbiBzZWxl
Y3Rpb24gYmVuZWZpY2lhbCB0byBKSVQsIHRoZXNlIAorICAgICAgICBjb25zdHJhaW50cyBzaG91
bGQgYmUgaW50cm9kdWNlZDoKKworICAgICAgICAxLiBsc2IgPj0gMCAKKyAgICAgICAgMi4gd2lk
dGggPiAwCisgICAgICAgIDMuIGxzYiArIHdpZHRoIDwgYml0IGZpZWxkIGxpbWl0ICgzMiBvciA2
NCkKKworICAgICAgICBHaXZlbjoKKyAgICAgICAgLy8gQjMgSVIKKyAgICAgICAgSW50IEAwID0g
QXJndW1lbnRSZWcoJTApCisgICAgICAgIEludCBAMSA9IGxzYgorICAgICAgICBJbnQgQDIgPSAw
YjAwMTEKKyAgICAgICAgSW50IEAzID0gWlNocihAMCwgQDEpCisgICAgICAgIEludCBANCA9IEJp
dEFuZChAMywgQDIpICAKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkgICAg
ICAKKworICAgICAgICB3L28gVUJGWCBQYXR0ZXJuOgorICAgICAgICAvLyBPbGQgb3B0aW1pemVk
IEFJUgorICAgICAgICBVcnNoaWZ0ICV4MCwgbHNiLCAleDAsIEAzCisgICAgICAgIEFuZCAgMGIw
MDExLCAleDAsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAleDAsICAgICAgICAgICBANQorCisg
ICAgICAgIHcvIFVCRlggUGF0dGVybjoKKyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAg
ICAgICAgVWJmeCAleDAsIGxzYiwgMiwgJXgwLCBANAorICAgICAgICBSZXQgICV4MCwgICAgICAg
ICAgICAgIEA1CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZ4MzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZ4NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0
bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RVYmZ4MzIpOgorICAgICAgICAoSlNDOjp0ZXN0
VWJmeDY0KToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBi
My90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKToKKyAgICAg
ICAgKHRlc3RVYmZ4MzJQYXR0ZXJuTWF0Y2gpOgorICAgICAgICAoYWRkQml0VGVzdHMpOgorCiAy
MDIxLTA2LTE0ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgQWlyIG9wY29kZSBzdWIzMi82NChSZWcsIEltbSwgUmVnKSBmb3JtIGZvciBBUk02NCBh
bmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGY4NmFlYzFj
NTQwMDZlZWQxZDVjNWRkM2Q1NmQ4ZDAwM2ZmNzYxMmIuLjI2YjllMjBlZWY4YjJhNjA3YmEyOTZk
YjU4YmFmNTNlOGUyMDI4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zOTAsNiArMzkwLDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgYW5kMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAg
dm9pZCB1YmZ4MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0z
MiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudWJm
eDwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisg
ICAgdm9pZCB1YmZ4NjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJ
bW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
dWJmeDw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQor
CiAgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kXzw2ND4oZGVzdCwgc3Jj
MSwgc3JjMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CmluZGV4IGJhNTEwMmEyYmI5OTlhZDU3NDhmNjg0NzVkNmM4YzQ1ZDUwYTIxYjYuLmVkZThhM2Qx
MTc3OTdlMDJiZGZmZTI2N2ZmZTZlYmE5ODBiY2M3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0xMDQyLDYgKzEwNDIsNTQgQEAgdm9pZCB0
ZXN0U3ViNjRBcmdJbW02NCgpCiAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4o
c3ViLCB2YWx1ZSksIHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlIC0gaW1tZWRpYXRlKSk7CiAg
ICAgfQogfQorCit2b2lkIHRlc3RVYmZ4MzIoKQoreworICAgIHVpbnQzMl90IHNyYyA9IDB4ZmZm
ZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCAzMCwgMzEsIDMyLCA2
MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAgZm9yIChh
dXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdpZHRoID4g
MCAmJiBsc2IgKyB3aWR0aCA8IDMyKSB7CisgICAgICAgICAgICAgICAgYXV0byB1YmZ4MzIgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQudWJmeDMy
KEdQUkluZm86OnJldHVyblZhbHVlR1BSLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQzMl90
Pih1YmZ4MzIsIHNyYyksICgoc3JjID4+IGxzYikgJiAoKDFVIDw8IHdpZHRoKSAtIDFVKSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RVYmZ4NjQoKQor
eworICAgIHVpbnQ2NF90IHNyYyA9IDB4ZmZmZmZmZmZmZmZmZmZmZjsKKyAgICBWZWN0b3I8dWlu
dDMyX3Q+IGltbXMgPSB7IDAsIDEsIDMwLCAzMSwgMzIsIDYyLCA2MywgNjQgfTsKKyAgICBmb3Ig
KGF1dG8gbHNiIDogaW1tcykgeworICAgICAgICBmb3IgKGF1dG8gd2lkdGggOiBpbW1zKSB7Cisg
ICAgICAgICAgICBpZiAobHNiID49IDAgJiYgd2lkdGggPiAwICYmIGxzYiArIHdpZHRoIDwgNjQp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIHViZng2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQp
OworCisgICAgICAgICAgICAgICAgICAgIGppdC51YmZ4NjQoR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bHNiKSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mih3aWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KHViZng2NCwgc3JjKSwgKChzcmMg
Pj4gbHNiKSAmICgoMVVMTCA8PCB3aWR0aCkgLSAxVUxMKSkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQogI2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpCkBAIC0yNzY5LDYgKzI4MTcsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBm
aWx0ZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBSVU4odGVzdFN1
YjY0QXJnSW1tMzIoKSk7CiAgICAgUlVOKHRlc3RTdWI2NEltbTY0KCkpOwogICAgIFJVTih0ZXN0
U3ViNjRBcmdJbW02NCgpKTsKKyAgICBSVU4odGVzdFViZngzMigpKTsKKyAgICBSVU4odGVzdFVi
Zng2NCgpKTsKICNlbmRpZgogCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFS
TTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA4MzNk
MTJlNDY1NzY2Yzc3MjJmYTI0ZWRiMjNmZmIwMjQ4OGM0YmJjLi4yMWJiMzhiMjRjZDY0YmJhZTgy
NWFkZjhjZDVlNGVhNzc1MTU1YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcApAQCAtMjY5NCwyMyArMjY5NCw0NiBAQCBwcml2YXRlOgogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBCaXRBbmQ6IHsKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgx
KS0+aXNJbnQoMHhmZikpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9FeHRlbmQ4
VG8zMiwgWmVyb0V4dGVuZDhUbzMyPihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICBW
YWx1ZSogbGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUqIHJpZ2h0
ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CisKKyAgICAgICAgICAgIGlmIChyaWdodC0+aXNJbnQoMHhm
ZikpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9FeHRlbmQ4VG8zMiwgWmVyb0V4
dGVuZDhUbzMyPihsZWZ0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQo
MHhmZmZmKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8WmVyb0V4dGVuZDE2VG8zMiwg
WmVyb0V4dGVuZDE2VG8zMj4obV92YWx1ZS0+Y2hpbGQoMCkpOworCisgICAgICAgICAgICBpZiAo
cmlnaHQtPmlzSW50KDB4ZmZmZikpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9F
eHRlbmQxNlRvMzIsIFplcm9FeHRlbmQxNlRvMzI+KGxlZnQpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEp
LT5pc0ludDY0KDB4ZmZmZmZmZmYpIHx8IG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludDMyKDB4ZmZm
ZmZmZmYpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxNb3ZlMzIsIE1vdmUzMj4obV92
YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgaWYgKHJpZ2h0LT5pc0ludDY0KDB4ZmZmZmZm
ZmYpIHx8IHJpZ2h0LT5pc0ludDMyKDB4ZmZmZmZmZmYpKSB7CisgICAgICAgICAgICAgICAgYXBw
ZW5kVW5PcDxNb3ZlMzIsIE1vdmUzMj4obGVmdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBhcHBlbmRCaW5PcDxBbmQz
MiwgQW5kNjQsIEFuZERvdWJsZSwgQW5kRmxvYXQsIENvbW11dGF0aXZlPigKLSAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworCisgICAgICAgICAg
ICAvLyBVQkZYIFBhdHRlcm46IGRlc3QgPSAoc3JjID4+IGxzYikgJiAoKDEgPDwgd2lkdGgpIC0g
MSkKKyAgICAgICAgICAgIGlmIChjYW5CZUludGVybmFsKGxlZnQpICYmIGxlZnQtPm9wY29kZSgp
ID09IFpTaHIpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogc3JjVmFsdWUgPSBsZWZ0LT5jaGls
ZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSBsZWZ0LT5jaGlsZCgxKTsK
KyAgICAgICAgICAgICAgICBpZiAoIWltbShzcmNWYWx1ZSkgJiYgaW1tKGxzYlZhbHVlKSAmJiBy
aWdodC0+aGFzSW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBsc2IgPSBsc2JW
YWx1ZS0+YXNJbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzayA9IHJpZ2h0
LT5hc0ludCgpOworICAgICAgICAgICAgICAgICAgICB1aW50OF90IHdpZHRoID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oIShtYXNrICYgbWFzayArIDEpKSAqIHN0ZDo6X19wb3Bjb3VudChtYXNrKTsK
KyAgICAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShV
YmZ4MzIsIFViZng2NCwgc3JjVmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChvcGNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGxzYiA+PSAwCisgICAgICAgICAg
ICAgICAgICAgICAgICAmJiB3aWR0aCA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGxz
YiArIHdpZHRoIDwgKDMyIDw8IChvcGNvZGUgPT0gVWJmeDY0KSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICYmIGlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpUbXAsIEFyZzo6SW1tLCBBcmc6Oklt
bSwgQXJnOjpUbXApKSAgeworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKG9wY29kZSwg
dG1wKHNyY1ZhbHVlKSwgaW1tKGxzYlZhbHVlKSwgaW1tKHdpZHRoKSwgdG1wKG1fdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxBbmQzMiwg
QW5kNjQsIEFuZERvdWJsZSwgQW5kRmxvYXQsIENvbW11dGF0aXZlPihsZWZ0LCByaWdodCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMTM4MDhkZTgzYmRiMTE3NzAxZjE4YTU2
NTU2OTgyZGUzOGQzYjNiOC4uNTI0MzI1OGQ5Njg3M2U4MWIxYWMyMmVlODhmMDQwMDRkYmY3NWU2
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bj
b2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVz
CkBAIC0zNTcsNiArMzU3LDEyIEBAIEFuZDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICB4ODY6IElt
bSwgQWRkcgogICAgIHg4NjogSW1tLCBJbmRleAogCithcm02NDogVWJmeDMyIFU6RzozMiwgVTpH
OjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAgICBUbXAsIEltbSwgSW1tLCBUbXAKKworYXJtNjQ6IFVi
Zng2NCBVOkc6NjQsIFU6RzozMiwgVTpHOjMyLCBEOkc6NjQKKyAgICBUbXAsIEltbSwgSW1tLCBU
bXAKKwogNjQ6IEFuZDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1w
CiAgICAgYXJtNjQ6IEJpdEltbTY0LCBUbXAsIFRtcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5o
CmluZGV4IDY4MDY1M2M2MTY1YWNlYzY3ZTVlNGI2ZGUyZmRjYTBkYTQxMDk3NzcuLjQzYTczNDdl
OGU1NDk3Yjg5NzI2YmUyOTkxNjkyNGFhMDFhYzBkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmgKQEAgLTQxNiw2ICs0MTYsMTAgQEAgaW5saW5lIGRvdWJsZSBtb2RlbExvYWQ8ZG91Ymxl
LCBkb3VibGU+KGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KIAogdm9pZCBydW4oY29u
c3QgY2hhciogZmlsdGVyKTsKIHZvaWQgdGVzdEJpdEFuZFNFeHQzMihpbnQzMl90IHZhbHVlLCBp
bnQ2NF90IG1hc2spOwordm9pZCB0ZXN0VWJmeDMyKCk7Cit2b2lkIHRlc3RVYmZ4MzJQYXR0ZXJu
TWF0Y2goKTsKK3ZvaWQgdGVzdFViZng2NCgpOwordm9pZCB0ZXN0VWJmeDY0UGF0dGVybk1hdGNo
KCk7CiB2b2lkIHRlc3RCYXNpY1NlbGVjdCgpOwogdm9pZCB0ZXN0U2VsZWN0VGVzdCgpOwogdm9p
ZCB0ZXN0U2VsZWN0Q29tcGFyZURvdWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
Mi5jcHAKaW5kZXggNDgyMzYwMjc0YzI3Yzg3ZWFlMDQ3YTQ1N2YyMjZiYzA1OGU1YzhjZC4uYjE3
ZWFhZWEzODBlOTgxOGIxZDM1MTZmODgwNjFjOGRhYTYxY2U0YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzXzIuY3BwCkBAIC0yNTQwLDYgKzI1NDAsMTU0IEBAIHZvaWQgdGVzdE5lZ0Zs
b2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCiAgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEp
KSwgLWEpKTsKIH0KIAordm9pZCB0ZXN0VWJmeDMyKCkKK3sKKyAgICAvLyAoc3JjID4+IGxzYikg
JiBtYXNrCisgICAgdWludDMyX3Qgc3JjID0gMHhmZmZmZmZmZjsKKyAgICBWZWN0b3I8dWludDMy
X3Q+IGxzYnMgPSB7IDAsIDE1LCAzMCB9OworICAgIFZlY3Rvcjx1aW50MzJfdD4gd2lkdGhzID0g
eyAzMCwgMTYsIDEgfTsKKworICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDMyX3QgbHNiLCB1aW50
MzJfdCBtYXNrKSAtPiB1aW50MzJfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBz
cmNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICAgICAgVmFs
dWUqIGxzYlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGxzYik7CisgICAgICAgIFZhbHVlKiBtYXNrVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzayk7CisKKyAgICAgICAgVmFsdWUqIGxlZnQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBzcmNWYWx1ZSwg
bHNiVmFsdWUpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBsZWZ0LCBtYXNrVmFsdWUpKTsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBjb21waWxlQW5kUnVuPHVpbnQzMl90Pihwcm9jLCBzcmMpOwor
ICAgIH07CisKKyAgICBhdXRvIGdlbmVyYXRlTWFzayA9IFsmXSAodWludDMyX3Qgd2lkdGgpIC0+
IHVpbnQzMl90IHsKKyAgICAgICAgcmV0dXJuICgxVSA8PCB3aWR0aCkgLSAxVTsKKyAgICB9Owor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsc2JzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IHVpbnQzMl90IGxzYiA9IGxzYnMuYXQoaSk7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSBnZW5l
cmF0ZU1hc2sod2lkdGhzLmF0KGkpKTsKKyAgICAgICAgdWludDMyX3QgbGhzID0gdGVzdChsc2Is
IG1hc2spOworICAgICAgICB1aW50MzJfdCByaHMgPSAoKHNyYyA+PiBsc2IpICYgbWFzayk7Cisg
ICAgICAgIENIRUNLKGxocyA9PSByaHMpOworICAgIH0KK30KKwordm9pZCB0ZXN0VWJmeDMyUGF0
dGVybk1hdGNoKCkKK3sKKyAgICAvLyAoc3JjID4+IGxzYikgJiAoKDEgPDwgd2lkdGgpIC0gMSkK
KyAgICB1aW50MzJfdCBzcmMgPSAweGZmZmZmZmZmOworICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1t
cyA9IHsgMCwgMSwgMzAsIDMxLCAzMiwgNjIsIDYzLCA2NCB9OworCisgICAgYXV0byB0ZXN0ID0g
WyZdICh1aW50MzJfdCBsc2IsIHVpbnQzMl90IHdpZHRoKSAtPiB1aW50MzJfdCB7CisgICAgICAg
IFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworCisgICAgICAgIFZhbHVlKiBzcmNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICAgICAgVmFsdWUqIGxzYlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxzYik7CisgICAgICAgIFZhbHVlKiB3aWR0aFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHdpZHRo
KTsKKyAgICAgICAgVmFsdWUqIGNvbnN0VmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworICAgICAgICBWYWx1ZSogY29uc3RWYWx1ZUIgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICAg
ICAgVmFsdWUqIGxlZnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdp
bigpLCBzcmNWYWx1ZSwgbHNiVmFsdWUpOworICAgICAgICBWYWx1ZSogcmlnaHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwgCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGNvbnN0
VmFsdWVBLCB3aWR0aFZhbHVlKSwgY29uc3RWYWx1ZUIpOworICAgICAgICByb290LT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBs
ZWZ0LCByaWdodCkpOworCisgICAgICAgIHJldHVybiBjb21waWxlQW5kUnVuPHVpbnQzMl90Pihw
cm9jLCBzcmMpOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gbHNiIDogaW1tcykgeworICAgICAg
ICBmb3IgKGF1dG8gd2lkdGggOiBpbW1zKSB7CisgICAgICAgICAgICB1aW50MzJfdCBsaHMgPSB0
ZXN0KGxzYiwgd2lkdGgpOworICAgICAgICAgICAgdWludDMyX3QgcmhzID0gKChzcmMgPj4gbHNi
KSAmICgoMVUgPDwgd2lkdGgpIC0gMVUpKTsKKyAgICAgICAgICAgIENIRUNLKGxocyA9PSByaHMp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RVYmZ4NjQoKQoreworICAgIC8vIChz
cmMgPj4gbHNiKSAmIG1hc2sKKyAgICB1aW50NjRfdCBzcmMgPSAweGZmZmZmZmZmOworICAgIFZl
Y3Rvcjx1aW50NjRfdD4gbHNicyA9IHsgMCwgMzEsIDYyIH07CisgICAgVmVjdG9yPHVpbnQ2NF90
PiB3aWR0aHMgPSB7IDYzLCAzMiwgMSB9OworCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50NjRf
dCBsc2IsIHVpbnQ2NF90IG1hc2spIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAg
ICAgVmFsdWUqIHNyY1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbHNi
VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbHNi
KTsKKyAgICAgICAgVmFsdWUqIG1hc2tWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKTsKKworICAgICAgICBWYWx1ZSogbGVmdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIHNyY1ZhbHVlLCBsc2JWYWx1
ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGxlZnQsIG1hc2tWYWx1ZSkpOworCisgICAgICAgIHJl
dHVybiBjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9jLCBzcmMpOworICAgIH07CisKKyAgICBh
dXRvIGdlbmVyYXRlTWFzayA9IFsmXSAodWludDY0X3Qgd2lkdGgpIC0+IHVpbnQ2NF90IHsKKyAg
ICAgICAgcmV0dXJuICgxVUxMIDw8IHdpZHRoKSAtIDFVTEw7CisgICAgfTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbHNicy5zaXplKCk7ICsraSkgeworICAgICAgICB1aW50NjRfdCBs
c2IgPSBsc2JzLmF0KGkpOworICAgICAgICB1aW50NjRfdCBtYXNrID0gZ2VuZXJhdGVNYXNrKHdp
ZHRocy5hdChpKSk7CisgICAgICAgIHVpbnQ2NF90IGxocyA9IHRlc3QobHNiLCBtYXNrKTsKKyAg
ICAgICAgdWludDY0X3QgcmhzID0gKChzcmMgPj4gbHNiKSAmIG1hc2spOworICAgICAgICBDSEVD
SyhsaHMgPT0gcmhzKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdFViZng2NFBhdHRlcm5NYXRjaCgp
Cit7CisgICAgLy8gKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRoKSAtIDEpCisgICAgdWludDY0
X3Qgc3JjID0gMHhmZmZmZmZmZmZmZmZmZmZmOworICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9
IHsgMCwgMSwgMzAsIDMxLCAzMiwgNjIsIDYzLCA2NCB9OworCisgICAgYXV0byB0ZXN0ID0gWyZd
ICh1aW50MzJfdCBsc2IsIHVpbnQzMl90IHdpZHRoKSAtPiB1aW50NjRfdCB7CisgICAgICAgIFBy
b2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworCisgICAgICAgIFZhbHVlKiBzcmNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
VmFsdWUqIGxzYlZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGxzYik7CisgICAgICAgIFZhbHVlKiB3aWR0aFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHdpZHRoKTsKKyAgICAgICAgVmFsdWUqIGNv
bnN0VmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEpOworICAgICAgICBWYWx1ZSogY29uc3RWYWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2
NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisKKyAgICAgICAgVmFsdWUqIGxlZnQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBzcmNWYWx1ZSwgbHNiVmFs
dWUpOworICAgICAgICBWYWx1ZSogcmlnaHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGNvbnN0VmFsdWVBLCB3aWR0aFZhbHVlKSwg
Y29uc3RWYWx1ZUIpOworICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBsZWZ0LCByaWdodCkpOworCisgICAg
ICAgIHJldHVybiBjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9jLCBzcmMpOworICAgIH07CisK
KyAgICBmb3IgKGF1dG8gbHNiIDogaW1tcykgeworICAgICAgICBmb3IgKGF1dG8gd2lkdGggOiBp
bW1zKSB7CisgICAgICAgICAgICB1aW50NjRfdCBsaHMgPSB0ZXN0KGxzYiwgd2lkdGgpOworICAg
ICAgICAgICAgdWludDY0X3QgcmhzID0gKChzcmMgPj4gbHNiKSAmICgoMVVMTCA8PCB3aWR0aCkg
LSAxVUxMKSk7CisgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwogc3RhdGljIHZvaWQgdGVzdEJpdEFuZEFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIp
CiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0zMzU0LDYgKzM1MDIsMTEgQEAgc3RhdGljIHZv
aWQgdGVzdEJpdE9ySW1tQXJnMzIoaW50IGEsIGludCBiKQogCiB2b2lkIGFkZEJpdFRlc3RzKGNv
bnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNr
cykKIHsKKyAgICBSVU4odGVzdFViZngzMigpKTsKKyAgICBSVU4odGVzdFViZngzMlBhdHRlcm5N
YXRjaCgpKTsKKyAgICBSVU4odGVzdFViZng2NCgpKTsKKyAgICBSVU4odGVzdFViZng2NFBhdHRl
cm5NYXRjaCgpKTsKKwogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsKICAgICBSVU4o
dGVzdEJpdEFuZEFyZ3MoNDMsIDApKTsKICAgICBSVU4odGVzdEJpdEFuZEFyZ3MoMTAsIDMpKTsK
</data>
<flag name="commit-queue"
          id="453454"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431633</attachid>
            <date>2021-06-16 22:24:03 -0700</date>
            <delta_ts>2021-06-17 09:15:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226984-20210617002402.patch</filename>
            <type>text/plain</type>
            <size>16610</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MGViZmFiYjVlZjU2NTlhZWU4YjI4ZTM1YjBiNTViYjBlMWM5OGQ0Li4wZTRhZjY1NGQ3NjhhYTMz
NWY1MmUzNmFhZGExZjI3Y2IwMmFkNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMS0wNi0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBVQkZYIHN1cHBvcnRlZCBieSBBUk02NAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVUJGWCwgc3VwcG9ydGVkIGJ5IEFSTTY0LCBjb3Bp
ZXMgYWRqYWNlbnQgYml0cyBmcm9tIHRoZSBzb3VyY2UgcmVnaXN0ZXIgaW50byAKKyAgICAgICAg
dGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgYSBkZXN0aW5hdGlvbiByZWdpc3RlciBpbiB6
ZXJvIGV4dGVuc2lvbi4gVGhlIAorICAgICAgICBpbnN0cnVjdGlvbiBzZWxlY3RvciBjYW4gdXRp
bGl6ZSB0aGlzIHRvIGxvd2VyaW5nIGNlcnRhaW4gcGF0dGVybnMgaW4gQjMgSVIgCisgICAgICAg
IGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgdWJmeCBkZXN0LCBz
cmMsIGxzYiwgd2lkdGgKKyAgICAgICAgICAgdG1wLCB0bXAsIGltbSwgaW1tCisKKyAgICAgICAg
VGhpcyBpcyBlcXVpdmFsZW50IHRvICJkZXN0ID0gKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRo
KSAtIDEpIi4gU2luY2Ugd2FzbSAKKyAgICAgICAgaW50cm9kdWNlcyBjb25zdGFudCBmb2xkaW5n
LCB0aGVuIHRoZSBwYXR0ZXJuIHdvdWxkIGJlOgorCisgICAgICAgIGRlc3QgPSAoc3JjID4+IGxz
YikgJiBtYXNrCisKKyAgICAgICAgd2hlcmUgdGhlIG1hc2sgc2hvdWxkIGhhdmUgYSBiaW5hcnkg
Zm9ybWF0IGluIGNvbnRpZ3VvdXMgb25lcyBzdGFydGluZyBmcm9tIAorICAgICAgICB0aGUgbGVh
c3Qgc2lnbmlmaWNhbnQgYml0LiBGb3IgZXhhbXBsZToKKworICAgICAgICAwYjAwMTExMTExCisK
KyAgICAgICAgVG8gbWFrZSB0aGUgcGF0dGVybiBtYXRjaGluZyBpbiBpbnN0cnVjdGlvbiBzZWxl
Y3Rpb24gYmVuZWZpY2lhbCB0byBKSVQsIHRoZXNlIAorICAgICAgICBjb25zdHJhaW50cyBzaG91
bGQgYmUgaW50cm9kdWNlZDoKKworICAgICAgICAxLiBsc2IgPj0gMCAKKyAgICAgICAgMi4gd2lk
dGggPiAwCisgICAgICAgIDMuIGxzYiArIHdpZHRoIDwgYml0IGZpZWxkIGxpbWl0ICgzMiBvciA2
NCkKKworICAgICAgICBHaXZlbjoKKyAgICAgICAgLy8gQjMgSVIKKyAgICAgICAgSW50IEAwID0g
QXJndW1lbnRSZWcoJTApCisgICAgICAgIEludCBAMSA9IGxzYgorICAgICAgICBJbnQgQDIgPSAw
YjAwMTEKKyAgICAgICAgSW50IEAzID0gWlNocihAMCwgQDEpCisgICAgICAgIEludCBANCA9IEJp
dEFuZChAMywgQDIpICAKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkgICAg
ICAKKworICAgICAgICB3L28gVUJGWCBQYXR0ZXJuOgorICAgICAgICAvLyBPbGQgb3B0aW1pemVk
IEFJUgorICAgICAgICBVcnNoaWZ0ICV4MCwgbHNiLCAleDAsIEAzCisgICAgICAgIEFuZCAgMGIw
MDExLCAleDAsICV4MCwgQDQKKyAgICAgICAgUmV0ICAgICAleDAsICAgICAgICAgICBANQorCisg
ICAgICAgIHcvIFVCRlggUGF0dGVybjoKKyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAg
ICAgICAgVWJmeCAleDAsIGxzYiwgMiwgJXgwLCBANAorICAgICAgICBSZXQgICV4MCwgICAgICAg
ICAgICAgIEA1CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZ4MzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp1YmZ4NjQpOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0
bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RVYmZ4MzIpOgorICAgICAgICAoSlNDOjp0ZXN0
VWJmeDY0KToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBi
My90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKToKKyAgICAg
ICAgKHRlc3RVYmZ4MzJQYXR0ZXJuTWF0Y2gpOgorICAgICAgICAoYWRkQml0VGVzdHMpOgorCiAy
MDIxLTA2LTE0ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgQWlyIG9wY29kZSBzdWIzMi82NChSZWcsIEltbSwgUmVnKSBmb3JtIGZvciBBUk02NCBh
bmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IGY4NmFlYzFj
NTQwMDZlZWQxZDVjNWRkM2Q1NmQ4ZDAwM2ZmNzYxMmIuLjI2YjllMjBlZWY4YjJhNjA3YmEyOTZk
YjU4YmFmNTNlOGUyMDI4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0zOTAsNiArMzkwLDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgYW5kMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAg
dm9pZCB1YmZ4MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJbW0z
MiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudWJm
eDwzMj4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQorCisg
ICAgdm9pZCB1YmZ4NjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBsc2IsIFRydXN0ZWRJ
bW0zMiB3aWR0aCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
dWJmeDw2ND4oZGVzdCwgc3JjLCBsc2IubV92YWx1ZSwgd2lkdGgubV92YWx1ZSk7CisgICAgfQor
CiAgICAgdm9pZCBhbmQ2NChSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kXzw2ND4oZGVzdCwgc3Jj
MSwgc3JjMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CmluZGV4IGJhNTEwMmEyYmI5OTlhZDU3NDhmNjg0NzVkNmM4YzQ1ZDUwYTIxYjYuLmVkZThhM2Qx
MTc3OTdlMDJiZGZmZTI2N2ZmZTZlYmE5ODBiY2M3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0xMDQyLDYgKzEwNDIsNTQgQEAgdm9pZCB0
ZXN0U3ViNjRBcmdJbW02NCgpCiAgICAgICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4o
c3ViLCB2YWx1ZSksIHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlIC0gaW1tZWRpYXRlKSk7CiAg
ICAgfQogfQorCit2b2lkIHRlc3RVYmZ4MzIoKQoreworICAgIHVpbnQzMl90IHNyYyA9IDB4ZmZm
ZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCAzMCwgMzEsIDMyLCA2
MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAgZm9yIChh
dXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdpZHRoID4g
MCAmJiBsc2IgKyB3aWR0aCA8IDMyKSB7CisgICAgICAgICAgICAgICAgYXV0byB1YmZ4MzIgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQudWJmeDMy
KEdQUkluZm86OnJldHVyblZhbHVlR1BSLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBlbWl0RnVu
Y3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVpbnQzMl90
Pih1YmZ4MzIsIHNyYyksICgoc3JjID4+IGxzYikgJiAoKDFVIDw8IHdpZHRoKSAtIDFVKSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RVYmZ4NjQoKQor
eworICAgIHVpbnQ2NF90IHNyYyA9IDB4ZmZmZmZmZmZmZmZmZmZmZjsKKyAgICBWZWN0b3I8dWlu
dDMyX3Q+IGltbXMgPSB7IDAsIDEsIDMwLCAzMSwgMzIsIDYyLCA2MywgNjQgfTsKKyAgICBmb3Ig
KGF1dG8gbHNiIDogaW1tcykgeworICAgICAgICBmb3IgKGF1dG8gd2lkdGggOiBpbW1zKSB7Cisg
ICAgICAgICAgICBpZiAobHNiID49IDAgJiYgd2lkdGggPiAwICYmIGxzYiArIHdpZHRoIDwgNjQp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIHViZng2NCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQp
OworCisgICAgICAgICAgICAgICAgICAgIGppdC51YmZ4NjQoR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIsIAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
bHNiKSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mih3aWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDY0X3Q+KHViZng2NCwgc3JjKSwgKChzcmMg
Pj4gbHNiKSAmICgoMVVMTCA8PCB3aWR0aCkgLSAxVUxMKSkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQogI2VuZGlmCiAKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNNjQpCkBAIC0yNzY5LDYgKzI4MTcsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBm
aWx0ZXIpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBSVU4odGVzdFN1
YjY0QXJnSW1tMzIoKSk7CiAgICAgUlVOKHRlc3RTdWI2NEltbTY0KCkpOwogICAgIFJVTih0ZXN0
U3ViNjRBcmdJbW02NCgpKTsKKyAgICBSVU4odGVzdFViZngzMigpKTsKKyAgICBSVU4odGVzdFVi
Zng2NCgpKTsKICNlbmRpZgogCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFS
TTY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA4MzNk
MTJlNDY1NzY2Yzc3MjJmYTI0ZWRiMjNmZmIwMjQ4OGM0YmJjLi5jZjJkZjVhM2I0ZjIyNDE0YjQz
NWE5M2YyZmU3ZTQwOTUwYWJhODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkIzV2FzbUFkZHJlc3NWYWx1
ZS5oIgogI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmICFBU1NFUlRfRU5BQkxFRAog
SUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0JFR0lOCkBAIC0yNjk0LDIzICsyNjk1LDQ2IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEJpdEFuZDogewotICAgICAgICAg
ICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludCgweGZmKSkgewotICAgICAgICAgICAgICAg
IGFwcGVuZFVuT3A8WmVyb0V4dGVuZDhUbzMyLCBaZXJvRXh0ZW5kOFRvMzI+KG1fdmFsdWUtPmNo
aWxkKDApKTsKKyAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7Cisg
ICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKKworICAgICAgICAg
ICAgaWYgKHJpZ2h0LT5pc0ludCgweGZmKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8
WmVyb0V4dGVuZDhUbzMyLCBaZXJvRXh0ZW5kOFRvMzI+KGxlZnQpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1f
dmFsdWUtPmNoaWxkKDEpLT5pc0ludCgweGZmZmYpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
VW5PcDxaZXJvRXh0ZW5kMTZUbzMyLCBaZXJvRXh0ZW5kMTZUbzMyPihtX3ZhbHVlLT5jaGlsZCgw
KSk7CisKKyAgICAgICAgICAgIGlmIChyaWdodC0+aXNJbnQoMHhmZmZmKSkgeworICAgICAgICAg
ICAgICAgIGFwcGVuZFVuT3A8WmVyb0V4dGVuZDE2VG8zMiwgWmVyb0V4dGVuZDE2VG8zMj4obGVm
dCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50NjQoMHhmZmZmZmZmZikgfHwgbV92YWx1ZS0+
Y2hpbGQoMSktPmlzSW50MzIoMHhmZmZmZmZmZikpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRV
bk9wPE1vdmUzMiwgTW92ZTMyPihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICBpZiAo
cmlnaHQtPmlzSW50NjQoMHhmZmZmZmZmZikgfHwgcmlnaHQtPmlzSW50MzIoMHhmZmZmZmZmZikp
IHsKKyAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPE1vdmUzMiwgTW92ZTMyPihsZWZ0KTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQW5kRG91YmxlLCBBbmRGbG9hdCwgQ29t
bXV0YXRpdmU+KAotICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5j
aGlsZCgxKSk7CisKKyAgICAgICAgICAgIC8vIFVCRlggUGF0dGVybjogZGVzdCA9IChzcmMgPj4g
bHNiKSAmICgoMSA8PCB3aWR0aCkgLSAxKQorICAgICAgICAgICAgaWYgKGNhbkJlSW50ZXJuYWwo
bGVmdCkgJiYgbGVmdC0+b3Bjb2RlKCkgPT0gWlNocikgeworICAgICAgICAgICAgICAgIFZhbHVl
KiBzcmNWYWx1ZSA9IGxlZnQtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIFZhbHVlKiBsc2JW
YWx1ZSA9IGxlZnQtPmNoaWxkKDEpOworICAgICAgICAgICAgICAgIGlmICghaW1tKHNyY1ZhbHVl
KSAmJiBpbW0obHNiVmFsdWUpICYmIHJpZ2h0LT5oYXNJbnQoKSkgeworICAgICAgICAgICAgICAg
ICAgICBpbnQ2NF90IGxzYiA9IGxzYlZhbHVlLT5hc0ludCgpOworICAgICAgICAgICAgICAgICAg
ICB1aW50NjRfdCBtYXNrID0gcmlnaHQtPmFzSW50KCk7CisgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3Qgd2lkdGggPSBzdGF0aWNfY2FzdDx1aW50OF90PighKG1hc2sgJiAobWFzayArIDEpKSkg
KiBXVEY6OmJpdENvdW50KG1hc2spOworICAgICAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBv
cGNvZGUgPSBvcGNvZGVGb3JUeXBlKFViZngzMiwgVWJmeDY0LCBzcmNWYWx1ZS0+dHlwZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG9wY29kZQorICAgICAgICAgICAgICAgICAgICAgICAg
JiYgbHNiID49IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIHdpZHRoID4gMAorICAgICAg
ICAgICAgICAgICAgICAgICAgJiYgbHNiICsgd2lkdGggPCAoMzIgPDwgKG9wY29kZSA9PSBVYmZ4
NjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6
OlRtcCwgQXJnOjpJbW0sIEFyZzo6SW1tLCBBcmc6OlRtcCkpICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAoc3JjVmFsdWUpLCBpbW0obHNiVmFsdWUpLCBpbW0o
d2lkdGgpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50
ZXJuYWwobGVmdCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQW5kRG91YmxlLCBBbmRGbG9hdCwgQ29tbXV0
YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCAx
MzgwOGRlODNiZGIxMTc3MDFmMThhNTY1NTY5ODJkZTM4ZDNiM2I4Li41MjQzMjU4ZDk2ODczZTgx
YjFhYzIyZWU4OGYwNDAwNGRiZjc1ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTM1Nyw2ICszNTcsMTIgQEAgQW5kMzIgVTpHOjMy
LCBVWkQ6RzozMgogICAgIHg4NjogSW1tLCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAKK2Fy
bTY0OiBVYmZ4MzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgSW1t
LCBJbW0sIFRtcAorCithcm02NDogVWJmeDY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2
NAorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6
Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKICAgICBhcm02NDogQml0SW1tNjQsIFRtcCwgVG1wCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggNjgwNjUzYzYxNjVhY2VjNjdlNWU0YjZkZTJm
ZGNhMGRhNDEwOTc3Ny4uNDNhNzM0N2U4ZTU0OTdiODk3MjZiZTI5OTE2OTI0YWEwMWFjMGQwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtNDE2LDYgKzQxNiwxMCBAQCBpbmxpbmUg
ZG91YmxlIG1vZGVsTG9hZDxkb3VibGUsIGRvdWJsZT4oZG91YmxlIHZhbHVlKSB7IHJldHVybiB2
YWx1ZTsgfQogCiB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpOwogdm9pZCB0ZXN0Qml0QW5k
U0V4dDMyKGludDMyX3QgdmFsdWUsIGludDY0X3QgbWFzayk7Cit2b2lkIHRlc3RVYmZ4MzIoKTsK
K3ZvaWQgdGVzdFViZngzMlBhdHRlcm5NYXRjaCgpOwordm9pZCB0ZXN0VWJmeDY0KCk7Cit2b2lk
IHRlc3RVYmZ4NjRQYXR0ZXJuTWF0Y2goKTsKIHZvaWQgdGVzdEJhc2ljU2VsZWN0KCk7CiB2b2lk
IHRlc3RTZWxlY3RUZXN0KCk7CiB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRG91YmxlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAppbmRleCA0ODIzNjAyNzRjMjdjODdlYWUwNDdh
NDU3ZjIyNmJjMDU4ZTVjOGNkLi5iMTdlYWFlYTM4MGU5ODE4YjFkMzUxNmY4ODA2MWM4ZGFhNjFj
ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKQEAgLTI1NDAsNiArMjU0
MCwxNTQgQEAgdm9pZCB0ZXN0TmVnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxv
YXQgYSkKICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCAtYSkpOwogfQogCit2b2lkIHRlc3RVYmZ4MzIoKQor
eworICAgIC8vIChzcmMgPj4gbHNiKSAmIG1hc2sKKyAgICB1aW50MzJfdCBzcmMgPSAweGZmZmZm
ZmZmOworICAgIFZlY3Rvcjx1aW50MzJfdD4gbHNicyA9IHsgMCwgMTUsIDMwIH07CisgICAgVmVj
dG9yPHVpbnQzMl90PiB3aWR0aHMgPSB7IDMwLCAxNiwgMSB9OworCisgICAgYXV0byB0ZXN0ID0g
WyZdICh1aW50MzJfdCBsc2IsIHVpbnQzMl90IG1hc2spIC0+IHVpbnQzMl90IHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWUqIHNyY1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbHNiKTsKKyAgICAgICAgVmFsdWUqIG1hc2tWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKTsK
KworICAgICAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNo
ciwgT3JpZ2luKCksIHNyY1ZhbHVlLCBsc2JWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGxl
ZnQsIG1hc2tWYWx1ZSkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVBbmRSdW48
dWludDMyX3Q+KHByb2MsIHNyYyk7CisgICAgfTsKKworICAgIGF1dG8gZ2VuZXJhdGVNYXNrID0g
WyZdICh1aW50MzJfdCB3aWR0aCkgLT4gdWludDMyX3QgeworICAgICAgICByZXR1cm4gKDFVIDw8
IHdpZHRoKSAtIDFVOworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxzYnMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdWludDMyX3QgbHNiID0gbHNicy5hdChpKTsKKyAgICAg
ICAgdWludDMyX3QgbWFzayA9IGdlbmVyYXRlTWFzayh3aWR0aHMuYXQoaSkpOworICAgICAgICB1
aW50MzJfdCBsaHMgPSB0ZXN0KGxzYiwgbWFzayk7CisgICAgICAgIHVpbnQzMl90IHJocyA9ICgo
c3JjID4+IGxzYikgJiBtYXNrKTsKKyAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CisgICAgfQor
fQorCit2b2lkIHRlc3RVYmZ4MzJQYXR0ZXJuTWF0Y2goKQoreworICAgIC8vIChzcmMgPj4gbHNi
KSAmICgoMSA8PCB3aWR0aCkgLSAxKQorICAgIHVpbnQzMl90IHNyYyA9IDB4ZmZmZmZmZmY7Cisg
ICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCAzMCwgMzEsIDMyLCA2MiwgNjMsIDY0
IH07CisKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IGxzYiwgdWludDMyX3Qgd2lkdGgp
IC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHNyY1ZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbHNiVmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbHNiKTsK
KyAgICAgICAgVmFsdWUqIHdpZHRoVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgd2lkdGgpOworICAgICAgICBWYWx1ZSogY29uc3RWYWx1ZUEgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgICAg
IFZhbHVlKiBjb25zdFZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIHNyY1ZhbHVlLCBsc2JWYWx1ZSk7CisgICAgICAg
IFZhbHVlKiByaWdodCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBTdWIsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU2hsLCBPcmlnaW4oKSwgY29uc3RWYWx1ZUEsIHdpZHRoVmFsdWUpLCBjb25zdFZhbHVlQik7
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdEFuZCwgT3JpZ2luKCksIGxlZnQsIHJpZ2h0KSk7CisKKyAgICAgICAgcmV0dXJuIGNv
bXBpbGVBbmRSdW48dWludDMyX3Q+KHByb2MsIHNyYyk7CisgICAgfTsKKworICAgIGZvciAoYXV0
byBsc2IgOiBpbW1zKSB7CisgICAgICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAg
ICAgICAgIHVpbnQzMl90IGxocyA9IHRlc3QobHNiLCB3aWR0aCk7CisgICAgICAgICAgICB1aW50
MzJfdCByaHMgPSAoKHNyYyA+PiBsc2IpICYgKCgxVSA8PCB3aWR0aCkgLSAxVSkpOworICAgICAg
ICAgICAgQ0hFQ0sobGhzID09IHJocyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVz
dFViZng2NCgpCit7CisgICAgLy8gKHNyYyA+PiBsc2IpICYgbWFzaworICAgIHVpbnQ2NF90IHNy
YyA9IDB4ZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBsc2JzID0geyAwLCAzMSwgNjIg
fTsKKyAgICBWZWN0b3I8dWludDY0X3Q+IHdpZHRocyA9IHsgNjMsIDMyLCAxIH07CisKKyAgICBh
dXRvIHRlc3QgPSBbJl0gKHVpbnQ2NF90IGxzYiwgdWludDY0X3QgbWFzaykgLT4gdWludDY0X3Qg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogc3JjVmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAgICAgICBWYWx1ZSogbWFza1ZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG1hc2spOworCisgICAg
ICAgIFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmln
aW4oKSwgc3JjVmFsdWUsIGxzYlZhbHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgbGVmdCwgbWFz
a1ZhbHVlKSk7CisKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVBbmRSdW48dWludDY0X3Q+KHByb2Ms
IHNyYyk7CisgICAgfTsKKworICAgIGF1dG8gZ2VuZXJhdGVNYXNrID0gWyZdICh1aW50NjRfdCB3
aWR0aCkgLT4gdWludDY0X3QgeworICAgICAgICByZXR1cm4gKDFVTEwgPDwgd2lkdGgpIC0gMVVM
TDsKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsc2JzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIHVpbnQ2NF90IGxzYiA9IGxzYnMuYXQoaSk7CisgICAgICAgIHVpbnQ2NF90
IG1hc2sgPSBnZW5lcmF0ZU1hc2sod2lkdGhzLmF0KGkpKTsKKyAgICAgICAgdWludDY0X3QgbGhz
ID0gdGVzdChsc2IsIG1hc2spOworICAgICAgICB1aW50NjRfdCByaHMgPSAoKHNyYyA+PiBsc2Ip
ICYgbWFzayk7CisgICAgICAgIENIRUNLKGxocyA9PSByaHMpOworICAgIH0KK30KKwordm9pZCB0
ZXN0VWJmeDY0UGF0dGVybk1hdGNoKCkKK3sKKyAgICAvLyAoc3JjID4+IGxzYikgJiAoKDEgPDwg
d2lkdGgpIC0gMSkKKyAgICB1aW50NjRfdCBzcmMgPSAweGZmZmZmZmZmZmZmZmZmZmY7CisgICAg
VmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCAzMCwgMzEsIDMyLCA2MiwgNjMsIDY0IH07
CisKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IGxzYiwgdWludDMyX3Qgd2lkdGgpIC0+
IHVpbnQ2NF90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHNyY1ZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbHNiKTsKKyAgICAgICAgVmFsdWUqIHdpZHRo
VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgd2lk
dGgpOworICAgICAgICBWYWx1ZSogY29uc3RWYWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2
NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgICAgIFZhbHVlKiBjb25zdFZhbHVlQiA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAg
ICAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3Jp
Z2luKCksIHNyY1ZhbHVlLCBsc2JWYWx1ZSk7CisgICAgICAgIFZhbHVlKiByaWdodCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgY29u
c3RWYWx1ZUEsIHdpZHRoVmFsdWUpLCBjb25zdFZhbHVlQik7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCks
IGxlZnQsIHJpZ2h0KSk7CisKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVBbmRSdW48dWludDY0X3Q+
KHByb2MsIHNyYyk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBsc2IgOiBpbW1zKSB7CisgICAg
ICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGxocyA9
IHRlc3QobHNiLCB3aWR0aCk7CisgICAgICAgICAgICB1aW50NjRfdCByaHMgPSAoKHNyYyA+PiBs
c2IpICYgKCgxVUxMIDw8IHdpZHRoKSAtIDFVTEwpKTsKKyAgICAgICAgICAgIENIRUNLKGxocyA9
PSByaHMpOworICAgICAgICB9CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCB0ZXN0Qml0QW5kQXJn
cyhpbnQ2NF90IGEsIGludDY0X3QgYikKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTMzNTQs
NiArMzUwMiwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0Qml0T3JJbW1BcmczMihpbnQgYSwgaW50IGIp
CiAKIHZvaWQgYWRkQml0VGVzdHMoY29uc3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hh
cmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQogeworICAgIFJVTih0ZXN0VWJmeDMyKCkpOworICAg
IFJVTih0ZXN0VWJmeDMyUGF0dGVybk1hdGNoKCkpOworICAgIFJVTih0ZXN0VWJmeDY0KCkpOwor
ICAgIFJVTih0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKCkpOworCiAgICAgUlVOKHRlc3RCaXRBbmRB
cmdzKDQzLCA0MykpOwogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgMCkpOwogICAgIFJVTih0
ZXN0Qml0QW5kQXJncygxMCwgMykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431679</attachid>
            <date>2021-06-17 09:15:45 -0700</date>
            <delta_ts>2021-06-17 09:19:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226984-20210617111543.patch</filename>
            <type>text/plain</type>
            <size>16924</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MGViZmFiYjVlZjU2NTlhZWU4YjI4ZTM1YjBiNTViYjBlMWM5OGQ0Li5iY2U3Nzg2MGU0MDEwZTlh
M2IzYTAwOGI4ZGY4ZjM4NzJjNjRkZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAyMS0wNi0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBVQkZYIHN1cHBvcnRlZCBieSBBUk02NAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVUJGWCwgc3VwcG9ydGVkIGJ5IEFSTTY0LCBjb3Bp
ZXMgYWRqYWNlbnQgYml0cyBmcm9tIHRoZSBzb3VyY2UgcmVnaXN0ZXIgaW50byAKKyAgICAgICAg
dGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgYSBkZXN0aW5hdGlvbiByZWdpc3RlciBpbiB6
ZXJvIGV4dGVuc2lvbi4gVGhlIAorICAgICAgICBpbnN0cnVjdGlvbiBzZWxlY3RvciBjYW4gdXRp
bGl6ZSB0aGlzIHRvIGxvd2VyaW5nIGNlcnRhaW4gcGF0dGVybnMgaW4gQjMgSVIgCisgICAgICAg
IGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgdWJmeCBkZXN0LCBz
cmMsIGxzYiwgd2lkdGgKKyAgICAgICAgICAgdG1wLCB0bXAsIGltbSwgaW1tCisKKyAgICAgICAg
VGhpcyBpcyBlcXVpdmFsZW50IHRvICJkZXN0ID0gKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRo
KSAtIDEpIi4gU2luY2Ugd2FzbSAKKyAgICAgICAgaW50cm9kdWNlcyBjb25zdGFudCBmb2xkaW5n
LCB0aGVuIHRoZSBwYXR0ZXJuIHdvdWxkIGJlOgorCisgICAgICAgIGRlc3QgPSAoc3JjID4+IGxz
YikgJiBtYXNrCisKKyAgICAgICAgd2hlcmUgdGhlIG1hc2sgc2hvdWxkIGhhdmUgYSBiaW5hcnkg
Zm9ybWF0IGluIGNvbnRpZ3VvdXMgb25lcyBzdGFydGluZyBmcm9tIAorICAgICAgICB0aGUgbGVh
c3Qgc2lnbmlmaWNhbnQgYml0LiBGb3IgZXhhbXBsZToKKworICAgICAgICAwYjAwMTExMTExCisK
KyAgICAgICAgVG8gbWFrZSB0aGUgcGF0dGVybiBtYXRjaGluZyBpbiBpbnN0cnVjdGlvbiBzZWxl
Y3Rpb24gYmVuZWZpY2lhbCB0byBKSVQsIHRoZXNlIAorICAgICAgICBjb25zdHJhaW50cyBzaG91
bGQgYmUgaW50cm9kdWNlZDoKKworICAgICAgICAxLiBsc2IgPj0gMCAKKyAgICAgICAgMi4gd2lk
dGggPiAwCisgICAgICAgIDMuIGxzYiArIHdpZHRoIDw9IGJpdCBmaWVsZCBsaW1pdCAoMzIgb3Ig
NjQpCisKKyAgICAgICAgR2l2ZW46CisgICAgICAgIC8vIEIzIElSCisgICAgICAgIEludCBAMCA9
IEFyZ3VtZW50UmVnKCUwKQorICAgICAgICBJbnQgQDEgPSBsc2IKKyAgICAgICAgSW50IEAyID0g
MGIwMDExCisgICAgICAgIEludCBAMyA9IFpTaHIoQDAsIEAxKQorICAgICAgICBJbnQgQDQgPSBC
aXRBbmQoQDMsIEAyKSAgCisgICAgICAgIFZvaWRANSA9IFJldHVybihANCwgVGVybWluYWwpICAg
ICAgCisKKyAgICAgICAgdy9vIFVCRlggUGF0dGVybjoKKyAgICAgICAgLy8gT2xkIG9wdGltaXpl
ZCBBSVIKKyAgICAgICAgVXJzaGlmdCAleDAsIGxzYiwgJXgwLCBAMworICAgICAgICBBbmQgIDBi
MDAxMSwgJXgwLCAleDAsIEA0CisgICAgICAgIFJldCAgICAgJXgwLCAgICAgICAgICAgQDUKKwor
ICAgICAgICB3LyBVQkZYIFBhdHRlcm46CisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisg
ICAgICAgIFViZnggJXgwLCBsc2IsIDIsICV4MCwgQDQKKyAgICAgICAgUmV0ICAleDAsICAgICAg
ICAgICAgICBANQorCisgICAgICAgIE5vdGU6CisgICAgICAgIFN1cHBvc2UgYSAzMi1iaXQgdmVy
c2lvbiBvZiAoc3JjID4+IDIwKSAmIDB4MEZGRiBpcyBlcXVpdmFsZW50IHRvIHNyYyA+PiAyMC4g
CisgICAgICAgIEluIHRoaXMgY2FzZSwgTG9naWNhbCBTaGlmdCBSaWdodCBzaG91bGQgYmUgdXRp
bGl6ZWQgaW5zdGVhZCB3aGVuOgorCisgICAgICAgIGxzYiArIHdpZHRoID09IGJpdCBmaWVsZCBs
aW1pdCAoMzIgb3IgNjQpCisKKyAgICAgICAgVGhpcyBjYXNlL3BhdHRlcm4gc2hvdWxkIGJlIGFk
ZGVkIGFuZCB1cGFkYXRlZCBpbiB0aGUgZnV0dXJlIHBhdGNoLgorCisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6dWJmeDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dWJmeDY0
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0
VWJmeDMyKToKKyAgICAgICAgKEpTQzo6dGVzdFViZng2NCk6CisgICAgICAgICogYjMvQjNMb3dl
clRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAg
ICogYjMvdGVzdGIzLmg6CisgICAgICAgICogYjMvdGVzdGIzXzIuY3BwOgorICAgICAgICAodGVz
dFViZng2NFBhdHRlcm5NYXRjaCk6CisgICAgICAgICh0ZXN0VWJmeDMyUGF0dGVybk1hdGNoKToK
KyAgICAgICAgKGFkZEJpdFRlc3RzKToKKwogMjAyMS0wNi0xNCAgWWlqaWEgSHVhbmcgIDx5aWpp
YV9odWFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEFpciBvcGNvZGUgc3ViMzIvNjQoUmVn
LCBJbW0sIFJlZykgZm9ybSBmb3IgQVJNNjQgYW5kIHNlbGVjdCB0aGlzIGluc3RydWN0aW9uIGlu
IEFpcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaAppbmRleCBmODZhZWMxYzU0MDA2ZWVkMWQ1YzVkZDNkNTZkOGQwMDNmZjc2
MTJiLi4yNmI5ZTIwZWVmOGIyYTYwN2JhMjk2ZGI1OGJhZjUzZThlMjAyODU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aApAQCAtMzkwLDYgKzM5MCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIGFuZDMyKGRhdGFUZW1wUmVn
aXN0ZXIsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgdWJmeDMyKFJlZ2lzdGVySUQgc3JjLCBU
cnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnViZng8MzI+KGRlc3QsIHNyYywgbHNiLm1fdmFsdWUs
IHdpZHRoLm1fdmFsdWUpOworICAgIH0KKworICAgIHZvaWQgdWJmeDY0KFJlZ2lzdGVySUQgc3Jj
LCBUcnVzdGVkSW1tMzIgbHNiLCBUcnVzdGVkSW1tMzIgd2lkdGgsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnViZng8NjQ+KGRlc3QsIHNyYywgbHNiLm1fdmFs
dWUsIHdpZHRoLm1fdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQgYW5kNjQoUmVnaXN0ZXJJRCBz
cmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmFuZF88NjQ+KGRlc3QsIHNyYzEsIHNyYzIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCBiYTUxMDJhMmJiOTk5YWQ1NzQ4ZjY4
NDc1ZDZjOGM0NWQ1MGEyMWI2Li5lZGU4YTNkMTE3Nzk3ZTAyYmRmZmUyNjdmZmU2ZWJhOTgwYmNj
Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNt
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApA
QCAtMTA0Miw2ICsxMDQyLDU0IEBAIHZvaWQgdGVzdFN1YjY0QXJnSW1tNjQoKQogICAgICAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KHN1YiwgdmFsdWUpLCBzdGF0aWNfY2FzdDxpbnQ2
NF90Pih2YWx1ZSAtIGltbWVkaWF0ZSkpOwogICAgIH0KIH0KKwordm9pZCB0ZXN0VWJmeDMyKCkK
K3sKKyAgICB1aW50MzJfdCBzcmMgPSAweGZmZmZmZmZmOworICAgIFZlY3Rvcjx1aW50MzJfdD4g
aW1tcyA9IHsgMCwgMSwgMzAsIDMxLCAzMiwgNjIsIDYzLCA2NCB9OworICAgIGZvciAoYXV0byBs
c2IgOiBpbW1zKSB7CisgICAgICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAg
ICAgIGlmIChsc2IgPj0gMCAmJiB3aWR0aCA+IDAgJiYgbHNiICsgd2lkdGggPCAzMikgeworICAg
ICAgICAgICAgICAgIGF1dG8gdWJmeDMyID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0
KSB7CisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgaml0LnViZngzMihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgCisg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdpZHRo
KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisK
KyAgICAgICAgICAgICAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0LnJldCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIENIRUNLX0VRKGludm9rZTx1aW50MzJfdD4odWJmeDMyLCBzcmMpLCAoKHNyYyA+PiBsc2Ip
ICYgKCgxVSA8PCB3aWR0aCkgLSAxVSkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCB0ZXN0VWJmeDY0KCkKK3sKKyAgICB1aW50NjRfdCBzcmMgPSAweGZmZmZm
ZmZmZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0geyAwLCAxLCAzMCwgMzEs
IDMyLCA2MiwgNjMsIDY0IH07CisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAg
Zm9yIChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgaWYgKGxzYiA+PSAwICYmIHdp
ZHRoID4gMCAmJiBsc2IgKyB3aWR0aCA8IDY0KSB7CisgICAgICAgICAgICAgICAgYXV0byB1YmZ4
NjQgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKworICAgICAgICAgICAgICAgICAgICBqaXQu
dWJmeDY0KEdQUkluZm86OnJldHVyblZhbHVlR1BSLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGxzYiksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIod2lkdGgpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICAgICAgICAgICAgICBl
bWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICAgICAgICAgICAgICBqaXQucmV0KCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPHVp
bnQ2NF90Pih1YmZ4NjQsIHNyYyksICgoc3JjID4+IGxzYikgJiAoKDFVTEwgPDwgd2lkdGgpIC0g
MVVMTCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgogCiAj
aWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQpAQCAtMjc2OSw2ICsyODE3
LDggQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FG
RVRZX0FOQUxZU0lTCiAgICAgUlVOKHRlc3RTdWI2NEFyZ0ltbTMyKCkpOwogICAgIFJVTih0ZXN0
U3ViNjRJbW02NCgpKTsKICAgICBSVU4odGVzdFN1YjY0QXJnSW1tNjQoKSk7CisgICAgUlVOKHRl
c3RVYmZ4MzIoKSk7CisgICAgUlVOKHRlc3RVYmZ4NjQoKSk7CiAjZW5kaWYKIAogI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggODMzZDEyZTQ2NTc2NmM3NzIyZmEyNGVkYjIzZmZiMDI0
ODhjNGJiYy4uNTNjZmE5ODQ4YTgxNzA3MDg5NDc5MGZkZWNjYWMxZTc1N2U3M2U3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAK
ICNpbmNsdWRlICJCM1dhc21BZGRyZXNzVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvSW5kZXhNYXAu
aD4KICNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKICNpZiAhQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19C
RUdJTgpAQCAtMjY5NCwyMyArMjY5NSw0NiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBCaXRBbmQ6IHsKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJ
bnQoMHhmZikpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9FeHRlbmQ4VG8zMiwg
WmVyb0V4dGVuZDhUbzMyPihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICBWYWx1ZSog
bGVmdCA9IG1fdmFsdWUtPmNoaWxkKDApOworICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92
YWx1ZS0+Y2hpbGQoMSk7CisKKyAgICAgICAgICAgIGlmIChyaWdodC0+aXNJbnQoMHhmZikpIHsK
KyAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9FeHRlbmQ4VG8zMiwgWmVyb0V4dGVuZDhU
bzMyPihsZWZ0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMHhmZmZm
KSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8WmVyb0V4dGVuZDE2VG8zMiwgWmVyb0V4
dGVuZDE2VG8zMj4obV92YWx1ZS0+Y2hpbGQoMCkpOworCisgICAgICAgICAgICBpZiAocmlnaHQt
PmlzSW50KDB4ZmZmZikpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9FeHRlbmQx
NlRvMzIsIFplcm9FeHRlbmQxNlRvMzI+KGxlZnQpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0lu
dDY0KDB4ZmZmZmZmZmYpIHx8IG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludDMyKDB4ZmZmZmZmZmYp
KSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxNb3ZlMzIsIE1vdmUzMj4obV92YWx1ZS0+
Y2hpbGQoMCkpOworICAgICAgICAgICAgaWYgKHJpZ2h0LT5pc0ludDY0KDB4ZmZmZmZmZmYpIHx8
IHJpZ2h0LT5pc0ludDMyKDB4ZmZmZmZmZmYpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVW5P
cDxNb3ZlMzIsIE1vdmUzMj4obGVmdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBhcHBlbmRCaW5PcDxBbmQzMiwgQW5k
NjQsIEFuZERvdWJsZSwgQW5kRmxvYXQsIENvbW11dGF0aXZlPigKLSAgICAgICAgICAgICAgICBt
X3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworCisgICAgICAgICAgICAvLyBV
QkZYIFBhdHRlcm46IGRlc3QgPSAoc3JjID4+IGxzYikgJiAoKDEgPDwgd2lkdGgpIC0gMSkKKyAg
ICAgICAgICAgIGlmIChjYW5CZUludGVybmFsKGxlZnQpICYmIGxlZnQtPm9wY29kZSgpID09IFpT
aHIpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogc3JjVmFsdWUgPSBsZWZ0LT5jaGlsZCgwKTsK
KyAgICAgICAgICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSBsZWZ0LT5jaGlsZCgxKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWltbShzcmNWYWx1ZSkgJiYgaW1tKGxzYlZhbHVlKSAmJiByaWdodC0+
aGFzSW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBsc2IgPSBsc2JWYWx1ZS0+
YXNJbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbWFzayA9IHJpZ2h0LT5hc0lu
dCgpOworICAgICAgICAgICAgICAgICAgICB1aW50OF90IHdpZHRoID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oIShtYXNrICYgKG1hc2sgKyAxKSkpICogV1RGOjpiaXRDb3VudChtYXNrKTsKKyAgICAg
ICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShVYmZ4MzIs
IFViZng2NCwgc3JjVmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGNv
ZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGxzYiA+PSAwCisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiB3aWR0aCA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGxzYiArIHdp
ZHRoIDw9ICgzMiA8PCAob3Bjb2RlID09IFViZng2NCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAmJiBpc1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6VG1wLCBBcmc6OkltbSwgQXJnOjpJbW0sIEFy
Zzo6VG1wKSkgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChvcGNvZGUsIHRtcChz
cmNWYWx1ZSksIGltbShsc2JWYWx1ZSksIGltbSh3aWR0aCksIHRtcChtX3ZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChsZWZ0KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXBwZW5kQmluT3A8QW5kMzIsIEFuZDY0
LCBBbmREb3VibGUsIEFuZEZsb2F0LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDEzODA4ZGU4M2JkYjExNzcwMWYxOGE1NjU1Njk4
MmRlMzhkM2IzYjguLjUyNDMyNThkOTY4NzNlODFiMWFjMjJlZTg4ZjA0MDA0ZGJmNzVlNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAt
MzU3LDYgKzM1NywxMiBAQCBBbmQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgeDg2OiBJbW0sIEFk
ZHIKICAgICB4ODY6IEltbSwgSW5kZXgKIAorYXJtNjQ6IFViZngzMiBVOkc6MzIsIFU6RzozMiwg
VTpHOjMyLCBaRDpHOjMyCisgICAgVG1wLCBJbW0sIEltbSwgVG1wCisKK2FybTY0OiBVYmZ4NjQg
VTpHOjY0LCBVOkc6MzIsIFU6RzozMiwgRDpHOjY0CisgICAgVG1wLCBJbW0sIEltbSwgVG1wCisK
IDY0OiBBbmQ2NCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAgICAgVG1wLCBUbXAsIFRtcAogICAg
IGFybTY0OiBCaXRJbW02NCwgVG1wLCBUbXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRl
eCA2ODA2NTNjNjE2NWFjZWM2N2U1ZTRiNmRlMmZkY2EwZGE0MTA5Nzc3Li40M2E3MzQ3ZThlNTQ5
N2I4OTcyNmJlMjk5MTY5MjRhYTAxYWMwZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5o
CkBAIC00MTYsNiArNDE2LDEwIEBAIGlubGluZSBkb3VibGUgbW9kZWxMb2FkPGRvdWJsZSwgZG91
YmxlPihkb3VibGUgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9CiAKIHZvaWQgcnVuKGNvbnN0IGNo
YXIqIGZpbHRlcik7CiB2b2lkIHRlc3RCaXRBbmRTRXh0MzIoaW50MzJfdCB2YWx1ZSwgaW50NjRf
dCBtYXNrKTsKK3ZvaWQgdGVzdFViZngzMigpOwordm9pZCB0ZXN0VWJmeDMyUGF0dGVybk1hdGNo
KCk7Cit2b2lkIHRlc3RVYmZ4NjQoKTsKK3ZvaWQgdGVzdFViZng2NFBhdHRlcm5NYXRjaCgpOwog
dm9pZCB0ZXN0QmFzaWNTZWxlY3QoKTsKIHZvaWQgdGVzdFNlbGVjdFRlc3QoKTsKIHZvaWQgdGVz
dFNlbGVjdENvbXBhcmVEb3VibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3Bw
CmluZGV4IDQ4MjM2MDI3NGMyN2M4N2VhZTA0N2E0NTdmMjI2YmMwNThlNWM4Y2QuLmIxN2VhYWVh
MzgwZTk4MThiMWQzNTE2Zjg4MDYxYzhkYWE2MWNlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcApAQCAtMjU0MCw2ICsyNTQwLDE1NCBAQCB2b2lkIHRlc3ROZWdGbG9hdFdp
dGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQogICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIC1h
KSk7CiB9CiAKK3ZvaWQgdGVzdFViZngzMigpCit7CisgICAgLy8gKHNyYyA+PiBsc2IpICYgbWFz
aworICAgIHVpbnQzMl90IHNyYyA9IDB4ZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBs
c2JzID0geyAwLCAxNSwgMzAgfTsKKyAgICBWZWN0b3I8dWludDMyX3Q+IHdpZHRocyA9IHsgMzAs
IDE2LCAxIH07CisKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IGxzYiwgdWludDMyX3Qg
bWFzaykgLT4gdWludDMyX3QgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogc3JjVmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgICAgIFZhbHVlKiBs
c2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBs
c2IpOworICAgICAgICBWYWx1ZSogbWFza1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIG1hc2spOworCisgICAgICAgIFZhbHVlKiBsZWZ0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgc3JjVmFsdWUsIGxzYlZh
bHVlKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgbGVmdCwgbWFza1ZhbHVlKSk7CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJvYywgc3JjKTsKKyAgICB9
OworCisgICAgYXV0byBnZW5lcmF0ZU1hc2sgPSBbJl0gKHVpbnQzMl90IHdpZHRoKSAtPiB1aW50
MzJfdCB7CisgICAgICAgIHJldHVybiAoMVUgPDwgd2lkdGgpIC0gMVU7CisgICAgfTsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbHNicy5zaXplKCk7ICsraSkgeworICAgICAgICB1aW50
MzJfdCBsc2IgPSBsc2JzLmF0KGkpOworICAgICAgICB1aW50MzJfdCBtYXNrID0gZ2VuZXJhdGVN
YXNrKHdpZHRocy5hdChpKSk7CisgICAgICAgIHVpbnQzMl90IGxocyA9IHRlc3QobHNiLCBtYXNr
KTsKKyAgICAgICAgdWludDMyX3QgcmhzID0gKChzcmMgPj4gbHNiKSAmIG1hc2spOworICAgICAg
ICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdFViZngzMlBhdHRlcm5N
YXRjaCgpCit7CisgICAgLy8gKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRoKSAtIDEpCisgICAg
dWludDMyX3Qgc3JjID0gMHhmZmZmZmZmZjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7
IDAsIDEsIDMwLCAzMSwgMzIsIDYyLCA2MywgNjQgfTsKKworICAgIGF1dG8gdGVzdCA9IFsmXSAo
dWludDMyX3QgbHNiLCB1aW50MzJfdCB3aWR0aCkgLT4gdWludDMyX3QgeworICAgICAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgICAgICBWYWx1ZSogc3JjVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgICAgIFZhbHVlKiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2IpOworICAgICAgICBWYWx1ZSogd2lkdGhWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB3aWR0aCk7Cisg
ICAgICAgIFZhbHVlKiBjb25zdFZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAxKTsKKyAgICAgICAgVmFsdWUqIGNvbnN0VmFsdWVCID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworCisgICAgICAgIFZh
bHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwg
c3JjVmFsdWUsIGxzYlZhbHVlKTsKKyAgICAgICAgVmFsdWUqIHJpZ2h0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFN1YiwgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBjb25zdFZhbHVl
QSwgd2lkdGhWYWx1ZSksIGNvbnN0VmFsdWVCKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgbGVmdCwg
cmlnaHQpKTsKKworICAgICAgICByZXR1cm4gY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJvYywg
c3JjKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAgZm9y
IChhdXRvIHdpZHRoIDogaW1tcykgeworICAgICAgICAgICAgdWludDMyX3QgbGhzID0gdGVzdChs
c2IsIHdpZHRoKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHJocyA9ICgoc3JjID4+IGxzYikgJiAo
KDFVIDw8IHdpZHRoKSAtIDFVKSk7CisgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0VWJmeDY0KCkKK3sKKyAgICAvLyAoc3JjID4+
IGxzYikgJiBtYXNrCisgICAgdWludDY0X3Qgc3JjID0gMHhmZmZmZmZmZjsKKyAgICBWZWN0b3I8
dWludDY0X3Q+IGxzYnMgPSB7IDAsIDMxLCA2MiB9OworICAgIFZlY3Rvcjx1aW50NjRfdD4gd2lk
dGhzID0geyA2MywgMzIsIDEgfTsKKworICAgIGF1dG8gdGVzdCA9IFsmXSAodWludDY0X3QgbHNi
LCB1aW50NjRfdCBtYXNrKSAtPiB1aW50NjRfdCB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZh
bHVlKiBzcmNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGxzYlZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxzYik7Cisg
ICAgICAgIFZhbHVlKiBtYXNrVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgbWFzayk7CisKKyAgICAgICAgVmFsdWUqIGxlZnQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFpTaHIsIE9yaWdpbigpLCBzcmNWYWx1ZSwgbHNiVmFsdWUpOwor
ICAgICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCisgICAgICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXRBbmQsIE9yaWdpbigpLCBsZWZ0LCBtYXNrVmFsdWUpKTsKKworICAgICAgICByZXR1cm4g
Y29tcGlsZUFuZFJ1bjx1aW50NjRfdD4ocHJvYywgc3JjKTsKKyAgICB9OworCisgICAgYXV0byBn
ZW5lcmF0ZU1hc2sgPSBbJl0gKHVpbnQ2NF90IHdpZHRoKSAtPiB1aW50NjRfdCB7CisgICAgICAg
IHJldHVybiAoMVVMTCA8PCB3aWR0aCkgLSAxVUxMOworICAgIH07CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxzYnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdWludDY0X3QgbHNiID0g
bHNicy5hdChpKTsKKyAgICAgICAgdWludDY0X3QgbWFzayA9IGdlbmVyYXRlTWFzayh3aWR0aHMu
YXQoaSkpOworICAgICAgICB1aW50NjRfdCBsaHMgPSB0ZXN0KGxzYiwgbWFzayk7CisgICAgICAg
IHVpbnQ2NF90IHJocyA9ICgoc3JjID4+IGxzYikgJiBtYXNrKTsKKyAgICAgICAgQ0hFQ0sobGhz
ID09IHJocyk7CisgICAgfQorfQorCit2b2lkIHRlc3RVYmZ4NjRQYXR0ZXJuTWF0Y2goKQorewor
ICAgIC8vIChzcmMgPj4gbHNiKSAmICgoMSA8PCB3aWR0aCkgLSAxKQorICAgIHVpbnQ2NF90IHNy
YyA9IDB4ZmZmZmZmZmZmZmZmZmZmZjsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGltbXMgPSB7IDAs
IDEsIDMwLCAzMSwgMzIsIDYyLCA2MywgNjQgfTsKKworICAgIGF1dG8gdGVzdCA9IFsmXSAodWlu
dDMyX3QgbHNiLCB1aW50MzJfdCB3aWR0aCkgLT4gdWludDY0X3QgeworICAgICAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgICAgICBWYWx1ZSogc3JjVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVl
KiBsc2JWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBsc2IpOworICAgICAgICBWYWx1ZSogd2lkdGhWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB3aWR0aCk7CisgICAgICAgIFZhbHVlKiBjb25zdFZh
bHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsK
KyAgICAgICAgVmFsdWUqIGNvbnN0VmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDEpOworCisgICAgICAgIFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgc3JjVmFsdWUsIGxzYlZhbHVlKTsK
KyAgICAgICAgVmFsdWUqIHJpZ2h0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIFN1YiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBjb25zdFZhbHVlQSwgd2lkdGhWYWx1ZSksIGNvbnN0
VmFsdWVCKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgbGVmdCwgcmlnaHQpKTsKKworICAgICAgICBy
ZXR1cm4gY29tcGlsZUFuZFJ1bjx1aW50NjRfdD4ocHJvYywgc3JjKTsKKyAgICB9OworCisgICAg
Zm9yIChhdXRvIGxzYiA6IGltbXMpIHsKKyAgICAgICAgZm9yIChhdXRvIHdpZHRoIDogaW1tcykg
eworICAgICAgICAgICAgdWludDY0X3QgbGhzID0gdGVzdChsc2IsIHdpZHRoKTsKKyAgICAgICAg
ICAgIHVpbnQ2NF90IHJocyA9ICgoc3JjID4+IGxzYikgJiAoKDFVTEwgPDwgd2lkdGgpIC0gMVVM
TCkpOworICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKIHN0YXRpYyB2b2lkIHRlc3RCaXRBbmRBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQogewog
ICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMzM1NCw2ICszNTAyLDExIEBAIHN0YXRpYyB2b2lkIHRl
c3RCaXRPckltbUFyZzMyKGludCBhLCBpbnQgYikKIAogdm9pZCBhZGRCaXRUZXN0cyhjb25zdCBj
aGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiB7
CisgICAgUlVOKHRlc3RVYmZ4MzIoKSk7CisgICAgUlVOKHRlc3RVYmZ4MzJQYXR0ZXJuTWF0Y2go
KSk7CisgICAgUlVOKHRlc3RVYmZ4NjQoKSk7CisgICAgUlVOKHRlc3RVYmZ4NjRQYXR0ZXJuTWF0
Y2goKSk7CisKICAgICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMsIDQzKSk7CiAgICAgUlVOKHRlc3RC
aXRBbmRBcmdzKDQzLCAwKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDEwLCAzKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431680</attachid>
            <date>2021-06-17 09:19:05 -0700</date>
            <delta_ts>2021-06-17 10:17:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226984-20210617111903.patch</filename>
            <type>text/plain</type>
            <size>16928</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MGViZmFiYjVlZjU2NTlhZWU4YjI4ZTM1YjBiNTViYjBlMWM5OGQ0Li4yYmVlYTZjNzU1NGZmNDUz
ZTQ3OWI5YzY4MTNhNmY3MjdmNzQwZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAyMS0wNi0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBVQkZYIHN1cHBvcnRlZCBieSBBUk02NAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVUJGWCwgc3VwcG9ydGVkIGJ5IEFSTTY0LCBjb3Bp
ZXMgYWRqYWNlbnQgYml0cyBmcm9tIHRoZSBzb3VyY2UgcmVnaXN0ZXIgaW50byAKKyAgICAgICAg
dGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgYSBkZXN0aW5hdGlvbiByZWdpc3RlciBpbiB6
ZXJvIGV4dGVuc2lvbi4gVGhlIAorICAgICAgICBpbnN0cnVjdGlvbiBzZWxlY3RvciBjYW4gdXRp
bGl6ZSB0aGlzIHRvIGxvd2VyaW5nIGNlcnRhaW4gcGF0dGVybnMgaW4gQjMgSVIgCisgICAgICAg
IGJlZm9yZSBmdXJ0aGVyIEFpciBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgdWJmeCBkZXN0LCBz
cmMsIGxzYiwgd2lkdGgKKyAgICAgICAgICAgdG1wLCB0bXAsIGltbSwgaW1tCisKKyAgICAgICAg
VGhpcyBpcyBlcXVpdmFsZW50IHRvICJkZXN0ID0gKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRo
KSAtIDEpIi4gU2luY2Ugd2FzbSAKKyAgICAgICAgaW50cm9kdWNlcyBjb25zdGFudCBmb2xkaW5n
LCB0aGVuIHRoZSBwYXR0ZXJuIHdvdWxkIGJlOgorCisgICAgICAgIGRlc3QgPSAoc3JjID4+IGxz
YikgJiBtYXNrCisKKyAgICAgICAgd2hlcmUgdGhlIG1hc2sgc2hvdWxkIGhhdmUgYSBiaW5hcnkg
Zm9ybWF0IGluIGNvbnRpZ3VvdXMgb25lcyBzdGFydGluZyBmcm9tIAorICAgICAgICB0aGUgbGVh
c3Qgc2lnbmlmaWNhbnQgYml0LiBGb3IgZXhhbXBsZToKKworICAgICAgICAwYjAwMTExMTExCisK
KyAgICAgICAgVG8gbWFrZSB0aGUgcGF0dGVybiBtYXRjaGluZyBpbiBpbnN0cnVjdGlvbiBzZWxl
Y3Rpb24gYmVuZWZpY2lhbCB0byBKSVQsIHRoZXNlIAorICAgICAgICBjb25zdHJhaW50cyBzaG91
bGQgYmUgaW50cm9kdWNlZDoKKworICAgICAgICAxLiBsc2IgPj0gMCAKKyAgICAgICAgMi4gd2lk
dGggPiAwCisgICAgICAgIDMuIGxzYiArIHdpZHRoIDw9IGJpdCBmaWVsZCBsaW1pdCAoMzIgb3Ig
NjQpCisKKyAgICAgICAgR2l2ZW46CisgICAgICAgIC8vIEIzIElSCisgICAgICAgIEludCBAMCA9
IEFyZ3VtZW50UmVnKCUwKQorICAgICAgICBJbnQgQDEgPSBsc2IKKyAgICAgICAgSW50IEAyID0g
MGIwMDExCisgICAgICAgIEludCBAMyA9IFpTaHIoQDAsIEAxKQorICAgICAgICBJbnQgQDQgPSBC
aXRBbmQoQDMsIEAyKSAgCisgICAgICAgIFZvaWRANSA9IFJldHVybihANCwgVGVybWluYWwpICAg
ICAgCisKKyAgICAgICAgdy9vIFVCRlggUGF0dGVybjoKKyAgICAgICAgLy8gT2xkIG9wdGltaXpl
ZCBBSVIKKyAgICAgICAgVXJzaGlmdCAleDAsIGxzYiwgJXgwLCBAMworICAgICAgICBBbmQgIDBi
MDAxMSwgJXgwLCAleDAsIEA0CisgICAgICAgIFJldCAgICAgJXgwLCAgICAgICAgICAgQDUKKwor
ICAgICAgICB3LyBVQkZYIFBhdHRlcm46CisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisg
ICAgICAgIFViZnggJXgwLCBsc2IsIDIsICV4MCwgQDQKKyAgICAgICAgUmV0ICAleDAsICAgICAg
ICAgICAgICBANQorCisgICAgICAgIE5vdGU6CisgICAgICAgIFN1cHBvc2UgYSAzMi1iaXQgdmVy
c2lvbiBvZiAoc3JjID4+IDIwKSAmIDB4MEZGRiwgaXQgaXMgZXF1aXZhbGVudCB0byBzcmMgPj4g
MjAuIAorICAgICAgICBJbiB0aGlzIGNhc2UsIExvZ2ljYWwgU2hpZnQgUmlnaHQgc2hvdWxkIGJl
IHV0aWxpemVkIGluc3RlYWQgd2hlbjoKKworICAgICAgICBsc2IgKyB3aWR0aCA9PSBiaXQgZmll
bGQgbGltaXQgKDMyIG9yIDY0KQorCisgICAgICAgIFRoaXMgY2FzZS9wYXR0ZXJuIHNob3VsZCBi
ZSBhZGRlZCBhbmQgdXBhZGF0ZWQgaW4gdGhlIGZ1dHVyZSBwYXRjaC4KKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OnViZngzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnVi
Zng2NCk6CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6
dGVzdFViZngzMik6CisgICAgICAgIChKU0M6OnRlc3RVYmZ4NjQpOgorICAgICAgICAqIGIzL0Iz
TG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAg
ICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18yLmNwcDoKKyAgICAgICAg
KHRlc3RVYmZ4NjRQYXR0ZXJuTWF0Y2gpOgorICAgICAgICAodGVzdFViZngzMlBhdHRlcm5NYXRj
aCk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDYtMTQgIFlpamlhIEh1YW5nICA8
eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBBaXIgb3Bjb2RlIHN1YjMyLzY0
KFJlZywgSW1tLCBSZWcpIGZvcm0gZm9yIEFSTTY0IGFuZCBzZWxlY3QgdGhpcyBpbnN0cnVjdGlv
biBpbiBBaXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggZjg2YWVjMWM1NDAwNmVlZDFkNWM1ZGQzZDU2ZDhkMDAz
ZmY3NjEyYi4uMjZiOWUyMGVlZjhiMmE2MDdiYTI5NmRiNThiYWY1M2U4ZTIwMjg1OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKQEAgLTM5MCw2ICszOTAsMTYgQEAgcHVibGljOgogICAgICAgICBhbmQzMihkYXRhVGVt
cFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIHViZngzMihSZWdpc3RlcklEIHNy
YywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci51YmZ4PDMyPihkZXN0LCBzcmMsIGxzYi5tX3Zh
bHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICB2b2lkIHViZng2NChSZWdpc3RlcklE
IHNyYywgVHJ1c3RlZEltbTMyIGxzYiwgVHJ1c3RlZEltbTMyIHdpZHRoLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci51YmZ4PDY0PihkZXN0LCBzcmMsIGxzYi5t
X3ZhbHVlLCB3aWR0aC5tX3ZhbHVlKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDY0KFJlZ2lzdGVy
SUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRfPDY0PihkZXN0LCBzcmMxLCBzcmMyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXggYmE1MTAyYTJiYjk5OWFkNTc0
OGY2ODQ3NWQ2YzhjNDVkNTBhMjFiNi4uZWRlOGEzZDExNzc5N2UwMmJkZmZlMjY3ZmZlNmViYTk4
MGJjYzc3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0
bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5j
cHAKQEAgLTEwNDIsNiArMTA0Miw1NCBAQCB2b2lkIHRlc3RTdWI2NEFyZ0ltbTY0KCkKICAgICAg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PihzdWIsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8
aW50NjRfdD4odmFsdWUgLSBpbW1lZGlhdGUpKTsKICAgICB9CiB9CisKK3ZvaWQgdGVzdFViZngz
MigpCit7CisgICAgdWludDMyX3Qgc3JjID0gMHhmZmZmZmZmZjsKKyAgICBWZWN0b3I8dWludDMy
X3Q+IGltbXMgPSB7IDAsIDEsIDMwLCAzMSwgMzIsIDYyLCA2MywgNjQgfTsKKyAgICBmb3IgKGF1
dG8gbHNiIDogaW1tcykgeworICAgICAgICBmb3IgKGF1dG8gd2lkdGggOiBpbW1zKSB7CisgICAg
ICAgICAgICBpZiAobHNiID49IDAgJiYgd2lkdGggPiAwICYmIGxzYiArIHdpZHRoIDwgMzIpIHsK
KyAgICAgICAgICAgICAgICBhdXRvIHViZngzMiA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCkgeworICAgICAgICAgICAgICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwor
CisgICAgICAgICAgICAgICAgICAgIGppdC51YmZ4MzIoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIs
IAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobHNi
KSwgCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih3
aWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIp
OworCisgICAgICAgICAgICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAg
ICAgICAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICBDSEVDS19FUShpbnZva2U8dWludDMyX3Q+KHViZngzMiwgc3JjKSwgKChzcmMgPj4g
bHNiKSAmICgoMVUgPDwgd2lkdGgpIC0gMVUpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdFViZng2NCgpCit7CisgICAgdWludDY0X3Qgc3JjID0gMHhm
ZmZmZmZmZmZmZmZmZmZmOworICAgIFZlY3Rvcjx1aW50MzJfdD4gaW1tcyA9IHsgMCwgMSwgMzAs
IDMxLCAzMiwgNjIsIDYzLCA2NCB9OworICAgIGZvciAoYXV0byBsc2IgOiBpbW1zKSB7CisgICAg
ICAgIGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIGlmIChsc2IgPj0gMCAm
JiB3aWR0aCA+IDAgJiYgbHNiICsgd2lkdGggPCA2NCkgeworICAgICAgICAgICAgICAgIGF1dG8g
dWJmeDY0ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
aml0LnViZng2NChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgCisgICAgICAgICAgICAgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsc2IpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHdpZHRoKSwgCisgICAgICAgICAgICAg
ICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnJl
dCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGludm9r
ZTx1aW50NjRfdD4odWJmeDY0LCBzcmMpLCAoKHNyYyA+PiBsc2IpICYgKCgxVUxMIDw8IHdpZHRo
KSAtIDFVTEwpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CiAjZW5kaWYK
IAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk02NCkKQEAgLTI3NjksNiAr
MjgxNyw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RGX0lHTk9SRVNfVEhSRUFE
X1NBRkVUWV9BTkFMWVNJUwogICAgIFJVTih0ZXN0U3ViNjRBcmdJbW0zMigpKTsKICAgICBSVU4o
dGVzdFN1YjY0SW1tNjQoKSk7CiAgICAgUlVOKHRlc3RTdWI2NEFyZ0ltbTY0KCkpOworICAgIFJV
Tih0ZXN0VWJmeDMyKCkpOworICAgIFJVTih0ZXN0VWJmeDY0KCkpOwogI2VuZGlmCiAKICNpZiBD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDgzM2QxMmU0NjU3NjZjNzcyMmZhMjRlZGIyM2Zm
YjAyNDg4YzRiYmMuLjUzY2ZhOTg0OGE4MTcwNzA4OTQ3OTBmZGVjY2FjMWU3NTdlNzNlN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC01OSw2ICs1OSw3
IEBACiAjaW5jbHVkZSAiQjNXYXNtQWRkcmVzc1ZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0luZGV4
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiAjaWYgIUFTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklO
R1NfQkVHSU4KQEAgLTI2OTQsMjMgKzI2OTUsNDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2UgQml0QW5kOiB7Ci0gICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSkt
PmlzSW50KDB4ZmYpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxaZXJvRXh0ZW5kOFRv
MzIsIFplcm9FeHRlbmQ4VG8zMj4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgVmFs
dWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKKyAgICAgICAgICAgIFZhbHVlKiByaWdodCA9
IG1fdmFsdWUtPmNoaWxkKDEpOworCisgICAgICAgICAgICBpZiAocmlnaHQtPmlzSW50KDB4ZmYp
KSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxaZXJvRXh0ZW5kOFRvMzIsIFplcm9FeHRl
bmQ4VG8zMj4obGVmdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDB4
ZmZmZikpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPFplcm9FeHRlbmQxNlRvMzIsIFpl
cm9FeHRlbmQxNlRvMzI+KG1fdmFsdWUtPmNoaWxkKDApKTsKKworICAgICAgICAgICAgaWYgKHJp
Z2h0LT5pc0ludCgweGZmZmYpKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxaZXJvRXh0
ZW5kMTZUbzMyLCBaZXJvRXh0ZW5kMTZUbzMyPihsZWZ0KTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+
aXNJbnQ2NCgweGZmZmZmZmZmKSB8fCBtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQzMigweGZmZmZm
ZmZmKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8TW92ZTMyLCBNb3ZlMzI+KG1fdmFs
dWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIGlmIChyaWdodC0+aXNJbnQ2NCgweGZmZmZmZmZm
KSB8fCByaWdodC0+aXNJbnQzMigweGZmZmZmZmZmKSkgeworICAgICAgICAgICAgICAgIGFwcGVu
ZFVuT3A8TW92ZTMyLCBNb3ZlMzI+KGxlZnQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgYXBwZW5kQmluT3A8QW5kMzIs
IEFuZDY0LCBBbmREb3VibGUsIEFuZEZsb2F0LCBDb21tdXRhdGl2ZT4oCi0gICAgICAgICAgICAg
ICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKworICAgICAgICAgICAg
Ly8gVUJGWCBQYXR0ZXJuOiBkZXN0ID0gKHNyYyA+PiBsc2IpICYgKCgxIDw8IHdpZHRoKSAtIDEp
CisgICAgICAgICAgICBpZiAoY2FuQmVJbnRlcm5hbChsZWZ0KSAmJiBsZWZ0LT5vcGNvZGUoKSA9
PSBaU2hyKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIHNyY1ZhbHVlID0gbGVmdC0+Y2hpbGQo
MCk7CisgICAgICAgICAgICAgICAgVmFsdWUqIGxzYlZhbHVlID0gbGVmdC0+Y2hpbGQoMSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpbW0oc3JjVmFsdWUpICYmIGltbShsc2JWYWx1ZSkgJiYgcmln
aHQtPmhhc0ludCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGludDY0X3QgbHNiID0gbHNiVmFs
dWUtPmFzSW50KCk7CisgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG1hc2sgPSByaWdodC0+
YXNJbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCB3aWR0aCA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KCEobWFzayAmIChtYXNrICsgMSkpKSAqIFdURjo6Yml0Q291bnQobWFzayk7Cisg
ICAgICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUoVWJm
eDMyLCBVYmZ4NjQsIHNyY1ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAo
b3Bjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBsc2IgPj0gMAorICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgd2lkdGggPiAwCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBsc2Ig
KyB3aWR0aCA8PSAoMzIgPDwgKG9wY29kZSA9PSBVYmZ4NjQpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpJbW0sIEFyZzo6SW1t
LCBBcmc6OlRtcCkpICB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCB0
bXAoc3JjVmFsdWUpLCBpbW0obHNiVmFsdWUpLCBpbW0od2lkdGgpLCB0bXAobV92YWx1ZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobGVmdCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBB
bmQ2NCwgQW5kRG91YmxlLCBBbmRGbG9hdCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCAxMzgwOGRlODNiZGIxMTc3MDFmMThhNTY1
NTY5ODJkZTM4ZDNiM2I4Li41MjQzMjU4ZDk2ODczZTgxYjFhYzIyZWU4OGYwNDAwNGRiZjc1ZTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMK
QEAgLTM1Nyw2ICszNTcsMTIgQEAgQW5kMzIgVTpHOjMyLCBVWkQ6RzozMgogICAgIHg4NjogSW1t
LCBBZGRyCiAgICAgeDg2OiBJbW0sIEluZGV4CiAKK2FybTY0OiBVYmZ4MzIgVTpHOjMyLCBVOkc6
MzIsIFU6RzozMiwgWkQ6RzozMgorICAgIFRtcCwgSW1tLCBJbW0sIFRtcAorCithcm02NDogVWJm
eDY0IFU6Rzo2NCwgVTpHOjMyLCBVOkc6MzIsIEQ6Rzo2NAorICAgIFRtcCwgSW1tLCBJbW0sIFRt
cAorCiA2NDogQW5kNjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAK
ICAgICBhcm02NDogQml0SW1tNjQsIFRtcCwgVG1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgK
aW5kZXggNjgwNjUzYzYxNjVhY2VjNjdlNWU0YjZkZTJmZGNhMGRhNDEwOTc3Ny4uNDNhNzM0N2U4
ZTU0OTdiODk3MjZiZTI5OTE2OTI0YWEwMWFjMGQwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuaApAQCAtNDE2LDYgKzQxNiwxMCBAQCBpbmxpbmUgZG91YmxlIG1vZGVsTG9hZDxkb3VibGUs
IGRvdWJsZT4oZG91YmxlIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQogCiB2b2lkIHJ1bihjb25z
dCBjaGFyKiBmaWx0ZXIpOwogdm9pZCB0ZXN0Qml0QW5kU0V4dDMyKGludDMyX3QgdmFsdWUsIGlu
dDY0X3QgbWFzayk7Cit2b2lkIHRlc3RVYmZ4MzIoKTsKK3ZvaWQgdGVzdFViZngzMlBhdHRlcm5N
YXRjaCgpOwordm9pZCB0ZXN0VWJmeDY0KCk7Cit2b2lkIHRlc3RVYmZ4NjRQYXR0ZXJuTWF0Y2go
KTsKIHZvaWQgdGVzdEJhc2ljU2VsZWN0KCk7CiB2b2lkIHRlc3RTZWxlY3RUZXN0KCk7CiB2b2lk
IHRlc3RTZWxlY3RDb21wYXJlRG91YmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzXzIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18y
LmNwcAppbmRleCA0ODIzNjAyNzRjMjdjODdlYWUwNDdhNDU3ZjIyNmJjMDU4ZTVjOGNkLi5iMTdl
YWFlYTM4MGU5ODE4YjFkMzUxNmY4ODA2MWM4ZGFhNjFjZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMi5jcHAKQEAgLTI1NDAsNiArMjU0MCwxNTQgQEAgdm9pZCB0ZXN0TmVnRmxv
YXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKICAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkp
LCAtYSkpOwogfQogCit2b2lkIHRlc3RVYmZ4MzIoKQoreworICAgIC8vIChzcmMgPj4gbHNiKSAm
IG1hc2sKKyAgICB1aW50MzJfdCBzcmMgPSAweGZmZmZmZmZmOworICAgIFZlY3Rvcjx1aW50MzJf
dD4gbHNicyA9IHsgMCwgMTUsIDMwIH07CisgICAgVmVjdG9yPHVpbnQzMl90PiB3aWR0aHMgPSB7
IDMwLCAxNiwgMSB9OworCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50MzJfdCBsc2IsIHVpbnQz
Ml90IG1hc2spIC0+IHVpbnQzMl90IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHNy
Y1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgICAgICBWYWx1
ZSogbHNiVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgbHNiKTsKKyAgICAgICAgVmFsdWUqIG1hc2tWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKTsKKworICAgICAgICBWYWx1ZSogbGVmdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIHNyY1ZhbHVlLCBs
c2JWYWx1ZSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGxlZnQsIG1hc2tWYWx1ZSkpOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVBbmRSdW48dWludDMyX3Q+KHByb2MsIHNyYyk7Cisg
ICAgfTsKKworICAgIGF1dG8gZ2VuZXJhdGVNYXNrID0gWyZdICh1aW50MzJfdCB3aWR0aCkgLT4g
dWludDMyX3QgeworICAgICAgICByZXR1cm4gKDFVIDw8IHdpZHRoKSAtIDFVOworICAgIH07CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxzYnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
dWludDMyX3QgbHNiID0gbHNicy5hdChpKTsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IGdlbmVy
YXRlTWFzayh3aWR0aHMuYXQoaSkpOworICAgICAgICB1aW50MzJfdCBsaHMgPSB0ZXN0KGxzYiwg
bWFzayk7CisgICAgICAgIHVpbnQzMl90IHJocyA9ICgoc3JjID4+IGxzYikgJiBtYXNrKTsKKyAg
ICAgICAgQ0hFQ0sobGhzID09IHJocyk7CisgICAgfQorfQorCit2b2lkIHRlc3RVYmZ4MzJQYXR0
ZXJuTWF0Y2goKQoreworICAgIC8vIChzcmMgPj4gbHNiKSAmICgoMSA8PCB3aWR0aCkgLSAxKQor
ICAgIHVpbnQzMl90IHNyYyA9IDB4ZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1z
ID0geyAwLCAxLCAzMCwgMzEsIDMyLCA2MiwgNjMsIDY0IH07CisKKyAgICBhdXRvIHRlc3QgPSBb
Jl0gKHVpbnQzMl90IGxzYiwgdWludDMyX3Qgd2lkdGgpIC0+IHVpbnQzMl90IHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWUqIHNyY1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgICAgICBWYWx1ZSogbHNiVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbHNiKTsKKyAgICAgICAgVmFsdWUqIHdpZHRoVmFs
dWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgd2lkdGgp
OworICAgICAgICBWYWx1ZSogY29uc3RWYWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgICAgIFZhbHVlKiBjb25zdFZhbHVlQiA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAg
ICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2lu
KCksIHNyY1ZhbHVlLCBsc2JWYWx1ZSk7CisgICAgICAgIFZhbHVlKiByaWdodCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgY29uc3RW
YWx1ZUEsIHdpZHRoVmFsdWUpLCBjb25zdFZhbHVlQik7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGxl
ZnQsIHJpZ2h0KSk7CisKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVBbmRSdW48dWludDMyX3Q+KHBy
b2MsIHNyYyk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBsc2IgOiBpbW1zKSB7CisgICAgICAg
IGZvciAoYXV0byB3aWR0aCA6IGltbXMpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGxocyA9IHRl
c3QobHNiLCB3aWR0aCk7CisgICAgICAgICAgICB1aW50MzJfdCByaHMgPSAoKHNyYyA+PiBsc2Ip
ICYgKCgxVSA8PCB3aWR0aCkgLSAxVSkpOworICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFViZng2NCgpCit7CisgICAgLy8gKHNy
YyA+PiBsc2IpICYgbWFzaworICAgIHVpbnQ2NF90IHNyYyA9IDB4ZmZmZmZmZmY7CisgICAgVmVj
dG9yPHVpbnQ2NF90PiBsc2JzID0geyAwLCAzMSwgNjIgfTsKKyAgICBWZWN0b3I8dWludDY0X3Q+
IHdpZHRocyA9IHsgNjMsIDMyLCAxIH07CisKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQ2NF90
IGxzYiwgdWludDY0X3QgbWFzaykgLT4gdWludDY0X3QgeworICAgICAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAg
ICBWYWx1ZSogc3JjVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBsc2JW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsc2Ip
OworICAgICAgICBWYWx1ZSogbWFza1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIG1hc2spOworCisgICAgICAgIFZhbHVlKiBsZWZ0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaU2hyLCBPcmlnaW4oKSwgc3JjVmFsdWUsIGxzYlZhbHVl
KTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0QW5kLCBPcmlnaW4oKSwgbGVmdCwgbWFza1ZhbHVlKSk7CisKKyAgICAgICAgcmV0
dXJuIGNvbXBpbGVBbmRSdW48dWludDY0X3Q+KHByb2MsIHNyYyk7CisgICAgfTsKKworICAgIGF1
dG8gZ2VuZXJhdGVNYXNrID0gWyZdICh1aW50NjRfdCB3aWR0aCkgLT4gdWludDY0X3QgeworICAg
ICAgICByZXR1cm4gKDFVTEwgPDwgd2lkdGgpIC0gMVVMTDsKKyAgICB9OworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsc2JzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHVpbnQ2NF90IGxz
YiA9IGxzYnMuYXQoaSk7CisgICAgICAgIHVpbnQ2NF90IG1hc2sgPSBnZW5lcmF0ZU1hc2sod2lk
dGhzLmF0KGkpKTsKKyAgICAgICAgdWludDY0X3QgbGhzID0gdGVzdChsc2IsIG1hc2spOworICAg
ICAgICB1aW50NjRfdCByaHMgPSAoKHNyYyA+PiBsc2IpICYgbWFzayk7CisgICAgICAgIENIRUNL
KGxocyA9PSByaHMpOworICAgIH0KK30KKwordm9pZCB0ZXN0VWJmeDY0UGF0dGVybk1hdGNoKCkK
K3sKKyAgICAvLyAoc3JjID4+IGxzYikgJiAoKDEgPDwgd2lkdGgpIC0gMSkKKyAgICB1aW50NjRf
dCBzcmMgPSAweGZmZmZmZmZmZmZmZmZmZmY7CisgICAgVmVjdG9yPHVpbnQzMl90PiBpbW1zID0g
eyAwLCAxLCAzMCwgMzEsIDMyLCA2MiwgNjMsIDY0IH07CisKKyAgICBhdXRvIHRlc3QgPSBbJl0g
KHVpbnQzMl90IGxzYiwgdWludDMyX3Qgd2lkdGgpIC0+IHVpbnQ2NF90IHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICAgICAgVmFsdWUqIHNyY1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBW
YWx1ZSogbHNiVmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgbHNiKTsKKyAgICAgICAgVmFsdWUqIHdpZHRoVmFsdWUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgd2lkdGgpOworICAgICAgICBWYWx1ZSogY29u
c3RWYWx1ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
MSk7CisgICAgICAgIFZhbHVlKiBjb25zdFZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKworICAgICAgICBWYWx1ZSogbGVmdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWlNociwgT3JpZ2luKCksIHNyY1ZhbHVlLCBsc2JWYWx1
ZSk7CisgICAgICAgIFZhbHVlKiByaWdodCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBTdWIsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgY29uc3RWYWx1ZUEsIHdpZHRoVmFsdWUpLCBj
b25zdFZhbHVlQik7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKKyAgICAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGxlZnQsIHJpZ2h0KSk7CisKKyAgICAg
ICAgcmV0dXJuIGNvbXBpbGVBbmRSdW48dWludDY0X3Q+KHByb2MsIHNyYyk7CisgICAgfTsKKwor
ICAgIGZvciAoYXV0byBsc2IgOiBpbW1zKSB7CisgICAgICAgIGZvciAoYXV0byB3aWR0aCA6IGlt
bXMpIHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGxocyA9IHRlc3QobHNiLCB3aWR0aCk7CisgICAg
ICAgICAgICB1aW50NjRfdCByaHMgPSAoKHNyYyA+PiBsc2IpICYgKCgxVUxMIDw8IHdpZHRoKSAt
IDFVTEwpKTsKKyAgICAgICAgICAgIENIRUNLKGxocyA9PSByaHMpOworICAgICAgICB9CisgICAg
fQorfQorCiBzdGF0aWMgdm9pZCB0ZXN0Qml0QW5kQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikK
IHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTMzNTQsNiArMzUwMiwxMSBAQCBzdGF0aWMgdm9p
ZCB0ZXN0Qml0T3JJbW1BcmczMihpbnQgYSwgaW50IGIpCiAKIHZvaWQgYWRkQml0VGVzdHMoY29u
c3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tz
KQogeworICAgIFJVTih0ZXN0VWJmeDMyKCkpOworICAgIFJVTih0ZXN0VWJmeDMyUGF0dGVybk1h
dGNoKCkpOworICAgIFJVTih0ZXN0VWJmeDY0KCkpOworICAgIFJVTih0ZXN0VWJmeDY0UGF0dGVy
bk1hdGNoKCkpOworCiAgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCA0MykpOwogICAgIFJVTih0
ZXN0Qml0QW5kQXJncyg0MywgMCkpOwogICAgIFJVTih0ZXN0Qml0QW5kQXJncygxMCwgMykpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>