<?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>227970</bug_id>
          
          <creation_ts>2021-07-14 15:53:52 -0700</creation_ts>
          <short_desc>Add ExtendType to Air::Arg Index to fully utilize address computation in memory instruction for ARM64</short_desc>
          <delta_ts>2021-07-16 17:54:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <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>1777070</commentid>
    <comment_count>0</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-14 15:53:52 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777097</commentid>
    <comment_count>1</comment_count>
      <attachid>433545</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-14 17:06:27 -0700</bug_when>
    <thetext>Created attachment 433545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777141</commentid>
    <comment_count>2</comment_count>
      <attachid>433566</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-15 00:08:39 -0700</bug_when>
    <thetext>Created attachment 433566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777271</commentid>
    <comment_count>3</comment_count>
      <attachid>433603</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-15 11:37:54 -0700</bug_when>
    <thetext>Created attachment 433603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777300</commentid>
    <comment_count>4</comment_count>
      <attachid>433614</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-15 12:59:02 -0700</bug_when>
    <thetext>Created attachment 433614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777359</commentid>
    <comment_count>5</comment_count>
      <attachid>433614</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-15 15:56:51 -0700</bug_when>
    <thetext>Comment on attachment 433614
Patch

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

&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:130
&gt; +        SExt,

Is this a thing?

&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:131
&gt; +        Oops

Can this be called None?

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:556
&gt; +#if CPU(ARM64)
&gt; +                if (index-&gt;opcode() == ZExt32 &amp;&amp; !m_locked.contains(index-&gt;child(0)))
&gt; +                    return Arg::index(tmp(base), tmp(index-&gt;child(0)), *scale, offset, MacroAssembler::ZExt);
&gt; +#endif

I feel like the more idiomatic Air way to do this is to hook into isValidIndexForm and teach it about ZExt on arm64.

&gt; Source/JavaScriptCore/b3/air/AirArg.h:1491
&gt;      int32_t m_scale { 1 };
&gt;      Air::Tmp m_base;
&gt;      Air::Tmp m_index;
&gt; +    MacroAssembler::Extend m_extend = MacroAssembler::Extend::Oops;

I think we only need a single bit for &quot;m_extend&quot; right now. I wonder if we can steal that from elsewhere. One bit for SExt vs nothing. Do we use all 32-bits of m_scale?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777367</commentid>
    <comment_count>6</comment_count>
      <attachid>433614</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-15 16:20:58 -0700</bug_when>
    <thetext>Comment on attachment 433614
Patch

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

&gt;&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:130
&gt;&gt; +        SExt,
&gt; 
&gt; Is this a thing?

I think architecturally it is. But do we ever use it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777368</commentid>
    <comment_count>7</comment_count>
      <attachid>433614</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-15 16:21:57 -0700</bug_when>
    <thetext>Comment on attachment 433614
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:130
&gt;&gt;&gt; +        SExt,
&gt;&gt; 
&gt;&gt; Is this a thing?
&gt; 
&gt; I think architecturally it is. But do we ever use it?

maybe it&apos;s useful when we do loads of negative properties? I guess we can just add support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777384</commentid>
    <comment_count>8</comment_count>
      <attachid>433640</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-15 17:17:49 -0700</bug_when>
    <thetext>Created attachment 433640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777393</commentid>
    <comment_count>9</comment_count>
      <attachid>433642</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-15 17:36:29 -0700</bug_when>
    <thetext>Created attachment 433642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777420</commentid>
    <comment_count>10</comment_count>
      <attachid>433651</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-15 20:40:49 -0700</bug_when>
    <thetext>Created attachment 433651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777434</commentid>
    <comment_count>11</comment_count>
      <attachid>433655</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-15 22:04:42 -0700</bug_when>
    <thetext>Created attachment 433655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777479</commentid>
    <comment_count>12</comment_count>
      <attachid>433668</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-16 02:52:09 -0700</bug_when>
    <thetext>Created attachment 433668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777530</commentid>
    <comment_count>13</comment_count>
      <attachid>433614</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-16 10:27:37 -0700</bug_when>
    <thetext>Comment on attachment 433614
Patch

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

&gt;&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:556
&gt;&gt; +#endif
&gt; 
&gt; I feel like the more idiomatic Air way to do this is to hook into isValidIndexForm and teach it about ZExt on arm64.

I agree that it should be hooked to isValidIndexForm. But maybe introducing it to Air opcode is overkill for the extended index at the moment. Please correct me if I am wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777550</commentid>
    <comment_count>14</comment_count>
      <attachid>433688</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-16 11:32:11 -0700</bug_when>
    <thetext>Created attachment 433688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777599</commentid>
    <comment_count>15</comment_count>
      <attachid>433688</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-16 14:24:19 -0700</bug_when>
    <thetext>Comment on attachment 433688
Patch

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

&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:128
&gt; +    enum Extend {

enum class Extend : uint8_t

&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:226
&gt; +            , extend(extend)
&gt;          {
&gt;          }

if we&apos;re on x86, can we assert that it&apos;s None?

Maybe in the future, we can change x86&apos;s assembler to handle not None type, by having it emit code using the temp register. But for now, we should assert it&apos;s not being used.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:1377
&gt; +        default:

nit: I like to list all cases here, then omit the default case. That way, the compiler will warn if you&apos;re missing a case.

I think I&apos;d write this then as:
&quot;case None&quot;

&gt; Source/JavaScriptCore/b3/air/AirArg.h:1491
&gt; +    MacroAssembler::Extend m_extend = MacroAssembler::Extend::None;

This field should go after m_kind for for better packing size.

also &quot;m_extend { MacroAssembler::Extend::None };&quot; is how we write this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777610</commentid>
    <comment_count>16</comment_count>
      <attachid>433706</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-16 14:46:40 -0700</bug_when>
    <thetext>Created attachment 433706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777628</commentid>
    <comment_count>17</comment_count>
      <attachid>433706</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-16 15:30:36 -0700</bug_when>
    <thetext>Comment on attachment 433706
Patch

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

r=me with comments

&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:128
&gt; +    enum Extend : uint8_t {

enum class

&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:228
&gt; +#if CPU(X86) || CPU(X86_64)
&gt; +            ASSERT(extend == None);
&gt; +#endif

Sorry, I know I said differently earlier. But since you only support this on arm64, I think I&apos;d actually do this as:

#if !CPU(ARM64)

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:577
&gt; +                return indexArg(tmp(base), index-&gt;child(0), *scale, offset);

can we add a test for add here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777647</commentid>
    <comment_count>18</comment_count>
      <attachid>433715</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-16 16:37:34 -0700</bug_when>
    <thetext>Created attachment 433715
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777662</commentid>
    <comment_count>19</comment_count>
      <attachid>433716</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-07-16 17:08:11 -0700</bug_when>
    <thetext>Created attachment 433716
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777681</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-16 17:53:11 -0700</bug_when>
    <thetext>Committed r280013 (239755@main): &lt;https://commits.webkit.org/239755@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433716.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777682</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-16 17:54:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/80711279&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433545</attachid>
            <date>2021-07-14 17:06:27 -0700</date>
            <delta_ts>2021-07-15 00:08:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210714190626.patch</filename>
            <type>text/plain</type>
            <size>6180</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjlkZTliMDlmZDUzNDlmYWUwNjY5ZmRmNTY1NGQ2ZTE1OGY5NjJmLi41MDlhZGNkOTgzNTAxYTQ1
ZjljMTBkZTY4NDg0ZDYyZjZjMWJlYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wNy0xNCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIFplcm8gRXh0ZW5zaW9uIHRvIEluZGV4IEFyZyBmcm9tIEJhc2VJ
bmRleCBBZGRyZXNzIGluIEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjc5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvdGVzdGIz
Lmg6CisgICAgICAgICogYjMvdGVzdGIzXzIuY3BwOgorICAgICAgICAodGVzdExvYWRaZXJvRXh0
ZW5kSW5kZXhBZGRyZXNzKToKKyAgICAgICAgKHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJl
c3MpOgorICAgICAgICAoYWRkQml0VGVzdHMpOgorCiAyMDIxLTA3LTE0ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZSBmaXggZm9yIGZhaWxlZCBz
Y29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKSBhZnRlciBjYWxscyB0byBKU01hcDo6Y3Jl
YXRlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDhm
YzFhZmMyYTUzOTFmNDU2NWMzZDNkOThmN2EwZjc2NDgzNjIzZGEuLmQzNzkwNWNhZDlkZTZlZmQy
NjFmNTIxN2Y1NDk0ZDcxOGZiYjg0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCkBAIC00OTksNiArNDk5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIFRtcCBpbmRleFRtcChWYWx1ZSogdmFsdWUpCisgICAgewor
I2lmIENQVShBUk02NCkKKyAgICAgICAgaWYgKHZhbHVlLT5vcGNvZGUoKSA9PSBaRXh0MzIgJiYg
bV9sb2NrZWQuY29udGFpbnModmFsdWUtPmNoaWxkKDApKSkKKyAgICAgICAgICAgIHZhbHVlID0g
dmFsdWUtPmNoaWxkKDApOworI2VuZGlmCisgICAgICAgIHJldHVybiB0bXAodmFsdWUpOworICAg
IH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdh
bE9mZnNldDxJbnQ+PgogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZh
bHVlKiBzaGwsIEludCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpu
dWxsb3B0KQogICAgIHsKQEAgLTU0OSw3ICs1NTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRh
aW5zKGluZGV4LT5jaGlsZCgwKSkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjpp
bmRleCh0bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEFyZzo6aW5kZXgodG1wKGJhc2UpLCBpbmRleFRtcChpbmRl
eC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNldCk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAg
ICAgICBpZiAoQXJnIHJlc3VsdCA9IHRyeUluZGV4KGxlZnQsIHJpZ2h0KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuaAppbmRleCA5ODQ4ZjYzZTg2OWFmMmIzZmI1NmM1ZWIwNGFmZTBiYjM3OTdi
MDBjLi5kN2MyMTY5YWMwNzc2ZWYxMjUwMDczYjhmNDExMzBjMDIzZWNiYmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC04MjYsNiArODI2LDggQEAgdm9pZCB0ZXN0TXVsVHJlZUFy
ZzMyKGludDMyX3QpOwogdm9pZCB0ZXN0QXJnKGludCBhcmd1bWVudCk7CiB2b2lkIHRlc3RSZXR1
cm5Db25zdDY0KGludDY0X3QgdmFsdWUpOwogdm9pZCB0ZXN0UmV0dXJuVm9pZCgpOwordm9pZCB0
ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MoKTsKK3ZvaWQgdGVzdFN0b3JlWmVyb0V4dGVu
ZEluZGV4QWRkcmVzcygpOwogdm9pZCB0ZXN0QWRkQXJnKGludCk7CiB2b2lkIHRlc3RBZGRBcmdz
KGludCwgaW50KTsKIHZvaWQgdGVzdEFkZEFyZ0ltbShpbnQsIGludCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiM18yLmNwcAppbmRleCAxNzFiODM3ODEzMjU3ZjFkM2VjMDYyZTlmNjg3OTFl
YjdhMmQyMGI1Li40MzFmNzMxNzc2ZTAxMzk0ZGExYTY0Yjg2NWY2NTY1YjAzMzkwZDMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKQEAgLTI5Nyw2ICsyOTcsNzYgQEAgdm9p
ZCB0ZXN0UmV0dXJuVm9pZCgpCiAgICAgY29tcGlsZUFuZFJ1bjx2b2lkPihwcm9jKTsKIH0KIAor
dm9pZCB0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIGlmIChPcHRpb25z
OjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0
ZXN0ID0gWyZdICh1aW50MzJfdCBpLCBpbnQzMl90IG51bSkgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
ICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4
MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGlu
ZGV4NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGlu
ZGV4MzIpOworICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMik7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2Us
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigp
LCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNz
KSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlu
dHB0cl90IHB0ciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJm51bSk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgcHRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90Pigx
KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikpICogaSwgaSksIG51bSk7CisgICAgfTsKKwor
ICAgIGZvciAoYXV0byBpIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBu
dW0gOiBpbnQzMk9wZXJhbmRzKCkpCisgICAgICAgICAgICB0ZXN0KGkudmFsdWUsIG51bS52YWx1
ZSk7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQor
eworICAgIGlmIChPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50MzJfdCBpLCBpbnQzMl90IG51bSkgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFs
dWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDIpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCAKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUpKTsK
KworICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmln
aW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaW50MzJfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAg
IGNoYXIqIHB0ciA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oJnNsb3QpOworICAgICAgICBpbnZva2U8
aW50MzJfdD4oKmNvZGUsIHB0ciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMSkgPDwgc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KDIpKSAqIGksIGkpOworICAgICAgICBDSEVDS19FUShzbG90LCBudW0p
OworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbnVtIDogaW50MzJPcGVyYW5kcygpKQorICAgICAgICAgICAgdGVzdChpLnZh
bHVlLCBudW0udmFsdWUpOworICAgIH0KK30KKwogdm9pZCB0ZXN0QWRkQXJnKGludCBhKQogewog
ICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTk0NCw2ICs2MDE0LDkgQEAgdm9pZCBhZGRCaXRUZXN0
cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYg
dGFza3MpCiAgICAgUlVOX0JJTkFSWSh0ZXN0Qml0WG9yVHJlZUFyZ0ltbSwgaW50NjRPcGVyYW5k
cygpLCBpbnQ2NE9wZXJhbmRzKCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0Qml0QW5kVHJlZUFyZzMy
LCBpbnQzMk9wZXJhbmRzKCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0Qml0T3JUcmVlQXJnMzIsIGlu
dDMyT3BlcmFuZHMoKSk7CisKKyAgICBSVU4odGVzdExvYWRaZXJvRXh0ZW5kSW5kZXhBZGRyZXNz
KCkpOworICAgIFJVTih0ZXN0U3RvcmVaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCkpOwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433566</attachid>
            <date>2021-07-15 00:08:39 -0700</date>
            <delta_ts>2021-07-15 11:37:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210715020837.patch</filename>
            <type>text/plain</type>
            <size>14596</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjlkZTliMDlmZDUzNDlmYWUwNjY5ZmRmNTY1NGQ2ZTE1OGY5NjJmLi43MGZkMjFkNjdiOWUxZmU1
YmVjZmZhYTBjMTUzZjk4YTk2M2NlYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0xNCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEV4dGVuZFR5cGUgdG8gQWlyOjpBcmcgSW5kZXggdG8gZnVsbHkg
dXRpbGl6ZSBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIG1lbW9yeSBpbnN0cnVjdGlvbiBmb3IgQVJN
NjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBw
YXR0ZXJuIHJlY29nbml6YXRpb24gb2YgYWRkcmVzcyBjb21wdXRhdGlvbiBpbiB0aGUgaW5zdHJ1
Y3Rpb25zLCBlLmcuLCBMb2FkIAorICAgICAgICBSZWdpc3RlciAoTERSKSBhbmQgU3RvcmUgUmVn
aXN0ZXIgKFNUUiksIGNhbiBiZW5lZml0IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3Rvci4gCisgICAg
ICAgIFRoZW4sIHRoZSBBaXIgb3BlcmFuZCBCYXNlSW5kZXggY29udGFpbmluZyBiYXNlLCBpbmRl
eCwgYW5kIHNjYWxlIGlzIGludHJvZHVjZWQgCisgICAgICAgIHRvIEFpciBvcGNvZGUuIEhvd2V2
ZXIsIHRoZSA8ZXh0ZW5kPiBvcHRpb24gb2YgaW5kZXggYWRkcmVzcyBpcyBub3QgZnVsbHkgbGV2
ZXJhZ2VkIAorICAgICAgICBpbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24uIAorCisgICAg
ICAgIFRvIGZpbGwgdGhhdCBnYXAsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBtZW1iZXIsIEV4dGVu
ZFR5cGUsIHRvIHRoZSBjdXJyZW50IAorICAgICAgICBkZXNpZ24gb2YgQmFzZUluZGV4IHRvIHRy
aWdnZXIgemVybyBleHRlbnNpb24gb24gdGhlIEluZGV4IGFkZHJlc3MuIEFuZCB0aGlzIGlzIAor
ICAgICAgICBlbmFibGVkIGZvciBTdG9yZS9Mb2FkIHdpdGggdmFsaWQgaW5kZXggYWRkcmVzcyBh
bmQgc2hpZnQgYW1vdW50LgorCisgICAgICAgIExvYWQgUmVnaXN0ZXIgKExEUikgY2FsY3VsYXRl
cyBhbiBhZGRyZXNzIGZyb20gYSBiYXNlIHJlZ2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAg
b2Zmc2V0IHJlZ2lzdGVyIHZhbHVlLCBsb2FkcyBhIHdvcmQgZnJvbSBtZW1vcnksIGFuZCB3cml0
ZXMgaXQgdG8gYSByZWdpc3Rlci4gCisgICAgICAgIFRoZSBvZmZzZXQgcmVnaXN0ZXIgdmFsdWUg
Y2FuIG9wdGlvbmFsbHkgYmUgc2hpZnRlZCBhbmQgZXh0ZW5kZWQuCisKKyAgICAgICAgR2l2ZW4g
QjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAx
ID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBzY2Fs
ZQorICAgICAgICBJbnQgQDMgPSBTaGwoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQoQDAs
IEAzKQorICAgICAgICBJbnQgQDUgPSBMb2FkKEA0LCBDb250cm9sRGVwZW5kZW50fFJlYWRzOlRv
cCkKKyAgICAgICAgVm9pZEA2ID0gUmV0dXJuKEA1LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBP
bGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlICAgICAgICAgICAgICAgJXgxLCAleDEsIEAx
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlS
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIFN0b3JlIFJlZ2lzdGVyIChTVFIp
IGNhbGN1bGF0ZXMgYW4gYWRkcmVzcyBmcm9tIGEgYmFzZSByZWdpc3RlciB2YWx1ZSBhbmQgYW4g
CisgICAgICAgIG9mZnNldCByZWdpc3RlciB2YWx1ZSwgYW5kIHN0b3JlcyBhIDMyLWJpdCB3b3Jk
IG9yIGEgNjQtYml0IGRvdWJsZXdvcmQgdG8gdGhlIAorICAgICAgICBjYWxjdWxhdGVkIGFkZHJl
c3MsIGZyb20gYSByZWdpc3Rlci4KKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50
IEAwID0gdmFsdWUKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJ
bnQgQDIgPSBaRXh0MzIoVHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkKKyAgICAgICAgSW50IEAzID0g
c2NhbGUKKyAgICAgICAgSW50IEA0ID0gU2hsKEAyLCBAMykKKyAgICAgICAgSW50IEA1ID0gQWRk
KEAxLCBANCkKKyAgICAgICAgVm9pZEA2ID0gU3RvcmUoQDAsIEA1LCBDb250cm9sRGVwZW5kZW50
fFdyaXRlczpUb3ApCisgICAgICAgIFZvaWRANyA9IFJldHVybihAMCwgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICV4MSwgICAgICAg
ICAgICAgICAleDEsIEAyCisgICAgICAgIFN0b3JlMzIgICV4enIsICgleDAsJXgxLDJec2NhbGUp
LCBANgorICAgICAgICBNb3ZlICAgICAgICQwLCAgICAgICAgICAgICAgICV4MCwgQDcKKyAgICAg
ICAgUmV0MzIgICAgICV4MCwgICAgICAgICAgICAgICAgICAgIEA3CisKKyAgICAgICAgLy8gTmV3
IG9wdGltaXplZCBBSVIKKyAgICAgICAgU3RvcmUzMiAgJXh6ciwgKCV4MCwleDEsMl5zY2FsZSks
IEA2CisgICAgICAgIE1vdmUgICAgICAgJDAsICAgICAgICAgICAgICAgJXgwLCBANworICAgICAg
ICBSZXQzMiAgICAgJXgwLCAgICAgICAgICAgICAgICAgICAgQDcgICAgIAorCisgICAgICAgICog
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4OjpCYXNlSW5kZXgpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6OmJhc2VJbmRleEV4dGVuZFR5cGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0Ojpsb2FkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2Fk
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTY0KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmUzMik6CisgICAgICAgICogYjMvQjNM
b3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgIChKU0M6
OkIzOjpBaXI6OkFyZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmFzQmFz
ZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0
YjNfMi5jcHA6CisgICAgICAgICh0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MpOgorICAg
ICAgICAodGVzdFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgIChhZGRCaXRU
ZXN0cyk6CisKIDIwMjEtMDctMTQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNwZWN1bGF0aXZlIGZpeCBmb3IgZmFpbGVkIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4
Y2VwdGlvbigpIGFmdGVyIGNhbGxzIHRvIEpTTWFwOjpjcmVhdGUoKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgK
aW5kZXggZGM2ODNmMWVhZmQ3NzNhNmMyMDIwZDU0M2RhNWRmZTM2MjNlNGNkNS4uMTgwY2QxNjIw
OWI0MGIxZjU5Y2JlOWQ0ZGJjMDBmYjQwYjJlMzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTEy
NCw3ICsxMjQsMTMgQEAgcHVibGljOgogICAgICAgICBUaW1lc0VpZ2h0LAogICAgICAgICBTY2Fs
ZVB0ciA9IGlzQWRkcmVzczY0Qml0KCkgPyBUaW1lc0VpZ2h0IDogVGltZXNGb3VyLAogICAgIH07
Ci0gICAgCisKKyAgICBlbnVtIEV4dGVuZFR5cGUgeworICAgICAgICBaRXh0LAorICAgICAgICBT
RXh0LAorICAgICAgICBPb3BzCisgICAgfTsKKwogICAgIHN0cnVjdCBCYXNlSW5kZXg7CiAgICAg
CiAgICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBwZWRSZWdpc3RlcihSZWdpc3RlcklEIG9y
aWdpbmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBAIC0yMTAsMTEgKzIx
NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBEZXNjcmliZXMgYSBjb21wbGV4IGFkZHJl
c3NpbmcgbW9kZS4KICAgICBzdHJ1Y3QgQmFzZUluZGV4IHsKLSAgICAgICAgQmFzZUluZGV4KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKKyAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCwgRXh0ZW5kVHlwZSBleHQgPSBP
b3BzKQogICAgICAgICAgICAgOiBiYXNlKGJhc2UpCiAgICAgICAgICAgICAsIGluZGV4KGluZGV4
KQogICAgICAgICAgICAgLCBzY2FsZShzY2FsZSkKICAgICAgICAgICAgICwgb2Zmc2V0KG9mZnNl
dCkKKyAgICAgICAgICAgICwgZXh0KGV4dCkKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAg
IApAQCAtMjIyLDYgKzIyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVnaXN0ZXJJRCBpbmRleDsK
ICAgICAgICAgU2NhbGUgc2NhbGU7CiAgICAgICAgIGludDMyX3Qgb2Zmc2V0OworICAgICAgICBF
eHRlbmRUeXBlIGV4dDsKICAgICAgICAgCiAgICAgICAgIEJhc2VJbmRleCB3aXRoT2Zmc2V0KGlu
dDMyX3QgYWRkaXRpb25hbE9mZnNldCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA0YTkwZTVh
MWZkZTQ4Y2NmYzQ3YTcyNzQ5ZTU4NWY3ZDAyNGUxY2M1Li5iMmE5MzFiYzMwODU0NjdmMmI0NDMx
ZmU1YjFlNGJkMDNmYTZmMzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTM2Nyw2ICsxMzY3LDE1IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICAvLyBNZW1vcnkgYWNjZXNzIG9wZXJhdGlvbnM6CisgICAgQXNz
ZW1ibGVyOjpFeHRlbmRUeXBlIGJhc2VJbmRleEV4dGVuZFR5cGUoQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBzd2l0Y2ggKGFkZHJlc3MuZXh0KSB7CisgICAgICAgIGNhc2UgWkV4
dDoKKyAgICAgICAgICAgIHJldHVybiBBc3NlbWJsZXI6OlVYVFc7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gQXNzZW1ibGVyOjpVWFRYOworICAgICAgICB9CisgICAgfQog
CiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CkBAIC0xMzgwLDcgKzEzODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkNjQo
QmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICgh
YWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMykp
IHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGJhc2VJbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0NzksNyArMTQ4OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxvYWQzMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVz
cy5zY2FsZSA9PSAyKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2Fs
ZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYmFzZUluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2Fs
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTY3NCw3ICsxNjgzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3RvcmU2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFk
ZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5z
Y2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDMpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5z
dHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgs
IGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0PihzcmMsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYmFzZUluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwg
YWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTc4
MSw3ICsxNzkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywg
QmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYm
ICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDIpKSB7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3Nl
bWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Ry
PDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYmFzZUluZGV4RXh0ZW5kVHlw
ZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA4ZmMx
YWZjMmE1MzkxZjQ1NjVjM2QzZDk4ZjdhMGY3NjQ4MzYyM2RhLi4wZGZmOTM3ZmExZjQ2MTdlZDM5
ZGIyZDg2Y2QxZDVkYzRkZDYwZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcApAQCAtNTQ3LDkgKzU0NywxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlID0gc2NhbGVGb3JTaGwoaW5kZXgsIG9mZnNl
dCwgd2lkdGgpOwogICAgICAgICAgICAgICAgIGlmICghc2NhbGUpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMo
aW5kZXgtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyhiYXNlKSkKKyAgICAgICAgICAg
ICAgICBpbmRleCA9IGluZGV4LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBpZiAobV9sb2Nr
ZWQuY29udGFpbnMoaW5kZXgpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKGJhc2UpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFyZzo6aW5k
ZXgodG1wKGJhc2UpLCB0bXAoaW5kZXgtPmNoaWxkKDApKSwgKnNjYWxlLCBvZmZzZXQpOworI2lm
IENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXgtPm9wY29kZSgpID09IFpFeHQz
MiAmJiAhbV9sb2NrZWQuY29udGFpbnMoaW5kZXgtPmNoaWxkKDApKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEFyZzo6aW5kZXgodG1wKGJhc2UpLCB0bXAoaW5kZXgtPmNoaWxkKDApKSwg
KnNjYWxlLCBvZmZzZXQsIE1hY3JvQXNzZW1ibGVyOjpaRXh0KTsKKyNlbmRpZgorICAgICAgICAg
ICAgICAgIHJldHVybiBBcmc6OmluZGV4KHRtcChiYXNlKSwgdG1wKGluZGV4KSwgKnNjYWxlLCBv
ZmZzZXQpOwogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgaWYgKEFyZyByZXN1bHQgPSB0
cnlJbmRleChsZWZ0LCByaWdodCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaApp
bmRleCBjY2VmNDU2ODgwM2NlMjU3MjEzMGUzYmViNzZjMTBkZWViOGE3Mjc5Li5hN2FjZjM1MGFh
ZmNmNDZmMTc3ZTM5YzczZmQ4MWJlNTg1NzQ5MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmgKQEAgLTYyOSw3ICs2MjksNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+
Ci0gICAgc3RhdGljIEFyZyBpbmRleChBaXI6OlRtcCBiYXNlLCBBaXI6OlRtcCBpbmRleCwgdW5z
aWduZWQgc2NhbGUsIEludCBvZmZzZXQpCisgICAgc3RhdGljIEFyZyBpbmRleChBaXI6OlRtcCBi
YXNlLCBBaXI6OlRtcCBpbmRleCwgdW5zaWduZWQgc2NhbGUsIEludCBvZmZzZXQsIE1hY3JvQXNz
ZW1ibGVyOjpFeHRlbmRUeXBlIGV4dCA9IE1hY3JvQXNzZW1ibGVyOjpPb3BzKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGJhc2UuaXNHUCgpKTsKICAgICAgICAgQVNTRVJUKGluZGV4LmlzR1AoKSk7
CkBAIC02NDAsNiArNjQwLDcgQEAgcHVibGljOgogICAgICAgICByZXN1bHQubV9pbmRleCA9IGlu
ZGV4OwogICAgICAgICByZXN1bHQubV9zY2FsZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHNjYWxl
KTsKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICByZXN1bHQubV9l
eHQgPSBleHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMzc5LDcgKzEz
ODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc0luZGV4KCkpOwogICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCgKICAgICAgICAgICAgIG1fYmFzZS5ncHIoKSwg
bV9pbmRleC5ncHIoKSwgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlNjYWxlPihsb2dTY2Fs
ZSgpKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihtX29mZnNl
dCkpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KG1fb2Zmc2V0
KSwgbV9leHQpOwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uIGFzUmVsYXRpb25hbENvbmRpdGlvbigpIGNvbnN0CkBAIC0xNDg3LDYgKzE0ODgsNyBAQCBw
cml2YXRlOgogICAgIGludDMyX3QgbV9zY2FsZSB7IDEgfTsKICAgICBBaXI6OlRtcCBtX2Jhc2U7
CiAgICAgQWlyOjpUbXAgbV9pbmRleDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kVHlwZSBt
X2V4dCA9IE1hY3JvQXNzZW1ibGVyOjpFeHRlbmRUeXBlOjpPb3BzOwogfTsKIAogc3RydWN0IEFy
Z0hhc2ggewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDk4NDhmNjNlODY5YWYyYjNm
YjU2YzVlYjA0YWZlMGJiMzc5N2IwMGMuLmQ3YzIxNjlhYzA3NzZlZjEyNTAwNzNiOGY0MTEzMGMw
MjNlY2JiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTgyNiw2ICs4MjYsOCBA
QCB2b2lkIHRlc3RNdWxUcmVlQXJnMzIoaW50MzJfdCk7CiB2b2lkIHRlc3RBcmcoaW50IGFyZ3Vt
ZW50KTsKIHZvaWQgdGVzdFJldHVybkNvbnN0NjQoaW50NjRfdCB2YWx1ZSk7CiB2b2lkIHRlc3RS
ZXR1cm5Wb2lkKCk7Cit2b2lkIHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpOwordm9p
ZCB0ZXN0U3RvcmVaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCk7CiB2b2lkIHRlc3RBZGRBcmcoaW50
KTsKIHZvaWQgdGVzdEFkZEFyZ3MoaW50LCBpbnQpOwogdm9pZCB0ZXN0QWRkQXJnSW1tKGludCwg
aW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDE3MWI4Mzc4MTMy
NTdmMWQzZWMwNjJlOWY2ODc5MWViN2EyZDIwYjUuLjlhMjY2YTVhZWZmY2UyZTA0MDg5NTY2NDBi
ZTdhODY3ZjJiODg0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApAQCAt
Mjk3LDYgKzI5Nyw4NCBAQCB2b2lkIHRlc3RSZXR1cm5Wb2lkKCkKICAgICBjb21waWxlQW5kUnVu
PHZvaWQ+KHByb2MpOwogfQogCit2b2lkIHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4QWRkcmVzcygp
Cit7CisgICAgaWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIHRlc3QgPSBbJl0gKHVpbnQzMl90IGksIGludDMyX3QgbnVtKSB7
CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgICAgICBWYWx1ZSogaW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkp
OworICAgICAgICBWYWx1ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
WkV4dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAyKTsKKyAgICAgICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QWRkLCBPcmlnaW4oKSwgYmFzZSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQz
MiwgT3JpZ2luKCksIGFkZHJlc3MpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJp
bmcgcmVnZXgoIi4qbGRyLip1eHR3IzIuKiIpOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1
Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIGlu
dHB0cl90IHB0ciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJm51bSk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgcHRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90Pigx
KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikpICogaSwgaSksIG51bSk7CisgICAgfTsKKwor
ICAgIGZvciAoYXV0byBpIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBu
dW0gOiBpbnQzMk9wZXJhbmRzKCkpCisgICAgICAgICAgICB0ZXN0KGkudmFsdWUsIG51bS52YWx1
ZSk7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQor
eworICAgIGlmIChPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byB0ZXN0ID0gWyZdICh1aW50MzJfdCBpLCBpbnQzMl90IG51bSkgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFs
dWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDIpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCAKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUpKTsK
KworICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmln
aW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkgeworICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgcmVnZXgoIi4qc3RyLip1eHR3IzIuKiIpOworICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAg
ICAgIGludDMyX3Qgc2xvdCA9IDEyMzQxMjM0OworICAgICAgICBjaGFyKiBwdHIgPSBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KCZzbG90KTsKKyAgICAgICAgaW52b2tlPGludDMyX3Q+KCpjb2RlLCBwdHIg
LSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEpIDw8IHN0YXRpY19jYXN0PGludHB0cl90PigyKSkg
KiBpLCBpKTsKKyAgICAgICAgQ0hFQ0tfRVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAgZm9y
IChhdXRvIGkgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGlu
dDMyT3BlcmFuZHMoKSkKKyAgICAgICAgICAgIHRlc3QoaS52YWx1ZSwgbnVtLnZhbHVlKTsKKyAg
ICB9Cit9CisKIHZvaWQgdGVzdEFkZEFyZyhpbnQgYSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsK
QEAgLTU5NDQsNiArNjAyMiw5IEBAIHZvaWQgYWRkQml0VGVzdHMoY29uc3QgY2hhciogZmlsdGVy
LCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQogICAgIFJVTl9CSU5B
UlkodGVzdEJpdFhvclRyZWVBcmdJbW0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygp
KTsKICAgICBSVU5fVU5BUlkodGVzdEJpdEFuZFRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsK
ICAgICBSVU5fVU5BUlkodGVzdEJpdE9yVHJlZUFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOworCisg
ICAgUlVOKHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpKTsKKyAgICBSVU4odGVzdFN0
b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShCM19K
SVQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433603</attachid>
            <date>2021-07-15 11:37:54 -0700</date>
            <delta_ts>2021-07-15 12:58:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210715133753.patch</filename>
            <type>text/plain</type>
            <size>15045</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWM1ZDdjMDE3ZTdhNmU0OTNkMTJhM2NkY2Y2ZTZlOTFmNWFiNWM2Li4zMmY2NzQ1YzYzY2U2MGJj
OTA3NWIzMzlkOWE5MGIwODgxMzVkN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wNy0xNSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEV4dGVuZFR5cGUgdG8gQWlyOjpBcmcgSW5kZXggdG8gZnVsbHkg
dXRpbGl6ZSBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIG1lbW9yeSBpbnN0cnVjdGlvbiBmb3IgQVJN
NjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4OjpCYXNlSW5kZXgpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmluZGV4RXh0ZW5kVHlwZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmxvYWQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlNjQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTMyKToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9B
aXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6QXJnOjppbmRleCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNCYXNlSW5kZXgg
Y29uc3QpOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18yLmNw
cDoKKyAgICAgICAgKHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgICh0
ZXN0U3RvcmVaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKToKKyAgICAgICAgKGFkZEJpdFRlc3RzKToK
KwogMjAyMS0wNy0xNSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29t
PgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBtaWQtSnVseSAyMDIxIGVkaXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggZGM2ODNmMWVhZmQ3NzNhNmMyMDIwZDU0M2RhNWRmZTM2
MjNlNGNkNS4uOTFjZDU3YWJmOGIwY2MwODllYzM4ZjBhMTBiZDJkZDk4YTIwODE4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKQEAgLTEyNCw3ICsxMjQsMTMgQEAgcHVibGljOgogICAgICAgICBUaW1lc0Vp
Z2h0LAogICAgICAgICBTY2FsZVB0ciA9IGlzQWRkcmVzczY0Qml0KCkgPyBUaW1lc0VpZ2h0IDog
VGltZXNGb3VyLAogICAgIH07Ci0gICAgCisKKyAgICBlbnVtIEV4dGVuZCB7CisgICAgICAgIFpF
eHQsCisgICAgICAgIFNFeHQsCisgICAgICAgIE9vcHMKKyAgICB9OworCiAgICAgc3RydWN0IEJh
c2VJbmRleDsKICAgICAKICAgICBzdGF0aWMgUmVnaXN0ZXJJRCB3aXRoU3dhcHBlZFJlZ2lzdGVy
KFJlZ2lzdGVySUQgb3JpZ2luYWwsIFJlZ2lzdGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkK
QEAgLTIxMCwxMSArMjE2LDEyIEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIERlc2NyaWJlcyBh
IGNvbXBsZXggYWRkcmVzc2luZyBtb2RlLgogICAgIHN0cnVjdCBCYXNlSW5kZXggewotICAgICAg
ICBCYXNlSW5kZXgoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBTY2FsZSBzY2Fs
ZSwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAgICAgICBCYXNlSW5kZXgoUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBTY2FsZSBzY2FsZSwgaW50MzJfdCBvZmZzZXQgPSAwLCBFeHRl
bmQgZXh0ZW5kID0gT29wcykKICAgICAgICAgICAgIDogYmFzZShiYXNlKQogICAgICAgICAgICAg
LCBpbmRleChpbmRleCkKICAgICAgICAgICAgICwgc2NhbGUoc2NhbGUpCiAgICAgICAgICAgICAs
IG9mZnNldChvZmZzZXQpCisgICAgICAgICAgICAsIGV4dGVuZChleHRlbmQpCiAgICAgICAgIHsK
ICAgICAgICAgfQogICAgICAgICAKQEAgLTIyMiw2ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgICAg
IFJlZ2lzdGVySUQgaW5kZXg7CiAgICAgICAgIFNjYWxlIHNjYWxlOwogICAgICAgICBpbnQzMl90
IG9mZnNldDsKKyAgICAgICAgRXh0ZW5kIGV4dGVuZDsKICAgICAgICAgCiAgICAgICAgIEJhc2VJ
bmRleCB3aXRoT2Zmc2V0KGludDMyX3QgYWRkaXRpb25hbE9mZnNldCkKICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAppbmRleCA0YTkwZTVhMWZkZTQ4Y2NmYzQ3YTcyNzQ5ZTU4NWY3ZDAyNGUxY2M1Li5kMjZl
MzIzNDE0NDU3MmVlZmFkOGY3Mzg1YzUzY2YxNjI0MTE0MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTM2
Nyw2ICsxMzY3LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBNZW1vcnkgYWNjZXNzIG9w
ZXJhdGlvbnM6CisgICAgQXNzZW1ibGVyOjpFeHRlbmRUeXBlIGluZGV4RXh0ZW5kVHlwZShCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYWRkcmVzcy5leHRlbmQpIHsK
KyAgICAgICAgY2FzZSBaRXh0OgorICAgICAgICAgICAgcmV0dXJuIEFzc2VtYmxlcjo6VVhUVzsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBBc3NlbWJsZXI6OlVYVFg7Cisg
ICAgICAgIH0KKyAgICB9CiAKICAgICB2b2lkIGxvYWQ2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKQEAgLTEzODAsNyArMTM4OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGxvYWQ2NChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRk
cmVzcy5zY2FsZSA9PSAzKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNDc5LDcgKzE0ODgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNj
YWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMikpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxk
cjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgs
IGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRk
cmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTY3NCw3
ICsxNjgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmU2NChSZWdpc3RlcklEIHNyYywgQmFz
ZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICgh
YWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDMpKSB7Ci0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJs
ZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0
PihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJl
c3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC0xNzgxLDcgKzE3OTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQg
c3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZz
ZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMikpIHsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zdHI8MzI+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5
cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggOGZj
MWFmYzJhNTM5MWY0NTY1YzNkM2Q5OGY3YTBmNzY0ODM2MjNkYS4uNGFjNmI1NzI3NmIxMTMxYWZj
MjFkOTJiZTE0Y2JkYjkyYmE0YmY1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKQEAgLTU0Nyw5ICs1NDcsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKGluZGV4LCBvZmZz
ZXQsIHdpZHRoKTsKICAgICAgICAgICAgICAgICBpZiAoIXNjYWxlKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5z
KGluZGV4LT5jaGlsZCgwKSkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCisgICAgICAgICAg
ICAgICAgaW5kZXggPSBpbmRleC0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgaWYgKG1fbG9j
a2VkLmNvbnRhaW5zKGluZGV4KSB8fCBtX2xvY2tlZC5jb250YWlucyhiYXNlKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEFyZygpOwotICAgICAgICAgICAgICAgIHJldHVybiBBcmc6Omlu
ZGV4KHRtcChiYXNlKSwgdG1wKGluZGV4LT5jaGlsZCgwKSksICpzY2FsZSwgb2Zmc2V0KTsKKyNp
ZiBDUFUoQVJNNjQpCisgICAgICAgICAgICAgICAgLy8gaWYgKGluZGV4LT5vcGNvZGUoKSA9PSBa
RXh0MzIgJiYgIW1fbG9ja2VkLmNvbnRhaW5zKGluZGV4LT5jaGlsZCgwKSkpCisgICAgICAgICAg
ICAgICAgLy8gICAgIHJldHVybiBBcmc6OmluZGV4KHRtcChiYXNlKSwgdG1wKGluZGV4LT5jaGls
ZCgwKSksICpzY2FsZSwgb2Zmc2V0LCBNYWNyb0Fzc2VtYmxlcjo6WkV4dCk7CisjZW5kaWYKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbmRleCh0bXAoYmFzZSksIHRtcChpbmRleCksICpz
Y2FsZSwgb2Zmc2V0KTsKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGlmIChBcmcgcmVz
dWx0ID0gdHJ5SW5kZXgobGVmdCwgcmlnaHQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmgKaW5kZXggY2NlZjQ1Njg4MDNjZTI1NzIxMzBlM2JlYjc2YzEwZGVlYjhhNzI3OS4uY2M1
MTEzY2NjMTU2ZGZkOTIyYWQ5YjJmOGI4NmVlZTYwYmYyZmFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5oCkBAIC02MjksNyArNjI5LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNl
dDxJbnQ+PgotICAgIHN0YXRpYyBBcmcgaW5kZXgoQWlyOjpUbXAgYmFzZSwgQWlyOjpUbXAgaW5k
ZXgsIHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBBcmcgaW5kZXgoQWly
OjpUbXAgYmFzZSwgQWlyOjpUbXAgaW5kZXgsIHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0LCBN
YWNyb0Fzc2VtYmxlcjo6RXh0ZW5kIGV4dGVuZCA9IE1hY3JvQXNzZW1ibGVyOjpPb3BzKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGJhc2UuaXNHUCgpKTsKICAgICAgICAgQVNTRVJUKGluZGV4Lmlz
R1AoKSk7CkBAIC02NDAsNiArNjQwLDcgQEAgcHVibGljOgogICAgICAgICByZXN1bHQubV9pbmRl
eCA9IGluZGV4OwogICAgICAgICByZXN1bHQubV9zY2FsZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KHNjYWxlKTsKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICByZXN1
bHQubV9leHRlbmQgPSBleHRlbmQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBA
IC0xMzc5LDcgKzEzODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc0luZGV4KCkpOwog
ICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCgKICAgICAgICAgICAgIG1f
YmFzZS5ncHIoKSwgbV9pbmRleC5ncHIoKSwgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlNj
YWxlPihsb2dTY2FsZSgpKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRU
eXBlPihtX29mZnNldCkpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5
cGU+KG1fb2Zmc2V0KSwgbV9leHRlbmQpOwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpS
ZWxhdGlvbmFsQ29uZGl0aW9uIGFzUmVsYXRpb25hbENvbmRpdGlvbigpIGNvbnN0CkBAIC0xNDg3
LDYgKzE0ODgsNyBAQCBwcml2YXRlOgogICAgIGludDMyX3QgbV9zY2FsZSB7IDEgfTsKICAgICBB
aXI6OlRtcCBtX2Jhc2U7CiAgICAgQWlyOjpUbXAgbV9pbmRleDsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6RXh0ZW5kIG1fZXh0ZW5kID0gTWFjcm9Bc3NlbWJsZXI6OkV4dGVuZDo6T29wczsKIH07CiAK
IHN0cnVjdCBBcmdIYXNoIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCA5ODQ4ZjYz
ZTg2OWFmMmIzZmI1NmM1ZWIwNGFmZTBiYjM3OTdiMDBjLi5kN2MyMTY5YWMwNzc2ZWYxMjUwMDcz
YjhmNDExMzBjMDIzZWNiYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC04MjYs
NiArODI2LDggQEAgdm9pZCB0ZXN0TXVsVHJlZUFyZzMyKGludDMyX3QpOwogdm9pZCB0ZXN0QXJn
KGludCBhcmd1bWVudCk7CiB2b2lkIHRlc3RSZXR1cm5Db25zdDY0KGludDY0X3QgdmFsdWUpOwog
dm9pZCB0ZXN0UmV0dXJuVm9pZCgpOwordm9pZCB0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJl
c3MoKTsKK3ZvaWQgdGVzdFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpOwogdm9pZCB0ZXN0
QWRkQXJnKGludCk7CiB2b2lkIHRlc3RBZGRBcmdzKGludCwgaW50KTsKIHZvaWQgdGVzdEFkZEFy
Z0ltbShpbnQsIGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAppbmRleCAx
NzFiODM3ODEzMjU3ZjFkM2VjMDYyZTlmNjg3OTFlYjdhMmQyMGI1Li5kNDNmZDJkMTEyNDI5Mjlh
NTg2ZTU4NGY3OGRjNzAzYmQ0ZDc2ZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzXzIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
Mi5jcHAKQEAgLTI5Nyw2ICsyOTcsMTUwIEBAIHZvaWQgdGVzdFJldHVyblZvaWQoKQogICAgIGNv
bXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7CiB9CiAKK3ZvaWQgdGVzdExvYWRaZXJvRXh0ZW5kSW5k
ZXhBZGRyZXNzKCkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGVzdDMyID0gWyZdICh1aW50MzJfdCBpLCBp
bnQzMl90IG51bSkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAgICBWYWx1ZSog
c2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMik7
CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJv
YywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKmxkci4qdXh0dyMyLioiKTsKKyAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAg
fQorICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVtKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19j
YXN0PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikpICogaSwgaSksIG51
bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBpIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAg
ICAgIGZvciAoYXV0byBudW0gOiBpbnQzMk9wZXJhbmRzKCkpCisgICAgICAgICAgICB0ZXN0MzIo
aS52YWx1ZSwgbnVtLnZhbHVlKTsKKyAgICB9CisKKyAgICBhdXRvIHRlc3Q2NCA9IFsmXSAodWlu
dDMyX3QgaSwgaW50NjRfdCBudW0pIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGJh
c2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAg
ICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDMpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCAKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2NCwgc2Nh
bGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcykpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7
CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipsZHIuKnV4dHcjMi4qIik7CisgICAg
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7
CisgICAgICAgIH0KKyAgICAgICAgaW50cHRyX3QgYWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4oJm51bSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQ2NF90PigqY29kZSwgYWRkciAt
IChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMSkgPDwgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDIpKSAq
IGksIGkpLCBudW0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaSA6IGludDMyT3BlcmFuZHMo
KSkgeworICAgICAgICBmb3IgKGF1dG8gbnVtIDogaW50NjRPcGVyYW5kcygpKQorICAgICAgICAg
ICAgdGVzdDY0KGkudmFsdWUsIG51bS52YWx1ZSk7CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9y
ZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIGlmIChPcHRpb25zOjpkZWZhdWx0QjNP
cHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0ZXN0MzIgPSBbJl0g
KHVpbnQzMl90IGksIGludDMyX3QgbnVtKSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVl
KiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBu
dW0pOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFs
dWUqIGluZGV4MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAg
VmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3Jp
Z2luKCksIGluZGV4MzIpOworICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMik7CisgICAgICAgIFZhbHVlKiBhZGRyZXNz
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGws
IE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7CisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUp
OworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAo
aXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdHIuKnV4dHcj
Mi4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19z
dHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50MzJfdCBzbG90ID0gMTIzNDEyMzQ7
CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsK
KyAgICAgICAgaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0
cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikpICogaSwgaSk7CisgICAgICAgIENI
RUNLX0VRKHNsb3QsIG51bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBpIDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQzMk9wZXJhbmRzKCkpCisgICAg
ICAgICAgICB0ZXN0MzIoaS52YWx1ZSwgbnVtLnZhbHVlKTsKKyAgICB9CisKKyAgICBhdXRvIHRl
c3Q2NCA9IFsmXSAodWludDMyX3QgaSwgaW50NjRfdCBudW0pIHsKKyAgICAgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAg
ICAgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIG51bSk7CisgICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgICAgICBWYWx1ZSogaW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkp
OworICAgICAgICBWYWx1ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
WkV4dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAzKTsKKyAgICAgICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QWRkLCBPcmlnaW4oKSwgYmFzZSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHZhbHVlLCBhZGRy
ZXNzKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCB2YWx1ZSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIu
KnN0ci4qdXh0dyMyLioiKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBpbnQzMl90IHNsb3Qg
PSAxMjM0MTIzNDsKKyAgICAgICAgaW50cHRyX3QgYWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4oJnNsb3QpOworICAgICAgICBpbnZva2U8aW50NjRfdD4oKmNvZGUsIGFkZHIgLSAoc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KDEpIDw8IHN0YXRpY19jYXN0PGludHB0cl90PigyKSkgKiBpLCBpKTsK
KyAgICAgICAgQ0hFQ0tfRVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGkg
OiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDY0T3BlcmFu
ZHMoKSkKKyAgICAgICAgICAgIHRlc3Q2NChpLnZhbHVlLCBudW0udmFsdWUpOworICAgIH0KK30K
Kwogdm9pZCB0ZXN0QWRkQXJnKGludCBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTk0
NCw2ICs2MDg4LDkgQEAgdm9pZCBhZGRCaXRUZXN0cyhjb25zdCBjaGFyKiBmaWx0ZXIsIERlcXVl
PFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3MpCiAgICAgUlVOX0JJTkFSWSh0ZXN0
Qml0WG9yVHJlZUFyZ0ltbSwgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwogICAg
IFJVTl9VTkFSWSh0ZXN0Qml0QW5kVHJlZUFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOwogICAgIFJV
Tl9VTkFSWSh0ZXN0Qml0T3JUcmVlQXJnMzIsIGludDMyT3BlcmFuZHMoKSk7CisKKyAgICBSVU4o
dGVzdExvYWRaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCkpOworICAgIFJVTih0ZXN0U3RvcmVaZXJv
RXh0ZW5kSW5kZXhBZGRyZXNzKCkpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433614</attachid>
            <date>2021-07-15 12:59:02 -0700</date>
            <delta_ts>2021-07-15 17:17:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210715145900.patch</filename>
            <type>text/plain</type>
            <size>17939</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWM1ZDdjMDE3ZTdhNmU0OTNkMTJhM2NkY2Y2ZTZlOTFmNWFiNWM2Li4zNWM4Nzg2NGVlYTk5YWQ3
NjRlNmFhNWJhZWU2NjExZDA4ZjRmMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0xNSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEV4dGVuZFR5cGUgdG8gQWlyOjpBcmcgSW5kZXggdG8gZnVsbHkg
dXRpbGl6ZSBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIG1lbW9yeSBpbnN0cnVjdGlvbiBmb3IgQVJN
NjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBw
YXR0ZXJuIHJlY29nbml6YXRpb24gb2YgYWRkcmVzcyBjb21wdXRhdGlvbiBpbiB0aGUgaW5zdHJ1
Y3Rpb25zLCBlLmcuLCBMb2FkIAorICAgICAgICBSZWdpc3RlciAoTERSKSBhbmQgU3RvcmUgUmVn
aXN0ZXIgKFNUUiksIGNhbiBiZW5lZml0IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3Rvci4gCisgICAg
ICAgIFRoZW4sIHRoZSBBaXIgb3BlcmFuZCBCYXNlSW5kZXggY29udGFpbmluZyBiYXNlLCBpbmRl
eCwgYW5kIHNjYWxlIGlzIGludHJvZHVjZWQgCisgICAgICAgIHRvIEFpciBvcGNvZGUuIEhvd2V2
ZXIsIHRoZSA8ZXh0ZW5kPiBvcHRpb24gb2YgaW5kZXggYWRkcmVzcyBpcyBub3QgZnVsbHkgbGV2
ZXJhZ2VkIAorICAgICAgICBpbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24uIAorCisgICAg
ICAgIFRvIGZpbGwgdGhhdCBnYXAsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBtZW1iZXIsIEV4dGVu
ZFR5cGUsIHRvIHRoZSBjdXJyZW50IAorICAgICAgICBkZXNpZ24gb2YgQmFzZUluZGV4IHRvIHRy
aWdnZXIgemVybyBleHRlbnNpb24gb24gdGhlIEluZGV4IGFkZHJlc3MuIEFuZCB0aGlzIGlzIAor
ICAgICAgICBlbmFibGVkIGZvciBTdG9yZS9Mb2FkIHdpdGggdmFsaWQgaW5kZXggYWRkcmVzcyBh
bmQgc2hpZnQgYW1vdW50LgorCisgICAgICAgIExvYWQgUmVnaXN0ZXIgKExEUikgY2FsY3VsYXRl
cyBhbiBhZGRyZXNzIGZyb20gYSBiYXNlIHJlZ2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAg
b2Zmc2V0IHJlZ2lzdGVyIHZhbHVlLCBsb2FkcyBhIHdvcmQgZnJvbSBtZW1vcnksIGFuZCB3cml0
ZXMgaXQgdG8gYSByZWdpc3Rlci4gCisgICAgICAgIFRoZSBvZmZzZXQgcmVnaXN0ZXIgdmFsdWUg
Y2FuIG9wdGlvbmFsbHkgYmUgc2hpZnRlZCBhbmQgZXh0ZW5kZWQuCisKKyAgICAgICAgR2l2ZW4g
QjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAx
ID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBzY2Fs
ZQorICAgICAgICBJbnQgQDMgPSBTaGwoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQoQDAs
IEAzKQorICAgICAgICBJbnQgQDUgPSBMb2FkKEA0LCBDb250cm9sRGVwZW5kZW50fFJlYWRzOlRv
cCkKKyAgICAgICAgVm9pZEA2ID0gUmV0dXJuKEA1LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBP
bGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlICAgICAgICAgICAgICAgJXgxLCAleDEsIEAx
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlS
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIFN0b3JlIFJlZ2lzdGVyIChTVFIp
IGNhbGN1bGF0ZXMgYW4gYWRkcmVzcyBmcm9tIGEgYmFzZSByZWdpc3RlciB2YWx1ZSBhbmQgYW4g
CisgICAgICAgIG9mZnNldCByZWdpc3RlciB2YWx1ZSwgYW5kIHN0b3JlcyBhIDMyLWJpdCB3b3Jk
IG9yIGEgNjQtYml0IGRvdWJsZXdvcmQgdG8gdGhlIAorICAgICAgICBjYWxjdWxhdGVkIGFkZHJl
c3MsIGZyb20gYSByZWdpc3Rlci4KKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50
IEAwID0gdmFsdWUKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJ
bnQgQDIgPSBaRXh0MzIoVHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkKKyAgICAgICAgSW50IEAzID0g
c2NhbGUKKyAgICAgICAgSW50IEA0ID0gU2hsKEAyLCBAMykKKyAgICAgICAgSW50IEA1ID0gQWRk
KEAxLCBANCkKKyAgICAgICAgVm9pZEA2ID0gU3RvcmUoQDAsIEA1LCBDb250cm9sRGVwZW5kZW50
fFdyaXRlczpUb3ApCisgICAgICAgIFZvaWRANyA9IFJldHVybihAMCwgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICV4MSwgICAgICAg
ICAgICAgICAleDEsIEAyCisgICAgICAgIFN0b3JlMzIgICV4enIsICgleDAsJXgxLDJec2NhbGUp
LCBANgorICAgICAgICBNb3ZlICAgICAgICQwLCAgICAgICAgICAgICAgICV4MCwgQDcKKyAgICAg
ICAgUmV0MzIgICAgICV4MCwgICAgICAgICAgICAgICAgICAgIEA3CisKKyAgICAgICAgLy8gTmV3
IG9wdGltaXplZCBBSVIKKyAgICAgICAgU3RvcmUzMiAgJXh6ciwgKCV4MCwleDEsMl5zY2FsZSks
IEA2CisgICAgICAgIE1vdmUgICAgICAgJDAsICAgICAgICAgICAgICAgJXgwLCBANworICAgICAg
ICBSZXQzMiAgICAgJXgwLCAgICAgICAgICAgICAgICAgICAgQDcKKworICAgICAgICAqIGFzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleDo6QmFzZUluZGV4KToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjppbmRleEV4dGVuZFR5cGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmUzMik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWly
LmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OkFyZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmFzQmFzZUluZGV4IGNv
bnN0KToKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6
CisgICAgICAgICh0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MpOgorICAgICAgICAodGVz
dFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisK
IDIwMjEtMDctMTUgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgbWlkLUp1bHkgMjAyMSBlZGl0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCmluZGV4IGRjNjgzZjFlYWZkNzczYTZjMjAyMGQ1NDNkYTVkZmUzNjIz
ZTRjZDUuLjkxY2Q1N2FiZjhiMGNjMDg5ZWMzOGYwYTEwYmQyZGQ5OGEyMDgxOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC0xMjQsNyArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgVGltZXNFaWdo
dCwKICAgICAgICAgU2NhbGVQdHIgPSBpc0FkZHJlc3M2NEJpdCgpID8gVGltZXNFaWdodCA6IFRp
bWVzRm91ciwKICAgICB9OwotICAgIAorCisgICAgZW51bSBFeHRlbmQgeworICAgICAgICBaRXh0
LAorICAgICAgICBTRXh0LAorICAgICAgICBPb3BzCisgICAgfTsKKwogICAgIHN0cnVjdCBCYXNl
SW5kZXg7CiAgICAgCiAgICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBwZWRSZWdpc3RlcihS
ZWdpc3RlcklEIG9yaWdpbmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBA
IC0yMTAsMTEgKzIxNiwxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBEZXNjcmliZXMgYSBj
b21wbGV4IGFkZHJlc3NpbmcgbW9kZS4KICAgICBzdHJ1Y3QgQmFzZUluZGV4IHsKLSAgICAgICAg
QmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUs
IGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCwgRXh0ZW5k
IGV4dGVuZCA9IE9vcHMpCiAgICAgICAgICAgICA6IGJhc2UoYmFzZSkKICAgICAgICAgICAgICwg
aW5kZXgoaW5kZXgpCiAgICAgICAgICAgICAsIHNjYWxlKHNjYWxlKQogICAgICAgICAgICAgLCBv
ZmZzZXQob2Zmc2V0KQorICAgICAgICAgICAgLCBleHRlbmQoZXh0ZW5kKQogICAgICAgICB7CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC0yMjIsNiArMjI5LDcgQEAgcHVibGljOgogICAgICAgICBS
ZWdpc3RlcklEIGluZGV4OwogICAgICAgICBTY2FsZSBzY2FsZTsKICAgICAgICAgaW50MzJfdCBv
ZmZzZXQ7CisgICAgICAgIEV4dGVuZCBleHRlbmQ7CiAgICAgICAgIAogICAgICAgICBCYXNlSW5k
ZXggd2l0aE9mZnNldChpbnQzMl90IGFkZGl0aW9uYWxPZmZzZXQpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKaW5kZXggNGE5MGU1YTFmZGU0OGNjZmM0N2E3Mjc0OWU1ODVmN2QwMjRlMWNjNS4uZDI2ZTMy
MzQxNDQ1NzJlZWZhZDhmNzM4NWM1M2NmMTYyNDExNDE5OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTEzNjcs
NiArMTM2NywxNSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gTWVtb3J5IGFjY2VzcyBvcGVy
YXRpb25zOgorICAgIEFzc2VtYmxlcjo6RXh0ZW5kVHlwZSBpbmRleEV4dGVuZFR5cGUoQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBzd2l0Y2ggKGFkZHJlc3MuZXh0ZW5kKSB7Cisg
ICAgICAgIGNhc2UgWkV4dDoKKyAgICAgICAgICAgIHJldHVybiBBc3NlbWJsZXI6OlVYVFc7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQXNzZW1ibGVyOjpVWFRYOworICAg
ICAgICB9CisgICAgfQogCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xMzgwLDcgKzEzODksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsb2FkNjQoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJl
c3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2ND4oZGVzdCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2Nh
bGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTQ3OSw3ICsxNDg4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgbG9hZDMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2Fs
ZSB8fCBhZGRyZXNzLnNjYWxlID09IDIpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8
MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBh
ZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJl
c3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE2NzQsNyAr
MTY4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3JlNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJ
bmRleCBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFk
ZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAzKSkgewotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3RyPDY0PihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVy
OjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjw2ND4o
c3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNz
KSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MTc4MSw3ICsxNzkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0
ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDIpKSB7Ci0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBB
c3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBl
KGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDhmYzFh
ZmMyYTUzOTFmNDU2NWMzZDNkOThmN2EwZjc2NDgzNjIzZGEuLjBkZmY5MzdmYTFmNDYxN2VkMzlk
YjJkODZjZDFkNWRjNGRkNjBmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCkBAIC01NDcsOSArNTQ3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2NhbGUgPSBzY2FsZUZvclNobChpbmRleCwgb2Zmc2V0
LCB3aWR0aCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzY2FsZSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEFyZygpOwotICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhp
bmRleC0+Y2hpbGQoMCkpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKGJhc2UpKQorICAgICAgICAgICAg
ICAgIGluZGV4ID0gaW5kZXgtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tl
ZC5jb250YWlucyhpbmRleCkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbmRl
eCh0bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNldCk7CisjaWYg
Q1BVKEFSTTY0KQorICAgICAgICAgICAgICAgIGlmIChpbmRleC0+b3Bjb2RlKCkgPT0gWkV4dDMy
ICYmICFtX2xvY2tlZC5jb250YWlucyhpbmRleC0+Y2hpbGQoMCkpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQXJnOjppbmRleCh0bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQoMCkpLCAq
c2NhbGUsIG9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6OlpFeHQpOworI2VuZGlmCisgICAgICAgICAg
ICAgICAgcmV0dXJuIEFyZzo6aW5kZXgodG1wKGJhc2UpLCB0bXAoaW5kZXgpLCAqc2NhbGUsIG9m
ZnNldCk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBpZiAoQXJnIHJlc3VsdCA9IHRy
eUluZGV4KGxlZnQsIHJpZ2h0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCmlu
ZGV4IGNjZWY0NTY4ODAzY2UyNTcyMTMwZTNiZWI3NmMxMGRlZWI4YTcyNzkuLmNjNTExM2NjYzE1
NmRmZDkyMmFkOWIyZjhiODZlZWU2MGJmMmZhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBcmcuaApAQCAtNjI5LDcgKzYyOSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4K
LSAgICBzdGF0aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJhc2UsIEFpcjo6VG1wIGluZGV4LCB1bnNp
Z25lZCBzY2FsZSwgSW50IG9mZnNldCkKKyAgICBzdGF0aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJh
c2UsIEFpcjo6VG1wIGluZGV4LCB1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCwgTWFjcm9Bc3Nl
bWJsZXI6OkV4dGVuZCBleHRlbmQgPSBNYWNyb0Fzc2VtYmxlcjo6T29wcykKICAgICB7CiAgICAg
ICAgIEFTU0VSVChiYXNlLmlzR1AoKSk7CiAgICAgICAgIEFTU0VSVChpbmRleC5pc0dQKCkpOwpA
QCAtNjQwLDYgKzY0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1faW5kZXggPSBpbmRl
eDsKICAgICAgICAgcmVzdWx0Lm1fc2NhbGUgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihzY2FsZSk7
CiAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG9mZnNldDsKKyAgICAgICAgcmVzdWx0Lm1fZXh0
ZW5kID0gZXh0ZW5kOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTM3OSw3
ICsxMzgwLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNJbmRleCgpKTsKICAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCiAgICAgICAgICAgICBtX2Jhc2UuZ3By
KCksIG1faW5kZXguZ3ByKCksIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTY2FsZT4obG9n
U2NhbGUoKSksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4obV9v
ZmZzZXQpKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihtX29m
ZnNldCksIG1fZXh0ZW5kKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25h
bENvbmRpdGlvbiBhc1JlbGF0aW9uYWxDb25kaXRpb24oKSBjb25zdApAQCAtMTQ4Nyw2ICsxNDg4
LDcgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fc2NhbGUgeyAxIH07CiAgICAgQWlyOjpUbXAg
bV9iYXNlOwogICAgIEFpcjo6VG1wIG1faW5kZXg7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkV4dGVu
ZCBtX2V4dGVuZCA9IE1hY3JvQXNzZW1ibGVyOjpFeHRlbmQ6Ok9vcHM7CiB9OwogCiBzdHJ1Y3Qg
QXJnSGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggOTg0OGY2M2U4NjlhZjJi
M2ZiNTZjNWViMDRhZmUwYmIzNzk3YjAwYy4uZDdjMjE2OWFjMDc3NmVmMTI1MDA3M2I4ZjQxMTMw
YzAyM2VjYmJiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtODI2LDYgKzgyNiw4
IEBAIHZvaWQgdGVzdE11bFRyZWVBcmczMihpbnQzMl90KTsKIHZvaWQgdGVzdEFyZyhpbnQgYXJn
dW1lbnQpOwogdm9pZCB0ZXN0UmV0dXJuQ29uc3Q2NChpbnQ2NF90IHZhbHVlKTsKIHZvaWQgdGVz
dFJldHVyblZvaWQoKTsKK3ZvaWQgdGVzdExvYWRaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCk7Cit2
b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKTsKIHZvaWQgdGVzdEFkZEFyZyhp
bnQpOwogdm9pZCB0ZXN0QWRkQXJncyhpbnQsIGludCk7CiB2b2lkIHRlc3RBZGRBcmdJbW0oaW50
LCBpbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggMTcxYjgzNzgx
MzI1N2YxZDNlYzA2MmU5ZjY4NzkxZWI3YTJkMjBiNS4uYmQxNjQ3YTIwYzE0OGVkZDI4ZGVmNGZl
Mjk0NDQ3YzlkYWM4NTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCkBA
IC0yOTcsNiArMjk3LDE1OCBAQCB2b2lkIHRlc3RSZXR1cm5Wb2lkKCkKICAgICBjb21waWxlQW5k
UnVuPHZvaWQ+KHByb2MpOwogfQogCit2b2lkIHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4QWRkcmVz
cygpCit7CisgICAgaWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHRlc3QzMiA9IFsmXSAodWludDMyX3QgaSwgaW50MzJfdCBu
dW0sIGludDMyX3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBiYXNl
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5kZXgzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogaW5kZXg2NCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7CisgICAgICAg
IFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2NCwg
c2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcykpOworCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgp
ICYmIGFtb3VudCA9PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipsZHIu
KnV4dHcjMi4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVn
ZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50cHRyX3QgYWRkciA9IGJp
dHdpc2VfY2FzdDxpbnRwdHJfdD4oJm51bSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQz
Ml90PigqY29kZSwgYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMSkgPDwgc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KGFtb3VudCkpICogaSwgaSksIG51bSk7CisgICAgfTsKKworICAgIGZvciAo
YXV0byBpIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91
bnQgPCAxMDsgKythbW91bnQpCisgICAgICAgICAgICAgICAgdGVzdDMyKGkudmFsdWUsIG51bS52
YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gdGVzdDY0ID0gWyZd
ICh1aW50MzJfdCBpLCBpbnQ2NF90IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVl
KiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZh
bHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdp
bigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRy
ZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
aGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdp
bigpLCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7
CisgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDMpIHsKKyAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIHJlZ2V4KCIuKmxkci4qdXh0dyMzLioiKTsKKyAgICAgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAg
ICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVtKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGlu
dHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSkgKiBpLCBpKSwgbnVt
KTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGkgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIG51bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChp
bnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAg
ICB0ZXN0NjQoaS52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIGlmIChP
cHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byB0ZXN0MzIgPSBbJl0gKHVpbnQzMl90IGksIGludDMyX3QgbnVtLCBpbnQzMl90IGFtb3Vu
dCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKTsKKyAgICAgICAgVmFsdWUqIGJh
c2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAg
ICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2UsIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0
LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
U3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgICAgIGF1dG8g
Y29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpICYmIGFtb3Vu
dCA9PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdHIuKnV4dHcjMi4q
Iik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIo
KSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50MzJfdCBzbG90ID0gMTIzNDEyMzQ7Cisg
ICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAg
ICAgICAgaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90
PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSkgKiBpLCBpKTsKKyAgICAgICAg
Q0hFQ0tfRVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGkgOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3Vu
dCkKKyAgICAgICAgICAgICAgICB0ZXN0MzIoaS52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgYXV0byB0ZXN0NjQgPSBbJl0gKHVpbnQzMl90IGksIGlu
dDY0X3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1
ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
bnVtKTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZh
bHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAg
IFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9y
aWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBh
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
dmFsdWUpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAg
ICBpZiAoaXNBUk02NCgpICYmIGFtb3VudCA9PSAzKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyByZWdleCgiLipzdHIuKnV4dHcjMy4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVj
dGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50
NjRfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nh
c3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAgICAgICAgaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhZGRy
IC0gKHN0YXRpY19jYXN0PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1v
dW50KSkgKiBpLCBpKTsKKyAgICAgICAgQ0hFQ0tfRVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisg
ICAgZm9yIChhdXRvIGkgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51
bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9
IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0NjQoaS52YWx1
ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIHRlc3RB
ZGRBcmcoaW50IGEpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01OTQ0LDYgKzYwOTYsOSBA
QCB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJl
ZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU5fQklOQVJZKHRlc3RCaXRYb3JUcmVlQXJn
SW1tLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRl
c3RCaXRBbmRUcmVlQXJnMzIsIGludDMyT3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RC
aXRPclRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0TG9hZFplcm9F
eHRlbmRJbmRleEFkZHJlc3MoKSk7CisgICAgUlVOKHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFk
ZHJlc3MoKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433640</attachid>
            <date>2021-07-15 17:17:49 -0700</date>
            <delta_ts>2021-07-15 17:45:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210715191747.patch</filename>
            <type>text/plain</type>
            <size>22342</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWM1ZDdjMDE3ZTdhNmU0OTNkMTJhM2NkY2Y2ZTZlOTFmNWFiNWM2Li4zNWM4Nzg2NGVlYTk5YWQ3
NjRlNmFhNWJhZWU2NjExZDA4ZjRmMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0xNSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEV4dGVuZFR5cGUgdG8gQWlyOjpBcmcgSW5kZXggdG8gZnVsbHkg
dXRpbGl6ZSBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIG1lbW9yeSBpbnN0cnVjdGlvbiBmb3IgQVJN
NjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBw
YXR0ZXJuIHJlY29nbml6YXRpb24gb2YgYWRkcmVzcyBjb21wdXRhdGlvbiBpbiB0aGUgaW5zdHJ1
Y3Rpb25zLCBlLmcuLCBMb2FkIAorICAgICAgICBSZWdpc3RlciAoTERSKSBhbmQgU3RvcmUgUmVn
aXN0ZXIgKFNUUiksIGNhbiBiZW5lZml0IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3Rvci4gCisgICAg
ICAgIFRoZW4sIHRoZSBBaXIgb3BlcmFuZCBCYXNlSW5kZXggY29udGFpbmluZyBiYXNlLCBpbmRl
eCwgYW5kIHNjYWxlIGlzIGludHJvZHVjZWQgCisgICAgICAgIHRvIEFpciBvcGNvZGUuIEhvd2V2
ZXIsIHRoZSA8ZXh0ZW5kPiBvcHRpb24gb2YgaW5kZXggYWRkcmVzcyBpcyBub3QgZnVsbHkgbGV2
ZXJhZ2VkIAorICAgICAgICBpbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24uIAorCisgICAg
ICAgIFRvIGZpbGwgdGhhdCBnYXAsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBtZW1iZXIsIEV4dGVu
ZFR5cGUsIHRvIHRoZSBjdXJyZW50IAorICAgICAgICBkZXNpZ24gb2YgQmFzZUluZGV4IHRvIHRy
aWdnZXIgemVybyBleHRlbnNpb24gb24gdGhlIEluZGV4IGFkZHJlc3MuIEFuZCB0aGlzIGlzIAor
ICAgICAgICBlbmFibGVkIGZvciBTdG9yZS9Mb2FkIHdpdGggdmFsaWQgaW5kZXggYWRkcmVzcyBh
bmQgc2hpZnQgYW1vdW50LgorCisgICAgICAgIExvYWQgUmVnaXN0ZXIgKExEUikgY2FsY3VsYXRl
cyBhbiBhZGRyZXNzIGZyb20gYSBiYXNlIHJlZ2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAg
b2Zmc2V0IHJlZ2lzdGVyIHZhbHVlLCBsb2FkcyBhIHdvcmQgZnJvbSBtZW1vcnksIGFuZCB3cml0
ZXMgaXQgdG8gYSByZWdpc3Rlci4gCisgICAgICAgIFRoZSBvZmZzZXQgcmVnaXN0ZXIgdmFsdWUg
Y2FuIG9wdGlvbmFsbHkgYmUgc2hpZnRlZCBhbmQgZXh0ZW5kZWQuCisKKyAgICAgICAgR2l2ZW4g
QjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAx
ID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBzY2Fs
ZQorICAgICAgICBJbnQgQDMgPSBTaGwoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQoQDAs
IEAzKQorICAgICAgICBJbnQgQDUgPSBMb2FkKEA0LCBDb250cm9sRGVwZW5kZW50fFJlYWRzOlRv
cCkKKyAgICAgICAgVm9pZEA2ID0gUmV0dXJuKEA1LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBP
bGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlICAgICAgICAgICAgICAgJXgxLCAleDEsIEAx
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlS
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIFN0b3JlIFJlZ2lzdGVyIChTVFIp
IGNhbGN1bGF0ZXMgYW4gYWRkcmVzcyBmcm9tIGEgYmFzZSByZWdpc3RlciB2YWx1ZSBhbmQgYW4g
CisgICAgICAgIG9mZnNldCByZWdpc3RlciB2YWx1ZSwgYW5kIHN0b3JlcyBhIDMyLWJpdCB3b3Jk
IG9yIGEgNjQtYml0IGRvdWJsZXdvcmQgdG8gdGhlIAorICAgICAgICBjYWxjdWxhdGVkIGFkZHJl
c3MsIGZyb20gYSByZWdpc3Rlci4KKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50
IEAwID0gdmFsdWUKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJ
bnQgQDIgPSBaRXh0MzIoVHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkKKyAgICAgICAgSW50IEAzID0g
c2NhbGUKKyAgICAgICAgSW50IEA0ID0gU2hsKEAyLCBAMykKKyAgICAgICAgSW50IEA1ID0gQWRk
KEAxLCBANCkKKyAgICAgICAgVm9pZEA2ID0gU3RvcmUoQDAsIEA1LCBDb250cm9sRGVwZW5kZW50
fFdyaXRlczpUb3ApCisgICAgICAgIFZvaWRANyA9IFJldHVybihAMCwgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICV4MSwgICAgICAg
ICAgICAgICAleDEsIEAyCisgICAgICAgIFN0b3JlMzIgICV4enIsICgleDAsJXgxLDJec2NhbGUp
LCBANgorICAgICAgICBNb3ZlICAgICAgICQwLCAgICAgICAgICAgICAgICV4MCwgQDcKKyAgICAg
ICAgUmV0MzIgICAgICV4MCwgICAgICAgICAgICAgICAgICAgIEA3CisKKyAgICAgICAgLy8gTmV3
IG9wdGltaXplZCBBSVIKKyAgICAgICAgU3RvcmUzMiAgJXh6ciwgKCV4MCwleDEsMl5zY2FsZSks
IEA2CisgICAgICAgIE1vdmUgICAgICAgJDAsICAgICAgICAgICAgICAgJXgwLCBANworICAgICAg
ICBSZXQzMiAgICAgJXgwLCAgICAgICAgICAgICAgICAgICAgQDcKKworICAgICAgICAqIGFzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleDo6QmFzZUluZGV4KToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjppbmRleEV4dGVuZFR5cGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmUzMik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWly
LmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OkFyZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmFzQmFzZUluZGV4IGNv
bnN0KToKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6
CisgICAgICAgICh0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MpOgorICAgICAgICAodGVz
dFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisK
IDIwMjEtMDctMTUgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgbWlkLUp1bHkgMjAyMSBlZGl0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCmluZGV4IGRjNjgzZjFlYWZkNzczYTZjMjAyMGQ1NDNkYTVkZmUzNjIz
ZTRjZDUuLjkxY2Q1N2FiZjhiMGNjMDg5ZWMzOGYwYTEwYmQyZGQ5OGEyMDgxOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC0xMjQsNyArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgVGltZXNFaWdo
dCwKICAgICAgICAgU2NhbGVQdHIgPSBpc0FkZHJlc3M2NEJpdCgpID8gVGltZXNFaWdodCA6IFRp
bWVzRm91ciwKICAgICB9OwotICAgIAorCisgICAgZW51bSBFeHRlbmQgeworICAgICAgICBaRXh0
LAorICAgICAgICBTRXh0LAorICAgICAgICBPb3BzCisgICAgfTsKKwogICAgIHN0cnVjdCBCYXNl
SW5kZXg7CiAgICAgCiAgICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBwZWRSZWdpc3RlcihS
ZWdpc3RlcklEIG9yaWdpbmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBA
IC0yMTAsMTEgKzIxNiwxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBEZXNjcmliZXMgYSBj
b21wbGV4IGFkZHJlc3NpbmcgbW9kZS4KICAgICBzdHJ1Y3QgQmFzZUluZGV4IHsKLSAgICAgICAg
QmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUs
IGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCwgRXh0ZW5k
IGV4dGVuZCA9IE9vcHMpCiAgICAgICAgICAgICA6IGJhc2UoYmFzZSkKICAgICAgICAgICAgICwg
aW5kZXgoaW5kZXgpCiAgICAgICAgICAgICAsIHNjYWxlKHNjYWxlKQogICAgICAgICAgICAgLCBv
ZmZzZXQob2Zmc2V0KQorICAgICAgICAgICAgLCBleHRlbmQoZXh0ZW5kKQogICAgICAgICB7CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC0yMjIsNiArMjI5LDcgQEAgcHVibGljOgogICAgICAgICBS
ZWdpc3RlcklEIGluZGV4OwogICAgICAgICBTY2FsZSBzY2FsZTsKICAgICAgICAgaW50MzJfdCBv
ZmZzZXQ7CisgICAgICAgIEV4dGVuZCBleHRlbmQ7CiAgICAgICAgIAogICAgICAgICBCYXNlSW5k
ZXggd2l0aE9mZnNldChpbnQzMl90IGFkZGl0aW9uYWxPZmZzZXQpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKaW5kZXggNGE5MGU1YTFmZGU0OGNjZmM0N2E3Mjc0OWU1ODVmN2QwMjRlMWNjNS4uMmZlMTc5
YTBjYWZiZmMzZWZjNGY5OTQ0ODEyMjUxNjQyYmFkODJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTEzNjcs
NiArMTM2NywxNSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gTWVtb3J5IGFjY2VzcyBvcGVy
YXRpb25zOgorICAgIEFzc2VtYmxlcjo6RXh0ZW5kVHlwZSBpbmRleEV4dGVuZFR5cGUoQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBzd2l0Y2ggKGFkZHJlc3MuZXh0ZW5kKSB7Cisg
ICAgICAgIGNhc2UgWkV4dDoKKyAgICAgICAgICAgIHJldHVybiBBc3NlbWJsZXI6OlVYVFc7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQXNzZW1ibGVyOjpVWFRYOworICAg
ICAgICB9CisgICAgfQogCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xMzgwLDEyICsxMzg5LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGxvYWQ2NChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRk
cmVzcy5zY2FsZSA9PSAzKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQz
MlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0Piht
ZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNz
ZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwg
aW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3Nl
bWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAg
ICAgfQogCkBAIC0xNDc5LDEyICsxNDg4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQzMihC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFh
ZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkg
ewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAg
ICAvLyBwcmludGYoIi0tLS0tLS0gaGVyZSAhISBsb2FkMzJcbiIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4
RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRk
cmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1v
cnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBt
ZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNz
KSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRk
cmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTY3NCwxMiArMTY4
NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZTY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5k
ZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRy
ZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6
VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNy
YywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyks
IGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2Fj
aGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fz
c2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1w
UmVnaXN0ZXIpOwogICAgIH0KICAgICAKQEAgLTE3ODEsMTIgKzE3OTEsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAg
ewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRy
ZXNzLnNjYWxlID09IDIpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2Nh
bGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRv
UHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1v
cnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1i
bGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0Piht
ZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5k
ZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXgg
NzFjZDIzOTk4Y2U3YTI0MTIwMTk2ZDBmMDQ1NjI0NmQxNGQ5MThhNy4uN2IzYzA0NzE5OGVkYjFl
NDFjZWE0NDJlMjEyNWE2YjNkZTQwNmVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkwNCw2ICs5MDQsNTYgQEAgdm9pZCB0ZXN0TXVsMzJX
aXRoSW1tZWRpYXRlcygpCiB9CiAKICNpZiBDUFUoQVJNNjQpCit2b2lkIHRlc3RTdG9yZVplcm9F
eHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIGludDMyX3Qgc2xvdCA9IDEwMDA7CisKKyAgICBp
bnRwdHJfdCBiYXNlSW5kZXhBZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90Pigmc2xvdCk7Cisg
ICAgaW50cHRyX3QgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHN0YXRpY19jYXN0PGlu
dDY0X3Q+KDB4ZikpOyAvLyAzMi1iaXQgYWRkcmVzcworICAgIGludHB0cl90IGJhc2UgPSBiYXNl
SW5kZXhBZGRyIC0gKGluZGV4IDw8IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oMkwpKTsgLy8gNjQt
Yml0IGFkZHJlc3MKKyAgICBpbmRleCArPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHN0YXRpY19j
YXN0PGludDY0X3Q+KDB4ZmZmZmZmZmYwMDAwMDAwMCkpOworCisgICAgaW50MzJfdCBvZmZzZXQg
PSAwOworICAgIE1hY3JvQXNzZW1ibGVyOjpFeHRlbmQgZXh0ZW5kID0gTWFjcm9Bc3NlbWJsZXI6
OkV4dGVuZDo6WkV4dDsKKyAgICBDQ2FsbEhlbHBlcnM6OlNjYWxlIHNjYWxlID0gQ0NhbGxIZWxw
ZXJzOjpUaW1lc0ZvdXI7CisKKyAgICBhdXRvIHN0b3JlID0gY29tcGlsZShbPV0gKENDYWxsSGVs
cGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAg
ICAgR1BSUmVnIGJhc2VSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CisgICAgICAgIEdQUlJl
ZyBpbmRleFJlZyA9IEdQUkluZm86OmFyZ3VtZW50R1BSMjsKKworICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChiYXNlKSwgYmFzZVJlZyk7CisgICAgICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGluZGV4KSwgaW5kZXhSZWcpOworICAgICAg
ICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QmFzZUluZGV4KGJhc2VSZWcsIGluZGV4UmVnLCBz
Y2FsZSwgb2Zmc2V0LCBleHRlbmQpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisKKyAgICAg
ICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0LnJldCgpOworICAgIH0p
OworCisgICAgaW50MzJfdCByZXN1bHQgPSBpbnZva2U8aW50MzJfdD4oc3RvcmUpOworICAgIHBy
aW50Zigic2xvdDogJWRcbiIsIHNsb3QpOworICAgIHByaW50ZigicmVzdWx0OiAlZFxuIiwgcmVz
dWx0KTsKKworICAgIC8vIGF1dG8gYmFzZUluZGV4ID0gY29tcGlsZShbPV0gKENDYWxsSGVscGVy
cyYgaml0KSB7CisgICAgLy8gICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisKKyAgICAv
LyAgICAgR1BSUmVnIGJhc2VSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjQ7CisgICAgLy8gICAg
IEdQUlJlZyBpbmRleFJlZyA9IEdQUkluZm86OmFyZ3VtZW50R1BSNTsKKworICAgIC8vICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYmFzZSksIGJhc2VSZWcpOworICAg
IC8vICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaW5kZXgpLCBpbmRl
eFJlZyk7CisgICAgLy8gICAgIGppdC5nZXRFZmZlY3RpdmVBZGRyZXNzKENDYWxsSGVscGVyczo6
QmFzZUluZGV4KGJhc2VSZWcsIGluZGV4UmVnLCBzY2FsZSwgb2Zmc2V0KSwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOworICAgIC8vICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAg
IC8vICAgICBqaXQucmV0KCk7CisgICAgLy8gfSk7CisKKyAgICAvLyBpbnRwdHJfdCBjb21wdXRl
ZEJhc2VJbmRleEFkZHIgPSBpbnZva2U8aW50cHRyX3Q+KGJhc2VJbmRleCk7CisKKyAgICAvLyBw
cmludGYoImJhc2VJbmRleEFkZHI6ICVsZFxuIiwgYmFzZUluZGV4QWRkcik7CisgICAgLy8gcHJp
bnRmKCJjb21wdXRlZEJhc2VJbmRleEFkZHI6ICVsZFxuIiwgY29tcHV0ZWRCYXNlSW5kZXhBZGRy
KTsKK30KKwogdm9pZCB0ZXN0TXVsdGlwbHlTaWduRXh0ZW5kMzIoKQogewogICAgIGZvciAoYXV0
byB2YWx1ZSA6IGludDMyT3BlcmFuZHMoKSkgewpAQCAtNDIyMCw2ICs0MjcwLDggQEAgdm9pZCBy
dW4oY29uc3QgY2hhciogZmlsdGVyKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lT
CiAjZW5kaWYKIAogI2lmIENQVShBUk02NCkKKyAgICBSVU4odGVzdFN0b3JlWmVyb0V4dGVuZElu
ZGV4QWRkcmVzcygpKTsKKwogICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjY0SW50NjQoKSk7CiAg
ICAgUlVOKHRlc3RMb2FkU3RvcmVQYWlyNjREb3VibGUoKSk7CiAgICAgUlVOKHRlc3RNdWx0aXBs
eVNpZ25FeHRlbmQzMigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAKaW5kZXggOGZjMWFmYzJhNTM5MWY0NTY1YzNkM2Q5OGY3YTBmNzY0ODM2MjNkYS4uMGRmZjkz
N2ZhMWY0NjE3ZWQzOWRiMmQ4NmNkMWQ1ZGM0ZGQ2MGZiNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTU0Nyw5ICs1NDcsMTQgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hs
KGluZGV4LCBvZmZzZXQsIHdpZHRoKTsKICAgICAgICAgICAgICAgICBpZiAoIXNjYWxlKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbG9j
a2VkLmNvbnRhaW5zKGluZGV4LT5jaGlsZCgwKSkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkp
CisgICAgICAgICAgICAgICAgaW5kZXggPSBpbmRleC0+Y2hpbGQoMCk7CisgICAgICAgICAgICAg
ICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGluZGV4KSB8fCBtX2xvY2tlZC5jb250YWlucyhiYXNl
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFyZygpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBBcmc6OmluZGV4KHRtcChiYXNlKSwgdG1wKGluZGV4LT5jaGlsZCgwKSksICpzY2FsZSwg
b2Zmc2V0KTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgICAgICAgICAgaWYgKGluZGV4LT5vcGNv
ZGUoKSA9PSBaRXh0MzIgJiYgIW1fbG9ja2VkLmNvbnRhaW5zKGluZGV4LT5jaGlsZCgwKSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBBcmc6OmluZGV4KHRtcChiYXNlKSwgdG1wKGluZGV4
LT5jaGlsZCgwKSksICpzY2FsZSwgb2Zmc2V0LCBNYWNyb0Fzc2VtYmxlcjo6WkV4dCk7CisjZW5k
aWYKKyAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbmRleCh0bXAoYmFzZSksIHRtcChpbmRl
eCksICpzY2FsZSwgb2Zmc2V0KTsKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGlmIChB
cmcgcmVzdWx0ID0gdHJ5SW5kZXgobGVmdCwgcmlnaHQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmgKaW5kZXggY2NlZjQ1Njg4MDNjZTI1NzIxMzBlM2JlYjc2YzEwZGVlYjhhNzI3
OS4uY2M1MTEzY2NjMTU2ZGZkOTIyYWQ5YjJmOGI4NmVlZTYwYmYyZmFiOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC02MjksNyArNjI5LDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdh
bE9mZnNldDxJbnQ+PgotICAgIHN0YXRpYyBBcmcgaW5kZXgoQWlyOjpUbXAgYmFzZSwgQWlyOjpU
bXAgaW5kZXgsIHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBBcmcgaW5k
ZXgoQWlyOjpUbXAgYmFzZSwgQWlyOjpUbXAgaW5kZXgsIHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zm
c2V0LCBNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kIGV4dGVuZCA9IE1hY3JvQXNzZW1ibGVyOjpPb3Bz
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGJhc2UuaXNHUCgpKTsKICAgICAgICAgQVNTRVJUKGlu
ZGV4LmlzR1AoKSk7CkBAIC02NDAsNiArNjQwLDcgQEAgcHVibGljOgogICAgICAgICByZXN1bHQu
bV9pbmRleCA9IGluZGV4OwogICAgICAgICByZXN1bHQubV9zY2FsZSA9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHNjYWxlKTsKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gb2Zmc2V0OworICAgICAg
ICByZXN1bHQubV9leHRlbmQgPSBleHRlbmQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCkBAIC0xMzc5LDcgKzEzODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc0luZGV4
KCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleCgKICAgICAgICAg
ICAgIG1fYmFzZS5ncHIoKSwgbV9pbmRleC5ncHIoKSwgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJs
ZXI6OlNjYWxlPihsb2dTY2FsZSgpKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFZhbHVlOjpP
ZmZzZXRUeXBlPihtX29mZnNldCkpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmFsdWU6Ok9m
ZnNldFR5cGU+KG1fb2Zmc2V0KSwgbV9leHRlbmQpOwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1i
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGFzUmVsYXRpb25hbENvbmRpdGlvbigpIGNvbnN0CkBA
IC0xNDg3LDYgKzE0ODgsNyBAQCBwcml2YXRlOgogICAgIGludDMyX3QgbV9zY2FsZSB7IDEgfTsK
ICAgICBBaXI6OlRtcCBtX2Jhc2U7CiAgICAgQWlyOjpUbXAgbV9pbmRleDsKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6RXh0ZW5kIG1fZXh0ZW5kID0gTWFjcm9Bc3NlbWJsZXI6OkV4dGVuZDo6T29wczsK
IH07CiAKIHN0cnVjdCBBcmdIYXNoIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCA5
ODQ4ZjYzZTg2OWFmMmIzZmI1NmM1ZWIwNGFmZTBiYjM3OTdiMDBjLi5kN2MyMTY5YWMwNzc2ZWYx
MjUwMDczYjhmNDExMzBjMDIzZWNiYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBA
IC04MjYsNiArODI2LDggQEAgdm9pZCB0ZXN0TXVsVHJlZUFyZzMyKGludDMyX3QpOwogdm9pZCB0
ZXN0QXJnKGludCBhcmd1bWVudCk7CiB2b2lkIHRlc3RSZXR1cm5Db25zdDY0KGludDY0X3QgdmFs
dWUpOwogdm9pZCB0ZXN0UmV0dXJuVm9pZCgpOwordm9pZCB0ZXN0TG9hZFplcm9FeHRlbmRJbmRl
eEFkZHJlc3MoKTsKK3ZvaWQgdGVzdFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpOwogdm9p
ZCB0ZXN0QWRkQXJnKGludCk7CiB2b2lkIHRlc3RBZGRBcmdzKGludCwgaW50KTsKIHZvaWQgdGVz
dEFkZEFyZ0ltbShpbnQsIGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApp
bmRleCAxNzFiODM3ODEzMjU3ZjFkM2VjMDYyZTlmNjg3OTFlYjdhMmQyMGI1Li5iZDE2NDdhMjBj
MTQ4ZWRkMjhkZWY0ZmUyOTQ0NDdjOWRhYzg1MjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfMi5jcHAKQEAgLTI5Nyw2ICsyOTcsMTU4IEBAIHZvaWQgdGVzdFJldHVyblZvaWQoKQog
ICAgIGNvbXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7CiB9CiAKK3ZvaWQgdGVzdExvYWRaZXJvRXh0
ZW5kSW5kZXhBZGRyZXNzKCkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwo
KSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGVzdDMyID0gWyZdICh1aW50MzJf
dCBpLCBpbnQzMl90IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAg
ICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRl
eDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBpbmRl
eDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJh
c2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdp
bigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRy
ZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAg
IGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDIpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IHJlZ2V4KCIuKmxkci4qdXh0dyMyLioiKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBpbnRw
dHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVtKTsKKyAgICAgICAgQ0hFQ0tf
RVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90Pigx
KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSkgKiBpLCBpKSwgbnVtKTsKKyAgICB9
OworCisgICAgZm9yIChhdXRvIGkgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvIG51bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFt
b3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0MzIo
aS52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0
byB0ZXN0NjQgPSBbJl0gKHVpbnQzMl90IGksIGludDY0X3QgbnVtLCBpbnQzMl90IGFtb3VudCkg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFpFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKyAgICAg
ICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2Fk
LCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21w
aWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBhbW91bnQgPT0gMykgewor
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qbGRyLip1eHR3IzMuKiIpOworICAgICAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOwor
ICAgICAgICB9CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+
KCZudW0pOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oKmNvZGUsIGFkZHIgLSAo
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEpIDw8IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQp
KSAqIGksIGkpLCBudW0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaSA6IGludDMyT3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbnVtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAg
ICAgICAgICBmb3IgKGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQor
ICAgICAgICAgICAgICAgIHRlc3Q2NChpLnZhbHVlLCBudW0udmFsdWUsIGFtb3VudCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcygp
Cit7CisgICAgaWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIHRlc3QzMiA9IFsmXSAodWludDMyX3QgaSwgaW50MzJfdCBudW0s
IGludDMyX3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiB2YWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBudW0pOworICAg
ICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4
MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGlu
ZGV4NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGlu
ZGV4MzIpOworICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwg
YmFzZSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3Jp
Z2luKCksIGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1ZSk7CisK
KyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FS
TTY0KCkgJiYgYW1vdW50ID09IDIpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIu
KnN0ci4qdXh0dyMyLioiKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2Rl
LCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBpbnQzMl90IHNsb3Qg
PSAxMjM0MTIzNDsKKyAgICAgICAgaW50cHRyX3QgYWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4oJnNsb3QpOworICAgICAgICBpbnZva2U8aW50MzJfdD4oKmNvZGUsIGFkZHIgLSAoc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KDEpIDw8IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQpKSAqIGks
IGkpOworICAgICAgICBDSEVDS19FUShzbG90LCBudW0pOworICAgIH07CisKKyAgICBmb3IgKGF1
dG8gaSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbnVtIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50
IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAgICAgICAgIHRlc3QzMihpLnZhbHVlLCBudW0udmFs
dWUsIGFtb3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIHRlc3Q2NCA9IFsmXSAo
dWludDMyX3QgaSwgaW50NjRfdCBudW0sIGludDMyX3QgYW1vdW50KSB7CisgICAgICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
CisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBudW0pOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAgICBWYWx1ZSogc2NhbGUgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKyAg
ICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwgCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHZh
bHVlLCBhZGRyZXNzKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCB2YWx1ZSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDMpIHsKKyAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKnN0ci4qdXh0dyMzLioiKTsKKyAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAg
fQorICAgICAgICBpbnQ2NF90IHNsb3QgPSAxMjM0MTIzNDsKKyAgICAgICAgaW50cHRyX3QgYWRk
ciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJnNsb3QpOworICAgICAgICBpbnZva2U8aW50NjRf
dD4oKmNvZGUsIGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEpIDw8IHN0YXRpY19jYXN0
PGludHB0cl90PihhbW91bnQpKSAqIGksIGkpOworICAgICAgICBDSEVDS19FUShzbG90LCBudW0p
OworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbnVtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGlu
dDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAgICAgICAg
IHRlc3Q2NChpLnZhbHVlLCBudW0udmFsdWUsIGFtb3VudCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKIHZvaWQgdGVzdEFkZEFyZyhpbnQgYSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU5
NDQsNiArNjA5Niw5IEBAIHZvaWQgYWRkQml0VGVzdHMoY29uc3QgY2hhciogZmlsdGVyLCBEZXF1
ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQogICAgIFJVTl9CSU5BUlkodGVz
dEJpdFhvclRyZWVBcmdJbW0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKICAg
ICBSVU5fVU5BUlkodGVzdEJpdEFuZFRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKICAgICBS
VU5fVU5BUlkodGVzdEJpdE9yVHJlZUFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOworCisgICAgUlVO
KHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpKTsKKyAgICBSVU4odGVzdFN0b3JlWmVy
b0V4dGVuZEluZGV4QWRkcmVzcygpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCg==
</data>
<flag name="commit-queue"
          id="455962"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433642</attachid>
            <date>2021-07-15 17:36:29 -0700</date>
            <delta_ts>2021-07-15 20:40:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210715193628.patch</filename>
            <type>text/plain</type>
            <size>22382</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWM1ZDdjMDE3ZTdhNmU0OTNkMTJhM2NkY2Y2ZTZlOTFmNWFiNWM2Li4zNWM4Nzg2NGVlYTk5YWQ3
NjRlNmFhNWJhZWU2NjExZDA4ZjRmMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0xNSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEV4dGVuZFR5cGUgdG8gQWlyOjpBcmcgSW5kZXggdG8gZnVsbHkg
dXRpbGl6ZSBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIG1lbW9yeSBpbnN0cnVjdGlvbiBmb3IgQVJN
NjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBw
YXR0ZXJuIHJlY29nbml6YXRpb24gb2YgYWRkcmVzcyBjb21wdXRhdGlvbiBpbiB0aGUgaW5zdHJ1
Y3Rpb25zLCBlLmcuLCBMb2FkIAorICAgICAgICBSZWdpc3RlciAoTERSKSBhbmQgU3RvcmUgUmVn
aXN0ZXIgKFNUUiksIGNhbiBiZW5lZml0IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3Rvci4gCisgICAg
ICAgIFRoZW4sIHRoZSBBaXIgb3BlcmFuZCBCYXNlSW5kZXggY29udGFpbmluZyBiYXNlLCBpbmRl
eCwgYW5kIHNjYWxlIGlzIGludHJvZHVjZWQgCisgICAgICAgIHRvIEFpciBvcGNvZGUuIEhvd2V2
ZXIsIHRoZSA8ZXh0ZW5kPiBvcHRpb24gb2YgaW5kZXggYWRkcmVzcyBpcyBub3QgZnVsbHkgbGV2
ZXJhZ2VkIAorICAgICAgICBpbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24uIAorCisgICAg
ICAgIFRvIGZpbGwgdGhhdCBnYXAsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBtZW1iZXIsIEV4dGVu
ZFR5cGUsIHRvIHRoZSBjdXJyZW50IAorICAgICAgICBkZXNpZ24gb2YgQmFzZUluZGV4IHRvIHRy
aWdnZXIgemVybyBleHRlbnNpb24gb24gdGhlIEluZGV4IGFkZHJlc3MuIEFuZCB0aGlzIGlzIAor
ICAgICAgICBlbmFibGVkIGZvciBTdG9yZS9Mb2FkIHdpdGggdmFsaWQgaW5kZXggYWRkcmVzcyBh
bmQgc2hpZnQgYW1vdW50LgorCisgICAgICAgIExvYWQgUmVnaXN0ZXIgKExEUikgY2FsY3VsYXRl
cyBhbiBhZGRyZXNzIGZyb20gYSBiYXNlIHJlZ2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAg
b2Zmc2V0IHJlZ2lzdGVyIHZhbHVlLCBsb2FkcyBhIHdvcmQgZnJvbSBtZW1vcnksIGFuZCB3cml0
ZXMgaXQgdG8gYSByZWdpc3Rlci4gCisgICAgICAgIFRoZSBvZmZzZXQgcmVnaXN0ZXIgdmFsdWUg
Y2FuIG9wdGlvbmFsbHkgYmUgc2hpZnRlZCBhbmQgZXh0ZW5kZWQuCisKKyAgICAgICAgR2l2ZW4g
QjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAx
ID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBzY2Fs
ZQorICAgICAgICBJbnQgQDMgPSBTaGwoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQoQDAs
IEAzKQorICAgICAgICBJbnQgQDUgPSBMb2FkKEA0LCBDb250cm9sRGVwZW5kZW50fFJlYWRzOlRv
cCkKKyAgICAgICAgVm9pZEA2ID0gUmV0dXJuKEA1LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBP
bGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlICAgICAgICAgICAgICAgJXgxLCAleDEsIEAx
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlS
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIFN0b3JlIFJlZ2lzdGVyIChTVFIp
IGNhbGN1bGF0ZXMgYW4gYWRkcmVzcyBmcm9tIGEgYmFzZSByZWdpc3RlciB2YWx1ZSBhbmQgYW4g
CisgICAgICAgIG9mZnNldCByZWdpc3RlciB2YWx1ZSwgYW5kIHN0b3JlcyBhIDMyLWJpdCB3b3Jk
IG9yIGEgNjQtYml0IGRvdWJsZXdvcmQgdG8gdGhlIAorICAgICAgICBjYWxjdWxhdGVkIGFkZHJl
c3MsIGZyb20gYSByZWdpc3Rlci4KKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50
IEAwID0gdmFsdWUKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJ
bnQgQDIgPSBaRXh0MzIoVHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkKKyAgICAgICAgSW50IEAzID0g
c2NhbGUKKyAgICAgICAgSW50IEA0ID0gU2hsKEAyLCBAMykKKyAgICAgICAgSW50IEA1ID0gQWRk
KEAxLCBANCkKKyAgICAgICAgVm9pZEA2ID0gU3RvcmUoQDAsIEA1LCBDb250cm9sRGVwZW5kZW50
fFdyaXRlczpUb3ApCisgICAgICAgIFZvaWRANyA9IFJldHVybihAMCwgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICV4MSwgICAgICAg
ICAgICAgICAleDEsIEAyCisgICAgICAgIFN0b3JlMzIgICV4enIsICgleDAsJXgxLDJec2NhbGUp
LCBANgorICAgICAgICBNb3ZlICAgICAgICQwLCAgICAgICAgICAgICAgICV4MCwgQDcKKyAgICAg
ICAgUmV0MzIgICAgICV4MCwgICAgICAgICAgICAgICAgICAgIEA3CisKKyAgICAgICAgLy8gTmV3
IG9wdGltaXplZCBBSVIKKyAgICAgICAgU3RvcmUzMiAgJXh6ciwgKCV4MCwleDEsMl5zY2FsZSks
IEA2CisgICAgICAgIE1vdmUgICAgICAgJDAsICAgICAgICAgICAgICAgJXgwLCBANworICAgICAg
ICBSZXQzMiAgICAgJXgwLCAgICAgICAgICAgICAgICAgICAgQDcKKworICAgICAgICAqIGFzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleDo6QmFzZUluZGV4KToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjppbmRleEV4dGVuZFR5cGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmUzMik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWly
LmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OkFyZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmFzQmFzZUluZGV4IGNv
bnN0KToKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6
CisgICAgICAgICh0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MpOgorICAgICAgICAodGVz
dFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisK
IDIwMjEtMDctMTUgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgbWlkLUp1bHkgMjAyMSBlZGl0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCmluZGV4IGRjNjgzZjFlYWZkNzczYTZjMjAyMGQ1NDNkYTVkZmUzNjIz
ZTRjZDUuLjkxY2Q1N2FiZjhiMGNjMDg5ZWMzOGYwYTEwYmQyZGQ5OGEyMDgxOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC0xMjQsNyArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgVGltZXNFaWdo
dCwKICAgICAgICAgU2NhbGVQdHIgPSBpc0FkZHJlc3M2NEJpdCgpID8gVGltZXNFaWdodCA6IFRp
bWVzRm91ciwKICAgICB9OwotICAgIAorCisgICAgZW51bSBFeHRlbmQgeworICAgICAgICBaRXh0
LAorICAgICAgICBTRXh0LAorICAgICAgICBPb3BzCisgICAgfTsKKwogICAgIHN0cnVjdCBCYXNl
SW5kZXg7CiAgICAgCiAgICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBwZWRSZWdpc3RlcihS
ZWdpc3RlcklEIG9yaWdpbmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBA
IC0yMTAsMTEgKzIxNiwxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBEZXNjcmliZXMgYSBj
b21wbGV4IGFkZHJlc3NpbmcgbW9kZS4KICAgICBzdHJ1Y3QgQmFzZUluZGV4IHsKLSAgICAgICAg
QmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUs
IGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCwgRXh0ZW5k
IGV4dGVuZCA9IE9vcHMpCiAgICAgICAgICAgICA6IGJhc2UoYmFzZSkKICAgICAgICAgICAgICwg
aW5kZXgoaW5kZXgpCiAgICAgICAgICAgICAsIHNjYWxlKHNjYWxlKQogICAgICAgICAgICAgLCBv
ZmZzZXQob2Zmc2V0KQorICAgICAgICAgICAgLCBleHRlbmQoZXh0ZW5kKQogICAgICAgICB7CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC0yMjIsNiArMjI5LDcgQEAgcHVibGljOgogICAgICAgICBS
ZWdpc3RlcklEIGluZGV4OwogICAgICAgICBTY2FsZSBzY2FsZTsKICAgICAgICAgaW50MzJfdCBv
ZmZzZXQ7CisgICAgICAgIEV4dGVuZCBleHRlbmQ7CiAgICAgICAgIAogICAgICAgICBCYXNlSW5k
ZXggd2l0aE9mZnNldChpbnQzMl90IGFkZGl0aW9uYWxPZmZzZXQpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKaW5kZXggNGE5MGU1YTFmZGU0OGNjZmM0N2E3Mjc0OWU1ODVmN2QwMjRlMWNjNS4uMmZlMTc5
YTBjYWZiZmMzZWZjNGY5OTQ0ODEyMjUxNjQyYmFkODJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTEzNjcs
NiArMTM2NywxNSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gTWVtb3J5IGFjY2VzcyBvcGVy
YXRpb25zOgorICAgIEFzc2VtYmxlcjo6RXh0ZW5kVHlwZSBpbmRleEV4dGVuZFR5cGUoQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBzd2l0Y2ggKGFkZHJlc3MuZXh0ZW5kKSB7Cisg
ICAgICAgIGNhc2UgWkV4dDoKKyAgICAgICAgICAgIHJldHVybiBBc3NlbWJsZXI6OlVYVFc7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQXNzZW1ibGVyOjpVWFRYOworICAg
ICAgICB9CisgICAgfQogCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xMzgwLDEyICsxMzg5LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGxvYWQ2NChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRk
cmVzcy5zY2FsZSA9PSAzKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQz
MlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0Piht
ZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNz
ZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwg
aW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3Nl
bWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAg
ICAgfQogCkBAIC0xNDc5LDEyICsxNDg4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQzMihC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFh
ZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkg
ewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAg
ICAvLyBwcmludGYoIi0tLS0tLS0gaGVyZSAhISBsb2FkMzJcbiIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4
RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRk
cmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1v
cnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBt
ZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNz
KSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRk
cmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTY3NCwxMiArMTY4
NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZTY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5k
ZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRy
ZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6
VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNy
YywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyks
IGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2Fj
aGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fz
c2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1w
UmVnaXN0ZXIpOwogICAgIH0KICAgICAKQEAgLTE3ODEsMTIgKzE3OTEsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAg
ewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRy
ZXNzLnNjYWxlID09IDIpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2Nh
bGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRv
UHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1v
cnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1i
bGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0Piht
ZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5k
ZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXgg
NzFjZDIzOTk4Y2U3YTI0MTIwMTk2ZDBmMDQ1NjI0NmQxNGQ5MThhNy4uNDVhODJiNjRhNWFmYTgy
MzQyYzYyOTVhYjNkNzFhYTM1NmI3MzI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkwNCw2ICs5MDQsNTYgQEAgdm9pZCB0ZXN0TXVsMzJX
aXRoSW1tZWRpYXRlcygpCiB9CiAKICNpZiBDUFUoQVJNNjQpCit2b2lkIHRlc3RTdG9yZVplcm9F
eHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIC8vIGludDMyX3Qgc2xvdCA9IDEwMDA7CisKKyAg
ICAvLyBpbnRwdHJfdCBiYXNlSW5kZXhBZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90Pigmc2xv
dCk7CisgICAgLy8gaW50cHRyX3QgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KDEwKTsg
Ly8gMzItYml0IGFkZHJlc3MKKyAgICAvLyBpbnRwdHJfdCBiYXNlID0gYmFzZUluZGV4QWRkciAt
IChpbmRleCA8PCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KDJMKSk7IC8vIDY0LWJpdCBhZGRyZXNz
CisgICAgLy8gaW5kZXggKz0gYml0d2lzZV9jYXN0PGludHB0cl90PihzdGF0aWNfY2FzdDxpbnQ2
NF90PigweGZmZmZmZmZmMDAwMDAwMDApKTsKKworICAgIC8vIGludDMyX3Qgb2Zmc2V0ID0gMDsK
KyAgICAvLyBNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kIGV4dGVuZCA9IE1hY3JvQXNzZW1ibGVyOjpF
eHRlbmQ6OlpFeHQ7CisgICAgLy8gQ0NhbGxIZWxwZXJzOjpTY2FsZSBzY2FsZSA9IENDYWxsSGVs
cGVyczo6VGltZXNGb3VyOworCisgICAgLy8gYXV0byBzdG9yZSA9IGNvbXBpbGUoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCkgeworICAgIC8vICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwor
CisgICAgLy8gICAgIEdQUlJlZyBiYXNlUmVnID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAg
IC8vICAgICBHUFJSZWcgaW5kZXhSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjI7CisKKyAgICAv
LyAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoYmFzZSksIGJhc2VSZWcp
OworICAgIC8vICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChpbmRleCks
IGluZGV4UmVnKTsKKyAgICAvLyAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkJhc2VJbmRl
eChiYXNlUmVnLCBpbmRleFJlZywgc2NhbGUsIG9mZnNldCwgZXh0ZW5kKSwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOworCisgICAgLy8gICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgLy8gICAgIGppdC5yZXQoKTsKKyAgICAvLyB9KTsKKworICAgIC8vIGludDMyX3QgcmVzdWx0
ID0gaW52b2tlPGludDMyX3Q+KHN0b3JlKTsKKyAgICAvLyBwcmludGYoInNsb3Q6ICVkXG4iLCBz
bG90KTsKKyAgICAvLyBwcmludGYoInJlc3VsdDogJWRcbiIsIHJlc3VsdCk7CisKKyAgICAvLyBh
dXRvIGJhc2VJbmRleCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgIC8v
ICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgLy8gICAgIEdQUlJlZyBiYXNl
UmVnID0gR1BSSW5mbzo6YXJndW1lbnRHUFI0OworICAgIC8vICAgICBHUFJSZWcgaW5kZXhSZWcg
PSBHUFJJbmZvOjphcmd1bWVudEdQUjU7CisKKyAgICAvLyAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGJhc2UpLCBiYXNlUmVnKTsKKyAgICAvLyAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGluZGV4KSwgaW5kZXhSZWcpOworICAgIC8vICAg
ICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChiYXNlUmVn
LCBpbmRleFJlZywgc2NhbGUsIG9mZnNldCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAg
ICAvLyAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAvLyAgICAgaml0LnJldCgp
OworICAgIC8vIH0pOworCisgICAgLy8gaW50cHRyX3QgY29tcHV0ZWRCYXNlSW5kZXhBZGRyID0g
aW52b2tlPGludHB0cl90PihiYXNlSW5kZXgpOworCisgICAgLy8gcHJpbnRmKCJiYXNlSW5kZXhB
ZGRyOiAlbGRcbiIsIGJhc2VJbmRleEFkZHIpOworICAgIC8vIHByaW50ZigiY29tcHV0ZWRCYXNl
SW5kZXhBZGRyOiAlbGRcbiIsIGNvbXB1dGVkQmFzZUluZGV4QWRkcik7Cit9CisKIHZvaWQgdGVz
dE11bHRpcGx5U2lnbkV4dGVuZDMyKCkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKQEAgLTQyMjAsNiArNDI3MCw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZp
bHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogI2VuZGlmCiAKICNpZiBD
UFUoQVJNNjQpCisgICAgUlVOKHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKSk7CisK
ICAgICBSVU4odGVzdExvYWRTdG9yZVBhaXI2NEludDY0KCkpOwogICAgIFJVTih0ZXN0TG9hZFN0
b3JlUGFpcjY0RG91YmxlKCkpOwogICAgIFJVTih0ZXN0TXVsdGlwbHlTaWduRXh0ZW5kMzIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDhmYzFhZmMy
YTUzOTFmNDU2NWMzZDNkOThmN2EwZjc2NDgzNjIzZGEuLjBkZmY5MzdmYTFmNDYxN2VkMzlkYjJk
ODZjZDFkNWRjNGRkNjBmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCkBAIC01NDcsOSArNTQ3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gc2NhbGUgPSBzY2FsZUZvclNobChpbmRleCwgb2Zmc2V0LCB3
aWR0aCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzY2FsZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEFyZygpOwotICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhpbmRl
eC0+Y2hpbGQoMCkpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKGJhc2UpKQorICAgICAgICAgICAgICAg
IGluZGV4ID0gaW5kZXgtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5j
b250YWlucyhpbmRleCkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbmRleCh0
bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNldCk7CisjaWYgQ1BV
KEFSTTY0KQorICAgICAgICAgICAgICAgIGlmIChpbmRleC0+b3Bjb2RlKCkgPT0gWkV4dDMyICYm
ICFtX2xvY2tlZC5jb250YWlucyhpbmRleC0+Y2hpbGQoMCkpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gQXJnOjppbmRleCh0bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQoMCkpLCAqc2Nh
bGUsIG9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6OlpFeHQpOworI2VuZGlmCisgICAgICAgICAgICAg
ICAgcmV0dXJuIEFyZzo6aW5kZXgodG1wKGJhc2UpLCB0bXAoaW5kZXgpLCAqc2NhbGUsIG9mZnNl
dCk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBpZiAoQXJnIHJlc3VsdCA9IHRyeUlu
ZGV4KGxlZnQsIHJpZ2h0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCmluZGV4
IGNjZWY0NTY4ODAzY2UyNTcyMTMwZTNiZWI3NmMxMGRlZWI4YTcyNzkuLmNjNTExM2NjYzE1NmRm
ZDkyMmFkOWIyZjhiODZlZWU2MGJmMmZhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuaApAQCAtNjI5LDcgKzYyOSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KLSAg
ICBzdGF0aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJhc2UsIEFpcjo6VG1wIGluZGV4LCB1bnNpZ25l
ZCBzY2FsZSwgSW50IG9mZnNldCkKKyAgICBzdGF0aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJhc2Us
IEFpcjo6VG1wIGluZGV4LCB1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCwgTWFjcm9Bc3NlbWJs
ZXI6OkV4dGVuZCBleHRlbmQgPSBNYWNyb0Fzc2VtYmxlcjo6T29wcykKICAgICB7CiAgICAgICAg
IEFTU0VSVChiYXNlLmlzR1AoKSk7CiAgICAgICAgIEFTU0VSVChpbmRleC5pc0dQKCkpOwpAQCAt
NjQwLDYgKzY0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1faW5kZXggPSBpbmRleDsK
ICAgICAgICAgcmVzdWx0Lm1fc2NhbGUgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihzY2FsZSk7CiAg
ICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG9mZnNldDsKKyAgICAgICAgcmVzdWx0Lm1fZXh0ZW5k
ID0gZXh0ZW5kOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTM3OSw3ICsx
MzgwLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNJbmRleCgpKTsKICAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCiAgICAgICAgICAgICBtX2Jhc2UuZ3ByKCks
IG1faW5kZXguZ3ByKCksIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTY2FsZT4obG9nU2Nh
bGUoKSksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4obV9vZmZz
ZXQpKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihtX29mZnNl
dCksIG1fZXh0ZW5kKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENv
bmRpdGlvbiBhc1JlbGF0aW9uYWxDb25kaXRpb24oKSBjb25zdApAQCAtMTQ4Nyw2ICsxNDg4LDcg
QEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fc2NhbGUgeyAxIH07CiAgICAgQWlyOjpUbXAgbV9i
YXNlOwogICAgIEFpcjo6VG1wIG1faW5kZXg7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkV4dGVuZCBt
X2V4dGVuZCA9IE1hY3JvQXNzZW1ibGVyOjpFeHRlbmQ6Ok9vcHM7CiB9OwogCiBzdHJ1Y3QgQXJn
SGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggOTg0OGY2M2U4NjlhZjJiM2Zi
NTZjNWViMDRhZmUwYmIzNzk3YjAwYy4uZDdjMjE2OWFjMDc3NmVmMTI1MDA3M2I4ZjQxMTMwYzAy
M2VjYmJiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtODI2LDYgKzgyNiw4IEBA
IHZvaWQgdGVzdE11bFRyZWVBcmczMihpbnQzMl90KTsKIHZvaWQgdGVzdEFyZyhpbnQgYXJndW1l
bnQpOwogdm9pZCB0ZXN0UmV0dXJuQ29uc3Q2NChpbnQ2NF90IHZhbHVlKTsKIHZvaWQgdGVzdFJl
dHVyblZvaWQoKTsKK3ZvaWQgdGVzdExvYWRaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCk7Cit2b2lk
IHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKTsKIHZvaWQgdGVzdEFkZEFyZyhpbnQp
Owogdm9pZCB0ZXN0QWRkQXJncyhpbnQsIGludCk7CiB2b2lkIHRlc3RBZGRBcmdJbW0oaW50LCBp
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggMTcxYjgzNzgxMzI1
N2YxZDNlYzA2MmU5ZjY4NzkxZWI3YTJkMjBiNS4uYmQxNjQ3YTIwYzE0OGVkZDI4ZGVmNGZlMjk0
NDQ3YzlkYWM4NTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
M18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCkBAIC0y
OTcsNiArMjk3LDE1OCBAQCB2b2lkIHRlc3RSZXR1cm5Wb2lkKCkKICAgICBjb21waWxlQW5kUnVu
PHZvaWQ+KHByb2MpOwogfQogCit2b2lkIHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4QWRkcmVzcygp
Cit7CisgICAgaWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIHRlc3QzMiA9IFsmXSAodWludDMyX3QgaSwgaW50MzJfdCBudW0s
IGludDMyX3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBiYXNlID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7CisgICAgICAgIFZh
bHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCAKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2NCwgc2Nh
bGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcykpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpICYm
IGFtb3VudCA9PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipsZHIuKnV4
dHcjMi4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXgu
Y19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50cHRyX3QgYWRkciA9IGJpdHdp
c2VfY2FzdDxpbnRwdHJfdD4oJm51bSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90
PigqY29kZSwgYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMSkgPDwgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGFtb3VudCkpICogaSwgaSksIG51bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0
byBpIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91bnQg
PCAxMDsgKythbW91bnQpCisgICAgICAgICAgICAgICAgdGVzdDMyKGkudmFsdWUsIG51bS52YWx1
ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gdGVzdDY0ID0gWyZdICh1
aW50MzJfdCBpLCBpbnQ2NF90IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisK
KyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBp
bmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVl
KiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigp
LCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNz
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGws
IE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigp
LCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDMpIHsKKyAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIHJlZ2V4KCIuKmxkci4qdXh0dyMzLioiKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAg
ICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVtKTsKKyAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0
cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSkgKiBpLCBpKSwgbnVtKTsK
KyAgICB9OworCisgICAgZm9yIChhdXRvIGkgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvIG51bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQz
Ml90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0
ZXN0NjQoaS52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIGlmIChPcHRp
b25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byB0ZXN0MzIgPSBbJl0gKHVpbnQzMl90IGksIGludDMyX3QgbnVtLCBpbnQzMl90IGFtb3VudCkg
eworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKTsKKyAgICAgICAgVmFsdWUqIGJhc2Ug
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAg
VmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2UsIAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBz
Y2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3Rv
cmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpICYmIGFtb3VudCA9
PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdHIuKnV4dHcjMi4qIik7
CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwg
dHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50MzJfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAg
ICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAgICAg
ICAgaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90Pigx
KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSkgKiBpLCBpKTsKKyAgICAgICAgQ0hF
Q0tfRVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGkgOiBpbnQzMk9wZXJh
bmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkK
KyAgICAgICAgICAgICAgICB0ZXN0MzIoaS52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAg
ICAgICB9CisgICAgfQorCisgICAgYXV0byB0ZXN0NjQgPSBbJl0gKHVpbnQzMl90IGksIGludDY0
X3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSog
dmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVt
KTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVl
KiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZh
bHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdp
bigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRy
ZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
aGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFs
dWUpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBp
ZiAoaXNBUk02NCgpICYmIGFtb3VudCA9PSAzKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBy
ZWdleCgiLipzdHIuKnV4dHcjMy4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50NjRf
dCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KCZzbG90KTsKKyAgICAgICAgaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhZGRyIC0g
KHN0YXRpY19jYXN0PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50
KSkgKiBpLCBpKTsKKyAgICAgICAgQ0hFQ0tfRVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAg
Zm9yIChhdXRvIGkgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6
IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7
IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0NjQoaS52YWx1ZSwg
bnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIHRlc3RBZGRB
cmcoaW50IGEpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01OTQ0LDYgKzYwOTYsOSBAQCB2
b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRh
c2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU5fQklOQVJZKHRlc3RCaXRYb3JUcmVlQXJnSW1t
LCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RC
aXRBbmRUcmVlQXJnMzIsIGludDMyT3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RCaXRP
clRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0TG9hZFplcm9FeHRl
bmRJbmRleEFkZHJlc3MoKSk7CisgICAgUlVOKHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJl
c3MoKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433651</attachid>
            <date>2021-07-15 20:40:49 -0700</date>
            <delta_ts>2021-07-15 22:04:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210715224048.patch</filename>
            <type>text/plain</type>
            <size>22388</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWM1ZDdjMDE3ZTdhNmU0OTNkMTJhM2NkY2Y2ZTZlOTFmNWFiNWM2Li4zNWM4Nzg2NGVlYTk5YWQ3
NjRlNmFhNWJhZWU2NjExZDA4ZjRmMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0xNSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEV4dGVuZFR5cGUgdG8gQWlyOjpBcmcgSW5kZXggdG8gZnVsbHkg
dXRpbGl6ZSBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIG1lbW9yeSBpbnN0cnVjdGlvbiBmb3IgQVJN
NjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBw
YXR0ZXJuIHJlY29nbml6YXRpb24gb2YgYWRkcmVzcyBjb21wdXRhdGlvbiBpbiB0aGUgaW5zdHJ1
Y3Rpb25zLCBlLmcuLCBMb2FkIAorICAgICAgICBSZWdpc3RlciAoTERSKSBhbmQgU3RvcmUgUmVn
aXN0ZXIgKFNUUiksIGNhbiBiZW5lZml0IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3Rvci4gCisgICAg
ICAgIFRoZW4sIHRoZSBBaXIgb3BlcmFuZCBCYXNlSW5kZXggY29udGFpbmluZyBiYXNlLCBpbmRl
eCwgYW5kIHNjYWxlIGlzIGludHJvZHVjZWQgCisgICAgICAgIHRvIEFpciBvcGNvZGUuIEhvd2V2
ZXIsIHRoZSA8ZXh0ZW5kPiBvcHRpb24gb2YgaW5kZXggYWRkcmVzcyBpcyBub3QgZnVsbHkgbGV2
ZXJhZ2VkIAorICAgICAgICBpbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24uIAorCisgICAg
ICAgIFRvIGZpbGwgdGhhdCBnYXAsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBtZW1iZXIsIEV4dGVu
ZFR5cGUsIHRvIHRoZSBjdXJyZW50IAorICAgICAgICBkZXNpZ24gb2YgQmFzZUluZGV4IHRvIHRy
aWdnZXIgemVybyBleHRlbnNpb24gb24gdGhlIEluZGV4IGFkZHJlc3MuIEFuZCB0aGlzIGlzIAor
ICAgICAgICBlbmFibGVkIGZvciBTdG9yZS9Mb2FkIHdpdGggdmFsaWQgaW5kZXggYWRkcmVzcyBh
bmQgc2hpZnQgYW1vdW50LgorCisgICAgICAgIExvYWQgUmVnaXN0ZXIgKExEUikgY2FsY3VsYXRl
cyBhbiBhZGRyZXNzIGZyb20gYSBiYXNlIHJlZ2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAg
b2Zmc2V0IHJlZ2lzdGVyIHZhbHVlLCBsb2FkcyBhIHdvcmQgZnJvbSBtZW1vcnksIGFuZCB3cml0
ZXMgaXQgdG8gYSByZWdpc3Rlci4gCisgICAgICAgIFRoZSBvZmZzZXQgcmVnaXN0ZXIgdmFsdWUg
Y2FuIG9wdGlvbmFsbHkgYmUgc2hpZnRlZCBhbmQgZXh0ZW5kZWQuCisKKyAgICAgICAgR2l2ZW4g
QjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAx
ID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBzY2Fs
ZQorICAgICAgICBJbnQgQDMgPSBTaGwoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQoQDAs
IEAzKQorICAgICAgICBJbnQgQDUgPSBMb2FkKEA0LCBDb250cm9sRGVwZW5kZW50fFJlYWRzOlRv
cCkKKyAgICAgICAgVm9pZEA2ID0gUmV0dXJuKEA1LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBP
bGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlICAgICAgICAgICAgICAgJXgxLCAleDEsIEAx
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlS
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIFN0b3JlIFJlZ2lzdGVyIChTVFIp
IGNhbGN1bGF0ZXMgYW4gYWRkcmVzcyBmcm9tIGEgYmFzZSByZWdpc3RlciB2YWx1ZSBhbmQgYW4g
CisgICAgICAgIG9mZnNldCByZWdpc3RlciB2YWx1ZSwgYW5kIHN0b3JlcyBhIDMyLWJpdCB3b3Jk
IG9yIGEgNjQtYml0IGRvdWJsZXdvcmQgdG8gdGhlIAorICAgICAgICBjYWxjdWxhdGVkIGFkZHJl
c3MsIGZyb20gYSByZWdpc3Rlci4KKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50
IEAwID0gdmFsdWUKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJ
bnQgQDIgPSBaRXh0MzIoVHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkKKyAgICAgICAgSW50IEAzID0g
c2NhbGUKKyAgICAgICAgSW50IEA0ID0gU2hsKEAyLCBAMykKKyAgICAgICAgSW50IEA1ID0gQWRk
KEAxLCBANCkKKyAgICAgICAgVm9pZEA2ID0gU3RvcmUoQDAsIEA1LCBDb250cm9sRGVwZW5kZW50
fFdyaXRlczpUb3ApCisgICAgICAgIFZvaWRANyA9IFJldHVybihAMCwgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICV4MSwgICAgICAg
ICAgICAgICAleDEsIEAyCisgICAgICAgIFN0b3JlMzIgICV4enIsICgleDAsJXgxLDJec2NhbGUp
LCBANgorICAgICAgICBNb3ZlICAgICAgICQwLCAgICAgICAgICAgICAgICV4MCwgQDcKKyAgICAg
ICAgUmV0MzIgICAgICV4MCwgICAgICAgICAgICAgICAgICAgIEA3CisKKyAgICAgICAgLy8gTmV3
IG9wdGltaXplZCBBSVIKKyAgICAgICAgU3RvcmUzMiAgJXh6ciwgKCV4MCwleDEsMl5zY2FsZSks
IEA2CisgICAgICAgIE1vdmUgICAgICAgJDAsICAgICAgICAgICAgICAgJXgwLCBANworICAgICAg
ICBSZXQzMiAgICAgJXgwLCAgICAgICAgICAgICAgICAgICAgQDcKKworICAgICAgICAqIGFzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleDo6QmFzZUluZGV4KToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjppbmRleEV4dGVuZFR5cGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmUzMik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWly
LmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OkFyZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmFzQmFzZUluZGV4IGNv
bnN0KToKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6
CisgICAgICAgICh0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MpOgorICAgICAgICAodGVz
dFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisK
IDIwMjEtMDctMTUgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgbWlkLUp1bHkgMjAyMSBlZGl0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCmluZGV4IGRjNjgzZjFlYWZkNzczYTZjMjAyMGQ1NDNkYTVkZmUzNjIz
ZTRjZDUuLjkxY2Q1N2FiZjhiMGNjMDg5ZWMzOGYwYTEwYmQyZGQ5OGEyMDgxOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC0xMjQsNyArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgVGltZXNFaWdo
dCwKICAgICAgICAgU2NhbGVQdHIgPSBpc0FkZHJlc3M2NEJpdCgpID8gVGltZXNFaWdodCA6IFRp
bWVzRm91ciwKICAgICB9OwotICAgIAorCisgICAgZW51bSBFeHRlbmQgeworICAgICAgICBaRXh0
LAorICAgICAgICBTRXh0LAorICAgICAgICBPb3BzCisgICAgfTsKKwogICAgIHN0cnVjdCBCYXNl
SW5kZXg7CiAgICAgCiAgICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBwZWRSZWdpc3RlcihS
ZWdpc3RlcklEIG9yaWdpbmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBA
IC0yMTAsMTEgKzIxNiwxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBEZXNjcmliZXMgYSBj
b21wbGV4IGFkZHJlc3NpbmcgbW9kZS4KICAgICBzdHJ1Y3QgQmFzZUluZGV4IHsKLSAgICAgICAg
QmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUs
IGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCwgRXh0ZW5k
IGV4dGVuZCA9IE9vcHMpCiAgICAgICAgICAgICA6IGJhc2UoYmFzZSkKICAgICAgICAgICAgICwg
aW5kZXgoaW5kZXgpCiAgICAgICAgICAgICAsIHNjYWxlKHNjYWxlKQogICAgICAgICAgICAgLCBv
ZmZzZXQob2Zmc2V0KQorICAgICAgICAgICAgLCBleHRlbmQoZXh0ZW5kKQogICAgICAgICB7CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC0yMjIsNiArMjI5LDcgQEAgcHVibGljOgogICAgICAgICBS
ZWdpc3RlcklEIGluZGV4OwogICAgICAgICBTY2FsZSBzY2FsZTsKICAgICAgICAgaW50MzJfdCBv
ZmZzZXQ7CisgICAgICAgIEV4dGVuZCBleHRlbmQ7CiAgICAgICAgIAogICAgICAgICBCYXNlSW5k
ZXggd2l0aE9mZnNldChpbnQzMl90IGFkZGl0aW9uYWxPZmZzZXQpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKaW5kZXggNGE5MGU1YTFmZGU0OGNjZmM0N2E3Mjc0OWU1ODVmN2QwMjRlMWNjNS4uMmZlMTc5
YTBjYWZiZmMzZWZjNGY5OTQ0ODEyMjUxNjQyYmFkODJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTEzNjcs
NiArMTM2NywxNSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gTWVtb3J5IGFjY2VzcyBvcGVy
YXRpb25zOgorICAgIEFzc2VtYmxlcjo6RXh0ZW5kVHlwZSBpbmRleEV4dGVuZFR5cGUoQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBzd2l0Y2ggKGFkZHJlc3MuZXh0ZW5kKSB7Cisg
ICAgICAgIGNhc2UgWkV4dDoKKyAgICAgICAgICAgIHJldHVybiBBc3NlbWJsZXI6OlVYVFc7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQXNzZW1ibGVyOjpVWFRYOworICAg
ICAgICB9CisgICAgfQogCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xMzgwLDEyICsxMzg5LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGxvYWQ2NChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRk
cmVzcy5zY2FsZSA9PSAzKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQz
MlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0Piht
ZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNz
ZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwg
aW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3Nl
bWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAg
ICAgfQogCkBAIC0xNDc5LDEyICsxNDg4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQzMihC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFh
ZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkg
ewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAg
ICAvLyBwcmludGYoIi0tLS0tLS0gaGVyZSAhISBsb2FkMzJcbiIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4
RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRk
cmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1v
cnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBt
ZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNz
KSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRk
cmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTY3NCwxMiArMTY4
NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZTY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5k
ZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRy
ZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6
VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNy
YywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyks
IGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2Fj
aGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fz
c2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1w
UmVnaXN0ZXIpOwogICAgIH0KICAgICAKQEAgLTE3ODEsMTIgKzE3OTEsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAg
ewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRy
ZXNzLnNjYWxlID09IDIpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2Nh
bGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRv
UHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1v
cnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1i
bGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0Piht
ZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5k
ZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKaW5kZXgg
NzFjZDIzOTk4Y2U3YTI0MTIwMTk2ZDBmMDQ1NjI0NmQxNGQ5MThhNy4uNDVhODJiNjRhNWFmYTgy
MzQyYzYyOTVhYjNkNzFhYTM1NmI3MzI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAKQEAgLTkwNCw2ICs5MDQsNTYgQEAgdm9pZCB0ZXN0TXVsMzJX
aXRoSW1tZWRpYXRlcygpCiB9CiAKICNpZiBDUFUoQVJNNjQpCit2b2lkIHRlc3RTdG9yZVplcm9F
eHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIC8vIGludDMyX3Qgc2xvdCA9IDEwMDA7CisKKyAg
ICAvLyBpbnRwdHJfdCBiYXNlSW5kZXhBZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90Pigmc2xv
dCk7CisgICAgLy8gaW50cHRyX3QgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KDEwKTsg
Ly8gMzItYml0IGFkZHJlc3MKKyAgICAvLyBpbnRwdHJfdCBiYXNlID0gYmFzZUluZGV4QWRkciAt
IChpbmRleCA8PCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KDJMKSk7IC8vIDY0LWJpdCBhZGRyZXNz
CisgICAgLy8gaW5kZXggKz0gYml0d2lzZV9jYXN0PGludHB0cl90PihzdGF0aWNfY2FzdDxpbnQ2
NF90PigweGZmZmZmZmZmMDAwMDAwMDApKTsKKworICAgIC8vIGludDMyX3Qgb2Zmc2V0ID0gMDsK
KyAgICAvLyBNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kIGV4dGVuZCA9IE1hY3JvQXNzZW1ibGVyOjpF
eHRlbmQ6OlpFeHQ7CisgICAgLy8gQ0NhbGxIZWxwZXJzOjpTY2FsZSBzY2FsZSA9IENDYWxsSGVs
cGVyczo6VGltZXNGb3VyOworCisgICAgLy8gYXV0byBzdG9yZSA9IGNvbXBpbGUoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCkgeworICAgIC8vICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwor
CisgICAgLy8gICAgIEdQUlJlZyBiYXNlUmVnID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOworICAg
IC8vICAgICBHUFJSZWcgaW5kZXhSZWcgPSBHUFJJbmZvOjphcmd1bWVudEdQUjI7CisKKyAgICAv
LyAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoYmFzZSksIGJhc2VSZWcp
OworICAgIC8vICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChpbmRleCks
IGluZGV4UmVnKTsKKyAgICAvLyAgICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkJhc2VJbmRl
eChiYXNlUmVnLCBpbmRleFJlZywgc2NhbGUsIG9mZnNldCwgZXh0ZW5kKSwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIpOworCisgICAgLy8gICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgLy8gICAgIGppdC5yZXQoKTsKKyAgICAvLyB9KTsKKworICAgIC8vIGludDMyX3QgcmVzdWx0
ID0gaW52b2tlPGludDMyX3Q+KHN0b3JlKTsKKyAgICAvLyBwcmludGYoInNsb3Q6ICVkXG4iLCBz
bG90KTsKKyAgICAvLyBwcmludGYoInJlc3VsdDogJWRcbiIsIHJlc3VsdCk7CisKKyAgICAvLyBh
dXRvIGJhc2VJbmRleCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgIC8v
ICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworCisgICAgLy8gICAgIEdQUlJlZyBiYXNl
UmVnID0gR1BSSW5mbzo6YXJndW1lbnRHUFI0OworICAgIC8vICAgICBHUFJSZWcgaW5kZXhSZWcg
PSBHUFJJbmZvOjphcmd1bWVudEdQUjU7CisKKyAgICAvLyAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGJhc2UpLCBiYXNlUmVnKTsKKyAgICAvLyAgICAgaml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGluZGV4KSwgaW5kZXhSZWcpOworICAgIC8vICAg
ICBqaXQuZ2V0RWZmZWN0aXZlQWRkcmVzcyhDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChiYXNlUmVn
LCBpbmRleFJlZywgc2NhbGUsIG9mZnNldCksIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAg
ICAvLyAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAvLyAgICAgaml0LnJldCgp
OworICAgIC8vIH0pOworCisgICAgLy8gaW50cHRyX3QgY29tcHV0ZWRCYXNlSW5kZXhBZGRyID0g
aW52b2tlPGludHB0cl90PihiYXNlSW5kZXgpOworCisgICAgLy8gcHJpbnRmKCJiYXNlSW5kZXhB
ZGRyOiAlbGRcbiIsIGJhc2VJbmRleEFkZHIpOworICAgIC8vIHByaW50ZigiY29tcHV0ZWRCYXNl
SW5kZXhBZGRyOiAlbGRcbiIsIGNvbXB1dGVkQmFzZUluZGV4QWRkcik7Cit9CisKIHZvaWQgdGVz
dE11bHRpcGx5U2lnbkV4dGVuZDMyKCkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKQEAgLTQyMjAsNiArNDI3MCw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZp
bHRlcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogI2VuZGlmCiAKICNpZiBD
UFUoQVJNNjQpCisgICAgUlVOKHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKSk7CisK
ICAgICBSVU4odGVzdExvYWRTdG9yZVBhaXI2NEludDY0KCkpOwogICAgIFJVTih0ZXN0TG9hZFN0
b3JlUGFpcjY0RG91YmxlKCkpOwogICAgIFJVTih0ZXN0TXVsdGlwbHlTaWduRXh0ZW5kMzIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDhmYzFhZmMy
YTUzOTFmNDU2NWMzZDNkOThmN2EwZjc2NDgzNjIzZGEuLjRhYzZiNTcyNzZiMTEzMWFmYzIxZDky
YmUxNGNiZGI5MmJhNGJmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCkBAIC01NDcsOSArNTQ3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gc2NhbGUgPSBzY2FsZUZvclNobChpbmRleCwgb2Zmc2V0LCB3
aWR0aCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzY2FsZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEFyZygpOwotICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhpbmRl
eC0+Y2hpbGQoMCkpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKGJhc2UpKQorICAgICAgICAgICAgICAg
IGluZGV4ID0gaW5kZXgtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5j
b250YWlucyhpbmRleCkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbmRleCh0
bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNldCk7CisjaWYgQ1BV
KEFSTTY0KQorICAgICAgICAgICAgICAgIC8vIGlmIChpbmRleC0+b3Bjb2RlKCkgPT0gWkV4dDMy
ICYmICFtX2xvY2tlZC5jb250YWlucyhpbmRleC0+Y2hpbGQoMCkpKQorICAgICAgICAgICAgICAg
IC8vICAgICByZXR1cm4gQXJnOjppbmRleCh0bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQoMCkp
LCAqc2NhbGUsIG9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6OlpFeHQpOworI2VuZGlmCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEFyZzo6aW5kZXgodG1wKGJhc2UpLCB0bXAoaW5kZXgpLCAqc2NhbGUs
IG9mZnNldCk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBpZiAoQXJnIHJlc3VsdCA9
IHRyeUluZGV4KGxlZnQsIHJpZ2h0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5o
CmluZGV4IGNjZWY0NTY4ODAzY2UyNTcyMTMwZTNiZWI3NmMxMGRlZWI4YTcyNzkuLmNjNTExM2Nj
YzE1NmRmZDkyMmFkOWIyZjhiODZlZWU2MGJmMmZhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBcmcuaApAQCAtNjI5LDcgKzYyOSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50
Pj4KLSAgICBzdGF0aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJhc2UsIEFpcjo6VG1wIGluZGV4LCB1
bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCkKKyAgICBzdGF0aWMgQXJnIGluZGV4KEFpcjo6VG1w
IGJhc2UsIEFpcjo6VG1wIGluZGV4LCB1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCwgTWFjcm9B
c3NlbWJsZXI6OkV4dGVuZCBleHRlbmQgPSBNYWNyb0Fzc2VtYmxlcjo6T29wcykKICAgICB7CiAg
ICAgICAgIEFTU0VSVChiYXNlLmlzR1AoKSk7CiAgICAgICAgIEFTU0VSVChpbmRleC5pc0dQKCkp
OwpAQCAtNjQwLDYgKzY0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1faW5kZXggPSBp
bmRleDsKICAgICAgICAgcmVzdWx0Lm1fc2NhbGUgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihzY2Fs
ZSk7CiAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG9mZnNldDsKKyAgICAgICAgcmVzdWx0Lm1f
ZXh0ZW5kID0gZXh0ZW5kOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTM3
OSw3ICsxMzgwLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNJbmRleCgpKTsKICAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCiAgICAgICAgICAgICBtX2Jhc2Uu
Z3ByKCksIG1faW5kZXguZ3ByKCksIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTY2FsZT4o
bG9nU2NhbGUoKSksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4o
bV9vZmZzZXQpKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPiht
X29mZnNldCksIG1fZXh0ZW5kKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbiBhc1JlbGF0aW9uYWxDb25kaXRpb24oKSBjb25zdApAQCAtMTQ4Nyw2ICsx
NDg4LDcgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fc2NhbGUgeyAxIH07CiAgICAgQWlyOjpU
bXAgbV9iYXNlOwogICAgIEFpcjo6VG1wIG1faW5kZXg7CisgICAgTWFjcm9Bc3NlbWJsZXI6OkV4
dGVuZCBtX2V4dGVuZCA9IE1hY3JvQXNzZW1ibGVyOjpFeHRlbmQ6Ok9vcHM7CiB9OwogCiBzdHJ1
Y3QgQXJnSGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggOTg0OGY2M2U4Njlh
ZjJiM2ZiNTZjNWViMDRhZmUwYmIzNzk3YjAwYy4uZDdjMjE2OWFjMDc3NmVmMTI1MDA3M2I4ZjQx
MTMwYzAyM2VjYmJiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
My5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtODI2LDYgKzgy
Niw4IEBAIHZvaWQgdGVzdE11bFRyZWVBcmczMihpbnQzMl90KTsKIHZvaWQgdGVzdEFyZyhpbnQg
YXJndW1lbnQpOwogdm9pZCB0ZXN0UmV0dXJuQ29uc3Q2NChpbnQ2NF90IHZhbHVlKTsKIHZvaWQg
dGVzdFJldHVyblZvaWQoKTsKK3ZvaWQgdGVzdExvYWRaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCk7
Cit2b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKTsKIHZvaWQgdGVzdEFkZEFy
ZyhpbnQpOwogdm9pZCB0ZXN0QWRkQXJncyhpbnQsIGludCk7CiB2b2lkIHRlc3RBZGRBcmdJbW0o
aW50LCBpbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggMTcxYjgz
NzgxMzI1N2YxZDNlYzA2MmU5ZjY4NzkxZWI3YTJkMjBiNS4uYmQxNjQ3YTIwYzE0OGVkZDI4ZGVm
NGZlMjk0NDQ3YzlkYWM4NTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3Bw
CkBAIC0yOTcsNiArMjk3LDE1OCBAQCB2b2lkIHRlc3RSZXR1cm5Wb2lkKCkKICAgICBjb21waWxl
QW5kUnVuPHZvaWQ+KHByb2MpOwogfQogCit2b2lkIHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4QWRk
cmVzcygpCit7CisgICAgaWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIHRlc3QzMiA9IFsmXSAodWludDMyX3QgaSwgaW50MzJf
dCBudW0sIGludDMyX3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBi
YXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5kZXgzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogaW5kZXg2NCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7CisgICAg
ICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2
NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcykpOworCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02
NCgpICYmIGFtb3VudCA9PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLips
ZHIuKnV4dHcjMi4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
cmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50cHRyX3QgYWRkciA9
IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJm51bSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQzMl90PigqY29kZSwgYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMSkgPDwgc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGFtb3VudCkpICogaSwgaSksIG51bSk7CisgICAgfTsKKworICAgIGZv
ciAoYXV0byBpIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBp
bnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBh
bW91bnQgPCAxMDsgKythbW91bnQpCisgICAgICAgICAgICAgICAgdGVzdDMyKGkudmFsdWUsIG51
bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gdGVzdDY0ID0g
WyZdICh1aW50MzJfdCBpLCBpbnQ2NF90IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZh
bHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAg
IFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9y
aWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBh
ZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9y
aWdpbigpLCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDMpIHsKKyAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKmxkci4qdXh0dyMzLioiKTsKKyAgICAgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQor
ICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVtKTsKKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0
PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSkgKiBpLCBpKSwg
bnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGkgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgZm9yIChhdXRvIG51bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9y
IChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAg
ICAgICB0ZXN0NjQoaS52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIGlm
IChPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byB0ZXN0MzIgPSBbJl0gKHVpbnQzMl90IGksIGludDMyX3QgbnVtLCBpbnQzMl90IGFt
b3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKTsKKyAgICAgICAgVmFsdWUq
IGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAg
ICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2UsIAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRl
eDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJv
YywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgICAgIGF1
dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpICYmIGFt
b3VudCA9PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdHIuKnV4dHcj
Mi4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19z
dHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50MzJfdCBzbG90ID0gMTIzNDEyMzQ7
CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsK
KyAgICAgICAgaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0
cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSkgKiBpLCBpKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGkgOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDMyT3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ft
b3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0MzIoaS52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQp
OworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byB0ZXN0NjQgPSBbJl0gKHVpbnQzMl90IGks
IGludDY0X3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBW
YWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgbnVtKTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAg
IFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAg
ICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIs
IE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVl
KiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFk
ZCwgT3JpZ2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVz
cyk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgdmFsdWUpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAg
ICAgICBpZiAoaXNBUk02NCgpICYmIGFtb3VudCA9PSAzKSB7CisgICAgICAgICAgICBzdGQ6OnN0
cmluZyByZWdleCgiLipzdHIuKnV4dHcjMy4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAg
aW50NjRfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAgICAgICAgaW52b2tlPGludDY0X3Q+KCpjb2RlLCBh
ZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
YW1vdW50KSkgKiBpLCBpKTsKKyAgICAgICAgQ0hFQ0tfRVEoc2xvdCwgbnVtKTsKKyAgICB9Owor
CisgICAgZm9yIChhdXRvIGkgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
IG51bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3Vu
dCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0NjQoaS52
YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIHRl
c3RBZGRBcmcoaW50IGEpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01OTQ0LDYgKzYwOTYs
OSBAQCB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNo
YXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU5fQklOQVJZKHRlc3RCaXRYb3JUcmVl
QXJnSW1tLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZ
KHRlc3RCaXRBbmRUcmVlQXJnMzIsIGludDMyT3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRl
c3RCaXRPclRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0TG9hZFpl
cm9FeHRlbmRJbmRleEFkZHJlc3MoKSk7CisgICAgUlVOKHRlc3RTdG9yZVplcm9FeHRlbmRJbmRl
eEFkZHJlc3MoKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433655</attachid>
            <date>2021-07-15 22:04:42 -0700</date>
            <delta_ts>2021-07-16 02:52:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210716000441.patch</filename>
            <type>text/plain</type>
            <size>28265</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWM1ZDdjMDE3ZTdhNmU0OTNkMTJhM2NkY2Y2ZTZlOTFmNWFiNWM2Li4zNWM4Nzg2NGVlYTk5YWQ3
NjRlNmFhNWJhZWU2NjExZDA4ZjRmMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAyMS0wNy0xNSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEV4dGVuZFR5cGUgdG8gQWlyOjpBcmcgSW5kZXggdG8gZnVsbHkg
dXRpbGl6ZSBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIG1lbW9yeSBpbnN0cnVjdGlvbiBmb3IgQVJN
NjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBw
YXR0ZXJuIHJlY29nbml6YXRpb24gb2YgYWRkcmVzcyBjb21wdXRhdGlvbiBpbiB0aGUgaW5zdHJ1
Y3Rpb25zLCBlLmcuLCBMb2FkIAorICAgICAgICBSZWdpc3RlciAoTERSKSBhbmQgU3RvcmUgUmVn
aXN0ZXIgKFNUUiksIGNhbiBiZW5lZml0IHRoZSBpbnN0cnVjdGlvbiBzZWxlY3Rvci4gCisgICAg
ICAgIFRoZW4sIHRoZSBBaXIgb3BlcmFuZCBCYXNlSW5kZXggY29udGFpbmluZyBiYXNlLCBpbmRl
eCwgYW5kIHNjYWxlIGlzIGludHJvZHVjZWQgCisgICAgICAgIHRvIEFpciBvcGNvZGUuIEhvd2V2
ZXIsIHRoZSA8ZXh0ZW5kPiBvcHRpb24gb2YgaW5kZXggYWRkcmVzcyBpcyBub3QgZnVsbHkgbGV2
ZXJhZ2VkIAorICAgICAgICBpbiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24uIAorCisgICAg
ICAgIFRvIGZpbGwgdGhhdCBnYXAsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBtZW1iZXIsIEV4dGVu
ZFR5cGUsIHRvIHRoZSBjdXJyZW50IAorICAgICAgICBkZXNpZ24gb2YgQmFzZUluZGV4IHRvIHRy
aWdnZXIgemVybyBleHRlbnNpb24gb24gdGhlIEluZGV4IGFkZHJlc3MuIEFuZCB0aGlzIGlzIAor
ICAgICAgICBlbmFibGVkIGZvciBTdG9yZS9Mb2FkIHdpdGggdmFsaWQgaW5kZXggYWRkcmVzcyBh
bmQgc2hpZnQgYW1vdW50LgorCisgICAgICAgIExvYWQgUmVnaXN0ZXIgKExEUikgY2FsY3VsYXRl
cyBhbiBhZGRyZXNzIGZyb20gYSBiYXNlIHJlZ2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAg
b2Zmc2V0IHJlZ2lzdGVyIHZhbHVlLCBsb2FkcyBhIHdvcmQgZnJvbSBtZW1vcnksIGFuZCB3cml0
ZXMgaXQgdG8gYSByZWdpc3Rlci4gCisgICAgICAgIFRoZSBvZmZzZXQgcmVnaXN0ZXIgdmFsdWUg
Y2FuIG9wdGlvbmFsbHkgYmUgc2hpZnRlZCBhbmQgZXh0ZW5kZWQuCisKKyAgICAgICAgR2l2ZW4g
QjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAx
ID0gWkV4dDMyKFRydW5jKEFyZ3VtZW50UmVnKCV4MSkpKQorICAgICAgICBJbnQgQDIgPSBzY2Fs
ZQorICAgICAgICBJbnQgQDMgPSBTaGwoQDEsIEAyKQorICAgICAgICBJbnQgQDQgPSBBZGQoQDAs
IEAzKQorICAgICAgICBJbnQgQDUgPSBMb2FkKEA0LCBDb250cm9sRGVwZW5kZW50fFJlYWRzOlRv
cCkKKyAgICAgICAgVm9pZEA2ID0gUmV0dXJuKEA1LCBUZXJtaW5hbCkKKworICAgICAgICAvLyBP
bGQgb3B0aW1pemVkIEFJUgorICAgICAgICBNb3ZlICAgICAgICAgICAgICAgJXgxLCAleDEsIEAx
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlS
CisgICAgICAgIE1vdmUgKCV4MCwleDEsMl5zY2FsZSksICV4MCwgQDUKKyAgICAgICAgUmV0ICAg
ICAgICAgICAgICAgICV4MCwgICAgICBANgorCisgICAgICAgIFN0b3JlIFJlZ2lzdGVyIChTVFIp
IGNhbGN1bGF0ZXMgYW4gYWRkcmVzcyBmcm9tIGEgYmFzZSByZWdpc3RlciB2YWx1ZSBhbmQgYW4g
CisgICAgICAgIG9mZnNldCByZWdpc3RlciB2YWx1ZSwgYW5kIHN0b3JlcyBhIDMyLWJpdCB3b3Jk
IG9yIGEgNjQtYml0IGRvdWJsZXdvcmQgdG8gdGhlIAorICAgICAgICBjYWxjdWxhdGVkIGFkZHJl
c3MsIGZyb20gYSByZWdpc3Rlci4KKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAgICAgSW50
IEAwID0gdmFsdWUKKyAgICAgICAgSW50IEAxID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJ
bnQgQDIgPSBaRXh0MzIoVHJ1bmMoQXJndW1lbnRSZWcoJXgxKSkKKyAgICAgICAgSW50IEAzID0g
c2NhbGUKKyAgICAgICAgSW50IEA0ID0gU2hsKEAyLCBAMykKKyAgICAgICAgSW50IEA1ID0gQWRk
KEAxLCBANCkKKyAgICAgICAgVm9pZEA2ID0gU3RvcmUoQDAsIEA1LCBDb250cm9sRGVwZW5kZW50
fFdyaXRlczpUb3ApCisgICAgICAgIFZvaWRANyA9IFJldHVybihAMCwgVGVybWluYWwpCisKKyAg
ICAgICAgLy8gT2xkIG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZTMyICAgICV4MSwgICAgICAg
ICAgICAgICAleDEsIEAyCisgICAgICAgIFN0b3JlMzIgICV4enIsICgleDAsJXgxLDJec2NhbGUp
LCBANgorICAgICAgICBNb3ZlICAgICAgICQwLCAgICAgICAgICAgICAgICV4MCwgQDcKKyAgICAg
ICAgUmV0MzIgICAgICV4MCwgICAgICAgICAgICAgICAgICAgIEA3CisKKyAgICAgICAgLy8gTmV3
IG9wdGltaXplZCBBSVIKKyAgICAgICAgU3RvcmUzMiAgJXh6ciwgKCV4MCwleDEsMl5zY2FsZSks
IEA2CisgICAgICAgIE1vdmUgICAgICAgJDAsICAgICAgICAgICAgICAgJXgwLCBANworICAgICAg
ICBSZXQzMiAgICAgJXgwLCAgICAgICAgICAgICAgICAgICAgQDcKKworICAgICAgICAqIGFzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleDo6QmFzZUluZGV4KToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjppbmRleEV4dGVuZFR5cGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojps
b2FkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmUzMik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWly
LmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OkFyZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmFzQmFzZUluZGV4IGNv
bnN0KToKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBiMy90ZXN0YjNfMi5jcHA6
CisgICAgICAgICh0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MpOgorICAgICAgICAodGVz
dFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisK
IDIwMjEtMDctMTUgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgbWlkLUp1bHkgMjAyMSBlZGl0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCmluZGV4IGRjNjgzZjFlYWZkNzczYTZjMjAyMGQ1NDNkYTVkZmUzNjIz
ZTRjZDUuLmVmNWEzZmE4MGY0NWI0MDMzMjU3MTliNzczMTQwZDI1NjVkODAwYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCkBAIC0xMjQsNyArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgVGltZXNFaWdo
dCwKICAgICAgICAgU2NhbGVQdHIgPSBpc0FkZHJlc3M2NEJpdCgpID8gVGltZXNFaWdodCA6IFRp
bWVzRm91ciwKICAgICB9OwotICAgIAorCisgICAgZW51bSBFeHRlbmQgeworICAgICAgICBaRXh0
MzJ0bzY0LAorICAgICAgICBTRXh0MzJ0bzY0LAorICAgICAgICBOb25lCisgICAgfTsKKwogICAg
IHN0cnVjdCBCYXNlSW5kZXg7CiAgICAgCiAgICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBw
ZWRSZWdpc3RlcihSZWdpc3RlcklEIG9yaWdpbmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVy
SUQgcmlnaHQpCkBAIC0yMTAsMTEgKzIxNiwxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBE
ZXNjcmliZXMgYSBjb21wbGV4IGFkZHJlc3NpbmcgbW9kZS4KICAgICBzdHJ1Y3QgQmFzZUluZGV4
IHsKLSAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
U2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICAgICAgQmFzZUluZGV4KFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0
ID0gMCwgRXh0ZW5kIGV4dGVuZCA9IE5vbmUpCiAgICAgICAgICAgICA6IGJhc2UoYmFzZSkKICAg
ICAgICAgICAgICwgaW5kZXgoaW5kZXgpCiAgICAgICAgICAgICAsIHNjYWxlKHNjYWxlKQogICAg
ICAgICAgICAgLCBvZmZzZXQob2Zmc2V0KQorICAgICAgICAgICAgLCBleHRlbmQoZXh0ZW5kKQog
ICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yMjIsNiArMjI5LDcgQEAgcHVibGlj
OgogICAgICAgICBSZWdpc3RlcklEIGluZGV4OwogICAgICAgICBTY2FsZSBzY2FsZTsKICAgICAg
ICAgaW50MzJfdCBvZmZzZXQ7CisgICAgICAgIEV4dGVuZCBleHRlbmQ7CiAgICAgICAgIAogICAg
ICAgICBCYXNlSW5kZXggd2l0aE9mZnNldChpbnQzMl90IGFkZGl0aW9uYWxPZmZzZXQpCiAgICAg
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKaW5kZXggNGE5MGU1YTFmZGU0OGNjZmM0N2E3Mjc0OWU1ODVmN2QwMjRl
MWNjNS4uYjUxNjdhMzU3NDBjZTgzZDNkYWNmODg3YTM4N2Q4YzBjNDhjMDlmZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKQEAgLTEzNjcsNiArMTM2NywxNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gTWVtb3J5
IGFjY2VzcyBvcGVyYXRpb25zOgorICAgIEFzc2VtYmxlcjo6RXh0ZW5kVHlwZSBpbmRleEV4dGVu
ZFR5cGUoQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBzd2l0Y2ggKGFkZHJlc3Mu
ZXh0ZW5kKSB7CisgICAgICAgIGNhc2UgWkV4dDMydG82NDoKKyAgICAgICAgICAgIHJldHVybiBB
c3NlbWJsZXI6OlVYVFc7CisgICAgICAgIGNhc2UgU0V4dDMydG82NDoKKyAgICAgICAgICAgIHJl
dHVybiBBc3NlbWJsZXI6OlNYVFc7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gQXNzZW1ibGVyOjpVWFRYOworICAgICAgICB9CisgICAgfQogCiAgICAgdm9pZCBsb2FkNjQo
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xMzgw
LDEyICsxMzkxLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQ2NChCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAm
JiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAzKSkgewotICAgICAgICAgICAg
bV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFz
c2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBl
KGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNl
dCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdp
c3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBS
ZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNz
LnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2Us
IG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0xNDc5LDEyICsxNDkwLDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGxvYWQzMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUg
fHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMy
PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRlc3QsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNz
LnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25F
eHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRl
eCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5p
bmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAg
bV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rl
cik7CiAgICAgfQogCkBAIC0xNTI2LDEyICsxNTM3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxv
YWQxNihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
aWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9
PSAxKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyaChkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJoKGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
aW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0z
MihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIs
IG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0
ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFk
ZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyaChkZXN0LCBh
ZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0xNTcwLDEyICsx
NTgxLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoQmFzZUlu
ZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVz
cy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMSkpIHsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcnNoPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5sZHJzaDwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBp
bmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMy
KGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3Rlciwg
bWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJl
c3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3Rl
ciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRk
cmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHJzaDwzMj4oZGVz
dCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTYwMSwx
MiArMTYxMiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkOChCYXNlSW5kZXggYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAh
YWRkcmVzcy5zY2FsZSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyYihkZXN0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJiKGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRy
dXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1w
UmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpV
WFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlU
ZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRl
bmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRy
YihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogICAgIApA
QCAtMTYzNSwxMiArMTY0NiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkOFNpZ25lZEV4dGVu
ZFRvMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmICghYWRkcmVzcy5vZmZzZXQgJiYgIWFkZHJlc3Muc2NhbGUpIHsKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmxkcnNiPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFz
c2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJzYjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5
cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zm
c2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJl
Z2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVt
cFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJl
c3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHJzYjwzMj4oZGVzdCwgYWRkcmVzcy5i
YXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTY3NCwxMiArMTY4NSwxMiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZTY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRk
cmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNj
YWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0
cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJl
c3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2ln
bkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVt
b3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5h
ZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmlu
ZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxl
ci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNz
LmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAg
ICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0
ZXIpOwogICAgIH0KICAgICAKQEAgLTE3ODEsMTIgKzE3OTIsMTIgQEAgcHVibGljOgogICAgIHZv
aWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAg
ICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNj
YWxlID09IDIpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRy
dXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1w
UmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpV
WFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlU
ZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRl
bmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3Ry
PDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAg
LTE4NDgsMTIgKzE4NTksMTIgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklE
IHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zm
c2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDEpKSB7Ci0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5zdHJoKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBB
c3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c3RyaChzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFk
ZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCks
IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdp
c3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNj
YWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyaChzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5
VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAgLTE4NzYsMTIgKzE4ODcsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7
CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgIWFkZHJlc3Muc2NhbGUpIHsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zdHJiKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUo
YWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0
KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAg
ICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJl
Z2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Mu
c2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgYWRkcmVzcy5iYXNlLCBtZW1v
cnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMjE4OSwxMiArMjIwMCwxMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBsb2FkRG91YmxlKEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxl
IHx8IGFkZHJlc3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2
ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFk
ZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVz
cy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWdu
RXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFk
ZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5k
ZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
aW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmxkcjw2ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0
ZXIpOwogICAgIH0KICAgICAKQEAgLTIyMTYsMTIgKzIyMjcsMTIgQEAgcHVibGljOgogICAgIHZv
aWQgbG9hZEZsb2F0KEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJl
c3Muc2NhbGUgPT0gMikpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2Nh
bGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJU
b1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVt
b3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2Vt
Ymxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4o
bWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGlu
ZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1i
bGVyLmxkcjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAg
IH0KIApAQCAtMjQ3MywxMiArMjQ4NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZURvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlm
ICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0g
MykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZElt
bTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3Rl
ciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFk
ZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdp
c3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUo
YWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNy
YywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMjQ5NCwx
MiArMjUwNSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZUZsb2F0KEZQUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNl
dCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkgewotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlw
ZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZz
ZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVn
aXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVz
cy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2Us
IG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCmluZGV4IDhmYzFhZmMyYTUzOTFmNDU2NWMzZDNkOThmN2EwZjc2NDgz
NjIzZGEuLmM4ZTRhMGVlM2U3ODNmZmQ3MGRiYWNjNWI5YTc0ZGIzODUyYmZlMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC01NDcsOSArNTQ3LDE2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2NhbGUg
PSBzY2FsZUZvclNobChpbmRleCwgb2Zmc2V0LCB3aWR0aCk7CiAgICAgICAgICAgICAgICAgaWYg
KCFzY2FsZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFyZygpOwotICAgICAgICAgICAg
ICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhpbmRleC0+Y2hpbGQoMCkpIHx8IG1fbG9ja2VkLmNv
bnRhaW5zKGJhc2UpKQorICAgICAgICAgICAgICAgIGluZGV4ID0gaW5kZXgtPmNoaWxkKDApOwor
ICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhpbmRleCkgfHwgbV9sb2NrZWQu
Y29udGFpbnMoYmFzZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gQXJnOjppbmRleCh0bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQo
MCkpLCAqc2NhbGUsIG9mZnNldCk7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgICAgIGlm
IChpbmRleC0+b3Bjb2RlKCkgPT0gWkV4dDMyICYmICFtX2xvY2tlZC5jb250YWlucyhpbmRleC0+
Y2hpbGQoMCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbmRleCh0bXAoYmFz
ZSksIHRtcChpbmRleC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6
OlpFeHQzMnRvNjQpOworICAgICAgICAgICAgICAgIGlmIChpbmRleC0+b3Bjb2RlKCkgPT0gU0V4
dDMyICYmICFtX2xvY2tlZC5jb250YWlucyhpbmRleC0+Y2hpbGQoMCkpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQXJnOjppbmRleCh0bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQoMCkp
LCAqc2NhbGUsIG9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6OlNFeHQzMnRvNjQpOworI2VuZGlmCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEFyZzo6aW5kZXgodG1wKGJhc2UpLCB0bXAoaW5kZXgpLCAq
c2NhbGUsIG9mZnNldCk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBpZiAoQXJnIHJl
c3VsdCA9IHRyeUluZGV4KGxlZnQsIHJpZ2h0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFyZy5oCmluZGV4IGNjZWY0NTY4ODAzY2UyNTcyMTMwZTNiZWI3NmMxMGRlZWI4YTcyNzkuLjk3
MTc2YWE0ZTY0MzFjNTYyMmYxZTlhMTBkMDZhMmU2NjUyYzU0NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBcmcuaApAQCAtNjI5LDcgKzYyOSw3IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZz
ZXQ8SW50Pj4KLSAgICBzdGF0aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJhc2UsIEFpcjo6VG1wIGlu
ZGV4LCB1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCkKKyAgICBzdGF0aWMgQXJnIGluZGV4KEFp
cjo6VG1wIGJhc2UsIEFpcjo6VG1wIGluZGV4LCB1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCwg
TWFjcm9Bc3NlbWJsZXI6OkV4dGVuZCBleHRlbmQgPSBNYWNyb0Fzc2VtYmxlcjo6Tm9uZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChiYXNlLmlzR1AoKSk7CiAgICAgICAgIEFTU0VSVChpbmRleC5p
c0dQKCkpOwpAQCAtNjQwLDYgKzY0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1faW5k
ZXggPSBpbmRleDsKICAgICAgICAgcmVzdWx0Lm1fc2NhbGUgPSBzdGF0aWNfY2FzdDxpbnQzMl90
PihzY2FsZSk7CiAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG9mZnNldDsKKyAgICAgICAgcmVz
dWx0Lm1fZXh0ZW5kID0gZXh0ZW5kOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApA
QCAtMTM3OSw3ICsxMzgwLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNJbmRleCgpKTsK
ICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCiAgICAgICAgICAgICBt
X2Jhc2UuZ3ByKCksIG1faW5kZXguZ3ByKCksIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpT
Y2FsZT4obG9nU2NhbGUoKSksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0
VHlwZT4obV9vZmZzZXQpKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRU
eXBlPihtX29mZnNldCksIG1fZXh0ZW5kKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbiBhc1JlbGF0aW9uYWxDb25kaXRpb24oKSBjb25zdApAQCAtMTQ4
Nyw2ICsxNDg4LDcgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fc2NhbGUgeyAxIH07CiAgICAg
QWlyOjpUbXAgbV9iYXNlOwogICAgIEFpcjo6VG1wIG1faW5kZXg7CisgICAgTWFjcm9Bc3NlbWJs
ZXI6OkV4dGVuZCBtX2V4dGVuZCA9IE1hY3JvQXNzZW1ibGVyOjpFeHRlbmQ6Ok5vbmU7CiB9Owog
CiBzdHJ1Y3QgQXJnSGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggOTg0OGY2
M2U4NjlhZjJiM2ZiNTZjNWViMDRhZmUwYmIzNzk3YjAwYy4uZDdjMjE2OWFjMDc3NmVmMTI1MDA3
M2I4ZjQxMTMwYzAyM2VjYmJiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAtODI2
LDYgKzgyNiw4IEBAIHZvaWQgdGVzdE11bFRyZWVBcmczMihpbnQzMl90KTsKIHZvaWQgdGVzdEFy
ZyhpbnQgYXJndW1lbnQpOwogdm9pZCB0ZXN0UmV0dXJuQ29uc3Q2NChpbnQ2NF90IHZhbHVlKTsK
IHZvaWQgdGVzdFJldHVyblZvaWQoKTsKK3ZvaWQgdGVzdExvYWRaZXJvRXh0ZW5kSW5kZXhBZGRy
ZXNzKCk7Cit2b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKTsKIHZvaWQgdGVz
dEFkZEFyZyhpbnQpOwogdm9pZCB0ZXN0QWRkQXJncyhpbnQsIGludCk7CiB2b2lkIHRlc3RBZGRB
cmdJbW0oaW50LCBpbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXgg
MTcxYjgzNzgxMzI1N2YxZDNlYzA2MmU5ZjY4NzkxZWI3YTJkMjBiNS4uYmQxNjQ3YTIwYzE0OGVk
ZDI4ZGVmNGZlMjk0NDQ3YzlkYWM4NTIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
XzIuY3BwCkBAIC0yOTcsNiArMjk3LDE1OCBAQCB2b2lkIHRlc3RSZXR1cm5Wb2lkKCkKICAgICBj
b21waWxlQW5kUnVuPHZvaWQ+KHByb2MpOwogfQogCit2b2lkIHRlc3RMb2FkWmVyb0V4dGVuZElu
ZGV4QWRkcmVzcygpCit7CisgICAgaWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAy
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRlc3QzMiA9IFsmXSAodWludDMyX3QgaSwg
aW50MzJfdCBudW0sIGludDMyX3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZh
bHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5kZXgzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogaW5kZXg2NCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7
CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwg
aW5kZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcykp
OworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAo
aXNBUk02NCgpICYmIGFtb3VudCA9PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdl
eCgiLipsZHIuKnV4dHcjMi4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigq
Y29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50cHRyX3Qg
YWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJm51bSk7CisgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQzMl90PigqY29kZSwgYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMSkgPDwg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFtb3VudCkpICogaSwgaSksIG51bSk7CisgICAgfTsKKwor
ICAgIGZvciAoYXV0byBpIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBu
dW0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQg
PSAwOyBhbW91bnQgPCAxMDsgKythbW91bnQpCisgICAgICAgICAgICAgICAgdGVzdDMyKGkudmFs
dWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gdGVz
dDY0ID0gWyZdICh1aW50MzJfdCBpLCBpbnQ2NF90IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Cisg
ICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0
MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZh
bHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEFkZCwgT3JpZ2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50
NjQsIE9yaWdpbigpLCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDMpIHsKKyAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKmxkci4qdXh0dyMzLioiKTsKKyAgICAgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAg
ICAgfQorICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVt
KTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRp
Y19jYXN0PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSkgKiBp
LCBpKSwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGkgOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAg
ICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAg
ICAgICAgICAgICB0ZXN0NjQoaS52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQorewor
ICAgIGlmIChPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byB0ZXN0MzIgPSBbJl0gKHVpbnQzMl90IGksIGludDMyX3QgbnVtLCBpbnQz
Ml90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKTsKKyAgICAgICAg
VmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBpbmRleDMy
KTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2Us
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigp
LCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7CisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAg
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgp
ICYmIGFtb3VudCA9PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdHIu
KnV4dHcjMi4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVn
ZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50MzJfdCBzbG90ID0gMTIz
NDEyMzQ7CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZz
bG90KTsKKyAgICAgICAgaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0
PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSkgKiBpLCBpKTsK
KyAgICAgICAgQ0hFQ0tfRVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGkg
OiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDMyT3BlcmFu
ZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEw
OyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0MzIoaS52YWx1ZSwgbnVtLnZhbHVlLCBh
bW91bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byB0ZXN0NjQgPSBbJl0gKHVpbnQz
Ml90IGksIGludDY0X3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
ICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgbnVtKTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBa
RXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAg
IFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEFkZCwgT3JpZ2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwg
YWRkcmVzcyk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgdmFsdWUpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgICAgICBpZiAoaXNBUk02NCgpICYmIGFtb3VudCA9PSAzKSB7CisgICAgICAgICAgICBz
dGQ6OnN0cmluZyByZWdleCgiLipzdHIuKnV4dHcjMy4qIik7CisgICAgICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAg
ICAgICAgaW50NjRfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAgIGludHB0cl90IGFkZHIgPSBi
aXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAgICAgICAgaW52b2tlPGludDY0X3Q+KCpj
b2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PigxKSA8PCBzdGF0aWNfY2FzdDxpbnRw
dHJfdD4oYW1vdW50KSkgKiBpLCBpKTsKKyAgICAgICAgQ0hFQ0tfRVEoc2xvdCwgbnVtKTsKKyAg
ICB9OworCisgICAgZm9yIChhdXRvIGkgOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvIG51bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90
IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0
NjQoaS52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQorfQorCiB2
b2lkIHRlc3RBZGRBcmcoaW50IGEpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01OTQ0LDYg
KzYwOTYsOSBAQCB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVm
UHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU5fQklOQVJZKHRlc3RCaXRY
b3JUcmVlQXJnSW1tLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0T3BlcmFuZHMoKSk7CiAgICAgUlVO
X1VOQVJZKHRlc3RCaXRBbmRUcmVlQXJnMzIsIGludDMyT3BlcmFuZHMoKSk7CiAgICAgUlVOX1VO
QVJZKHRlc3RCaXRPclRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0
TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MoKSk7CisgICAgUlVOKHRlc3RTdG9yZVplcm9FeHRl
bmRJbmRleEFkZHJlc3MoKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433668</attachid>
            <date>2021-07-16 02:52:09 -0700</date>
            <delta_ts>2021-07-16 11:32:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210716045208.patch</filename>
            <type>text/plain</type>
            <size>33338</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MDBlY2E1MjFmMDNiNjA4MDEwYzMyZjE1NDZhODcwNDhmZmQ4YzI0Li5mZTFhZDYwYmJhMDk3M2Zk
MGNkYTUyMGUzYmM4MzA2NTg3MzBiZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMS0wNy0xNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIEV4dGVuZFR5cGUgdG8gQWlyOjpBcmcgSW5kZXggdG8gZnVsbHkg
dXRpbGl6ZSBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIG1lbW9yeSBpbnN0cnVjdGlvbiBmb3IgQVJN
NjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzk3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4OjpCYXNlSW5kZXgpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmluZGV4RXh0ZW5kVHlwZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmxvYWQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWQxNik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWQxNlNpZ25lZEV4dGVuZFRvMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OmxvYWQ4U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OnN0b3JlNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0OjpzdG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmUx
Nik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlOCk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkRmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpzdG9yZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6OnN0b3JlRmxvYXQpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAg
ICogYjMvYWlyL0FpckFyZy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmluZGV4KToK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjphc0Jhc2VJbmRleCBjb25zdCk6CisgICAgICAg
ICogYjMvdGVzdGIzLmg6CisgICAgICAgICogYjMvdGVzdGIzXzIuY3BwOgorICAgICAgICAodGVz
dExvYWRaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKToKKyAgICAgICAgKHRlc3RMb2FkU2lnbkV4dGVu
ZEluZGV4QWRkcmVzcyk6CisgICAgICAgICh0ZXN0U3RvcmVaZXJvRXh0ZW5kSW5kZXhBZGRyZXNz
KToKKyAgICAgICAgKHRlc3RTdG9yZVNpZ25FeHRlbmRJbmRleEFkZHJlc3MpOgorICAgICAgICAo
YWRkQml0VGVzdHMpOgorCiAyMDIxLTA3LTE1ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEFsaWFzIEpTQyBncmFwaCBkdW1waW5nIG9wdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmgKaW5kZXggZGM2ODNmMWVhZmQ3NzNhNmMyMDIwZDU0M2RhNWRmZTM2MjNlNGNk
NS4uNzZlMWY0YzJjYTZjNmU5NjcxODNlMTUwZjg1YzZlNGZlMzljNTdmMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgKQEAgLTEyNCw3ICsxMjQsMTMgQEAgcHVibGljOgogICAgICAgICBUaW1lc0VpZ2h0LAog
ICAgICAgICBTY2FsZVB0ciA9IGlzQWRkcmVzczY0Qml0KCkgPyBUaW1lc0VpZ2h0IDogVGltZXNG
b3VyLAogICAgIH07Ci0gICAgCisKKyAgICBlbnVtIEV4dGVuZCB7CisgICAgICAgIFpFeHQzMiwK
KyAgICAgICAgU0V4dDMyLAorICAgICAgICBOb25lCisgICAgfTsKKwogICAgIHN0cnVjdCBCYXNl
SW5kZXg7CiAgICAgCiAgICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBwZWRSZWdpc3RlcihS
ZWdpc3RlcklEIG9yaWdpbmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBA
IC0yMTAsMTEgKzIxNiwxMiBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBEZXNjcmliZXMgYSBj
b21wbGV4IGFkZHJlc3NpbmcgbW9kZS4KICAgICBzdHJ1Y3QgQmFzZUluZGV4IHsKLSAgICAgICAg
QmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUs
IGludDMyX3Qgb2Zmc2V0ID0gMCkKKyAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwg
UmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCwgRXh0ZW5k
IGV4dGVuZCA9IE5vbmUpCiAgICAgICAgICAgICA6IGJhc2UoYmFzZSkKICAgICAgICAgICAgICwg
aW5kZXgoaW5kZXgpCiAgICAgICAgICAgICAsIHNjYWxlKHNjYWxlKQogICAgICAgICAgICAgLCBv
ZmZzZXQob2Zmc2V0KQorICAgICAgICAgICAgLCBleHRlbmQoZXh0ZW5kKQogICAgICAgICB7CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC0yMjIsNiArMjI5LDcgQEAgcHVibGljOgogICAgICAgICBS
ZWdpc3RlcklEIGluZGV4OwogICAgICAgICBTY2FsZSBzY2FsZTsKICAgICAgICAgaW50MzJfdCBv
ZmZzZXQ7CisgICAgICAgIEV4dGVuZCBleHRlbmQ7CiAgICAgICAgIAogICAgICAgICBCYXNlSW5k
ZXggd2l0aE9mZnNldChpbnQzMl90IGFkZGl0aW9uYWxPZmZzZXQpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKaW5kZXggNGE5MGU1YTFmZGU0OGNjZmM0N2E3Mjc0OWU1ODVmN2QwMjRlMWNjNS4uODg0MDVm
MzU4ZTFmZjg5ZTRhOGYwMGMyMTc5NGE4ODdhY2ZlYTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTEzNjcs
NiArMTM2NywxNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gTWVtb3J5IGFjY2VzcyBvcGVy
YXRpb25zOgorICAgIEFzc2VtYmxlcjo6RXh0ZW5kVHlwZSBpbmRleEV4dGVuZFR5cGUoQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBzd2l0Y2ggKGFkZHJlc3MuZXh0ZW5kKSB7Cisg
ICAgICAgIGNhc2UgWkV4dDMyOgorICAgICAgICAgICAgcmV0dXJuIEFzc2VtYmxlcjo6VVhUVzsK
KyAgICAgICAgY2FzZSBTRXh0MzI6CisgICAgICAgICAgICByZXR1cm4gQXNzZW1ibGVyOjpTWFRX
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEFzc2VtYmxlcjo6VVhUWDsK
KyAgICAgICAgfQorICAgIH0KIAogICAgIHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewpAQCAtMTM4MCwxMiArMTM5MSwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb2FkNjQoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8
IGFkZHJlc3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2ND4o
ZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJl
c3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5z
Y2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0
ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2
ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgs
IEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5k
ZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmxkcjw2ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIp
OwogICAgIH0KIApAQCAtMTQ3OSwxMiArMTQ5MCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2Fk
MzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlm
ICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0g
MikpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVk
SW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lz
dGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJl
Z2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlw
ZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4o
ZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTUy
NiwxMiArMTUzNywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkMTYoQmFzZUluZGV4IGFkZHJl
c3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQg
JiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMSkpIHsKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmxkcmgoZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3Nl
bWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRy
aChkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRy
ZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBn
ZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIs
IGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2Fs
ZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmgoZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTU3MCwxMiArMTU4MSwxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVz
cy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDEpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxl
ci5sZHJzaDwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6
OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyc2g8MzI+
KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJl
c3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdl
dENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
YWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxl
KTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyc2g8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVt
b3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAgLTE2MDEsMTIgKzE2MTIsMTIgQEAgcHVibGlj
OgogICAgIHZvaWQgbG9hZDgoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgIWFkZHJlc3Muc2NhbGUpIHsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmIoZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubGRyYihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5k
VHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5v
ZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRk
cmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmIoZGVzdCwgYWRkcmVzcy5iYXNl
LCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KICAgICAKQEAgLTE2MzUsMTIgKzE2NDYsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgbG9hZDhTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0
ICYmICFhZGRyZXNzLnNjYWxlKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJzYjwzMj4o
ZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJl
c3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyc2I8MzI+KGRlc3QsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNz
LnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25F
eHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRl
eCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5p
bmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAg
bV9hc3NlbWJsZXIubGRyc2I8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lz
dGVyKTsKICAgICB9CiAKQEAgLTE2NzQsMTIgKzE2ODUsMTIgQEAgcHVibGljOgogICAgIHZvaWQg
c3RvcmU2NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxl
ID09IDMpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0PihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0
ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVn
aXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRY
LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1w
UmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRU
eXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0
PihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCkBA
IC0xNzgxLDEyICsxNzkyLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJ
RCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9m
ZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkgewotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5k
VHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5v
ZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRk
cmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJh
c2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0xODQ4LDEyICsxODU5LDEyIEBA
IHB1YmxpYzoKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2Nh
bGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAxKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Ry
aChzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmgoc3JjLCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2Fs
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5k
MzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4o
bWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFz
c2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2
ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgs
IGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnN0cmgoc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAg
fQogCkBAIC0xODc2LDEyICsxODg3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3JlOChSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJl
c3Mub2Zmc2V0ICYmICFhZGRyZXNzLnNjYWxlKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5z
dHJiKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFk
ZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNj
YWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRl
bmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwg
QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRl
eCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9h
c3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAg
ICB9CiAKQEAgLTIxODksMTIgKzIyMDAsMTIgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZERvdWJs
ZShCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBp
ZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09
IDMpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3Rl
ZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdp
c3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgs
IGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBS
ZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5
cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+
KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCkBA
IC0yMjE2LDEyICsyMjI3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5k
ZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJl
c3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDIpKSB7Ci0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRl
eEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFk
ZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVt
b3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Mu
c2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3Rlciwg
bWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVz
cyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRlc3QsIGFk
ZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAgLTI0NzMsMTIgKzI0
ODQsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywg
QmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYm
ICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDMpKSB7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3Nl
bWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Ry
PDY0PihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFk
ZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCks
IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdp
c3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNj
YWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0PihzcmMsIGFkZHJlc3MuYmFzZSwgbWVt
b3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAgLTI0OTQsMTIgKzI1MDUsMTIgQEAgcHVibGlj
OgogICAgIHZvaWQgc3RvcmVGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVz
cykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxl
IHx8IGFkZHJlc3Muc2NhbGUgPT0gMikpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwz
Mj4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Mu
c2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4
dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8
NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4
LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5h
ZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmlu
ZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBt
X2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRl
eCA4ZmMxYWZjMmE1MzkxZjQ1NjVjM2QzZDk4ZjdhMGY3NjQ4MzYyM2RhLi4yYzk1YjVlYzQ5Njcy
MGJhZmYyMmY0NTgyYWFmZDM0NTlkM2JkZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcApAQCAtNTQ3LDkgKzU0NywxNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlID0gc2NhbGVGb3JTaGwoaW5kZXgs
IG9mZnNldCwgd2lkdGgpOwogICAgICAgICAgICAgICAgIGlmICghc2NhbGUpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29u
dGFpbnMoaW5kZXgtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyhiYXNlKSkKKyAgICAg
ICAgICAgICAgICBpbmRleCA9IGluZGV4LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBpZiAo
bV9sb2NrZWQuY29udGFpbnMoaW5kZXgpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKGJhc2UpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQXJnKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFy
Zzo6aW5kZXgodG1wKGJhc2UpLCB0bXAoaW5kZXgtPmNoaWxkKDApKSwgKnNjYWxlLCBvZmZzZXQp
OworI2lmIENQVShBUk02NCkKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXgtPm9wY29kZSgpID09
IFpFeHQzMiAmJiAhbV9sb2NrZWQuY29udGFpbnMoaW5kZXgtPmNoaWxkKDApKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEFyZzo6aW5kZXgodG1wKGJhc2UpLCB0bXAoaW5kZXgtPmNoaWxk
KDApKSwgKnNjYWxlLCBvZmZzZXQsIE1hY3JvQXNzZW1ibGVyOjpaRXh0MzIpOworICAgICAgICAg
ICAgICAgIGlmIChpbmRleC0+b3Bjb2RlKCkgPT0gU0V4dDMyICYmICFtX2xvY2tlZC5jb250YWlu
cyhpbmRleC0+Y2hpbGQoMCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbmRl
eCh0bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNldCwgTWFjcm9B
c3NlbWJsZXI6OlNFeHQzMik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjpp
bmRleCh0bXAoYmFzZSksIHRtcChpbmRleCksICpzY2FsZSwgb2Zmc2V0KTsKICAgICAgICAgICAg
IH07CiAKICAgICAgICAgICAgIGlmIChBcmcgcmVzdWx0ID0gdHJ5SW5kZXgobGVmdCwgcmlnaHQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggY2NlZjQ1Njg4MDNjZTI1
NzIxMzBlM2JlYjc2YzEwZGVlYjhhNzI3OS4uOTcxNzZhYTRlNjQzMWM1NjIyZjFlOWExMGQwNmEy
ZTY2NTJjNTQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC02Mjks
NyArNjI5LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwg
dHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIHN0YXRpYyBBcmcgaW5k
ZXgoQWlyOjpUbXAgYmFzZSwgQWlyOjpUbXAgaW5kZXgsIHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zm
c2V0KQorICAgIHN0YXRpYyBBcmcgaW5kZXgoQWlyOjpUbXAgYmFzZSwgQWlyOjpUbXAgaW5kZXgs
IHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0LCBNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kIGV4dGVu
ZCA9IE1hY3JvQXNzZW1ibGVyOjpOb25lKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJhc2UuaXNH
UCgpKTsKICAgICAgICAgQVNTRVJUKGluZGV4LmlzR1AoKSk7CkBAIC02NDAsNiArNjQwLDcgQEAg
cHVibGljOgogICAgICAgICByZXN1bHQubV9pbmRleCA9IGluZGV4OwogICAgICAgICByZXN1bHQu
bV9zY2FsZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHNjYWxlKTsKICAgICAgICAgcmVzdWx0Lm1f
b2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICByZXN1bHQubV9leHRlbmQgPSBleHRlbmQ7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMzc5LDcgKzEzODAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChpc0luZGV4KCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleCgKICAgICAgICAgICAgIG1fYmFzZS5ncHIoKSwgbV9pbmRleC5ncHIoKSwg
c3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlNjYWxlPihsb2dTY2FsZSgpKSwKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihtX29mZnNldCkpOworICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KG1fb2Zmc2V0KSwgbV9leHRlbmQpOwog
ICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGFzUmVsYXRp
b25hbENvbmRpdGlvbigpIGNvbnN0CkBAIC0xNDg3LDYgKzE0ODgsNyBAQCBwcml2YXRlOgogICAg
IGludDMyX3QgbV9zY2FsZSB7IDEgfTsKICAgICBBaXI6OlRtcCBtX2Jhc2U7CiAgICAgQWlyOjpU
bXAgbV9pbmRleDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kIG1fZXh0ZW5kID0gTWFjcm9B
c3NlbWJsZXI6OkV4dGVuZDo6Tm9uZTsKIH07CiAKIHN0cnVjdCBBcmdIYXNoIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuaAppbmRleCA5ODQ4ZjYzZTg2OWFmMmIzZmI1NmM1ZWIwNGFmZTBiYjM3
OTdiMDBjLi4zYmUyY2FhMmUxY2I2OGE2YWE0YWNjOGQzMzQ0YjMwNWNjOTUwNzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC04MjYsNiArODI2LDEwIEBAIHZvaWQgdGVzdE11bFRy
ZWVBcmczMihpbnQzMl90KTsKIHZvaWQgdGVzdEFyZyhpbnQgYXJndW1lbnQpOwogdm9pZCB0ZXN0
UmV0dXJuQ29uc3Q2NChpbnQ2NF90IHZhbHVlKTsKIHZvaWQgdGVzdFJldHVyblZvaWQoKTsKK3Zv
aWQgdGVzdExvYWRaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCk7Cit2b2lkIHRlc3RMb2FkU2lnbkV4
dGVuZEluZGV4QWRkcmVzcygpOwordm9pZCB0ZXN0U3RvcmVaZXJvRXh0ZW5kSW5kZXhBZGRyZXNz
KCk7Cit2b2lkIHRlc3RTdG9yZVNpZ25FeHRlbmRJbmRleEFkZHJlc3MoKTsKIHZvaWQgdGVzdEFk
ZEFyZyhpbnQpOwogdm9pZCB0ZXN0QWRkQXJncyhpbnQsIGludCk7CiB2b2lkIHRlc3RBZGRBcmdJ
bW0oaW50LCBpbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
M18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggMTcx
YjgzNzgxMzI1N2YxZDNlYzA2MmU5ZjY4NzkxZWI3YTJkMjBiNS4uY2IxMTczMzY2NWNmNGU3ZTU3
ZmUxMTMyMDhmMTk2OTNkNDUwNzA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIu
Y3BwCkBAIC0yOTcsNiArMjk3LDMxNCBAQCB2b2lkIHRlc3RSZXR1cm5Wb2lkKCkKICAgICBjb21w
aWxlQW5kUnVuPHZvaWQ+KHByb2MpOwogfQogCit2b2lkIHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4
QWRkcmVzcygpCit7CisgICAgaWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRlc3QzMiA9IFsmXSAodWludDMyX3QgaW5kZXgs
IGludDMyX3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBW
YWx1ZSogYmFzZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5kZXgz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogaW5k
ZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgaW5k
ZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBi
YXNlVmFsdWUsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGws
IE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDIpIHsKKyAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIHJlZ2V4KCIuKmxkci4qdXh0dyMyLioiKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAg
ICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVtKTsKKyAgICAgICAg
aW50cHRyX3QgYmFzZSA9IGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBz
dGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxp
bnQzMl90PigqY29kZSwgYmFzZSwgaW5kZXgpLCBudW0pOworICAgIH07CisKKyAgICBmb3IgKGF1
dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGlu
dDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFt
b3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0MzIoaW5kZXgudmFsdWUs
IG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gdGVzdDY0
ID0gWyZdICh1aW50MzJfdCBpbmRleCwgaW50NjRfdCBudW0sIGludDMyX3QgYW1vdW50KSB7Cisg
ICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBiYXNlVmFsdWUgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBaRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAg
ICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2VWYWx1ZSwgCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7CisKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpKTsKKworICAgICAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBhbW91bnQgPT0g
MykgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qbGRyLip1eHR3IzMuKiIpOwor
ICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRy
dWUpOworICAgICAgICB9CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50
cHRyX3Q+KCZudW0pOworICAgICAgICBpbnRwdHJfdCBiYXNlID0gYWRkciAtIChzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oaW5kZXgpIDw8IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQpKTsKKyAg
ICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2RlLCBiYXNlLCBpbmRleCksIG51bSk7
CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICBmb3IgKGF1dG8gbnVtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAgICAg
ICAgIHRlc3Q2NChpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIHRlc3RMb2FkU2lnbkV4dGVuZEluZGV4QWRkcmVzcygpCit7CisgICAg
aWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIHRlc3QzMiA9IFsmXSAoaW50MzJfdCBpbmRleCwgaW50MzJfdCBudW0sIGludDMy
X3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBiYXNlVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFs
dWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2VWYWx1ZSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQs
IHNjYWxlKSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJlc3MpKTsKKworICAg
ICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQo
KSAmJiBhbW91bnQgPT0gMikgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qbGRy
LipzeHR3IzIuKiIpOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJl
Z2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIGludHB0cl90IGFkZHIgPSBi
aXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZudW0pOworICAgICAgICBpbnRwdHJfdCBiYXNlID0gYWRk
ciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IHN0YXRpY19jYXN0PGludHB0cl90
PihhbW91bnQpKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBiYXNl
LCBpbmRleCksIG51bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMyT3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbnVtIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50
KQorICAgICAgICAgICAgICAgIHRlc3QzMihpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQp
OworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byB0ZXN0NjQgPSBbJl0gKGludDMyX3QgaW5k
ZXgsIGludDY0X3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAg
ICBWYWx1ZSogYmFzZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5k
ZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSog
aW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU0V4dDMyLCBPcmlnaW4oKSwg
aW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigp
LCBiYXNlVmFsdWUsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
aGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdp
bigpLCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7
CisgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDMpIHsKKyAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIHJlZ2V4KCIuKmxkci4qc3h0dyMzLioiKTsKKyAgICAgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAg
ICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVtKTsKKyAgICAg
ICAgaW50cHRyX3QgYmFzZSA9IGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8
PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSk7CisgICAgICAgIENIRUNLX0VRKGludm9r
ZTxpbnQ2NF90PigqY29kZSwgYmFzZSwgaW5kZXgpLCBudW0pOworICAgIH07CisKKyAgICBmb3Ig
KGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6
IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7
IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0NjQoaW5kZXgudmFs
dWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0
U3RvcmVaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZGVmYXVs
dEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGVzdDMyID0g
WyZdICh1aW50MzJfdCBpbmRleCwgaW50MzJfdCBudW0sIGludDMyX3QgYW1vdW50KSB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBudW0pOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAgICBWYWx1ZSog
c2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1v
dW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwgCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7
CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3Jp
Z2luKCksIHZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1ZSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDIpIHsK
KyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKnN0ci4qdXh0dyMyLioiKTsKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsK
KyAgICAgICAgfQorICAgICAgICBpbnQzMl90IHNsb3QgPSAxMjM0MTIzNDsKKyAgICAgICAgaW50
cHRyX3QgYWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJnNsb3QpOworICAgICAgICBpbnZv
a2U8aW50MzJfdD4oKmNvZGUsIGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8
PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSksIGluZGV4KTsKKyAgICAgICAgQ0hFQ0tf
RVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGluZGV4IDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91bnQgPCAxMDsgKythbW91bnQp
CisgICAgICAgICAgICAgICAgdGVzdDMyKGluZGV4LnZhbHVlLCBudW0udmFsdWUsIGFtb3VudCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIHRlc3Q2NCA9IFsmXSAodWludDMyX3QgaW5k
ZXgsIGludDY0X3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAg
ICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgbnVtKTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Cisg
ICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0
MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZh
bHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IEFkZCwgT3JpZ2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRk
cmVzcyk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgdmFsdWUpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwor
ICAgICAgICBpZiAoaXNBUk02NCgpICYmIGFtb3VudCA9PSAzKSB7CisgICAgICAgICAgICBzdGQ6
OnN0cmluZyByZWdleCgiLipzdHIuKnV4dHcjMy4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJ
bnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAg
ICAgaW50NjRfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3
aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAgICAgICAgaW52b2tlPGludDY0X3Q+KCpjb2Rl
LCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KGFtb3VudCkpLCBpbmRleCk7CisgICAgICAgIENIRUNLX0VRKHNsb3QsIG51bSk7Cisg
ICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbnVtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGlu
dDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAgICAgICAg
IHRlc3Q2NChpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIHRlc3RTdG9yZVNpZ25FeHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIGlm
IChPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byB0ZXN0MzIgPSBbJl0gKGludDMyX3QgaW5kZXgsIGludDMyX3QgbnVtLCBpbnQzMl90
IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKTsKKyAgICAgICAgVmFs
dWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsK
KyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2UsIAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBp
bmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7CisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgICAg
IGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpICYm
IGFtb3VudCA9PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdHIuKnN4
dHcjMi4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXgu
Y19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50MzJfdCBzbG90ID0gMTIzNDEy
MzQ7CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90
KTsKKyAgICAgICAgaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGlu
dHB0cl90PihpbmRleCkgPDwgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFtb3VudCkpLCBpbmRleCk7
CisgICAgICAgIENIRUNLX0VRKHNsb3QsIG51bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBp
bmRleCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbnVtIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50
IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAgICAgICAgIHRlc3QzMihpbmRleC52YWx1ZSwgbnVt
LnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byB0ZXN0NjQgPSBb
Jl0gKGludDMyX3QgaW5kZXgsIGludDY0X3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgbnVtKTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNj
YWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3Vu
dCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOwor
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdp
bigpLCB2YWx1ZSwgYWRkcmVzcyk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBp
bGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpICYmIGFtb3VudCA9PSAzKSB7Cisg
ICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipzdHIuKnN4dHcjMy4qIik7CisgICAgICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaW50NjRfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAgIGludHB0
cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAgICAgICAgaW52b2tl
PGludDY0X3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFtb3VudCkpLCBpbmRleCk7CisgICAgICAgIENIRUNLX0VR
KHNsb3QsIG51bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMyT3BlcmFu
ZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbnVtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAg
ICAgICAgICBmb3IgKGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQor
ICAgICAgICAgICAgICAgIHRlc3Q2NChpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOwor
ICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIHRlc3RBZGRBcmcoaW50IGEpCiB7CiAgICAgUHJv
Y2VkdXJlIHByb2M7CkBAIC01OTQ0LDYgKzYyNTIsMTEgQEAgdm9pZCBhZGRCaXRUZXN0cyhjb25z
dCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3Mp
CiAgICAgUlVOX0JJTkFSWSh0ZXN0Qml0WG9yVHJlZUFyZ0ltbSwgaW50NjRPcGVyYW5kcygpLCBp
bnQ2NE9wZXJhbmRzKCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0Qml0QW5kVHJlZUFyZzMyLCBpbnQz
Mk9wZXJhbmRzKCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0Qml0T3JUcmVlQXJnMzIsIGludDMyT3Bl
cmFuZHMoKSk7CisKKyAgICBSVU4odGVzdExvYWRaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCkpOwor
ICAgIFJVTih0ZXN0TG9hZFNpZ25FeHRlbmRJbmRleEFkZHJlc3MoKSk7CisgICAgUlVOKHRlc3RT
dG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKSk7CisgICAgUlVOKHRlc3RTdG9yZVNpZ25FeHRl
bmRJbmRleEFkZHJlc3MoKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433688</attachid>
            <date>2021-07-16 11:32:11 -0700</date>
            <delta_ts>2021-07-16 14:46:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210716133210.patch</filename>
            <type>text/plain</type>
            <size>41760</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MDBlY2E1MjFmMDNiNjA4MDEwYzMyZjE1NDZhODcwNDhmZmQ4YzI0Li4wMTBiMTk4YjI4ZDcwYTg4
M2U2ZmM1NDdkMzg2YTRjOGJkODI2NjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDctMTYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBFeHRlbmRUeXBlIHRvIEFpcjo6QXJnIEluZGV4IHRvIGZ1bGx5
IHV0aWxpemUgYWRkcmVzcyBjb21wdXRhdGlvbiBpbiBtZW1vcnkgaW5zdHJ1Y3Rpb24gZm9yIEFS
TTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc5
NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
cGF0dGVybiByZWNvZ25pdGlvbiBvZiBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIHRoZSBpbnN0cnVj
dGlvbnMsIGUuZy4sIExvYWQgCisgICAgICAgIFJlc2lzdG9yIChMRFIpLCBTdG9yZSBSZWdpc3Rl
ciAoU1RSKSwgZXRjLiwgY2FuIGJlbmVmaXQgdGhlIGluc3RydWN0aW9uIHNlbGVjdG9yLgorICAg
ICAgICBUaGVuLCB0aGUgQWlyIG9wZXJhbmQgQmFzZUluZGV4IGNvbnRhaW5pbmcgYmFzZSwgaW5k
ZXgsIGFuZCBzY2FsZSBpcyBpbnRyb2R1Y2VkIAorICAgICAgICB0byBBaXIgb3Bjb2RlLiBIb3dl
dmVyLCB0aGUgPGV4dGVuZD4gb3B0aW9uIG9mIGluZGV4IGFkZHJlc3MgaXMgbm90IGZ1bGx5IGxl
dmVyYWdlZCAKKyAgICAgICAgaW4gdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLiAKKworICAg
ICAgICBUbyBmaWxsIHRoYXQgZ2FwLCB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgbWVtYmVyLCBNYWNy
b0Fzc2VtYmxlcjo6RXh0ZW5kLCB0byB0aGUgY3VycmVudCAKKyAgICAgICAgZGVzaWduIG9mIEJh
c2VJbmRleCB0byB0cmlnZ2VyIHplcm8vc2lnbiBleHRlbnNpb24gb24gdGhlIEluZGV4IGFkZHJl
c3MuIEFuZCB0aGlzIGlzIAorICAgICAgICBlbmFibGVkIGZvciBTdG9yZS9Mb2FkIHdpdGggdmFs
aWQgaW5kZXggYWRkcmVzcyBhbmQgc2hpZnQgYW1vdW50LgorCisgICAgICAgIE1heWJlLCB0aGUg
aWRlYWwgYXBwcm9hY2ggaXMgdG8gaW50cm9kdWNlIGEgZGVjb3JhdG9yIChJbmRleEBFWFQpIHRv
IHRoZSBBaXIgb3BlcmFuZCAKKyAgICAgICAgdG8gcHJvdmlkZSBhbiBleHRlbnNpb24gb3Bwb3J0
dW5pdHkgZm9yIHRoZSBzcGVjaWZpYyBmb3JtIG9mIHRoZSBBaXIgb3Bjb2RlLgorCisgICAgICAg
IExvYWQgUmVnaXN0ZXIgKExEUikgY2FsY3VsYXRlcyBhbiBhZGRyZXNzIGZyb20gYSBiYXNlIHJl
Z2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAgb2Zmc2V0IHJlZ2lzdGVyIHZhbHVlLCBsb2Fk
cyBhIHdvcmQgZnJvbSBtZW1vcnksIGFuZCB3cml0ZXMgaXQgdG8gYSByZWdpc3Rlci4gCisgICAg
ICAgIFRoZSBvZmZzZXQgcmVnaXN0ZXIgdmFsdWUgY2FuIG9wdGlvbmFsbHkgYmUgc2hpZnRlZCBh
bmQgZXh0ZW5kZWQuCisKKyAgICAgICAgR2l2ZW4gQjMgSVI6CisgICAgICAgIEludCBAMCA9IEFy
Z3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAxID0gWi9TRXh0MzIoVHJ1bmMoQXJndW1lbnRS
ZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IHNjYWxlCisgICAgICAgIEludCBAMyA9IFNobChA
MSwgQDIpCisgICAgICAgIEludCBANCA9IEFkZChAMCwgQDMpCisgICAgICAgIEludCBANSA9IExv
YWQoQDQsIENvbnRyb2xEZXBlbmRlbnR8UmVhZHM6VG9wKQorICAgICAgICBWb2lkQDYgPSBSZXR1
cm4oQDUsIFRlcm1pbmFsKQorCisgICAgICAgIC8vIE9sZCBvcHRpbWl6ZWQgQUlSCisgICAgICAg
IE1vdmUgICAgICAgICAgICAgICAleDEsICV4MSwgQDEKKyAgICAgICAgTW92ZSAoJXgwLCV4MSwy
XnNjYWxlKSwgJXgwLCBANQorICAgICAgICBSZXQgICAgICAgICAgICAgICAgJXgwLCAgICAgIEA2
CisKKyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZSAoJXgwLCV4MSwy
XnNjYWxlKSwgJXgwLCBANQorICAgICAgICBSZXQgICAgICAgICAgICAgICAgJXgwLCAgICAgIEA2
CisKKyAgICAgICAgU3RvcmUgUmVnaXN0ZXIgKFNUUikgY2FsY3VsYXRlcyBhbiBhZGRyZXNzIGZy
b20gYSBiYXNlIHJlZ2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAgb2Zmc2V0IHJlZ2lzdGVy
IHZhbHVlLCBhbmQgc3RvcmVzIGEgMzItYml0IHdvcmQgb3IgYSA2NC1iaXQgZG91Ymxld29yZCB0
byB0aGUgCisgICAgICAgIGNhbGN1bGF0ZWQgYWRkcmVzcywgZnJvbSBhIHJlZ2lzdGVyLgorCisg
ICAgICAgIEdpdmVuIEIzIElSOgorICAgICAgICBJbnQgQDAgPSB2YWx1ZQorICAgICAgICBJbnQg
QDEgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMiA9IFovU0V4dDMyKFRydW5jKEFy
Z3VtZW50UmVnKCV4MSkpCisgICAgICAgIEludCBAMyA9IHNjYWxlCisgICAgICAgIEludCBANCA9
IFNobChAMiwgQDMpCisgICAgICAgIEludCBANSA9IEFkZChAMSwgQDQpCisgICAgICAgIFZvaWRA
NiA9IFN0b3JlKEAwLCBANSwgQ29udHJvbERlcGVuZGVudHxXcml0ZXM6VG9wKQorICAgICAgICBW
b2lkQDcgPSBSZXR1cm4oQDAsIFRlcm1pbmFsKQorCisgICAgICAgIC8vIE9sZCBvcHRpbWl6ZWQg
QUlSCisgICAgICAgIE1vdmUzMiAgICAleDEsICAgICAgICAgICAgICAgJXgxLCBAMgorICAgICAg
ICBTdG9yZTMyICAleHpyLCAoJXgwLCV4MSwyXnNjYWxlKSwgQDYKKyAgICAgICAgTW92ZSAgICAg
ICAkMCwgICAgICAgICAgICAgICAleDAsIEA3CisgICAgICAgIFJldDMyICAgICAleDAsICAgICAg
ICAgICAgICAgICAgICBANworCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAg
IFN0b3JlMzIgICV4enIsICgleDAsJXgxLDJec2NhbGUpLCBANgorICAgICAgICBNb3ZlICAgICAg
ICQwLCAgICAgICAgICAgICAgICV4MCwgQDcKKyAgICAgICAgUmV0MzIgICAgICV4MCwgICAgICAg
ICAgICAgICAgICAgIEA3CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXg6
OkJhc2VJbmRleCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6aW5kZXhFeHRlbmRUeXBlKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6bG9hZDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZDE2U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmxvYWQ4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDhTaWduZWRF
eHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmU2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk02NDo6c3RvcmU4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6bG9hZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRG
bG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlRG91YmxlKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVGbG9hdCk6CisgICAgICAg
ICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmFzQmFzZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAg
KiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJl
c3MpOgorICAgICAgICAodGVzdExvYWRTaWduRXh0ZW5kSW5kZXhBZGRyZXNzKToKKyAgICAgICAg
KHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MpOgorICAgICAgICAodGVzdFN0b3JlU2ln
bkV4dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDct
MTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWxp
YXMgSlNDIGdyYXBoIGR1bXBpbmcgb3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkYzY4M2Yx
ZWFmZDc3M2E2YzIwMjBkNTQzZGE1ZGZlMzYyM2U0Y2Q1Li43NmUxZjRjMmNhNmM2ZTk2NzE4M2Ux
NTBmODVjNmU0ZmUzOWM1N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtMTI0LDcgKzEyNCwxMyBA
QCBwdWJsaWM6CiAgICAgICAgIFRpbWVzRWlnaHQsCiAgICAgICAgIFNjYWxlUHRyID0gaXNBZGRy
ZXNzNjRCaXQoKSA/IFRpbWVzRWlnaHQgOiBUaW1lc0ZvdXIsCiAgICAgfTsKLSAgICAKKworICAg
IGVudW0gRXh0ZW5kIHsKKyAgICAgICAgWkV4dDMyLAorICAgICAgICBTRXh0MzIsCisgICAgICAg
IE5vbmUKKyAgICB9OworCiAgICAgc3RydWN0IEJhc2VJbmRleDsKICAgICAKICAgICBzdGF0aWMg
UmVnaXN0ZXJJRCB3aXRoU3dhcHBlZFJlZ2lzdGVyKFJlZ2lzdGVySUQgb3JpZ2luYWwsIFJlZ2lz
dGVySUQgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKQEAgLTIxMCwxMSArMjE2LDEyIEBAIHB1Ymxp
YzoKICAgICAvLwogICAgIC8vIERlc2NyaWJlcyBhIGNvbXBsZXggYWRkcmVzc2luZyBtb2RlLgog
ICAgIHN0cnVjdCBCYXNlSW5kZXggewotICAgICAgICBCYXNlSW5kZXgoUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBTY2FsZSBzY2FsZSwgaW50MzJfdCBvZmZzZXQgPSAwKQorICAg
ICAgICBCYXNlSW5kZXgoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBTY2FsZSBz
Y2FsZSwgaW50MzJfdCBvZmZzZXQgPSAwLCBFeHRlbmQgZXh0ZW5kID0gTm9uZSkKICAgICAgICAg
ICAgIDogYmFzZShiYXNlKQogICAgICAgICAgICAgLCBpbmRleChpbmRleCkKICAgICAgICAgICAg
ICwgc2NhbGUoc2NhbGUpCiAgICAgICAgICAgICAsIG9mZnNldChvZmZzZXQpCisgICAgICAgICAg
ICAsIGV4dGVuZChleHRlbmQpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIy
Miw2ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZ2lzdGVySUQgaW5kZXg7CiAgICAgICAg
IFNjYWxlIHNjYWxlOwogICAgICAgICBpbnQzMl90IG9mZnNldDsKKyAgICAgICAgRXh0ZW5kIGV4
dGVuZDsKICAgICAgICAgCiAgICAgICAgIEJhc2VJbmRleCB3aXRoT2Zmc2V0KGludDMyX3QgYWRk
aXRpb25hbE9mZnNldCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA0YTkwZTVhMWZkZTQ4Y2Nm
YzQ3YTcyNzQ5ZTU4NWY3ZDAyNGUxY2M1Li44ODQwNWYzNThlMWZmODllNGE4ZjAwYzIxNzk0YTg4
N2FjZmVhOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTM2Nyw2ICsxMzY3LDE3IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICAvLyBNZW1vcnkgYWNjZXNzIG9wZXJhdGlvbnM6CisgICAgQXNzZW1ibGVyOjpF
eHRlbmRUeXBlIGluZGV4RXh0ZW5kVHlwZShCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAoYWRkcmVzcy5leHRlbmQpIHsKKyAgICAgICAgY2FzZSBaRXh0MzI6CisgICAg
ICAgICAgICByZXR1cm4gQXNzZW1ibGVyOjpVWFRXOworICAgICAgICBjYXNlIFNFeHQzMjoKKyAg
ICAgICAgICAgIHJldHVybiBBc3NlbWJsZXI6OlNYVFc7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gQXNzZW1ibGVyOjpVWFRYOworICAgICAgICB9CisgICAgfQogCiAgICAg
dm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CkBAIC0xMzgwLDEyICsxMzkxLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQ2NChCYXNl
SW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFhZGRy
ZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAzKSkgewot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5k
ZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihh
ZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1l
bW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNz
LnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIs
IG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJl
c3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBh
ZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0xNDc5LDEyICsx
NDkwLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQzMihCYXNlSW5kZXggYWRkcmVzcywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFk
ZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkgewotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxl
cjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+
KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJl
c3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdl
dENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rlciwg
YWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxl
KTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9y
eVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0xNTI2LDEyICsxNTM3LDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGxvYWQxNihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRk
cmVzcy5zY2FsZSA9PSAxKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyaChkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2Fs
ZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJoKGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRy
KFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlU
ZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVy
OjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1v
cnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhF
eHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIu
bGRyaChkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBA
IC0xNTcwLDEyICsxNTgxLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQxNlNpZ25lZEV4dGVu
ZFRvMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUg
PT0gMSkpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcnNoPDMyPihkZXN0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJzaDwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIo
VHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRl
bXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6
OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9y
eVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4
dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJzaDwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0K
IApAQCAtMTYwMSwxMiArMTYxMiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkOChCYXNlSW5k
ZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNz
Lm9mZnNldCAmJiAhYWRkcmVzcy5zY2FsZSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRy
YihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJiKGRlc3QsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNj
YWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRl
bmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwg
QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRl
eCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9h
c3NlbWJsZXIubGRyYihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAg
ICAgfQogICAgIApAQCAtMTYzNSwxMiArMTY0NiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2Fk
OFNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgIWFkZHJlc3Muc2NhbGUpIHsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcnNiPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5sZHJzYjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBp
bmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMy
KGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3Rlciwg
bWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJl
c3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3Rl
ciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRk
cmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHJzYjwzMj4oZGVz
dCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTY3NCwx
MiArMTY4NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZTY0KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYg
KCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2Vt
Ymxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8
NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRk
cmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwg
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBt
X2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAg
ICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2Nh
bGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1v
cnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KICAgICAKQEAgLTE3ODEsMTIgKzE3OTIsMTIgQEAgcHVi
bGljOgogICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3Mp
CiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8
fCBhZGRyZXNzLnNjYWxlID09IDIpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+
KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJl
c3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNj
YWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRl
bmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwg
QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRl
eCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9h
c3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsK
ICAgICB9CiAKQEAgLTE4NDgsMTIgKzE4NTksMTIgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmUx
NihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAo
IWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDEp
KSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHJoKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuc3RyaChzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhF
eHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRy
ZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9y
eVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNj
YWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1l
bW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3Mp
LCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyaChzcmMsIGFkZHJlc3Mu
YmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAgLTE4NzYsMTIgKzE4ODcsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRk
cmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgIWFkZHJlc3Muc2Nh
bGUpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRl
eEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFk
ZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVt
b3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Mu
c2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3Rlciwg
bWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVz
cyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgYWRkcmVz
cy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMjE4OSwxMiArMjIwMCwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkRG91YmxlKEJhc2VJbmRleCBhZGRyZXNzLCBGUFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFh
ZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmxkcjw2ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJs
ZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0
PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRy
ZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBn
ZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIs
IGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2Fs
ZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1v
cnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KICAgICAKQEAgLTIyMTYsMTIgKzIyMjcsMTIgQEAgcHVi
bGljOgogICAgIHZvaWQgbG9hZEZsb2F0KEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNj
YWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMikpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxk
cjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgs
IGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRk
cmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBz
aWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRN
ZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
aW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJl
c3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVn
aXN0ZXIpOwogICAgIH0KIApAQCAtMjQ3MywxMiArMjQ4NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7
CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJl
c3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjw2ND4oc3JjLCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2Fs
ZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9Q
dHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9y
eVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJs
ZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1l
bW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRl
eEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0K
IApAQCAtMjQ5NCwxMiArMjUwNSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZUZsb2F0KEZQ
UmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKCFh
ZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkg
ewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGlu
ZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIo
YWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBt
ZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVy
LCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRy
ZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBh
ZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDhmYzFhZmMyYTUzOTFmNDU2NWMzZDNk
OThmN2EwZjc2NDgzNjIzZGEuLmI0NzE5MmFkMWVmMDg4ODMxYTBjZTlkMzA3ZGE4ZTIwODRlNzE5
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC00OTks
NiArNDk5LDMxIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAg
IGJvb2wgaXNNZXJnZWFibGVWYWx1ZShWYWx1ZSogdiwgQjM6Ok9wY29kZSBiM09wY29kZSwgYm9v
bCBjaGVja0NhbkJlSW50ZXJuYWwpCisgICAgeyAKKyAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9
IGIzT3Bjb2RlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY2hlY2tD
YW5CZUludGVybmFsICYmICFjYW5CZUludGVybmFsKHYpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnModi0+Y2hpbGQoMCkpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50
Pj4KKyAgICBBcmcgaW5kZXhBcmcoVG1wIGJhc2UsIFZhbHVlKiBpbmRleCwgdW5zaWduZWQgc2Nh
bGUsIEludCBvZmZzZXQpCisgICAgeworI2lmIENQVShBUk02NCkKKyAgICAgICAgLy8gTWF5YmUs
IHRoZSBpZGVhbCBhcHByb2FjaCBpcyB0byBpbnRyb2R1Y2UgYSBkZWNvcmF0b3IgKEluZGV4QEVY
VCkgdG8gdGhlIEFpciBvcGVyYW5kIAorICAgICAgICAvLyB0byBwcm92aWRlIGFuIGV4dGVuc2lv
biBvcHBvcnR1bml0eSBmb3IgdGhlIHNwZWNpZmljIGZvcm0gdW5kZXIgdGhlIEFpciBvcGNvZGUu
CisgICAgICAgIGlmIChpc01lcmdlYWJsZVZhbHVlKGluZGV4LCBaRXh0MzIsIGZhbHNlKSkKKyAg
ICAgICAgICAgIHJldHVybiBBcmc6OmluZGV4KGJhc2UsIHRtcChpbmRleC0+Y2hpbGQoMCkpLCBz
Y2FsZSwgb2Zmc2V0LCBNYWNyb0Fzc2VtYmxlcjo6WkV4dDMyKTsKKyAgICAgICAgaWYgKGlzTWVy
Z2VhYmxlVmFsdWUoaW5kZXgsIFNFeHQzMiwgZmFsc2UpKQorICAgICAgICAgICAgcmV0dXJuIEFy
Zzo6aW5kZXgoYmFzZSwgdG1wKGluZGV4LT5jaGlsZCgwKSksIHNjYWxlLCBvZmZzZXQsIE1hY3Jv
QXNzZW1ibGVyOjpTRXh0MzIpOworI2VuZGlmCisgICAgICAgIHJldHVybiBBcmc6OmluZGV4KGJh
c2UsIHRtcChpbmRleCksIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgogICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZhbHVlKiBzaGwsIEludCBvZmZzZXQs
IHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKQEAgLTU0
OSw3ICs1NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJnKCk7
CiAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGluZGV4LT5jaGlsZCgwKSkg
fHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBB
cmcoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbmRleCh0bXAoYmFzZSksIHRtcChp
bmRleC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGluZGV4QXJnKHRtcChiYXNlKSwgaW5kZXgtPmNoaWxkKDApLCAqc2NhbGUsIG9mZnNldCk7CiAg
ICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBpZiAoQXJnIHJlc3VsdCA9IHRyeUluZGV4KGxl
ZnQsIHJpZ2h0KSkKQEAgLTU2MSw3ICs1ODYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IHx8ICFBcmc6OmlzVmFsaWRJbmRleEZvcm0oMSwgb2Zmc2V0LCB3aWR0aCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbGxiYWNrKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVy
biBBcmc6OmluZGV4KHRtcChsZWZ0KSwgdG1wKHJpZ2h0KSwgMSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmRleEFyZyh0bXAobGVmdCksIHJpZ2h0LCAxLCBvZmZzZXQpOwogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBTaGw6IHsKQEAgLTU3NCw3ICs1OTksNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIHx8ICFBcmc6OmlzVmFsaWRJbmRleEZvcm0oMSwgb2Zmc2V0LCB3aWR0
aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrKCk7CiAKLSAgICAgICAgICAgIHJl
dHVybiBBcmc6OmluZGV4KHRtcChsZWZ0KSwgdG1wKGxlZnQpLCAxLCBvZmZzZXQpOworICAgICAg
ICAgICAgcmV0dXJuIGluZGV4QXJnKHRtcChsZWZ0KSwgbGVmdCwgMSwgb2Zmc2V0KTsKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2UgRnJhbWVQb2ludGVyOgpAQCAtNTk0LDcgKzYxOSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAvLyBwZXJoYXBzIG1vcmUgaW1wb3J0YW50bHksIGl0IHdvdWxk
IGFsbG93IHVzIHRvIGF2b2lkIGEgdHJ1bmNhdGluZwogICAgICAgICAgICAgLy8gbW92ZS4gU2Vl
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDY1CiAKLSAgICAg
ICAgICAgIHJldHVybiBBcmc6OmluZGV4KFRtcCh3YXNtQWRkcmVzcy0+cGlubmVkR1BSKCkpLCB0
bXAocG9pbnRlciksIDEsIG9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4gaW5kZXhBcmcoVG1w
KHdhc21BZGRyZXNzLT5waW5uZWRHUFIoKSksIHBvaW50ZXIsIDEsIG9mZnNldCk7CiAgICAgICAg
IH0KIAogICAgICAgICBkZWZhdWx0OgpAQCAtMjExNyw3ICsyMTQyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMoc2hsLT5jaGlsZCgwKSkpOwogICAg
ICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhvdGhlcikpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBhcHBlbmQobGVhT3Bjb2RlLCBBcmc6OmluZGV4KHRtcChvdGhlciksIHRt
cChzaGwtPmNoaWxkKDApKSwgKnNjYWxlLCBvZmZzZXQpLCB0bXAobV92YWx1ZSkpOworICAgICAg
ICAgICAgYXBwZW5kKGxlYU9wY29kZSwgaW5kZXhBcmcodG1wKG90aGVyKSwgc2hsLT5jaGlsZCgw
KSwgKnNjYWxlLCBvZmZzZXQpLCB0bXAobV92YWx1ZSkpOwogICAgICAgICAgICAgY29tbWl0SW50
ZXJuYWwoaW5uZXJBZGQpOwogICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoc2hsKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjEzNCw3ICsyMTU5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyh2
YWx1ZS0+Y2hpbGQoMCkpKTsKICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyh2YWx1
ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKGxlYU9wY29kZSwgQXJnOjppbmRleCh0bXAo
dmFsdWUtPmNoaWxkKDApKSwgdG1wKHZhbHVlLT5jaGlsZCgxKSksIDEsIG9mZnNldCksIHRtcCht
X3ZhbHVlKSk7CisgICAgICAgIGFwcGVuZChsZWFPcGNvZGUsIGluZGV4QXJnKHRtcCh2YWx1ZS0+
Y2hpbGQoMCkpLCB2YWx1ZS0+Y2hpbGQoMSksIDEsIG9mZnNldCksIHRtcChtX3ZhbHVlKSk7CiAg
ICAgICAgIGNvbW1pdEludGVybmFsKGlubmVyQWRkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMjQ5MCwxNSArMjUxNSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb3dlcigpCiAg
ICAgewogICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwotCi0gICAgICAgIGF1dG8gaXNNZXJn
ZWFibGVCM09wY29kZSA9IFsmXSAoVmFsdWUqIHYsIEIzOjpPcGNvZGUgYjNPcGNvZGUpIC0+IGJv
b2wgeyAKLSAgICAgICAgICAgIGlmICh2LT5vcGNvZGUoKSAhPSBiM09wY29kZSB8fCAhY2FuQmVJ
bnRlcm5hbCh2KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBp
ZiAobV9sb2NrZWQuY29udGFpbnModi0+Y2hpbGQoMCkpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9OwotCiAgICAgICAg
IHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKICAgICAgICAgY2FzZSBCMzo6Tm9wOiB7CiAg
ICAgICAgICAgICAvLyBZZXMsIHdlIHdpbGwgdG90YWxseSBzZWUgTm9wJ3MgYmVjYXVzZSBzb21l
IHBoYXNlcyB3aWxsIHJlcGxhY2VXaXRoTm9wKCkgaW5zdGVhZCBvZgpAQCAtMjU5OSwxMCArMjYx
NSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFpck9wY29kZSAh
PSBNdWx0aXBseUFkZDY0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6
Ok9vcHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikg
KiBTRXh0MzIobSkgKyBhCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVC
M09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikgJiYgaXNNZXJnZWFibGVCM09wY29kZShtdWx0
aXBseVJpZ2h0LCBTRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdl
YWJsZVZhbHVlKG11bHRpcGx5TGVmdCwgU0V4dDMyLCB0cnVlKSAmJiBpc01lcmdlYWJsZVZhbHVl
KG11bHRpcGx5UmlnaHQsIFNFeHQzMiwgdHJ1ZSkpIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBNdWx0aXBseUFkZFNpZ25FeHRlbmQzMjsKICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFVNQURETDogZCA9IFpFeHQzMihuKSAqIFpFeHQzMihtKSArIGEKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5TGVmdCwgWkV4dDMy
KSAmJiBpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5UmlnaHQsIFpFeHQzMikpIAorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlMZWZ0LCBaRXh0
MzIsIHRydWUpICYmIGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlSaWdodCwgWkV4dDMyLCB0cnVl
KSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5QWRkWmVyb0V4
dGVuZDMyOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAg
ICAgICAgICAgICAgICAgfTsKQEAgLTI2ODcsMTAgKzI3MDMsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseVN1YjY0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgLy8g
U01TVUJMOiBkID0gYSAtIFNFeHQzMihuKSAqIFNFeHQzMihtKQotICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikgJiYgaXNNZXJn
ZWFibGVCM09wY29kZShtdWx0aXBseVJpZ2h0LCBTRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlMZWZ0LCBTRXh0MzIsIHRydWUpICYmIGlz
TWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlSaWdodCwgU0V4dDMyLCB0cnVlKSkgCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzI7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIFVNU1VCTDogZCA9IGEgLSBaRXh0MzIobikgKiBaRXh0MzIobSkKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlMZWZ0LCBaRXh0
MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwgWkV4dDMyKSkgCisgICAg
ICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZVZhbHVlKG11bHRpcGx5TGVmdCwgWkV4dDMy
LCB0cnVlKSAmJiBpc01lcmdlYWJsZVZhbHVlKG11bHRpcGx5UmlnaHQsIFpFeHQzMiwgdHJ1ZSkp
IAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5U3ViWmVyb0V4dGVuZDMy
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpPb3BzOwogICAgICAgICAgICAgICAg
IH07CkBAIC0yNzY2LDEwICsyNzgyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IGlmIChhaXJPcGNvZGUgIT0gTXVsdGlwbHlOZWc2NCkKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBBaXI6Ok9vcHM7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNNTkVHTDogZCA9IC0o
U0V4dDMyKG4pICogU0V4dDMyKG0pKQotICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFi
bGVCM09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikgJiYgaXNNZXJnZWFibGVCM09wY29kZSht
dWx0aXBseVJpZ2h0LCBTRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2Vh
YmxlVmFsdWUobXVsdGlwbHlMZWZ0LCBTRXh0MzIsIHRydWUpICYmIGlzTWVyZ2VhYmxlVmFsdWUo
bXVsdGlwbHlSaWdodCwgU0V4dDMyLCB0cnVlKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gTXVsdGlwbHlOZWdTaWduRXh0ZW5kMzI7CiAgICAgICAgICAgICAgICAgICAgIC8vIFVN
TkVHTDogZCA9IC0oWkV4dDMyKG4pICogWkV4dDMyKG0pKQotICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseUxlZnQsIFpFeHQzMikgJiYgaXNNZXJnZWFi
bGVCM09wY29kZShtdWx0aXBseVJpZ2h0LCBaRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlMZWZ0LCBaRXh0MzIsIHRydWUpICYmIGlzTWVy
Z2VhYmxlVmFsdWUobXVsdGlwbHlSaWdodCwgWkV4dDMyLCB0cnVlKSkgCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzI7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CiAgICAgICAgICAgICAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFyZy5oCmluZGV4IGNjZWY0NTY4ODAzY2UyNTcyMTMwZTNiZWI3NmMx
MGRlZWI4YTcyNzkuLjk3MTc2YWE0ZTY0MzFjNTYyMmYxZTlhMTBkMDZhMmU2NjUyYzU0NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaApAQCAtNjI5LDcgKzYyOSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFs
dWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KLSAgICBzdGF0aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJh
c2UsIEFpcjo6VG1wIGluZGV4LCB1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCkKKyAgICBzdGF0
aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJhc2UsIEFpcjo6VG1wIGluZGV4LCB1bnNpZ25lZCBzY2Fs
ZSwgSW50IG9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6OkV4dGVuZCBleHRlbmQgPSBNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChiYXNlLmlzR1AoKSk7CiAgICAgICAg
IEFTU0VSVChpbmRleC5pc0dQKCkpOwpAQCAtNjQwLDYgKzY0MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmVzdWx0Lm1faW5kZXggPSBpbmRleDsKICAgICAgICAgcmVzdWx0Lm1fc2NhbGUgPSBzdGF0
aWNfY2FzdDxpbnQzMl90PihzY2FsZSk7CiAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG9mZnNl
dDsKKyAgICAgICAgcmVzdWx0Lm1fZXh0ZW5kID0gZXh0ZW5kOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIApAQCAtMTM3OSw3ICsxMzgwLDcgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQoaXNJbmRleCgpKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
CiAgICAgICAgICAgICBtX2Jhc2UuZ3ByKCksIG1faW5kZXguZ3ByKCksIHN0YXRpY19jYXN0PE1h
Y3JvQXNzZW1ibGVyOjpTY2FsZT4obG9nU2NhbGUoKSksCi0gICAgICAgICAgICBzdGF0aWNfY2Fz
dDxWYWx1ZTo6T2Zmc2V0VHlwZT4obV9vZmZzZXQpKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PFZhbHVlOjpPZmZzZXRUeXBlPihtX29mZnNldCksIG1fZXh0ZW5kKTsKICAgICB9CiAKICAgICBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBhc1JlbGF0aW9uYWxDb25kaXRpb24o
KSBjb25zdApAQCAtMTQ4Nyw2ICsxNDg4LDcgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fc2Nh
bGUgeyAxIH07CiAgICAgQWlyOjpUbXAgbV9iYXNlOwogICAgIEFpcjo6VG1wIG1faW5kZXg7Cisg
ICAgTWFjcm9Bc3NlbWJsZXI6OkV4dGVuZCBtX2V4dGVuZCA9IE1hY3JvQXNzZW1ibGVyOjpFeHRl
bmQ6Ok5vbmU7CiB9OwogCiBzdHJ1Y3QgQXJnSGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmgKaW5kZXggOTg0OGY2M2U4NjlhZjJiM2ZiNTZjNWViMDRhZmUwYmIzNzk3YjAwYy4uM2JlMmNh
YTJlMWNiNjhhNmFhNGFjYzhkMzM0NGIzMDVjYzk1MDc3YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuaApAQCAtODI2LDYgKzgyNiwxMCBAQCB2b2lkIHRlc3RNdWxUcmVlQXJnMzIoaW50MzJf
dCk7CiB2b2lkIHRlc3RBcmcoaW50IGFyZ3VtZW50KTsKIHZvaWQgdGVzdFJldHVybkNvbnN0NjQo
aW50NjRfdCB2YWx1ZSk7CiB2b2lkIHRlc3RSZXR1cm5Wb2lkKCk7Cit2b2lkIHRlc3RMb2FkWmVy
b0V4dGVuZEluZGV4QWRkcmVzcygpOwordm9pZCB0ZXN0TG9hZFNpZ25FeHRlbmRJbmRleEFkZHJl
c3MoKTsKK3ZvaWQgdGVzdFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpOwordm9pZCB0ZXN0
U3RvcmVTaWduRXh0ZW5kSW5kZXhBZGRyZXNzKCk7CiB2b2lkIHRlc3RBZGRBcmcoaW50KTsKIHZv
aWQgdGVzdEFkZEFyZ3MoaW50LCBpbnQpOwogdm9pZCB0ZXN0QWRkQXJnSW1tKGludCwgaW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDE3MWI4Mzc4MTMyNTdmMWQz
ZWMwNjJlOWY2ODc5MWViN2EyZDIwYjUuLmNiMTE3MzM2NjVjZjRlN2U1N2ZlMTEzMjA4ZjE5Njkz
ZDQ1MDcwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApAQCAtMjk3LDYg
KzI5NywzMTQgQEAgdm9pZCB0ZXN0UmV0dXJuVm9pZCgpCiAgICAgY29tcGlsZUFuZFJ1bjx2b2lk
Pihwcm9jKTsKIH0KIAordm9pZCB0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQorewor
ICAgIGlmIChPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byB0ZXN0MzIgPSBbJl0gKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IG51bSwg
aW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGJhc2VWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAg
ICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZVZhbHVlLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5k
ZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcykpOwor
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNB
Uk02NCgpICYmIGFtb3VudCA9PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgi
LipsZHIuKnV4dHcjMi4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29k
ZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50cHRyX3QgYWRk
ciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJm51bSk7CisgICAgICAgIGludHB0cl90IGJhc2Ug
PSBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KGFtb3VudCkpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUs
IGJhc2UsIGluZGV4KSwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGluZGV4IDogaW50
MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQzMk9wZXJhbmRzKCkp
IHsKKyAgICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91bnQgPCAxMDsgKyth
bW91bnQpCisgICAgICAgICAgICAgICAgdGVzdDMyKGluZGV4LnZhbHVlLCBudW0udmFsdWUsIGFt
b3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIHRlc3Q2NCA9IFsmXSAodWludDMy
X3QgaW5kZXgsIGludDY0X3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKwor
ICAgICAgICBWYWx1ZSogYmFzZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1
ZSogaW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBW
YWx1ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmln
aW4oKSwgaW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRk
cmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLCBiYXNlVmFsdWUsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQs
IE9yaWdpbigpLCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2Mo
cHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDMpIHsKKyAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKmxkci4qdXh0dyMzLioiKTsKKyAgICAgICAgICAgIGNo
ZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAg
fQorICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVtKTsK
KyAgICAgICAgaW50cHRyX3QgYmFzZSA9IGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGlu
ZGV4KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSk7CisgICAgICAgIENIRUNLX0VR
KGludm9rZTxpbnQ2NF90PigqY29kZSwgYmFzZSwgaW5kZXgpLCBudW0pOworICAgIH07CisKKyAg
ICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
IG51bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3Vu
dCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0NjQoaW5k
ZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCB0ZXN0TG9hZFNpZ25FeHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIGlmIChPcHRpb25zOjpk
ZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0ZXN0
MzIgPSBbJl0gKGludDMyX3QgaW5kZXgsIGludDMyX3QgbnVtLCBpbnQzMl90IGFtb3VudCkgewor
ICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSogYmFzZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgICAgICBWYWx1ZSogaW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSkpOworICAgICAgICBWYWx1ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU0V4dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAg
ICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlVmFsdWUsIAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJv
YywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09
IDIpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKmxkci4qc3h0dyMyLioiKTsK
KyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0
cnVlKTsKKyAgICAgICAgfQorICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGlu
dHB0cl90PigmbnVtKTsKKyAgICAgICAgaW50cHRyX3QgYmFzZSA9IGFkZHIgLSAoc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSk7Cisg
ICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgYmFzZSwgaW5kZXgpLCBudW0p
OworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgZm9yIChhdXRvIG51bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9y
IChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAg
ICAgICB0ZXN0MzIoaW5kZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGF1dG8gdGVzdDY0ID0gWyZdIChpbnQzMl90IGluZGV4LCBpbnQ2NF90IG51
bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGJhc2VW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAg
ICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZVZhbHVlLCAK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwg
aW5kZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcykp
OworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAo
aXNBUk02NCgpICYmIGFtb3VudCA9PSAzKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdl
eCgiLipsZHIuKnN4dHcjMy4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigq
Y29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50cHRyX3Qg
YWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJm51bSk7CisgICAgICAgIGludHB0cl90IGJh
c2UgPSBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGFtb3VudCkpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oKmNv
ZGUsIGJhc2UsIGluZGV4KSwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGluZGV4IDog
aW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQ2NE9wZXJhbmRz
KCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91bnQgPCAxMDsg
KythbW91bnQpCisgICAgICAgICAgICAgICAgdGVzdDY0KGluZGV4LnZhbHVlLCBudW0udmFsdWUs
IGFtb3VudCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdFN0b3JlWmVyb0V4dGVu
ZEluZGV4QWRkcmVzcygpCit7CisgICAgaWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkg
PCAyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRlc3QzMiA9IFsmXSAodWludDMyX3Qg
aW5kZXgsIGludDMyX3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
ICAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgbnVtKTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBa
RXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAg
IFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEFkZCwgT3JpZ2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwg
YWRkcmVzcyk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgdmFsdWUpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2Mp
OworICAgICAgICBpZiAoaXNBUk02NCgpICYmIGFtb3VudCA9PSAyKSB7CisgICAgICAgICAgICBz
dGQ6OnN0cmluZyByZWdleCgiLipzdHIuKnV4dHcjMi4qIik7CisgICAgICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAg
ICAgICAgaW50MzJfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAgIGludHB0cl90IGFkZHIgPSBi
aXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAgICAgICAgaW52b2tlPGludDMyX3Q+KCpj
b2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGFtb3VudCkpLCBpbmRleCk7CisgICAgICAgIENIRUNLX0VRKHNsb3QsIG51bSk7
CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICBmb3IgKGF1dG8gbnVtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAgICAg
ICAgIHRlc3QzMihpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgYXV0byB0ZXN0NjQgPSBbJl0gKHVpbnQzMl90IGluZGV4LCBpbnQ2NF90IG51
bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSk7Cisg
ICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5k
ZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSog
aW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwg
aW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigp
LCBiYXNlLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBP
cmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsK
KworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlz
QVJNNjQoKSAmJiBhbW91bnQgPT0gMykgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgo
Ii4qc3RyLip1eHR3IzMuKiIpOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNv
ZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIGludDY0X3Qgc2xv
dCA9IDEyMzQxMjM0OworICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0
cl90Pigmc2xvdCk7CisgICAgICAgIGludm9rZTxpbnQ2NF90PigqY29kZSwgYWRkciAtIChzdGF0
aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQp
KSwgaW5kZXgpOworICAgICAgICBDSEVDS19FUShzbG90LCBudW0pOworICAgIH07CisKKyAgICBm
b3IgKGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51
bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9
IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0NjQoaW5kZXgu
dmFsdWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0
ZXN0U3RvcmVTaWduRXh0ZW5kSW5kZXhBZGRyZXNzKCkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZGVm
YXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGVzdDMy
ID0gWyZdIChpbnQzMl90IGluZGV4LCBpbnQzMl90IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSk7CisgICAgICAgIFZhbHVlKiBiYXNlID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgU0V4dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7CisgICAgICAgIFZhbHVl
KiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
bW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCAKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUp
KTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBhbW91bnQgPT0gMikg
eworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qc3RyLipzeHR3IzIuKiIpOworICAg
ICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUp
OworICAgICAgICB9CisgICAgICAgIGludDMyX3Qgc2xvdCA9IDEyMzQxMjM0OworICAgICAgICBp
bnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90Pigmc2xvdCk7CisgICAgICAgIGlu
dm9rZTxpbnQzMl90PigqY29kZSwgYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgp
IDw8IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQpKSwgaW5kZXgpOworICAgICAgICBDSEVD
S19FUShzbG90LCBudW0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3Vu
dCkKKyAgICAgICAgICAgICAgICB0ZXN0MzIoaW5kZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gdGVzdDY0ID0gWyZdIChpbnQzMl90IGlu
ZGV4LCBpbnQ2NF90IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAg
ICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIG51bSk7CisgICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
ICAgICBWYWx1ZSogaW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwor
ICAgICAgICBWYWx1ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU0V4
dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBW
YWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBBZGQsIE9yaWdpbigpLCBiYXNlLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgdmFsdWUsIGFk
ZHJlc3MpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHZhbHVlKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBhbW91bnQgPT0gMykgeworICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgcmVnZXgoIi4qc3RyLipzeHR3IzMuKiIpOworICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAg
ICAgIGludDY0X3Qgc2xvdCA9IDEyMzQxMjM0OworICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0
d2lzZV9jYXN0PGludHB0cl90Pigmc2xvdCk7CisgICAgICAgIGludm9rZTxpbnQ2NF90PigqY29k
ZSwgYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IHN0YXRpY19jYXN0PGlu
dHB0cl90PihhbW91bnQpKSwgaW5kZXgpOworICAgICAgICBDSEVDS19FUShzbG90LCBudW0pOwor
ICAgIH07CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIG51bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChp
bnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAg
ICB0ZXN0NjQoaW5kZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAg
IH0KK30KKwogdm9pZCB0ZXN0QWRkQXJnKGludCBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpA
QCAtNTk0NCw2ICs2MjUyLDExIEBAIHZvaWQgYWRkQml0VGVzdHMoY29uc3QgY2hhciogZmlsdGVy
LCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQogICAgIFJVTl9CSU5B
UlkodGVzdEJpdFhvclRyZWVBcmdJbW0sIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygp
KTsKICAgICBSVU5fVU5BUlkodGVzdEJpdEFuZFRyZWVBcmczMiwgaW50MzJPcGVyYW5kcygpKTsK
ICAgICBSVU5fVU5BUlkodGVzdEJpdE9yVHJlZUFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOworCisg
ICAgUlVOKHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpKTsKKyAgICBSVU4odGVzdExv
YWRTaWduRXh0ZW5kSW5kZXhBZGRyZXNzKCkpOworICAgIFJVTih0ZXN0U3RvcmVaZXJvRXh0ZW5k
SW5kZXhBZGRyZXNzKCkpOworICAgIFJVTih0ZXN0U3RvcmVTaWduRXh0ZW5kSW5kZXhBZGRyZXNz
KCkpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433706</attachid>
            <date>2021-07-16 14:46:40 -0700</date>
            <delta_ts>2021-07-16 15:30:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227970-20210716164639.patch</filename>
            <type>text/plain</type>
            <size>41890</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MDBlY2E1MjFmMDNiNjA4MDEwYzMyZjE1NDZhODcwNDhmZmQ4YzI0Li4wMTBiMTk4YjI4ZDcwYTg4
M2U2ZmM1NDdkMzg2YTRjOGJkODI2NjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDctMTYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBFeHRlbmRUeXBlIHRvIEFpcjo6QXJnIEluZGV4IHRvIGZ1bGx5
IHV0aWxpemUgYWRkcmVzcyBjb21wdXRhdGlvbiBpbiBtZW1vcnkgaW5zdHJ1Y3Rpb24gZm9yIEFS
TTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc5
NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
cGF0dGVybiByZWNvZ25pdGlvbiBvZiBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIHRoZSBpbnN0cnVj
dGlvbnMsIGUuZy4sIExvYWQgCisgICAgICAgIFJlc2lzdG9yIChMRFIpLCBTdG9yZSBSZWdpc3Rl
ciAoU1RSKSwgZXRjLiwgY2FuIGJlbmVmaXQgdGhlIGluc3RydWN0aW9uIHNlbGVjdG9yLgorICAg
ICAgICBUaGVuLCB0aGUgQWlyIG9wZXJhbmQgQmFzZUluZGV4IGNvbnRhaW5pbmcgYmFzZSwgaW5k
ZXgsIGFuZCBzY2FsZSBpcyBpbnRyb2R1Y2VkIAorICAgICAgICB0byBBaXIgb3Bjb2RlLiBIb3dl
dmVyLCB0aGUgPGV4dGVuZD4gb3B0aW9uIG9mIGluZGV4IGFkZHJlc3MgaXMgbm90IGZ1bGx5IGxl
dmVyYWdlZCAKKyAgICAgICAgaW4gdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLiAKKworICAg
ICAgICBUbyBmaWxsIHRoYXQgZ2FwLCB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgbWVtYmVyLCBNYWNy
b0Fzc2VtYmxlcjo6RXh0ZW5kLCB0byB0aGUgY3VycmVudCAKKyAgICAgICAgZGVzaWduIG9mIEJh
c2VJbmRleCB0byB0cmlnZ2VyIHplcm8vc2lnbiBleHRlbnNpb24gb24gdGhlIEluZGV4IGFkZHJl
c3MuIEFuZCB0aGlzIGlzIAorICAgICAgICBlbmFibGVkIGZvciBTdG9yZS9Mb2FkIHdpdGggdmFs
aWQgaW5kZXggYWRkcmVzcyBhbmQgc2hpZnQgYW1vdW50LgorCisgICAgICAgIE1heWJlLCB0aGUg
aWRlYWwgYXBwcm9hY2ggaXMgdG8gaW50cm9kdWNlIGEgZGVjb3JhdG9yIChJbmRleEBFWFQpIHRv
IHRoZSBBaXIgb3BlcmFuZCAKKyAgICAgICAgdG8gcHJvdmlkZSBhbiBleHRlbnNpb24gb3Bwb3J0
dW5pdHkgZm9yIHRoZSBzcGVjaWZpYyBmb3JtIG9mIHRoZSBBaXIgb3Bjb2RlLgorCisgICAgICAg
IExvYWQgUmVnaXN0ZXIgKExEUikgY2FsY3VsYXRlcyBhbiBhZGRyZXNzIGZyb20gYSBiYXNlIHJl
Z2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAgb2Zmc2V0IHJlZ2lzdGVyIHZhbHVlLCBsb2Fk
cyBhIHdvcmQgZnJvbSBtZW1vcnksIGFuZCB3cml0ZXMgaXQgdG8gYSByZWdpc3Rlci4gCisgICAg
ICAgIFRoZSBvZmZzZXQgcmVnaXN0ZXIgdmFsdWUgY2FuIG9wdGlvbmFsbHkgYmUgc2hpZnRlZCBh
bmQgZXh0ZW5kZWQuCisKKyAgICAgICAgR2l2ZW4gQjMgSVI6CisgICAgICAgIEludCBAMCA9IEFy
Z3VtZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAxID0gWi9TRXh0MzIoVHJ1bmMoQXJndW1lbnRS
ZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IHNjYWxlCisgICAgICAgIEludCBAMyA9IFNobChA
MSwgQDIpCisgICAgICAgIEludCBANCA9IEFkZChAMCwgQDMpCisgICAgICAgIEludCBANSA9IExv
YWQoQDQsIENvbnRyb2xEZXBlbmRlbnR8UmVhZHM6VG9wKQorICAgICAgICBWb2lkQDYgPSBSZXR1
cm4oQDUsIFRlcm1pbmFsKQorCisgICAgICAgIC8vIE9sZCBvcHRpbWl6ZWQgQUlSCisgICAgICAg
IE1vdmUgICAgICAgICAgICAgICAleDEsICV4MSwgQDEKKyAgICAgICAgTW92ZSAoJXgwLCV4MSwy
XnNjYWxlKSwgJXgwLCBANQorICAgICAgICBSZXQgICAgICAgICAgICAgICAgJXgwLCAgICAgIEA2
CisKKyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZSAoJXgwLCV4MSwy
XnNjYWxlKSwgJXgwLCBANQorICAgICAgICBSZXQgICAgICAgICAgICAgICAgJXgwLCAgICAgIEA2
CisKKyAgICAgICAgU3RvcmUgUmVnaXN0ZXIgKFNUUikgY2FsY3VsYXRlcyBhbiBhZGRyZXNzIGZy
b20gYSBiYXNlIHJlZ2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAgb2Zmc2V0IHJlZ2lzdGVy
IHZhbHVlLCBhbmQgc3RvcmVzIGEgMzItYml0IHdvcmQgb3IgYSA2NC1iaXQgZG91Ymxld29yZCB0
byB0aGUgCisgICAgICAgIGNhbGN1bGF0ZWQgYWRkcmVzcywgZnJvbSBhIHJlZ2lzdGVyLgorCisg
ICAgICAgIEdpdmVuIEIzIElSOgorICAgICAgICBJbnQgQDAgPSB2YWx1ZQorICAgICAgICBJbnQg
QDEgPSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMiA9IFovU0V4dDMyKFRydW5jKEFy
Z3VtZW50UmVnKCV4MSkpCisgICAgICAgIEludCBAMyA9IHNjYWxlCisgICAgICAgIEludCBANCA9
IFNobChAMiwgQDMpCisgICAgICAgIEludCBANSA9IEFkZChAMSwgQDQpCisgICAgICAgIFZvaWRA
NiA9IFN0b3JlKEAwLCBANSwgQ29udHJvbERlcGVuZGVudHxXcml0ZXM6VG9wKQorICAgICAgICBW
b2lkQDcgPSBSZXR1cm4oQDAsIFRlcm1pbmFsKQorCisgICAgICAgIC8vIE9sZCBvcHRpbWl6ZWQg
QUlSCisgICAgICAgIE1vdmUzMiAgICAleDEsICAgICAgICAgICAgICAgJXgxLCBAMgorICAgICAg
ICBTdG9yZTMyICAleHpyLCAoJXgwLCV4MSwyXnNjYWxlKSwgQDYKKyAgICAgICAgTW92ZSAgICAg
ICAkMCwgICAgICAgICAgICAgICAleDAsIEA3CisgICAgICAgIFJldDMyICAgICAleDAsICAgICAg
ICAgICAgICAgICAgICBANworCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAg
IFN0b3JlMzIgICV4enIsICgleDAsJXgxLDJec2NhbGUpLCBANgorICAgICAgICBNb3ZlICAgICAg
ICQwLCAgICAgICAgICAgICAgICV4MCwgQDcKKyAgICAgICAgUmV0MzIgICAgICV4MCwgICAgICAg
ICAgICAgICAgICAgIEA3CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXg6
OkJhc2VJbmRleCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6aW5kZXhFeHRlbmRUeXBlKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJBUk02NDo6bG9hZDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9h
ZDE2U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmxvYWQ4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDhTaWduZWRF
eHRlbmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmU2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJBUk02NDo6c3RvcmU4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NDo6bG9hZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRG
bG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlRG91YmxlKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVGbG9hdCk6CisgICAgICAg
ICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpB
cmc6OmFzQmFzZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAg
KiBiMy90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJl
c3MpOgorICAgICAgICAodGVzdExvYWRTaWduRXh0ZW5kSW5kZXhBZGRyZXNzKToKKyAgICAgICAg
KHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MpOgorICAgICAgICAodGVzdFN0b3JlU2ln
bkV4dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDct
MTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWxp
YXMgSlNDIGdyYXBoIGR1bXBpbmcgb3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkYzY4M2Yx
ZWFmZDc3M2E2YzIwMjBkNTQzZGE1ZGZlMzYyM2U0Y2Q1Li4zMDlmMTYwOGQzYWQxY2RhYmUxOGEx
YTVlNzUzYzJhMzM3NTM1MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtMTI0LDcgKzEyNCwxMyBA
QCBwdWJsaWM6CiAgICAgICAgIFRpbWVzRWlnaHQsCiAgICAgICAgIFNjYWxlUHRyID0gaXNBZGRy
ZXNzNjRCaXQoKSA/IFRpbWVzRWlnaHQgOiBUaW1lc0ZvdXIsCiAgICAgfTsKLSAgICAKKworICAg
IGVudW0gRXh0ZW5kIDogdWludDhfdCB7CisgICAgICAgIFpFeHQzMiwKKyAgICAgICAgU0V4dDMy
LAorICAgICAgICBOb25lCisgICAgfTsKKwogICAgIHN0cnVjdCBCYXNlSW5kZXg7CiAgICAgCiAg
ICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBwZWRSZWdpc3RlcihSZWdpc3RlcklEIG9yaWdp
bmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBAIC0yMTAsMTggKzIxNiwy
MyBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBEZXNjcmliZXMgYSBjb21wbGV4IGFkZHJlc3Np
bmcgbW9kZS4KICAgICBzdHJ1Y3QgQmFzZUluZGV4IHsKLSAgICAgICAgQmFzZUluZGV4KFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0
ID0gMCkKKyAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRl
eCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCwgRXh0ZW5kIGV4dGVuZCA9IE5vbmUp
CiAgICAgICAgICAgICA6IGJhc2UoYmFzZSkKICAgICAgICAgICAgICwgaW5kZXgoaW5kZXgpCiAg
ICAgICAgICAgICAsIHNjYWxlKHNjYWxlKQogICAgICAgICAgICAgLCBvZmZzZXQob2Zmc2V0KQor
ICAgICAgICAgICAgLCBleHRlbmQoZXh0ZW5kKQogICAgICAgICB7CisjaWYgQ1BVKFg4NikgfHwg
Q1BVKFg4Nl82NCkKKyAgICAgICAgICAgIEFTU0VSVChleHRlbmQgPT0gTm9uZSk7CisjZW5kaWYK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCBiYXNlOwogICAgICAgICBS
ZWdpc3RlcklEIGluZGV4OwogICAgICAgICBTY2FsZSBzY2FsZTsKICAgICAgICAgaW50MzJfdCBv
ZmZzZXQ7CisgICAgICAgIEV4dGVuZCBleHRlbmQ7CiAgICAgICAgIAogICAgICAgICBCYXNlSW5k
ZXggd2l0aE9mZnNldChpbnQzMl90IGFkZGl0aW9uYWxPZmZzZXQpCiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKaW5kZXggNGE5MGU1YTFmZGU0OGNjZmM0N2E3Mjc0OWU1ODVmN2QwMjRlMWNjNS4uZmY4Y2Fm
YjdiYWM1OGQ3MjBjMTYyNzIyNmY3YWRhZWExMmRiZjEwNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTEzNjcs
NiArMTM2NywxNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gTWVtb3J5IGFjY2VzcyBvcGVy
YXRpb25zOgorICAgIEFzc2VtYmxlcjo6RXh0ZW5kVHlwZSBpbmRleEV4dGVuZFR5cGUoQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBzd2l0Y2ggKGFkZHJlc3MuZXh0ZW5kKSB7Cisg
ICAgICAgIGNhc2UgWkV4dDMyOgorICAgICAgICAgICAgcmV0dXJuIEFzc2VtYmxlcjo6VVhUVzsK
KyAgICAgICAgY2FzZSBTRXh0MzI6CisgICAgICAgICAgICByZXR1cm4gQXNzZW1ibGVyOjpTWFRX
OworICAgICAgICBjYXNlIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gQXNzZW1ibGVyOjpVWFRY
OworICAgICAgICB9CisgICAgfQogCiAgICAgdm9pZCBsb2FkNjQoSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC0xMzgwLDEyICsxMzkxLDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGxvYWQ2NChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUg
fHwgYWRkcmVzcy5zY2FsZSA9PSAzKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0
PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNz
LnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25F
eHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9y
eVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRl
eCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5p
bmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAg
bV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rl
cik7CiAgICAgfQogCkBAIC0xNDc5LDEyICsxNDkwLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxv
YWQzMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
aWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9
PSAyKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0
ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVn
aXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRY
LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1w
UmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRU
eXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMy
PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0x
NTI2LDEyICsxNTM3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQxNihCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNl
dCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAxKSkgewotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubGRyaChkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFz
c2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJoKGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFk
ZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCks
IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdp
c3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNj
YWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyaChkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9y
eVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0xNTcwLDEyICsxNTgxLDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRy
ZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMSkpIHsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmxkcnNoPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxl
cjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJzaDwz
Mj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRk
cmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwg
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBt
X2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAg
ICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2Nh
bGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHJzaDwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBt
ZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTYwMSwxMiArMTYxMiwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb2FkOChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAhYWRkcmVzcy5zY2FsZSkgewot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyYihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5sZHJiKGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRl
bmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNz
Lm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRl
bXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxl
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9y
eVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBh
ZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyYihkZXN0LCBhZGRyZXNzLmJh
c2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogICAgIApAQCAtMTYzNSwxMiArMTY0Niwx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoQmFzZUluZGV4IGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZz
ZXQgJiYgIWFkZHJlc3Muc2NhbGUpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcnNiPDMy
PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRk
cmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJzYjwzMj4oZGVzdCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJl
c3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2ln
bkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVt
b3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5h
ZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmlu
ZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxl
ci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNz
LmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAg
ICBtX2Fzc2VtYmxlci5sZHJzYjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVn
aXN0ZXIpOwogICAgIH0KIApAQCAtMTY3NCwxMiArMTY4NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdG9yZTY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAg
ICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2Nh
bGUgPT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1
c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBS
ZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVY
VFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRl
bXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVu
ZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHI8
NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KICAgICAK
QEAgLTE3ODEsMTIgKzE3OTIsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmUzMihSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mu
b2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDIpKSB7Ci0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRl
bmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNz
Lm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRl
bXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxl
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9y
eVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBh
ZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3Mu
YmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAgLTE4NDgsMTIgKzE4NTksMTIg
QEAgcHVibGljOgogICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFk
ZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5z
Y2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDEpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5z
dHJoKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFk
ZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyaChzcmMsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNj
YWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRl
bmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwg
QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRl
eCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9h
c3NlbWJsZXIuc3RyaChzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAg
ICB9CiAKQEAgLTE4NzYsMTIgKzE4ODcsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmU4KFJl
Z2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRk
cmVzcy5vZmZzZXQgJiYgIWFkZHJlc3Muc2NhbGUpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Mu
c2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4
dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8
NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4
LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5h
ZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmlu
ZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBt
X2Fzc2VtYmxlci5zdHJiKHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwog
ICAgIH0KIApAQCAtMjE4OSwxMiArMjIwMCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkRG91
YmxlKEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUg
PT0gMykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2ND4oZGVzdCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVz
dGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJl
Z2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhU
WCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVt
cFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5k
VHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2
ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KICAgICAK
QEAgLTIyMTYsMTIgKzIyMjcsMTIgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZsb2F0KEJhc2VJ
bmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRk
cmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMikpIHsK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGlu
ZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIo
YWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBt
ZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVy
LCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRy
ZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwg
YWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMjQ3MywxMiAr
MjQ4NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQg
JiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMykpIHsKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFz
c2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5z
dHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUo
YWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0
KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAg
ICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJl
Z2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Mu
c2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBt
ZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMjQ5NCwxMiArMjUwNSwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdG9yZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRy
ZXNzKQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2Nh
bGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Ry
PDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBh
ZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVz
cy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWdu
RXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFk
ZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5k
ZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
aW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rl
cik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmlu
ZGV4IDhmYzFhZmMyYTUzOTFmNDU2NWMzZDNkOThmN2EwZjc2NDgzNjIzZGEuLmI0NzE5MmFkMWVm
MDg4ODMxYTBjZTlkMzA3ZGE4ZTIwODRlNzE5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCkBAIC00OTksNiArNDk5LDMxIEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGJvb2wgaXNNZXJnZWFibGVWYWx1ZShWYWx1ZSog
diwgQjM6Ok9wY29kZSBiM09wY29kZSwgYm9vbCBjaGVja0NhbkJlSW50ZXJuYWwpCisgICAgeyAK
KyAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IGIzT3Bjb2RlKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoY2hlY2tDYW5CZUludGVybmFsICYmICFjYW5CZUludGVybmFs
KHYpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV9sb2NrZWQuY29u
dGFpbnModi0+Y2hpbGQoMCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1l
ID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KKyAgICBBcmcgaW5kZXhBcmcoVG1wIGJhc2Us
IFZhbHVlKiBpbmRleCwgdW5zaWduZWQgc2NhbGUsIEludCBvZmZzZXQpCisgICAgeworI2lmIENQ
VShBUk02NCkKKyAgICAgICAgLy8gTWF5YmUsIHRoZSBpZGVhbCBhcHByb2FjaCBpcyB0byBpbnRy
b2R1Y2UgYSBkZWNvcmF0b3IgKEluZGV4QEVYVCkgdG8gdGhlIEFpciBvcGVyYW5kIAorICAgICAg
ICAvLyB0byBwcm92aWRlIGFuIGV4dGVuc2lvbiBvcHBvcnR1bml0eSBmb3IgdGhlIHNwZWNpZmlj
IGZvcm0gdW5kZXIgdGhlIEFpciBvcGNvZGUuCisgICAgICAgIGlmIChpc01lcmdlYWJsZVZhbHVl
KGluZGV4LCBaRXh0MzIsIGZhbHNlKSkKKyAgICAgICAgICAgIHJldHVybiBBcmc6OmluZGV4KGJh
c2UsIHRtcChpbmRleC0+Y2hpbGQoMCkpLCBzY2FsZSwgb2Zmc2V0LCBNYWNyb0Fzc2VtYmxlcjo6
WkV4dDMyKTsKKyAgICAgICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUoaW5kZXgsIFNFeHQzMiwgZmFs
c2UpKQorICAgICAgICAgICAgcmV0dXJuIEFyZzo6aW5kZXgoYmFzZSwgdG1wKGluZGV4LT5jaGls
ZCgwKSksIHNjYWxlLCBvZmZzZXQsIE1hY3JvQXNzZW1ibGVyOjpTRXh0MzIpOworI2VuZGlmCisg
ICAgICAgIHJldHVybiBBcmc6OmluZGV4KGJhc2UsIHRtcChpbmRleCksIHNjYWxlLCBvZmZzZXQp
OworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6
SXNMZWdhbE9mZnNldDxJbnQ+PgogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9y
U2hsKFZhbHVlKiBzaGwsIEludCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0g
c3RkOjpudWxsb3B0KQogICAgIHsKQEAgLTU0OSw3ICs1NzQsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2Vk
LmNvbnRhaW5zKGluZGV4LT5jaGlsZCgwKSkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBBcmcoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
QXJnOjppbmRleCh0bXAoYmFzZSksIHRtcChpbmRleC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNl
dCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4QXJnKHRtcChiYXNlKSwgaW5kZXgtPmNo
aWxkKDApLCAqc2NhbGUsIG9mZnNldCk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBp
ZiAoQXJnIHJlc3VsdCA9IHRyeUluZGV4KGxlZnQsIHJpZ2h0KSkKQEAgLTU2MSw3ICs1ODYsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHx8ICFBcmc6OmlzVmFsaWRJbmRleEZvcm0oMSwg
b2Zmc2V0LCB3aWR0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrKCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBBcmc6OmluZGV4KHRtcChsZWZ0KSwgdG1wKHJp
Z2h0KSwgMSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBpbmRleEFyZyh0bXAobGVmdCks
IHJpZ2h0LCAxLCBvZmZzZXQpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTaGw6IHsKQEAg
LTU3NCw3ICs1OTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHx8ICFBcmc6OmlzVmFs
aWRJbmRleEZvcm0oMSwgb2Zmc2V0LCB3aWR0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bGxiYWNrKCk7CiAKLSAgICAgICAgICAgIHJldHVybiBBcmc6OmluZGV4KHRtcChsZWZ0KSwgdG1w
KGxlZnQpLCAxLCBvZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIGluZGV4QXJnKHRtcChsZWZ0
KSwgbGVmdCwgMSwgb2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgRnJhbWVQb2lu
dGVyOgpAQCAtNTk0LDcgKzYxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBwZXJoYXBz
IG1vcmUgaW1wb3J0YW50bHksIGl0IHdvdWxkIGFsbG93IHVzIHRvIGF2b2lkIGEgdHJ1bmNhdGlu
ZwogICAgICAgICAgICAgLy8gbW92ZS4gU2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYzNDY1CiAKLSAgICAgICAgICAgIHJldHVybiBBcmc6OmluZGV4KFRtcCh3
YXNtQWRkcmVzcy0+cGlubmVkR1BSKCkpLCB0bXAocG9pbnRlciksIDEsIG9mZnNldCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5kZXhBcmcoVG1wKHdhc21BZGRyZXNzLT5waW5uZWRHUFIoKSksIHBv
aW50ZXIsIDEsIG9mZnNldCk7CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgpAQCAtMjEx
Nyw3ICsyMTQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29u
dGFpbnMoc2hsLT5jaGlsZCgwKSkpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250
YWlucyhvdGhlcikpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBhcHBlbmQobGVhT3Bjb2Rl
LCBBcmc6OmluZGV4KHRtcChvdGhlciksIHRtcChzaGwtPmNoaWxkKDApKSwgKnNjYWxlLCBvZmZz
ZXQpLCB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgYXBwZW5kKGxlYU9wY29kZSwgaW5kZXhB
cmcodG1wKG90aGVyKSwgc2hsLT5jaGlsZCgwKSwgKnNjYWxlLCBvZmZzZXQpLCB0bXAobV92YWx1
ZSkpOwogICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoaW5uZXJBZGQpOwogICAgICAgICAgICAg
Y29tbWl0SW50ZXJuYWwoc2hsKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjEzNCw3
ICsyMTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
QVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyh2YWx1ZS0+Y2hpbGQoMCkpKTsKICAgICAgICAgQVNT
RVJUKCFtX2xvY2tlZC5jb250YWlucyh2YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5k
KGxlYU9wY29kZSwgQXJnOjppbmRleCh0bXAodmFsdWUtPmNoaWxkKDApKSwgdG1wKHZhbHVlLT5j
aGlsZCgxKSksIDEsIG9mZnNldCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgIGFwcGVuZChsZWFP
cGNvZGUsIGluZGV4QXJnKHRtcCh2YWx1ZS0+Y2hpbGQoMCkpLCB2YWx1ZS0+Y2hpbGQoMSksIDEs
IG9mZnNldCksIHRtcChtX3ZhbHVlKSk7CiAgICAgICAgIGNvbW1pdEludGVybmFsKGlubmVyQWRk
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjQ5MCwxNSArMjUxNSw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBsb3dlcigpCiAgICAgewogICAgICAgICB1c2luZyBuYW1lc3BhY2Ug
QWlyOwotCi0gICAgICAgIGF1dG8gaXNNZXJnZWFibGVCM09wY29kZSA9IFsmXSAoVmFsdWUqIHYs
IEIzOjpPcGNvZGUgYjNPcGNvZGUpIC0+IGJvb2wgeyAKLSAgICAgICAgICAgIGlmICh2LT5vcGNv
ZGUoKSAhPSBiM09wY29kZSB8fCAhY2FuQmVJbnRlcm5hbCh2KSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnModi0+Y2hpbGQo
MCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9OwotCiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsK
ICAgICAgICAgY2FzZSBCMzo6Tm9wOiB7CiAgICAgICAgICAgICAvLyBZZXMsIHdlIHdpbGwgdG90
YWxseSBzZWUgTm9wJ3MgYmVjYXVzZSBzb21lIHBoYXNlcyB3aWxsIHJlcGxhY2VXaXRoTm9wKCkg
aW5zdGVhZCBvZgpAQCAtMjU5OSwxMCArMjYxNSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseUFkZDY0KQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBhCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikg
JiYgaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseVJpZ2h0LCBTRXh0MzIpKSAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZVZhbHVlKG11bHRpcGx5TGVmdCwgU0V4dDMy
LCB0cnVlKSAmJiBpc01lcmdlYWJsZVZhbHVlKG11bHRpcGx5UmlnaHQsIFNFeHQzMiwgdHJ1ZSkp
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNdWx0aXBseUFkZFNpZ25FeHRl
bmQzMjsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVNQURETDogZCA9IFpFeHQzMihuKSAq
IFpFeHQzMihtKSArIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZUIz
T3Bjb2RlKG11bHRpcGx5TGVmdCwgWkV4dDMyKSAmJiBpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRp
cGx5UmlnaHQsIFpFeHQzMikpIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2Vh
YmxlVmFsdWUobXVsdGlwbHlMZWZ0LCBaRXh0MzIsIHRydWUpICYmIGlzTWVyZ2VhYmxlVmFsdWUo
bXVsdGlwbHlSaWdodCwgWkV4dDMyLCB0cnVlKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIE11bHRpcGx5QWRkWmVyb0V4dGVuZDMyOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgfTsKQEAgLTI2ODcsMTAg
KzI3MDMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgKGFpck9wY29kZSAh
PSBNdWx0aXBseVN1YjY0KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29w
czsKICAgICAgICAgICAgICAgICAgICAgLy8gU01TVUJMOiBkID0gYSAtIFNFeHQzMihuKSAqIFNF
eHQzMihtKQotICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVCM09wY29kZShtdWx0
aXBseUxlZnQsIFNFeHQzMikgJiYgaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseVJpZ2h0LCBT
RXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlw
bHlMZWZ0LCBTRXh0MzIsIHRydWUpICYmIGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlSaWdodCwg
U0V4dDMyLCB0cnVlKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlT
dWJTaWduRXh0ZW5kMzI7CiAgICAgICAgICAgICAgICAgICAgIC8vIFVNU1VCTDogZCA9IGEgLSBa
RXh0MzIobikgKiBaRXh0MzIobSkKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxl
QjNPcGNvZGUobXVsdGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVs
dGlwbHlSaWdodCwgWkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJs
ZVZhbHVlKG11bHRpcGx5TGVmdCwgWkV4dDMyLCB0cnVlKSAmJiBpc01lcmdlYWJsZVZhbHVlKG11
bHRpcGx5UmlnaHQsIFpFeHQzMiwgdHJ1ZSkpIAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE11bHRpcGx5U3ViWmVyb0V4dGVuZDMyOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
QWlyOjpPb3BzOwogICAgICAgICAgICAgICAgIH07CkBAIC0yNzY2LDEwICsyNzgyLDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIChhaXJPcGNvZGUgIT0gTXVsdGlwbHlOZWc2
NCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIFNNTkVHTDogZCA9IC0oU0V4dDMyKG4pICogU0V4dDMyKG0pKQotICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQz
MikgJiYgaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseVJpZ2h0LCBTRXh0MzIpKSAKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlMZWZ0LCBTRXh0MzIs
IHRydWUpICYmIGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlSaWdodCwgU0V4dDMyLCB0cnVlKSkg
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlOZWdTaWduRXh0ZW5kMzI7
CiAgICAgICAgICAgICAgICAgICAgIC8vIFVNTkVHTDogZCA9IC0oWkV4dDMyKG4pICogWkV4dDMy
KG0pKQotICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBs
eUxlZnQsIFpFeHQzMikgJiYgaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseVJpZ2h0LCBaRXh0
MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlM
ZWZ0LCBaRXh0MzIsIHRydWUpICYmIGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlSaWdodCwgWkV4
dDMyLCB0cnVlKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlOZWda
ZXJvRXh0ZW5kMzI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CiAgICAg
ICAgICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCmluZGV4IGNj
ZWY0NTY4ODAzY2UyNTcyMTMwZTNiZWI3NmMxMGRlZWI4YTcyNzkuLjliMzFjNjk0NzU5Yzc1NDg2
OTFhY2VhMjg5NWFkOGIxZGM3NzJiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuaApAQCAtNjI5LDcgKzYyOSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KLSAgICBz
dGF0aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJhc2UsIEFpcjo6VG1wIGluZGV4LCB1bnNpZ25lZCBz
Y2FsZSwgSW50IG9mZnNldCkKKyAgICBzdGF0aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJhc2UsIEFp
cjo6VG1wIGluZGV4LCB1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6
OkV4dGVuZCBleHRlbmQgPSBNYWNyb0Fzc2VtYmxlcjo6Tm9uZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChiYXNlLmlzR1AoKSk7CiAgICAgICAgIEFTU0VSVChpbmRleC5pc0dQKCkpOwpAQCAtNjQw
LDYgKzY0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1faW5kZXggPSBpbmRleDsKICAg
ICAgICAgcmVzdWx0Lm1fc2NhbGUgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihzY2FsZSk7CiAgICAg
ICAgIHJlc3VsdC5tX29mZnNldCA9IG9mZnNldDsKKyAgICAgICAgcmVzdWx0Lm1fZXh0ZW5kID0g
ZXh0ZW5kOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMTM3OSw3ICsxMzgw
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNJbmRleCgpKTsKICAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCiAgICAgICAgICAgICBtX2Jhc2UuZ3ByKCksIG1f
aW5kZXguZ3ByKCksIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTY2FsZT4obG9nU2NhbGUo
KSksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4obV9vZmZzZXQp
KTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihtX29mZnNldCks
IG1fZXh0ZW5kKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRp
dGlvbiBhc1JlbGF0aW9uYWxDb25kaXRpb24oKSBjb25zdApAQCAtMTQ4NCw2ICsxNDg1LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBpbnQ2NF90IG1fb2Zmc2V0IHsgMCB9OwogICAgIEtpbmQg
bV9raW5kIHsgSW52YWxpZCB9OworICAgIE1hY3JvQXNzZW1ibGVyOjpFeHRlbmQgbV9leHRlbmQg
eyBNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kOjpOb25lIH07CiAgICAgaW50MzJfdCBtX3NjYWxlIHsg
MSB9OwogICAgIEFpcjo6VG1wIG1fYmFzZTsKICAgICBBaXI6OlRtcCBtX2luZGV4OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IDk4NDhmNjNlODY5YWYyYjNmYjU2YzVlYjA0YWZlMGJi
Mzc5N2IwMGMuLjNiZTJjYWEyZTFjYjY4YTZhYTRhY2M4ZDMzNDRiMzA1Y2M5NTA3N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTgyNiw2ICs4MjYsMTAgQEAgdm9pZCB0ZXN0TXVs
VHJlZUFyZzMyKGludDMyX3QpOwogdm9pZCB0ZXN0QXJnKGludCBhcmd1bWVudCk7CiB2b2lkIHRl
c3RSZXR1cm5Db25zdDY0KGludDY0X3QgdmFsdWUpOwogdm9pZCB0ZXN0UmV0dXJuVm9pZCgpOwor
dm9pZCB0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MoKTsKK3ZvaWQgdGVzdExvYWRTaWdu
RXh0ZW5kSW5kZXhBZGRyZXNzKCk7Cit2b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJl
c3MoKTsKK3ZvaWQgdGVzdFN0b3JlU2lnbkV4dGVuZEluZGV4QWRkcmVzcygpOwogdm9pZCB0ZXN0
QWRkQXJnKGludCk7CiB2b2lkIHRlc3RBZGRBcmdzKGludCwgaW50KTsKIHZvaWQgdGVzdEFkZEFy
Z0ltbShpbnQsIGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAppbmRleCAx
NzFiODM3ODEzMjU3ZjFkM2VjMDYyZTlmNjg3OTFlYjdhMmQyMGI1Li5jYjExNzMzNjY1Y2Y0ZTdl
NTdmZTExMzIwOGYxOTY5M2Q0NTA3MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzXzIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
Mi5jcHAKQEAgLTI5Nyw2ICsyOTcsMzE0IEBAIHZvaWQgdGVzdFJldHVyblZvaWQoKQogICAgIGNv
bXBpbGVBbmRSdW48dm9pZD4ocHJvYyk7CiB9CiAKK3ZvaWQgdGVzdExvYWRaZXJvRXh0ZW5kSW5k
ZXhBZGRyZXNzKCkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGVzdDMyID0gWyZdICh1aW50MzJfdCBpbmRl
eCwgaW50MzJfdCBudW0sIGludDMyX3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAg
IFZhbHVlKiBiYXNlVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRl
eDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBp
bmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBp
bmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
IGJhc2VWYWx1ZSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNo
bCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2lu
KCksIGFkZHJlc3MpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBhbW91bnQgPT0gMikgeworICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgcmVnZXgoIi4qbGRyLip1eHR3IzIuKiIpOworICAgICAgICAgICAgY2hlY2tVc2Vz
SW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAg
ICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZudW0pOworICAgICAg
ICBpbnRwdHJfdCBiYXNlID0gYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8
IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQpKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tl
PGludDMyX3Q+KCpjb2RlLCBiYXNlLCBpbmRleCksIG51bSk7CisgICAgfTsKKworICAgIGZvciAo
YXV0byBpbmRleCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbnVtIDog
aW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGludDMyX3QgYW1vdW50ID0gMDsg
YW1vdW50IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAgICAgICAgIHRlc3QzMihpbmRleC52YWx1
ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byB0ZXN0
NjQgPSBbJl0gKHVpbnQzMl90IGluZGV4LCBpbnQ2NF90IG51bSwgaW50MzJfdCBhbW91bnQpIHsK
KyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGJhc2VWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAgICBWYWx1ZSogc2NhbGUgPSBy
b290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKyAg
ICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZVZhbHVlLCAKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUpKTsKKwor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcykpOworCisgICAgICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpICYmIGFtb3VudCA9
PSAzKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLipsZHIuKnV4dHcjMy4qIik7
CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwg
dHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50cHRyX3QgYWRkciA9IGJpdHdpc2VfY2FzdDxp
bnRwdHJfdD4oJm51bSk7CisgICAgICAgIGludHB0cl90IGJhc2UgPSBhZGRyIC0gKHN0YXRpY19j
YXN0PGludHB0cl90PihpbmRleCkgPDwgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFtb3VudCkpOwor
ICAgICAgICBDSEVDS19FUShpbnZva2U8aW50NjRfdD4oKmNvZGUsIGJhc2UsIGluZGV4KSwgbnVt
KTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGluZGV4IDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91bnQgPCAxMDsgKythbW91bnQpCisgICAgICAgICAg
ICAgICAgdGVzdDY0KGluZGV4LnZhbHVlLCBudW0udmFsdWUsIGFtb3VudCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdExvYWRTaWduRXh0ZW5kSW5kZXhBZGRyZXNzKCkKK3sKKyAg
ICBpZiAoT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gdGVzdDMyID0gWyZdIChpbnQzMl90IGluZGV4LCBpbnQzMl90IG51bSwgaW50
MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGJhc2VWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAgICBW
YWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZVZhbHVlLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2
NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcykpOworCisg
ICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02
NCgpICYmIGFtb3VudCA9PSAyKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleCgiLips
ZHIuKnN4dHcjMi4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
cmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50cHRyX3QgYWRkciA9
IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJm51bSk7CisgICAgICAgIGludHB0cl90IGJhc2UgPSBh
ZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KGFtb3VudCkpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50MzJfdD4oKmNvZGUsIGJh
c2UsIGluZGV4KSwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGluZGV4IDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQzMk9wZXJhbmRzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91bnQgPCAxMDsgKythbW91
bnQpCisgICAgICAgICAgICAgICAgdGVzdDMyKGluZGV4LnZhbHVlLCBudW0udmFsdWUsIGFtb3Vu
dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIHRlc3Q2NCA9IFsmXSAoaW50MzJfdCBp
bmRleCwgaW50NjRfdCBudW0sIGludDMyX3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
ICAgIFZhbHVlKiBiYXNlVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBp
bmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVl
KiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTRXh0MzIsIE9yaWdpbigp
LCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNz
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksIGJhc2VWYWx1ZSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3Jp
Z2luKCksIGFkZHJlc3MpKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9j
KTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBhbW91bnQgPT0gMykgeworICAgICAgICAgICAg
c3RkOjpzdHJpbmcgcmVnZXgoIi4qbGRyLipzeHR3IzMuKiIpOworICAgICAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9Cisg
ICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZudW0pOworICAg
ICAgICBpbnRwdHJfdCBiYXNlID0gYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgp
IDw8IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQpKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludDY0X3Q+KCpjb2RlLCBiYXNlLCBpbmRleCksIG51bSk7CisgICAgfTsKKworICAgIGZv
ciAoYXV0byBpbmRleCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbnVt
IDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGludDMyX3QgYW1vdW50ID0g
MDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAgICAgICAgIHRlc3Q2NChpbmRleC52
YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRl
c3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIGlmIChPcHRpb25zOjpkZWZh
dWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0ZXN0MzIg
PSBbJl0gKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAg
ICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSk7CisgICAgICAgIFZhbHVlKiBiYXNlID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7CisgICAgICAgIFZhbHVl
KiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
bW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlLCAKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUp
KTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsKKworICAgICAgICBhdXRvIGNvZGUgPSBj
b21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSAmJiBhbW91bnQgPT0gMikg
eworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoIi4qc3RyLip1eHR3IzIuKiIpOworICAg
ICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUp
OworICAgICAgICB9CisgICAgICAgIGludDMyX3Qgc2xvdCA9IDEyMzQxMjM0OworICAgICAgICBp
bnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90Pigmc2xvdCk7CisgICAgICAgIGlu
dm9rZTxpbnQzMl90PigqY29kZSwgYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgp
IDw8IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQpKSwgaW5kZXgpOworICAgICAgICBDSEVD
S19FUShzbG90LCBudW0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3Vu
dCkKKyAgICAgICAgICAgICAgICB0ZXN0MzIoaW5kZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gdGVzdDY0ID0gWyZdICh1aW50MzJfdCBp
bmRleCwgaW50NjRfdCBudW0sIGludDMyX3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAg
ICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCBudW0pOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpF
eHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKyAgICAgICAg
VmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQWRkLCBPcmlnaW4oKSwgYmFzZSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHZhbHVlLCBh
ZGRyZXNzKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCB2YWx1ZSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7
CisgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDMpIHsKKyAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIHJlZ2V4KCIuKnN0ci4qdXh0dyMzLioiKTsKKyAgICAgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAg
ICAgICBpbnQ2NF90IHNsb3QgPSAxMjM0MTIzNDsKKyAgICAgICAgaW50cHRyX3QgYWRkciA9IGJp
dHdpc2VfY2FzdDxpbnRwdHJfdD4oJnNsb3QpOworICAgICAgICBpbnZva2U8aW50NjRfdD4oKmNv
ZGUsIGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oYW1vdW50KSksIGluZGV4KTsKKyAgICAgICAgQ0hFQ0tfRVEoc2xvdCwgbnVtKTsK
KyAgICB9OworCisgICAgZm9yIChhdXRvIGluZGV4IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAg
ICAgIGZvciAoYXV0byBudW0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAo
aW50MzJfdCBhbW91bnQgPSAwOyBhbW91bnQgPCAxMDsgKythbW91bnQpCisgICAgICAgICAgICAg
ICAgdGVzdDY0KGluZGV4LnZhbHVlLCBudW0udmFsdWUsIGFtb3VudCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgdGVzdFN0b3JlU2lnbkV4dGVuZEluZGV4QWRkcmVzcygpCit7CisgICAg
aWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIHRlc3QzMiA9IFsmXSAoaW50MzJfdCBpbmRleCwgaW50MzJfdCBudW0sIGludDMy
X3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBudW0pOworICAgICAgICBW
YWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIp
OworICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCks
IGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1ZSk7CisKKyAgICAg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkg
JiYgYW1vdW50ID09IDIpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKnN0ci4q
c3h0dyMyLioiKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdl
eC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBpbnQzMl90IHNsb3QgPSAxMjM0
MTIzNDsKKyAgICAgICAgaW50cHRyX3QgYWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJnNs
b3QpOworICAgICAgICBpbnZva2U8aW50MzJfdD4oKmNvZGUsIGFkZHIgLSAoc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGluZGV4KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSksIGluZGV4
KTsKKyAgICAgICAgQ0hFQ0tfRVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRv
IGluZGV4IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQz
Mk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91
bnQgPCAxMDsgKythbW91bnQpCisgICAgICAgICAgICAgICAgdGVzdDMyKGluZGV4LnZhbHVlLCBu
dW0udmFsdWUsIGFtb3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIHRlc3Q2NCA9
IFsmXSAoaW50MzJfdCBpbmRleCwgaW50NjRfdCBudW0sIGludDMyX3QgYW1vdW50KSB7CisgICAg
ICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworCisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBudW0pOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAgICBWYWx1ZSog
c2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1v
dW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwgCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7
CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3Jp
Z2luKCksIHZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1ZSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29t
cGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkgJiYgYW1vdW50ID09IDMpIHsK
KyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KCIuKnN0ci4qc3h0dyMzLioiKTsKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsK
KyAgICAgICAgfQorICAgICAgICBpbnQ2NF90IHNsb3QgPSAxMjM0MTIzNDsKKyAgICAgICAgaW50
cHRyX3QgYWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJnNsb3QpOworICAgICAgICBpbnZv
a2U8aW50NjRfdD4oKmNvZGUsIGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8
PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSksIGluZGV4KTsKKyAgICAgICAgQ0hFQ0tf
RVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGluZGV4IDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91bnQgPCAxMDsgKythbW91bnQp
CisgICAgICAgICAgICAgICAgdGVzdDY0KGluZGV4LnZhbHVlLCBudW0udmFsdWUsIGFtb3VudCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEFkZEFyZyhpbnQgYSkKIHsKICAgICBQ
cm9jZWR1cmUgcHJvYzsKQEAgLTU5NDQsNiArNjI1MiwxMSBAQCB2b2lkIGFkZEJpdFRlc3RzKGNv
bnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNr
cykKICAgICBSVU5fQklOQVJZKHRlc3RCaXRYb3JUcmVlQXJnSW1tLCBpbnQ2NE9wZXJhbmRzKCks
IGludDY0T3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RCaXRBbmRUcmVlQXJnMzIsIGlu
dDMyT3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RCaXRPclRyZWVBcmczMiwgaW50MzJP
cGVyYW5kcygpKTsKKworICAgIFJVTih0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MoKSk7
CisgICAgUlVOKHRlc3RMb2FkU2lnbkV4dGVuZEluZGV4QWRkcmVzcygpKTsKKyAgICBSVU4odGVz
dFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpKTsKKyAgICBSVU4odGVzdFN0b3JlU2lnbkV4
dGVuZEluZGV4QWRkcmVzcygpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCg==
</data>
<flag name="review"
          id="456033"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433715</attachid>
            <date>2021-07-16 16:37:34 -0700</date>
            <delta_ts>2021-07-16 17:09:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-227970-20210716183733.patch</filename>
            <type>text/plain</type>
            <size>42112</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MDBlY2E1MjFmMDNiNjA4MDEwYzMyZjE1NDZhODcwNDhmZmQ4YzI0Li40MTc0NDllNmNiNmZkMDIx
ZGYzZGI0YWRlZWEwNjljZTVkOTIxZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDctMTYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBFeHRlbmRUeXBlIHRvIEFpcjo6QXJnIEluZGV4IHRvIGZ1bGx5
IHV0aWxpemUgYWRkcmVzcyBjb21wdXRhdGlvbiBpbiBtZW1vcnkgaW5zdHJ1Y3Rpb24gZm9yIEFS
TTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc5
NzAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGUgcGF0
dGVybiByZWNvZ25pdGlvbiBvZiBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIHRoZSBpbnN0cnVjdGlv
bnMsIGUuZy4sIExvYWQgCisgICAgICAgIFJlc2lzdG9yIChMRFIpLCBTdG9yZSBSZWdpc3RlciAo
U1RSKSwgZXRjLiwgY2FuIGJlbmVmaXQgdGhlIGluc3RydWN0aW9uIHNlbGVjdG9yLgorICAgICAg
ICBUaGVuLCB0aGUgQWlyIG9wZXJhbmQgQmFzZUluZGV4IGNvbnRhaW5pbmcgYmFzZSwgaW5kZXgs
IGFuZCBzY2FsZSBpcyBpbnRyb2R1Y2VkIAorICAgICAgICB0byBBaXIgb3Bjb2RlLiBIb3dldmVy
LCB0aGUgPGV4dGVuZD4gb3B0aW9uIG9mIGluZGV4IGFkZHJlc3MgaXMgbm90IGZ1bGx5IGxldmVy
YWdlZCAKKyAgICAgICAgaW4gdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLiAKKworICAgICAg
ICBUbyBmaWxsIHRoYXQgZ2FwLCB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgbWVtYmVyLCBNYWNyb0Fz
c2VtYmxlcjo6RXh0ZW5kLCB0byB0aGUgY3VycmVudCAKKyAgICAgICAgZGVzaWduIG9mIEJhc2VJ
bmRleCB0byB0cmlnZ2VyIHplcm8vc2lnbiBleHRlbnNpb24gb24gdGhlIEluZGV4IGFkZHJlc3Mu
IEFuZCB0aGlzIGlzIAorICAgICAgICBlbmFibGVkIGZvciBTdG9yZS9Mb2FkIHdpdGggdmFsaWQg
aW5kZXggYWRkcmVzcyBhbmQgc2hpZnQgYW1vdW50LgorCisgICAgICAgIE1heWJlLCB0aGUgaWRl
YWwgYXBwcm9hY2ggaXMgdG8gaW50cm9kdWNlIGEgZGVjb3JhdG9yIChJbmRleEBFWFQpIHRvIHRo
ZSBBaXIgb3BlcmFuZCAKKyAgICAgICAgdG8gcHJvdmlkZSBhbiBleHRlbnNpb24gb3Bwb3J0dW5p
dHkgZm9yIHRoZSBzcGVjaWZpYyBmb3JtIG9mIHRoZSBBaXIgb3Bjb2RlLgorCisgICAgICAgIExv
YWQgUmVnaXN0ZXIgKExEUikgY2FsY3VsYXRlcyBhbiBhZGRyZXNzIGZyb20gYSBiYXNlIHJlZ2lz
dGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAgb2Zmc2V0IHJlZ2lzdGVyIHZhbHVlLCBsb2FkcyBh
IHdvcmQgZnJvbSBtZW1vcnksIGFuZCB3cml0ZXMgaXQgdG8gYSByZWdpc3Rlci4gCisgICAgICAg
IFRoZSBvZmZzZXQgcmVnaXN0ZXIgdmFsdWUgY2FuIG9wdGlvbmFsbHkgYmUgc2hpZnRlZCBhbmQg
ZXh0ZW5kZWQuCisKKyAgICAgICAgR2l2ZW4gQjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3Vt
ZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAxID0gWi9TRXh0MzIoVHJ1bmMoQXJndW1lbnRSZWco
JXgxKSkpCisgICAgICAgIEludCBAMiA9IHNjYWxlCisgICAgICAgIEludCBAMyA9IFNobChAMSwg
QDIpCisgICAgICAgIEludCBANCA9IEFkZChAMCwgQDMpCisgICAgICAgIEludCBANSA9IExvYWQo
QDQsIENvbnRyb2xEZXBlbmRlbnR8UmVhZHM6VG9wKQorICAgICAgICBWb2lkQDYgPSBSZXR1cm4o
QDUsIFRlcm1pbmFsKQorCisgICAgICAgIC8vIE9sZCBvcHRpbWl6ZWQgQUlSCisgICAgICAgIE1v
dmUgICAgICAgICAgICAgICAleDEsICV4MSwgQDEKKyAgICAgICAgTW92ZSAoJXgwLCV4MSwyXnNj
YWxlKSwgJXgwLCBANQorICAgICAgICBSZXQgICAgICAgICAgICAgICAgJXgwLCAgICAgIEA2CisK
KyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZSAoJXgwLCV4MSwyXnNj
YWxlKSwgJXgwLCBANQorICAgICAgICBSZXQgICAgICAgICAgICAgICAgJXgwLCAgICAgIEA2CisK
KyAgICAgICAgU3RvcmUgUmVnaXN0ZXIgKFNUUikgY2FsY3VsYXRlcyBhbiBhZGRyZXNzIGZyb20g
YSBiYXNlIHJlZ2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAgb2Zmc2V0IHJlZ2lzdGVyIHZh
bHVlLCBhbmQgc3RvcmVzIGEgMzItYml0IHdvcmQgb3IgYSA2NC1iaXQgZG91Ymxld29yZCB0byB0
aGUgCisgICAgICAgIGNhbGN1bGF0ZWQgYWRkcmVzcywgZnJvbSBhIHJlZ2lzdGVyLgorCisgICAg
ICAgIEdpdmVuIEIzIElSOgorICAgICAgICBJbnQgQDAgPSB2YWx1ZQorICAgICAgICBJbnQgQDEg
PSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMiA9IFovU0V4dDMyKFRydW5jKEFyZ3Vt
ZW50UmVnKCV4MSkpCisgICAgICAgIEludCBAMyA9IHNjYWxlCisgICAgICAgIEludCBANCA9IFNo
bChAMiwgQDMpCisgICAgICAgIEludCBANSA9IEFkZChAMSwgQDQpCisgICAgICAgIFZvaWRANiA9
IFN0b3JlKEAwLCBANSwgQ29udHJvbERlcGVuZGVudHxXcml0ZXM6VG9wKQorICAgICAgICBWb2lk
QDcgPSBSZXR1cm4oQDAsIFRlcm1pbmFsKQorCisgICAgICAgIC8vIE9sZCBvcHRpbWl6ZWQgQUlS
CisgICAgICAgIE1vdmUzMiAgICAleDEsICAgICAgICAgICAgICAgJXgxLCBAMgorICAgICAgICBT
dG9yZTMyICAleHpyLCAoJXgwLCV4MSwyXnNjYWxlKSwgQDYKKyAgICAgICAgTW92ZSAgICAgICAk
MCwgICAgICAgICAgICAgICAleDAsIEA3CisgICAgICAgIFJldDMyICAgICAleDAsICAgICAgICAg
ICAgICAgICAgICBANworCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIFN0
b3JlMzIgICV4enIsICgleDAsJXgxLDJec2NhbGUpLCBANgorICAgICAgICBNb3ZlICAgICAgICQw
LCAgICAgICAgICAgICAgICV4MCwgQDcKKyAgICAgICAgUmV0MzIgICAgICV4MCwgICAgICAgICAg
ICAgICAgICAgIEA3CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXg6OkJh
c2VJbmRleCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6aW5kZXhFeHRlbmRUeXBlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDY0KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6bG9hZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bG9hZDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDE2
U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omxv
YWQ4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDhTaWduZWRFeHRl
bmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmU2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6c3RvcmU4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
bG9hZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRGbG9h
dCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVGbG9hdCk6CisgICAgICAgICog
YjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6OkFyZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6
OmFzQmFzZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBi
My90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3Mp
OgorICAgICAgICAodGVzdExvYWRTaWduRXh0ZW5kSW5kZXhBZGRyZXNzKToKKyAgICAgICAgKHRl
c3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MpOgorICAgICAgICAodGVzdFN0b3JlU2lnbkV4
dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDctMTUg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWxpYXMg
SlNDIGdyYXBoIGR1bXBpbmcgb3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkYzY4M2YxZWFm
ZDc3M2E2YzIwMjBkNTQzZGE1ZGZlMzYyM2U0Y2Q1Li42YzAyNDAzNDU4YjZmMjIxNTI2OWNjMTkz
MGQ2MDgxYjc4MzE4NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtMTI0LDcgKzEyNCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIFRpbWVzRWlnaHQsCiAgICAgICAgIFNjYWxlUHRyID0gaXNBZGRyZXNz
NjRCaXQoKSA/IFRpbWVzRWlnaHQgOiBUaW1lc0ZvdXIsCiAgICAgfTsKLSAgICAKKworICAgIGVu
dW0gY2xhc3MgRXh0ZW5kIDogdWludDhfdCB7CisgICAgICAgIFpFeHQzMiwKKyAgICAgICAgU0V4
dDMyLAorICAgICAgICBOb25lCisgICAgfTsKKwogICAgIHN0cnVjdCBCYXNlSW5kZXg7CiAgICAg
CiAgICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBwZWRSZWdpc3RlcihSZWdpc3RlcklEIG9y
aWdpbmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBAIC0yMTAsMTggKzIx
NiwyMyBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBEZXNjcmliZXMgYSBjb21wbGV4IGFkZHJl
c3NpbmcgbW9kZS4KICAgICBzdHJ1Y3QgQmFzZUluZGV4IHsKLSAgICAgICAgQmFzZUluZGV4KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKKyAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCwgRXh0ZW5kIGV4dGVuZCA9IEV4
dGVuZDo6Tm9uZSkKICAgICAgICAgICAgIDogYmFzZShiYXNlKQogICAgICAgICAgICAgLCBpbmRl
eChpbmRleCkKICAgICAgICAgICAgICwgc2NhbGUoc2NhbGUpCiAgICAgICAgICAgICAsIG9mZnNl
dChvZmZzZXQpCisgICAgICAgICAgICAsIGV4dGVuZChleHRlbmQpCiAgICAgICAgIHsKKyNpZiAh
Q1BVKEFSTTY0KQorICAgICAgICAgICAgQVNTRVJUKGV4dGVuZCA9PSBOb25lKTsKKyNlbmRpZgog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBSZWdpc3RlcklEIGJhc2U7CiAgICAgICAgIFJl
Z2lzdGVySUQgaW5kZXg7CiAgICAgICAgIFNjYWxlIHNjYWxlOwogICAgICAgICBpbnQzMl90IG9m
ZnNldDsKKyAgICAgICAgRXh0ZW5kIGV4dGVuZDsKICAgICAgICAgCiAgICAgICAgIEJhc2VJbmRl
eCB3aXRoT2Zmc2V0KGludDMyX3QgYWRkaXRpb25hbE9mZnNldCkKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAppbmRleCA0YTkwZTVhMWZkZTQ4Y2NmYzQ3YTcyNzQ5ZTU4NWY3ZDAyNGUxY2M1Li44OGYzNDBi
NDgzZTk0ZjBmNmRjNDI1ZjQ0OGE0OTZhNWVlMTBmZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTM2Nyw2
ICsxMzY3LDE3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBNZW1vcnkgYWNjZXNzIG9wZXJh
dGlvbnM6CisgICAgQXNzZW1ibGVyOjpFeHRlbmRUeXBlIGluZGV4RXh0ZW5kVHlwZShCYXNlSW5k
ZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYWRkcmVzcy5leHRlbmQpIHsKKyAg
ICAgICAgY2FzZSBFeHRlbmQ6OlpFeHQzMjoKKyAgICAgICAgICAgIHJldHVybiBBc3NlbWJsZXI6
OlVYVFc7CisgICAgICAgIGNhc2UgRXh0ZW5kOjpTRXh0MzI6CisgICAgICAgICAgICByZXR1cm4g
QXNzZW1ibGVyOjpTWFRXOworICAgICAgICBjYXNlIEV4dGVuZDo6Tm9uZToKKyAgICAgICAgICAg
IHJldHVybiBBc3NlbWJsZXI6OlVYVFg7CisgICAgICAgIH0KKyAgICB9CiAKICAgICB2b2lkIGxv
YWQ2NChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKQEAg
LTEzODAsMTIgKzEzOTEsMTIgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZDY0KEJhc2VJbmRleCBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zm
c2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDMpKSB7Ci0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmxkcjw2ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVu
ZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mu
b2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVt
cFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUp
OworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFk
ZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3Mu
YmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAgLTE0NzksMTIgKzE0OTAsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgbG9hZDMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5z
Y2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDIpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZHI8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRY
LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFk
ZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
c2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVk
TWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNz
LmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJl
Z2lzdGVyKTsKICAgICB9CiAKQEAgLTE1MjYsMTIgKzE1MzcsMTIgQEAgcHVibGljOgogICAgIHZv
aWQgbG9hZDE2KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNj
YWxlID09IDEpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJoKGRlc3QsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmgoZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3Rl
ZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdp
c3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgs
IGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBS
ZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5
cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHJoKGRl
c3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAgLTE1NzAs
MTIgKzE1ODEsMTIgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFh
ZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAxKSkg
ewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyc2g8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmxkcnNoPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVk
SW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lz
dGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwg
YWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJl
Z2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlw
ZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcnNoPDMy
PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0x
NjAxLDEyICsxNjEyLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQ4KEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0
ICYmICFhZGRyZXNzLnNjYWxlKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJiKGRlc3Qs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNj
YWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmIoZGVzdCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9Q
dHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9y
eVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJs
ZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1l
bW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRl
eEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5sZHJiKGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAg
ICAgCkBAIC0xNjM1LDEyICsxNjQ2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWQ4U2lnbmVk
RXh0ZW5kVG8zMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAhYWRkcmVzcy5zY2FsZSkgewotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubGRyc2I8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmxkcnNiPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0
ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVz
cy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2Fs
ZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1v
cnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwg
YWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcnNiPDMyPihkZXN0LCBhZGRy
ZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0xNjc0LDEyICsxNjg1
LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3JlNjQoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJl
c3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAzKSkgewotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc3RyPDY0PihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpV
WFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjw2ND4oc3Jj
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwg
YWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNo
ZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJl
c3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFk
ZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBS
ZWdpc3Rlcik7CiAgICAgfQogICAgIApAQCAtMTc4MSwxMiArMTc5MiwxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7
CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJl
c3Muc2NhbGUgPT0gMikpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2Fs
ZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9Q
dHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9y
eVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJs
ZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1l
bW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRl
eEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5zdHI8MzI+KHNyYywgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0K
IApAQCAtMTg0OCwxMiArMTg1OSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVz
cy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMSkpIHsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmgoc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5k
ZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zdHJoKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5
cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zm
c2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJl
Z2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVt
cFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJl
c3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHJoKHNyYywgYWRkcmVzcy5iYXNlLCBt
ZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTg3NiwxMiArMTg4NywxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQog
ICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAhYWRkcmVzcy5zY2FsZSkgewot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5k
VHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5v
ZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRk
cmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2Us
IG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0yMTg5LDEyICsyMjAwLDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGxvYWREb3VibGUoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Mu
c2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAzKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhU
WCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3Qs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBh
ZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hl
ZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVz
cy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRk
cmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBS
ZWdpc3Rlcik7CiAgICAgfQogICAgIApAQCAtMjIxNiwxMiArMjIyNywxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsb2FkRmxvYXQoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwg
YWRkcmVzcy5zY2FsZSA9PSAyKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMyPihk
ZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRlc3QsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNj
YWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRl
bmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0
PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwg
QXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRk
PDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRl
eCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9h
c3NlbWJsZXIubGRyPDMyPihkZXN0LCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7
CiAgICAgfQogCkBAIC0yNDczLDEyICsyNDg0LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3Jl
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKICAgICAg
ICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2Fs
ZSA9PSAzKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0PihzcmMsIGFkZHJlc3Mu
YmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjw2ND4oc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
aW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVz
dGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJl
Z2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhU
WCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVt
cFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5k
VHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjw2
ND4oc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0y
NDk0LDEyICsyNTA1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mu
b2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDIpKSB7Ci0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmlu
ZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRl
bmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNz
Lm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRl
bXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxl
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9y
eVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBh
ZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDMyPihzcmMsIGFkZHJlc3Mu
YmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggOGZjMWFmYzJhNTM5MWY0NTY1YzNkM2Q5OGY3YTBm
NzY0ODM2MjNkYS4uNjNhNmZiMTJmYTUyMmNkYWRhZGJiYTk5ZmY2MjlkNzg3OGEwODQ0OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTQ5OSw2ICs0OTks
MzEgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgYm9vbCBp
c01lcmdlYWJsZVZhbHVlKFZhbHVlKiB2LCBCMzo6T3Bjb2RlIGIzT3Bjb2RlLCBib29sIGNoZWNr
Q2FuQmVJbnRlcm5hbCkKKyAgICB7IAorICAgICAgICBpZiAodi0+b3Bjb2RlKCkgIT0gYjNPcGNv
ZGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChjaGVja0NhbkJlSW50
ZXJuYWwgJiYgIWNhbkJlSW50ZXJuYWwodikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgorICAg
IEFyZyBpbmRleEFyZyhUbXAgYmFzZSwgVmFsdWUqIGluZGV4LCB1bnNpZ25lZCBzY2FsZSwgSW50
IG9mZnNldCkKKyAgICB7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAvLyBNYXliZSwgdGhlIGlk
ZWFsIGFwcHJvYWNoIGlzIHRvIGludHJvZHVjZSBhIGRlY29yYXRvciAoSW5kZXhARVhUKSB0byB0
aGUgQWlyIG9wZXJhbmQgCisgICAgICAgIC8vIHRvIHByb3ZpZGUgYW4gZXh0ZW5zaW9uIG9wcG9y
dHVuaXR5IGZvciB0aGUgc3BlY2lmaWMgZm9ybSB1bmRlciB0aGUgQWlyIG9wY29kZS4KKyAgICAg
ICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUoaW5kZXgsIFpFeHQzMiwgZmFsc2UpKQorICAgICAgICAg
ICAgcmV0dXJuIEFyZzo6aW5kZXgoYmFzZSwgdG1wKGluZGV4LT5jaGlsZCgwKSksIHNjYWxlLCBv
ZmZzZXQsIE1hY3JvQXNzZW1ibGVyOjpFeHRlbmQ6OlpFeHQzMik7CisgICAgICAgIGlmIChpc01l
cmdlYWJsZVZhbHVlKGluZGV4LCBTRXh0MzIsIGZhbHNlKSkKKyAgICAgICAgICAgIHJldHVybiBB
cmc6OmluZGV4KGJhc2UsIHRtcChpbmRleC0+Y2hpbGQoMCkpLCBzY2FsZSwgb2Zmc2V0LCBNYWNy
b0Fzc2VtYmxlcjo6RXh0ZW5kOjpTRXh0MzIpOworI2VuZGlmCisgICAgICAgIHJldHVybiBBcmc6
OmluZGV4KGJhc2UsIHRtcChpbmRleCksIHNjYWxlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+
PgogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZhbHVlKiBzaGwsIElu
dCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAg
IHsKQEAgLTU0OSw3ICs1NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gQXJnKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGluZGV4LT5j
aGlsZCgwKSkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBBcmcoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gQXJnOjppbmRleCh0bXAoYmFz
ZSksIHRtcChpbmRleC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNldCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGluZGV4QXJnKHRtcChiYXNlKSwgaW5kZXgtPmNoaWxkKDApLCAqc2NhbGUsIG9m
ZnNldCk7CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBpZiAoQXJnIHJlc3VsdCA9IHRy
eUluZGV4KGxlZnQsIHJpZ2h0KSkKQEAgLTU2MSw3ICs1ODYsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIHx8ICFBcmc6OmlzVmFsaWRJbmRleEZvcm0oMSwgb2Zmc2V0LCB3aWR0aCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrKCk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIHJldHVybiBBcmc6OmluZGV4KHRtcChsZWZ0KSwgdG1wKHJpZ2h0KSwgMSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIHJldHVybiBpbmRleEFyZyh0bXAobGVmdCksIHJpZ2h0LCAxLCBvZmZzZXQp
OwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTaGw6IHsKQEAgLTU3NCw3ICs1OTksNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIHx8ICFBcmc6OmlzVmFsaWRJbmRleEZvcm0oMSwgb2Zm
c2V0LCB3aWR0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrKCk7CiAKLSAgICAg
ICAgICAgIHJldHVybiBBcmc6OmluZGV4KHRtcChsZWZ0KSwgdG1wKGxlZnQpLCAxLCBvZmZzZXQp
OworICAgICAgICAgICAgcmV0dXJuIGluZGV4QXJnKHRtcChsZWZ0KSwgbGVmdCwgMSwgb2Zmc2V0
KTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgRnJhbWVQb2ludGVyOgpAQCAtNTk0LDcgKzYx
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBwZXJoYXBzIG1vcmUgaW1wb3J0YW50bHks
IGl0IHdvdWxkIGFsbG93IHVzIHRvIGF2b2lkIGEgdHJ1bmNhdGluZwogICAgICAgICAgICAgLy8g
bW92ZS4gU2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDY1
CiAKLSAgICAgICAgICAgIHJldHVybiBBcmc6OmluZGV4KFRtcCh3YXNtQWRkcmVzcy0+cGlubmVk
R1BSKCkpLCB0bXAocG9pbnRlciksIDEsIG9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4gaW5k
ZXhBcmcoVG1wKHdhc21BZGRyZXNzLT5waW5uZWRHUFIoKSksIHBvaW50ZXIsIDEsIG9mZnNldCk7
CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgpAQCAtMjExNyw3ICsyMTQyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIEFTU0VSVCghbV9sb2NrZWQuY29udGFpbnMoc2hsLT5jaGlsZCgw
KSkpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhvdGhlcikpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBhcHBlbmQobGVhT3Bjb2RlLCBBcmc6OmluZGV4KHRtcChv
dGhlciksIHRtcChzaGwtPmNoaWxkKDApKSwgKnNjYWxlLCBvZmZzZXQpLCB0bXAobV92YWx1ZSkp
OworICAgICAgICAgICAgYXBwZW5kKGxlYU9wY29kZSwgaW5kZXhBcmcodG1wKG90aGVyKSwgc2hs
LT5jaGlsZCgwKSwgKnNjYWxlLCBvZmZzZXQpLCB0bXAobV92YWx1ZSkpOwogICAgICAgICAgICAg
Y29tbWl0SW50ZXJuYWwoaW5uZXJBZGQpOwogICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwoc2hs
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjEzNCw3ICsyMTU5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5j
b250YWlucyh2YWx1ZS0+Y2hpbGQoMCkpKTsKICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250
YWlucyh2YWx1ZS0+Y2hpbGQoMSkpKTsKLSAgICAgICAgYXBwZW5kKGxlYU9wY29kZSwgQXJnOjpp
bmRleCh0bXAodmFsdWUtPmNoaWxkKDApKSwgdG1wKHZhbHVlLT5jaGlsZCgxKSksIDEsIG9mZnNl
dCksIHRtcChtX3ZhbHVlKSk7CisgICAgICAgIGFwcGVuZChsZWFPcGNvZGUsIGluZGV4QXJnKHRt
cCh2YWx1ZS0+Y2hpbGQoMCkpLCB2YWx1ZS0+Y2hpbGQoMSksIDEsIG9mZnNldCksIHRtcChtX3Zh
bHVlKSk7CiAgICAgICAgIGNvbW1pdEludGVybmFsKGlubmVyQWRkKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMjQ5MCwxNSArMjUxNSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBs
b3dlcigpCiAgICAgewogICAgICAgICB1c2luZyBuYW1lc3BhY2UgQWlyOwotCi0gICAgICAgIGF1
dG8gaXNNZXJnZWFibGVCM09wY29kZSA9IFsmXSAoVmFsdWUqIHYsIEIzOjpPcGNvZGUgYjNPcGNv
ZGUpIC0+IGJvb2wgeyAKLSAgICAgICAgICAgIGlmICh2LT5vcGNvZGUoKSAhPSBiM09wY29kZSB8
fCAhY2FuQmVJbnRlcm5hbCh2KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnModi0+Y2hpbGQoMCkpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Owot
CiAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKICAgICAgICAgY2FzZSBCMzo6
Tm9wOiB7CiAgICAgICAgICAgICAvLyBZZXMsIHdlIHdpbGwgdG90YWxseSBzZWUgTm9wJ3MgYmVj
YXVzZSBzb21lIHBoYXNlcyB3aWxsIHJlcGxhY2VXaXRoTm9wKCkgaW5zdGVhZCBvZgpAQCAtMjU5
OSwxMCArMjYxNSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFp
ck9wY29kZSAhPSBNdWx0aXBseUFkZDY0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBBaXI6Ok9vcHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTTUFEREw6IGQgPSBT
RXh0MzIobikgKiBTRXh0MzIobSkgKyBhCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNN
ZXJnZWFibGVCM09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikgJiYgaXNNZXJnZWFibGVCM09w
Y29kZShtdWx0aXBseVJpZ2h0LCBTRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpc01lcmdlYWJsZVZhbHVlKG11bHRpcGx5TGVmdCwgU0V4dDMyLCB0cnVlKSAmJiBpc01lcmdl
YWJsZVZhbHVlKG11bHRpcGx5UmlnaHQsIFNFeHQzMiwgdHJ1ZSkpIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBNdWx0aXBseUFkZFNpZ25FeHRlbmQzMjsKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFVNQURETDogZCA9IFpFeHQzMihuKSAqIFpFeHQzMihtKSArIGEKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5TGVm
dCwgWkV4dDMyKSAmJiBpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5UmlnaHQsIFpFeHQzMikp
IAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlM
ZWZ0LCBaRXh0MzIsIHRydWUpICYmIGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlSaWdodCwgWkV4
dDMyLCB0cnVlKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5
QWRkWmVyb0V4dGVuZDMyOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29w
czsKICAgICAgICAgICAgICAgICAgICAgfTsKQEAgLTI2ODcsMTAgKzI3MDMsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseVN1YjY0KQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAg
ICAgICAgLy8gU01TVUJMOiBkID0gYSAtIFNFeHQzMihuKSAqIFNFeHQzMihtKQotICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikg
JiYgaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseVJpZ2h0LCBTRXh0MzIpKSAKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlMZWZ0LCBTRXh0MzIsIHRy
dWUpICYmIGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlSaWdodCwgU0V4dDMyLCB0cnVlKSkgCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlTdWJTaWduRXh0ZW5kMzI7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFVNU1VCTDogZCA9IGEgLSBaRXh0MzIobikgKiBaRXh0MzIo
bSkKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlM
ZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwgWkV4dDMy
KSkgCisgICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZVZhbHVlKG11bHRpcGx5TGVm
dCwgWkV4dDMyLCB0cnVlKSAmJiBpc01lcmdlYWJsZVZhbHVlKG11bHRpcGx5UmlnaHQsIFpFeHQz
MiwgdHJ1ZSkpIAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5U3ViWmVy
b0V4dGVuZDMyOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpPb3BzOwogICAgICAg
ICAgICAgICAgIH07CkBAIC0yNzY2LDEwICsyNzgyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChhaXJPcGNvZGUgIT0gTXVsdGlwbHlOZWc2NCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNNTkVH
TDogZCA9IC0oU0V4dDMyKG4pICogU0V4dDMyKG0pKQotICAgICAgICAgICAgICAgICAgICBpZiAo
aXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseUxlZnQsIFNFeHQzMikgJiYgaXNNZXJnZWFibGVC
M09wY29kZShtdWx0aXBseVJpZ2h0LCBTRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlMZWZ0LCBTRXh0MzIsIHRydWUpICYmIGlzTWVyZ2Vh
YmxlVmFsdWUobXVsdGlwbHlSaWdodCwgU0V4dDMyLCB0cnVlKSkgCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gTXVsdGlwbHlOZWdTaWduRXh0ZW5kMzI7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIFVNTkVHTDogZCA9IC0oWkV4dDMyKG4pICogWkV4dDMyKG0pKQotICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseUxlZnQsIFpFeHQzMikgJiYg
aXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseVJpZ2h0LCBaRXh0MzIpKSAKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlMZWZ0LCBaRXh0MzIsIHRydWUp
ICYmIGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlSaWdodCwgWkV4dDMyLCB0cnVlKSkgCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlwbHlOZWdaZXJvRXh0ZW5kMzI7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7CiAgICAgICAgICAgICAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCmluZGV4IGNjZWY0NTY4ODAzY2UyNTcyMTMw
ZTNiZWI3NmMxMGRlZWI4YTcyNzkuLmNlNWE0ZTczNzlhZDY0NDQ1ZjBjM2FiZDEyOWYzMjliOTQ3
ZmU4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaApAQCAtNjI5LDcgKzYy
OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVu
YW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KLSAgICBzdGF0aWMgQXJnIGluZGV4KEFp
cjo6VG1wIGJhc2UsIEFpcjo6VG1wIGluZGV4LCB1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCkK
KyAgICBzdGF0aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJhc2UsIEFpcjo6VG1wIGluZGV4LCB1bnNp
Z25lZCBzY2FsZSwgSW50IG9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6OkV4dGVuZCBleHRlbmQgPSBN
YWNyb0Fzc2VtYmxlcjo6RXh0ZW5kOjpOb25lKQogICAgIHsKICAgICAgICAgQVNTRVJUKGJhc2Uu
aXNHUCgpKTsKICAgICAgICAgQVNTRVJUKGluZGV4LmlzR1AoKSk7CkBAIC02NDAsNiArNjQwLDcg
QEAgcHVibGljOgogICAgICAgICByZXN1bHQubV9pbmRleCA9IGluZGV4OwogICAgICAgICByZXN1
bHQubV9zY2FsZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHNjYWxlKTsKICAgICAgICAgcmVzdWx0
Lm1fb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICByZXN1bHQubV9leHRlbmQgPSBleHRlbmQ7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xMzc5LDcgKzEzODAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEFTU0VSVChpc0luZGV4KCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleCgKICAgICAgICAgICAgIG1fYmFzZS5ncHIoKSwgbV9pbmRleC5ncHIo
KSwgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlNjYWxlPihsb2dTY2FsZSgpKSwKLSAgICAg
ICAgICAgIHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihtX29mZnNldCkpOworICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KG1fb2Zmc2V0KSwgbV9leHRlbmQp
OwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGFzUmVs
YXRpb25hbENvbmRpdGlvbigpIGNvbnN0CkBAIC0xNDg0LDYgKzE0ODUsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGludDY0X3QgbV9vZmZzZXQgeyAwIH07CiAgICAgS2luZCBtX2tpbmQgeyBJ
bnZhbGlkIH07CisgICAgTWFjcm9Bc3NlbWJsZXI6OkV4dGVuZCBtX2V4dGVuZCB7IE1hY3JvQXNz
ZW1ibGVyOjpFeHRlbmQ6Ok5vbmUgfTsKICAgICBpbnQzMl90IG1fc2NhbGUgeyAxIH07CiAgICAg
QWlyOjpUbXAgbV9iYXNlOwogICAgIEFpcjo6VG1wIG1faW5kZXg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmgKaW5kZXggOTg0OGY2M2U4NjlhZjJiM2ZiNTZjNWViMDRhZmUwYmIzNzk3YjAwYy4u
M2JlMmNhYTJlMWNiNjhhNmFhNGFjYzhkMzM0NGIzMDVjYzk1MDc3YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuaApAQCAtODI2LDYgKzgyNiwxMCBAQCB2b2lkIHRlc3RNdWxUcmVlQXJnMzIo
aW50MzJfdCk7CiB2b2lkIHRlc3RBcmcoaW50IGFyZ3VtZW50KTsKIHZvaWQgdGVzdFJldHVybkNv
bnN0NjQoaW50NjRfdCB2YWx1ZSk7CiB2b2lkIHRlc3RSZXR1cm5Wb2lkKCk7Cit2b2lkIHRlc3RM
b2FkWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpOwordm9pZCB0ZXN0TG9hZFNpZ25FeHRlbmRJbmRl
eEFkZHJlc3MoKTsKK3ZvaWQgdGVzdFN0b3JlWmVyb0V4dGVuZEluZGV4QWRkcmVzcygpOwordm9p
ZCB0ZXN0U3RvcmVTaWduRXh0ZW5kSW5kZXhBZGRyZXNzKCk7CiB2b2lkIHRlc3RBZGRBcmcoaW50
KTsKIHZvaWQgdGVzdEFkZEFyZ3MoaW50LCBpbnQpOwogdm9pZCB0ZXN0QWRkQXJnSW1tKGludCwg
aW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDE3MWI4Mzc4MTMy
NTdmMWQzZWMwNjJlOWY2ODc5MWViN2EyZDIwYjUuLjc4YzU5MmIwMjc2YTZjOTBiYjRlOWQzMDQz
Nzc5YzlhMGJiYTc5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApAQCAt
Mjk3LDYgKzI5NywzMTQgQEAgdm9pZCB0ZXN0UmV0dXJuVm9pZCgpCiAgICAgY29tcGlsZUFuZFJ1
bjx2b2lkPihwcm9jKTsKIH0KIAordm9pZCB0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3Mo
KQoreworICAgIGlmIChPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byB0ZXN0MzIgPSBbJl0gKHVpbnQzMl90IGluZGV4LCBpbnQzMl90
IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGJh
c2VWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOwor
ICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZVZhbHVl
LCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4o
KSwgaW5kZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVz
cykpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBp
ZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleChhbW91bnQgPT0g
MiA/ICIuKmxkci4qdXh0dyMyLioiIDogIi4qbGRyLipbLiosLipdLioiKTsKKyAgICAgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAg
ICAgfQorICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVt
KTsKKyAgICAgICAgaW50cHRyX3QgYmFzZSA9IGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KGluZGV4KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSk7CisgICAgICAgIENIRUNL
X0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgYmFzZSwgaW5kZXgpLCBudW0pOworICAgIH07CisK
KyAgICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvIG51bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFt
b3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0MzIo
aW5kZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGF1dG8gdGVzdDY0ID0gWyZdICh1aW50MzJfdCBpbmRleCwgaW50NjRfdCBudW0sIGludDMyX3Qg
YW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiBiYXNlVmFsdWUgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUq
IHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFt
b3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksIGJhc2VWYWx1ZSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNj
YWxlKSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGFkZHJlc3MpKTsKKworICAgICAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJNNjQoKSkg
eworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoYW1vdW50ID09IDMgPyAiLipsZHIuKnV4
dHcjMy4qIiA6ICIuKmxkci4qWy4qLC4qXS4qIik7CisgICAgICAgICAgICBjaGVja1VzZXNJbnN0
cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAg
aW50cHRyX3QgYWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJm51bSk7CisgICAgICAgIGlu
dHB0cl90IGJhc2UgPSBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KGFtb3VudCkpOworICAgICAgICBDSEVDS19FUShpbnZva2U8aW50
NjRfdD4oKmNvZGUsIGJhc2UsIGluZGV4KSwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRv
IGluZGV4IDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQ2
NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91
bnQgPCAxMDsgKythbW91bnQpCisgICAgICAgICAgICAgICAgdGVzdDY0KGluZGV4LnZhbHVlLCBu
dW0udmFsdWUsIGFtb3VudCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdExvYWRT
aWduRXh0ZW5kSW5kZXhBZGRyZXNzKCkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZGVmYXVsdEIzT3B0
TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGVzdDMyID0gWyZdIChp
bnQzMl90IGluZGV4LCBpbnQzMl90IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisKKyAgICAgICAgVmFsdWUqIGJhc2VWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
VmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAg
ICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwg
T3JpZ2luKCksIGluZGV4MzIpOworICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUq
IGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRk
LCBPcmlnaW4oKSwgYmFzZVZhbHVlLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIElu
dDMyLCBPcmlnaW4oKSwgYWRkcmVzcykpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgICAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0
cmluZyByZWdleChhbW91bnQgPT0gMiA/ICIuKmxkci4qc3h0dyMyLioiIDogIi4qbGRyLipbLios
LipdLioiKTsKKyAgICAgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5j
X3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lz
ZV9jYXN0PGludHB0cl90PigmbnVtKTsKKyAgICAgICAgaW50cHRyX3QgYmFzZSA9IGFkZHIgLSAo
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1v
dW50KSk7CisgICAgICAgIENIRUNLX0VRKGludm9rZTxpbnQzMl90PigqY29kZSwgYmFzZSwgaW5k
ZXgpLCBudW0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRz
KCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAg
ICAgICAgICAgICAgICB0ZXN0MzIoaW5kZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGF1dG8gdGVzdDY0ID0gWyZdIChpbnQzMl90IGluZGV4LCBp
bnQ2NF90IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFs
dWUqIGJhc2VWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4
NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQzMiwgT3JpZ2luKCksIGluZGV4
MzIpOworICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFz
ZVZhbHVlLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBP
cmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwg
YWRkcmVzcykpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAg
ICAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleChhbW91
bnQgPT0gMyA/ICIuKmxkci4qc3h0dyMzLioiIDogIi4qbGRyLipbLiosLipdLioiKTsKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsK
KyAgICAgICAgfQorICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90
PigmbnVtKTsKKyAgICAgICAgaW50cHRyX3QgYmFzZSA9IGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KGluZGV4KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSk7CisgICAgICAg
IENIRUNLX0VRKGludm9rZTxpbnQ2NF90PigqY29kZSwgYmFzZSwgaW5kZXgpLCBudW0pOworICAg
IH07CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvIG51bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQz
Ml90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0
ZXN0NjQoaW5kZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0U3RvcmVaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCkKK3sKKyAgICBpZiAo
T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gdGVzdDMyID0gWyZdICh1aW50MzJfdCBpbmRleCwgaW50MzJfdCBudW0sIGludDMyX3Qg
YW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBudW0pOworICAgICAgICBWYWx1
ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOwor
ICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwgCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCksIGlu
ZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihw
cm9jLCBTdG9yZSwgT3JpZ2luKCksIHZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1ZSk7CisKKyAgICAgICAg
YXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsK
KyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KGFtb3VudCA9PSAyID8gIi4qc3RyLip1eHR3
IzIuKiIgOiAiLipzdHIuKlsuKiwuKl0uKiIpOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1
Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIGlu
dDMyX3Qgc2xvdCA9IDEyMzQxMjM0OworICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9j
YXN0PGludHB0cl90Pigmc2xvdCk7CisgICAgICAgIGludm9rZTxpbnQzMl90PigqY29kZSwgYWRk
ciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IHN0YXRpY19jYXN0PGludHB0cl90
PihhbW91bnQpKSwgaW5kZXgpOworICAgICAgICBDSEVDS19FUShzbG90LCBudW0pOworICAgIH07
CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvIG51bSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90
IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0
MzIoaW5kZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGF1dG8gdGVzdDY0ID0gWyZdICh1aW50MzJfdCBpbmRleCwgaW50NjRfdCBudW0sIGludDMy
X3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBudW0pOworICAgICAgICBW
YWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIp
OworICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZSwg
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNobCwgT3JpZ2luKCks
IGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHZhbHVlLCBhZGRyZXNzKTsKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCB2YWx1ZSk7CisKKyAgICAg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkg
JiYgYW1vdW50ID09IDMpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KGFtb3VudCA9
PSAzID8gIi4qc3RyLip1eHR3IzMuKiIgOiAiLipzdHIuKlsuKiwuKl0uKiIpOworICAgICAgICAg
ICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAg
ICAgICB9CisgICAgICAgIGludDY0X3Qgc2xvdCA9IDEyMzQxMjM0OworICAgICAgICBpbnRwdHJf
dCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90Pigmc2xvdCk7CisgICAgICAgIGludm9rZTxp
bnQ2NF90PigqY29kZSwgYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IHN0
YXRpY19jYXN0PGludHB0cl90PihhbW91bnQpKSwgaW5kZXgpOworICAgICAgICBDSEVDS19FUShz
bG90LCBudW0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRz
KCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAg
ICAgICAgICAgICAgICB0ZXN0NjQoaW5kZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0U3RvcmVTaWduRXh0ZW5kSW5kZXhBZGRyZXNz
KCkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSA8IDIpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gdGVzdDMyID0gWyZdIChpbnQzMl90IGluZGV4LCBpbnQzMl90
IG51bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSk7
CisgICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSog
aW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1
ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU0V4dDMyLCBPcmlnaW4o
KSwgaW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLCBiYXNlLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hs
LCBPcmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVl
KTsKKworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYg
KGlzQVJNNjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoYW1vdW50ID09IDIg
PyAiLipzdHIuKnN4dHcjMi4qIiA6ICIuKnN0ci4qWy4qLC4qXS4qIik7CisgICAgICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAg
IH0KKyAgICAgICAgaW50MzJfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAgIGludHB0cl90IGFk
ZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAgICAgICAgaW52b2tlPGludDMy
X3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KGFtb3VudCkpLCBpbmRleCk7CisgICAgICAgIENIRUNLX0VRKHNsb3Qs
IG51bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMyT3BlcmFuZHMoKSkg
eworICAgICAgICBmb3IgKGF1dG8gbnVtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAg
ICBmb3IgKGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQorICAgICAg
ICAgICAgICAgIHRlc3QzMihpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAg
ICB9CisgICAgfQorCisgICAgYXV0byB0ZXN0NjQgPSBbJl0gKGludDMyX3QgaW5kZXgsIGludDY0
X3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBWYWx1ZSog
dmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbnVt
KTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVl
KiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgICAgIFZh
bHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTRXh0MzIsIE9yaWdp
bigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVlKiBhZGRy
ZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
aGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7Cisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdmFs
dWUpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBp
ZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleChhbW91bnQgPT0g
MyA/ICIuKnN0ci4qc3h0dyMzLioiIDogIi4qc3RyLipbLiosLipdLioiKTsKKyAgICAgICAgICAg
IGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAg
ICAgfQorICAgICAgICBpbnQ2NF90IHNsb3QgPSAxMjM0MTIzNDsKKyAgICAgICAgaW50cHRyX3Qg
YWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJnNsb3QpOworICAgICAgICBpbnZva2U8aW50
NjRfdD4oKmNvZGUsIGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8PCBzdGF0
aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSksIGluZGV4KTsKKyAgICAgICAgQ0hFQ0tfRVEoc2xv
dCwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGluZGV4IDogaW50MzJPcGVyYW5kcygp
KSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91bnQgPCAxMDsgKythbW91bnQpCisgICAg
ICAgICAgICAgICAgdGVzdDY0KGluZGV4LnZhbHVlLCBudW0udmFsdWUsIGFtb3VudCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKIHZvaWQgdGVzdEFkZEFyZyhpbnQgYSkKIHsKICAgICBQcm9jZWR1
cmUgcHJvYzsKQEAgLTU5NDQsNiArNjI1MiwxMSBAQCB2b2lkIGFkZEJpdFRlc3RzKGNvbnN0IGNo
YXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAg
ICBSVU5fQklOQVJZKHRlc3RCaXRYb3JUcmVlQXJnSW1tLCBpbnQ2NE9wZXJhbmRzKCksIGludDY0
T3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RCaXRBbmRUcmVlQXJnMzIsIGludDMyT3Bl
cmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RCaXRPclRyZWVBcmczMiwgaW50MzJPcGVyYW5k
cygpKTsKKworICAgIFJVTih0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3MoKSk7CisgICAg
UlVOKHRlc3RMb2FkU2lnbkV4dGVuZEluZGV4QWRkcmVzcygpKTsKKyAgICBSVU4odGVzdFN0b3Jl
WmVyb0V4dGVuZEluZGV4QWRkcmVzcygpKTsKKyAgICBSVU4odGVzdFN0b3JlU2lnbkV4dGVuZElu
ZGV4QWRkcmVzcygpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCg==
</data>
<flag name="commit-queue"
          id="456047"
          type_id="3"
          status="-"
          setter="yijia_huang"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433716</attachid>
            <date>2021-07-16 17:08:11 -0700</date>
            <delta_ts>2021-07-16 17:53:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-227970-20210716190809.patch</filename>
            <type>text/plain</type>
            <size>42120</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MDBlY2E1MjFmMDNiNjA4MDEwYzMyZjE1NDZhODcwNDhmZmQ4YzI0Li40MTc0NDllNmNiNmZkMDIx
ZGYzZGI0YWRlZWEwNjljZTVkOTIxZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDctMTYgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBFeHRlbmRUeXBlIHRvIEFpcjo6QXJnIEluZGV4IHRvIGZ1bGx5
IHV0aWxpemUgYWRkcmVzcyBjb21wdXRhdGlvbiBpbiBtZW1vcnkgaW5zdHJ1Y3Rpb24gZm9yIEFS
TTY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc5
NzAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGUgcGF0
dGVybiByZWNvZ25pdGlvbiBvZiBhZGRyZXNzIGNvbXB1dGF0aW9uIGluIHRoZSBpbnN0cnVjdGlv
bnMsIGUuZy4sIExvYWQgCisgICAgICAgIFJlc2lzdG9yIChMRFIpLCBTdG9yZSBSZWdpc3RlciAo
U1RSKSwgZXRjLiwgY2FuIGJlbmVmaXQgdGhlIGluc3RydWN0aW9uIHNlbGVjdG9yLgorICAgICAg
ICBUaGVuLCB0aGUgQWlyIG9wZXJhbmQgQmFzZUluZGV4IGNvbnRhaW5pbmcgYmFzZSwgaW5kZXgs
IGFuZCBzY2FsZSBpcyBpbnRyb2R1Y2VkIAorICAgICAgICB0byBBaXIgb3Bjb2RlLiBIb3dldmVy
LCB0aGUgPGV4dGVuZD4gb3B0aW9uIG9mIGluZGV4IGFkZHJlc3MgaXMgbm90IGZ1bGx5IGxldmVy
YWdlZCAKKyAgICAgICAgaW4gdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLiAKKworICAgICAg
ICBUbyBmaWxsIHRoYXQgZ2FwLCB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgbWVtYmVyLCBNYWNyb0Fz
c2VtYmxlcjo6RXh0ZW5kLCB0byB0aGUgY3VycmVudCAKKyAgICAgICAgZGVzaWduIG9mIEJhc2VJ
bmRleCB0byB0cmlnZ2VyIHplcm8vc2lnbiBleHRlbnNpb24gb24gdGhlIEluZGV4IGFkZHJlc3Mu
IEFuZCB0aGlzIGlzIAorICAgICAgICBlbmFibGVkIGZvciBTdG9yZS9Mb2FkIHdpdGggdmFsaWQg
aW5kZXggYWRkcmVzcyBhbmQgc2hpZnQgYW1vdW50LgorCisgICAgICAgIE1heWJlLCB0aGUgaWRl
YWwgYXBwcm9hY2ggaXMgdG8gaW50cm9kdWNlIGEgZGVjb3JhdG9yIChJbmRleEBFWFQpIHRvIHRo
ZSBBaXIgb3BlcmFuZCAKKyAgICAgICAgdG8gcHJvdmlkZSBhbiBleHRlbnNpb24gb3Bwb3J0dW5p
dHkgZm9yIHRoZSBzcGVjaWZpYyBmb3JtIG9mIHRoZSBBaXIgb3Bjb2RlLgorCisgICAgICAgIExv
YWQgUmVnaXN0ZXIgKExEUikgY2FsY3VsYXRlcyBhbiBhZGRyZXNzIGZyb20gYSBiYXNlIHJlZ2lz
dGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAgb2Zmc2V0IHJlZ2lzdGVyIHZhbHVlLCBsb2FkcyBh
IHdvcmQgZnJvbSBtZW1vcnksIGFuZCB3cml0ZXMgaXQgdG8gYSByZWdpc3Rlci4gCisgICAgICAg
IFRoZSBvZmZzZXQgcmVnaXN0ZXIgdmFsdWUgY2FuIG9wdGlvbmFsbHkgYmUgc2hpZnRlZCBhbmQg
ZXh0ZW5kZWQuCisKKyAgICAgICAgR2l2ZW4gQjMgSVI6CisgICAgICAgIEludCBAMCA9IEFyZ3Vt
ZW50UmVnKCV4MCkKKyAgICAgICAgSW50IEAxID0gWi9TRXh0MzIoVHJ1bmMoQXJndW1lbnRSZWco
JXgxKSkpCisgICAgICAgIEludCBAMiA9IHNjYWxlCisgICAgICAgIEludCBAMyA9IFNobChAMSwg
QDIpCisgICAgICAgIEludCBANCA9IEFkZChAMCwgQDMpCisgICAgICAgIEludCBANSA9IExvYWQo
QDQsIENvbnRyb2xEZXBlbmRlbnR8UmVhZHM6VG9wKQorICAgICAgICBWb2lkQDYgPSBSZXR1cm4o
QDUsIFRlcm1pbmFsKQorCisgICAgICAgIC8vIE9sZCBvcHRpbWl6ZWQgQUlSCisgICAgICAgIE1v
dmUgICAgICAgICAgICAgICAleDEsICV4MSwgQDEKKyAgICAgICAgTW92ZSAoJXgwLCV4MSwyXnNj
YWxlKSwgJXgwLCBANQorICAgICAgICBSZXQgICAgICAgICAgICAgICAgJXgwLCAgICAgIEA2CisK
KyAgICAgICAgLy8gTmV3IG9wdGltaXplZCBBSVIKKyAgICAgICAgTW92ZSAoJXgwLCV4MSwyXnNj
YWxlKSwgJXgwLCBANQorICAgICAgICBSZXQgICAgICAgICAgICAgICAgJXgwLCAgICAgIEA2CisK
KyAgICAgICAgU3RvcmUgUmVnaXN0ZXIgKFNUUikgY2FsY3VsYXRlcyBhbiBhZGRyZXNzIGZyb20g
YSBiYXNlIHJlZ2lzdGVyIHZhbHVlIGFuZCBhbiAKKyAgICAgICAgb2Zmc2V0IHJlZ2lzdGVyIHZh
bHVlLCBhbmQgc3RvcmVzIGEgMzItYml0IHdvcmQgb3IgYSA2NC1iaXQgZG91Ymxld29yZCB0byB0
aGUgCisgICAgICAgIGNhbGN1bGF0ZWQgYWRkcmVzcywgZnJvbSBhIHJlZ2lzdGVyLgorCisgICAg
ICAgIEdpdmVuIEIzIElSOgorICAgICAgICBJbnQgQDAgPSB2YWx1ZQorICAgICAgICBJbnQgQDEg
PSBBcmd1bWVudFJlZygleDApCisgICAgICAgIEludCBAMiA9IFovU0V4dDMyKFRydW5jKEFyZ3Vt
ZW50UmVnKCV4MSkpCisgICAgICAgIEludCBAMyA9IHNjYWxlCisgICAgICAgIEludCBANCA9IFNo
bChAMiwgQDMpCisgICAgICAgIEludCBANSA9IEFkZChAMSwgQDQpCisgICAgICAgIFZvaWRANiA9
IFN0b3JlKEAwLCBANSwgQ29udHJvbERlcGVuZGVudHxXcml0ZXM6VG9wKQorICAgICAgICBWb2lk
QDcgPSBSZXR1cm4oQDAsIFRlcm1pbmFsKQorCisgICAgICAgIC8vIE9sZCBvcHRpbWl6ZWQgQUlS
CisgICAgICAgIE1vdmUzMiAgICAleDEsICAgICAgICAgICAgICAgJXgxLCBAMgorICAgICAgICBT
dG9yZTMyICAleHpyLCAoJXgwLCV4MSwyXnNjYWxlKSwgQDYKKyAgICAgICAgTW92ZSAgICAgICAk
MCwgICAgICAgICAgICAgICAleDAsIEA3CisgICAgICAgIFJldDMyICAgICAleDAsICAgICAgICAg
ICAgICAgICAgICBANworCisgICAgICAgIC8vIE5ldyBvcHRpbWl6ZWQgQUlSCisgICAgICAgIFN0
b3JlMzIgICV4enIsICgleDAsJXgxLDJec2NhbGUpLCBANgorICAgICAgICBNb3ZlICAgICAgICQw
LCAgICAgICAgICAgICAgICV4MCwgQDcKKyAgICAgICAgUmV0MzIgICAgICV4MCwgICAgICAgICAg
ICAgICAgICAgIEA3CisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXg6OkJh
c2VJbmRleCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6aW5kZXhFeHRlbmRUeXBlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDY0KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NDo6bG9hZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bG9hZDE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDE2
U2lnbmVkRXh0ZW5kVG8zMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Omxv
YWQ4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZDhTaWduZWRFeHRl
bmRUbzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmU2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlMzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpzdG9yZTE2KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6c3RvcmU4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
bG9hZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRGbG9h
dCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnN0b3JlRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6c3RvcmVGbG9hdCk6CisgICAgICAgICog
YjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6OkFyZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6
OmFzQmFzZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKiBi
My90ZXN0YjNfMi5jcHA6CisgICAgICAgICh0ZXN0TG9hZFplcm9FeHRlbmRJbmRleEFkZHJlc3Mp
OgorICAgICAgICAodGVzdExvYWRTaWduRXh0ZW5kSW5kZXhBZGRyZXNzKToKKyAgICAgICAgKHRl
c3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MpOgorICAgICAgICAodGVzdFN0b3JlU2lnbkV4
dGVuZEluZGV4QWRkcmVzcyk6CisgICAgICAgIChhZGRCaXRUZXN0cyk6CisKIDIwMjEtMDctMTUg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWxpYXMg
SlNDIGdyYXBoIGR1bXBpbmcgb3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCBkYzY4M2YxZWFm
ZDc3M2E2YzIwMjBkNTQzZGE1ZGZlMzYyM2U0Y2Q1Li4zZDE5NDlhNDA3ODVkOTljYTYxNTk1YWFi
MDRiZTZmMWQwZDk2YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtMTI0LDcgKzEyNCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIFRpbWVzRWlnaHQsCiAgICAgICAgIFNjYWxlUHRyID0gaXNBZGRyZXNz
NjRCaXQoKSA/IFRpbWVzRWlnaHQgOiBUaW1lc0ZvdXIsCiAgICAgfTsKLSAgICAKKworICAgIGVu
dW0gY2xhc3MgRXh0ZW5kIDogdWludDhfdCB7CisgICAgICAgIFpFeHQzMiwKKyAgICAgICAgU0V4
dDMyLAorICAgICAgICBOb25lCisgICAgfTsKKwogICAgIHN0cnVjdCBCYXNlSW5kZXg7CiAgICAg
CiAgICAgc3RhdGljIFJlZ2lzdGVySUQgd2l0aFN3YXBwZWRSZWdpc3RlcihSZWdpc3RlcklEIG9y
aWdpbmFsLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBAIC0yMTAsMTggKzIx
NiwyMyBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBEZXNjcmliZXMgYSBjb21wbGV4IGFkZHJl
c3NpbmcgbW9kZS4KICAgICBzdHJ1Y3QgQmFzZUluZGV4IHsKLSAgICAgICAgQmFzZUluZGV4KFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zm
c2V0ID0gMCkKKyAgICAgICAgQmFzZUluZGV4KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgU2NhbGUgc2NhbGUsIGludDMyX3Qgb2Zmc2V0ID0gMCwgRXh0ZW5kIGV4dGVuZCA9IEV4
dGVuZDo6Tm9uZSkKICAgICAgICAgICAgIDogYmFzZShiYXNlKQogICAgICAgICAgICAgLCBpbmRl
eChpbmRleCkKICAgICAgICAgICAgICwgc2NhbGUoc2NhbGUpCiAgICAgICAgICAgICAsIG9mZnNl
dChvZmZzZXQpCisgICAgICAgICAgICAsIGV4dGVuZChleHRlbmQpCiAgICAgICAgIHsKKyNpZiAh
Q1BVKEFSTTY0KQorICAgICAgICAgICAgQVNTRVJUKGV4dGVuZCA9PSBFeHRlbmQ6Ok5vbmUpOwor
I2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVySUQgYmFzZTsKICAg
ICAgICAgUmVnaXN0ZXJJRCBpbmRleDsKICAgICAgICAgU2NhbGUgc2NhbGU7CiAgICAgICAgIGlu
dDMyX3Qgb2Zmc2V0OworICAgICAgICBFeHRlbmQgZXh0ZW5kOwogICAgICAgICAKICAgICAgICAg
QmFzZUluZGV4IHdpdGhPZmZzZXQoaW50MzJfdCBhZGRpdGlvbmFsT2Zmc2V0KQogICAgICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCmluZGV4IDRhOTBlNWExZmRlNDhjY2ZjNDdhNzI3NDllNTg1ZjdkMDI0ZTFjYzUu
Ljg4ZjM0MGI0ODNlOTRmMGY2ZGM0MjVmNDQ4YTQ5NmE1ZWUxMGZmNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBA
IC0xMzY3LDYgKzEzNjcsMTcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIE1lbW9yeSBhY2Nl
c3Mgb3BlcmF0aW9uczoKKyAgICBBc3NlbWJsZXI6OkV4dGVuZFR5cGUgaW5kZXhFeHRlbmRUeXBl
KEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChhZGRyZXNzLmV4dGVu
ZCkgeworICAgICAgICBjYXNlIEV4dGVuZDo6WkV4dDMyOgorICAgICAgICAgICAgcmV0dXJuIEFz
c2VtYmxlcjo6VVhUVzsKKyAgICAgICAgY2FzZSBFeHRlbmQ6OlNFeHQzMjoKKyAgICAgICAgICAg
IHJldHVybiBBc3NlbWJsZXI6OlNYVFc7CisgICAgICAgIGNhc2UgRXh0ZW5kOjpOb25lOgorICAg
ICAgICAgICAgcmV0dXJuIEFzc2VtYmxlcjo6VVhUWDsKKyAgICAgICAgfQorICAgIH0KIAogICAg
IHZvaWQgbG9hZDY0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewpAQCAtMTM4MCwxMiArMTM5MSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkNjQoQmFz
ZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRk
cmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMykpIHsK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIubGRyPDY0PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGlu
ZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIo
YWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBt
ZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVy
LCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRy
ZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2ND4oZGVzdCwg
YWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTQ3OSwxMiAr
MTQ5MCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFh
ZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMikpIHsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJs
ZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyPDMy
PihkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRy
ZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBn
ZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIs
IGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2Fs
ZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1v
cnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApAQCAtMTUyNiwxMiArMTUzNywxMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBsb2FkMTYoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFk
ZHJlc3Muc2NhbGUgPT0gMSkpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcmgoZGVzdCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2Nh
bGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyaChkZXN0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0
cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5
VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxl
cjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVt
b3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4
RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmxkcmgoZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApA
QCAtMTU3MCwxMiArMTU4MSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkMTZTaWduZWRFeHRl
bmRUbzMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxl
ID09IDEpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJzaDwzMj4oZGVzdCwgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyc2g8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRy
KFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlU
ZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVy
OjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1v
cnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhF
eHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIu
bGRyc2g8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9
CiAKQEAgLTE2MDEsMTIgKzE2MTIsMTIgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZDgoQmFzZUlu
ZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghYWRkcmVz
cy5vZmZzZXQgJiYgIWFkZHJlc3Muc2NhbGUpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxk
cmIoZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFk
ZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyYihkZXN0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5z
Y2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0
ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2
ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgs
IEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5k
ZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmxkcmIoZGVzdCwgYWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwog
ICAgIH0KICAgICAKQEAgLTE2MzUsMTIgKzE2NDYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgbG9h
ZDhTaWduZWRFeHRlbmRUbzMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICFhZGRyZXNzLnNjYWxlKSB7Ci0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJzYjwzMj4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIubGRyc2I8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
aW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0z
MihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIs
IG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0
ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFk
ZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIubGRyc2I8MzI+KGRl
c3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAgLTE2NzQs
MTIgKzE2ODUsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmU2NChSZWdpc3RlcklEIHNyYywg
QmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYm
ICghYWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDMpKSB7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3Nl
bWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Ry
PDY0PihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFk
ZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCks
IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdp
c3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNj
YWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0PihzcmMsIGFkZHJlc3MuYmFzZSwgbWVt
b3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCkBAIC0xNzgxLDEyICsxNzkyLDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNz
KQogICAgIHsKICAgICAgICAgaWYgKCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUg
fHwgYWRkcmVzcy5zY2FsZSA9PSAyKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDMy
PihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5z
Y2FsZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0
ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2
ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgs
IEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5k
ZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7
CiAgICAgfQogCkBAIC0xODQ4LDEyICsxODU5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3Jl
MTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYg
KCFhZGRyZXNzLm9mZnNldCAmJiAoIWFkZHJlc3Muc2NhbGUgfHwgYWRkcmVzcy5zY2FsZSA9PSAx
KSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyaChzcmMsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN0cmgoc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGluZGV4
RXh0ZW5kVHlwZShhZGRyZXNzKSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIoYWRk
cmVzcy5vZmZzZXQpLCBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBtZW1v
cnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5z
Y2FsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZDw2ND4obWVtb3J5VGVtcFJlZ2lzdGVyLCBt
ZW1vcnlUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGluZGV4RXh0ZW5kVHlwZShhZGRyZXNz
KSwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmgoc3JjLCBhZGRyZXNz
LmJhc2UsIG1lbW9yeVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCkBAIC0xODc2LDEyICsxODg3LDEy
IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFk
ZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICFhZGRyZXNzLnNj
YWxlKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHJiKHNyYywgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgaW5k
ZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRvUHRyKFRydXN0ZWRJbW0zMihh
ZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIsIG1l
bW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRYLCBhZGRyZXNz
LnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1vcnlUZW1wUmVnaXN0ZXIs
IG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJl
c3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJl
c3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKQEAgLTIxODksMTIgKzIyMDAs
MTIgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZERvdWJsZShCYXNlSW5kZXggYWRkcmVzcywgRlBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICgh
YWRkcmVzcy5zY2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDMpKSB7Ci0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1i
bGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjw2
ND4oZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRk
cmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwg
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBt
X2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAg
ICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2Nh
bGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHI8NjQ+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVt
b3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCkBAIC0yMjE2LDEyICsyMjI3LDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5z
Y2FsZSB8fCBhZGRyZXNzLnNjYWxlID09IDIpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5s
ZHI8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgQXNzZW1ibGVyOjpVWFRY
LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxkcjwzMj4oZGVzdCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFk
ZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
c2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVk
TWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNz
LmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3RlciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5sZHI8MzI+KGRlc3QsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJl
Z2lzdGVyKTsKICAgICB9CiAKQEAgLTI0NzMsMTIgKzI0ODQsMTIgQEAgcHVibGljOgogICAgIHZv
aWQgc3RvcmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAg
ewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0ICYmICghYWRkcmVzcy5zY2FsZSB8fCBhZGRy
ZXNzLnNjYWxlID09IDMpKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHI8NjQ+KHNyYywg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJlc3Muc2Nh
bGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyPDY0PihzcmMsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgaW5kZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25FeHRlbmQzMlRv
UHRyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0PihtZW1v
cnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgQXNzZW1i
bGVyOjpVWFRYLCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkPDY0Piht
ZW1vcnlUZW1wUmVnaXN0ZXIsIG1lbW9yeVRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgaW5k
ZXhFeHRlbmRUeXBlKGFkZHJlc3MpLCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3RyPDY0PihzcmMsIGFkZHJlc3MuYmFzZSwgbWVtb3J5VGVtcFJlZ2lzdGVyKTsKICAgICB9
CiAKQEAgLTI0OTQsMTIgKzI1MDUsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmVGbG9hdChG
UFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmICgh
YWRkcmVzcy5vZmZzZXQgJiYgKCFhZGRyZXNzLnNjYWxlIHx8IGFkZHJlc3Muc2NhbGUgPT0gMikp
IHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cjwzMj4oc3JjLCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIEFzc2VtYmxlcjo6VVhUWCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBp
bmRleEV4dGVuZFR5cGUoYWRkcmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbkV4dGVuZDMyVG9QdHIoVHJ1c3RlZEltbTMy
KGFkZHJlc3Mub2Zmc2V0KSwgZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3Rlciwg
bWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBBc3NlbWJsZXI6OlVYVFgsIGFkZHJl
c3Muc2NhbGUpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KG1lbW9yeVRlbXBSZWdpc3Rl
ciwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBpbmRleEV4dGVuZFR5cGUoYWRk
cmVzcyksIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICBtX2Fzc2VtYmxlci5zdHI8MzI+KHNyYywg
YWRkcmVzcy5iYXNlLCBtZW1vcnlUZW1wUmVnaXN0ZXIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA4ZmMxYWZjMmE1MzkxZjQ1NjVjM2Qz
ZDk4ZjdhMGY3NjQ4MzYyM2RhLi42M2E2ZmIxMmZhNTIyY2RhZGFkYmJhOTlmZjYyOWQ3ODc4YTA4
NDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtNDk5
LDYgKzQ5OSwzMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAg
ICBib29sIGlzTWVyZ2VhYmxlVmFsdWUoVmFsdWUqIHYsIEIzOjpPcGNvZGUgYjNPcGNvZGUsIGJv
b2wgY2hlY2tDYW5CZUludGVybmFsKQorICAgIHsgCisgICAgICAgIGlmICh2LT5vcGNvZGUoKSAh
PSBiM09wY29kZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNoZWNr
Q2FuQmVJbnRlcm5hbCAmJiAhY2FuQmVJbnRlcm5hbCh2KSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDApKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PElu
dD4+CisgICAgQXJnIGluZGV4QXJnKFRtcCBiYXNlLCBWYWx1ZSogaW5kZXgsIHVuc2lnbmVkIHNj
YWxlLCBJbnQgb2Zmc2V0KQorICAgIHsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIC8vIE1heWJl
LCB0aGUgaWRlYWwgYXBwcm9hY2ggaXMgdG8gaW50cm9kdWNlIGEgZGVjb3JhdG9yIChJbmRleEBF
WFQpIHRvIHRoZSBBaXIgb3BlcmFuZCAKKyAgICAgICAgLy8gdG8gcHJvdmlkZSBhbiBleHRlbnNp
b24gb3Bwb3J0dW5pdHkgZm9yIHRoZSBzcGVjaWZpYyBmb3JtIHVuZGVyIHRoZSBBaXIgb3Bjb2Rl
LgorICAgICAgICBpZiAoaXNNZXJnZWFibGVWYWx1ZShpbmRleCwgWkV4dDMyLCBmYWxzZSkpCisg
ICAgICAgICAgICByZXR1cm4gQXJnOjppbmRleChiYXNlLCB0bXAoaW5kZXgtPmNoaWxkKDApKSwg
c2NhbGUsIG9mZnNldCwgTWFjcm9Bc3NlbWJsZXI6OkV4dGVuZDo6WkV4dDMyKTsKKyAgICAgICAg
aWYgKGlzTWVyZ2VhYmxlVmFsdWUoaW5kZXgsIFNFeHQzMiwgZmFsc2UpKQorICAgICAgICAgICAg
cmV0dXJuIEFyZzo6aW5kZXgoYmFzZSwgdG1wKGluZGV4LT5jaGlsZCgwKSksIHNjYWxlLCBvZmZz
ZXQsIE1hY3JvQXNzZW1ibGVyOjpFeHRlbmQ6OlNFeHQzMik7CisjZW5kaWYKKyAgICAgICAgcmV0
dXJuIEFyZzo6aW5kZXgoYmFzZSwgdG1wKGluZGV4KSwgc2NhbGUsIG9mZnNldCk7CisgICAgfQor
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zm
c2V0PEludD4+CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2NhbGVGb3JTaGwoVmFsdWUq
IHNobCwgSW50IG9mZnNldCwgc3RkOjpvcHRpb25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxv
cHQpCiAgICAgewpAQCAtNTQ5LDcgKzU3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBBcmcoKTsKICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMo
aW5kZXgtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyhiYXNlKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEFyZygpOwotICAgICAgICAgICAgICAgIHJldHVybiBBcmc6OmluZGV4
KHRtcChiYXNlKSwgdG1wKGluZGV4LT5jaGlsZCgwKSksICpzY2FsZSwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaW5kZXhBcmcodG1wKGJhc2UpLCBpbmRleC0+Y2hpbGQoMCksICpz
Y2FsZSwgb2Zmc2V0KTsKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGlmIChBcmcgcmVz
dWx0ID0gdHJ5SW5kZXgobGVmdCwgcmlnaHQpKQpAQCAtNTYxLDcgKzU4Niw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgfHwgIUFyZzo6aXNWYWxpZEluZGV4Rm9ybSgxLCBvZmZzZXQsIHdp
ZHRoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2soKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgcmV0dXJuIEFyZzo6aW5kZXgodG1wKGxlZnQpLCB0bXAocmlnaHQpLCAxLCBv
ZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIGluZGV4QXJnKHRtcChsZWZ0KSwgcmlnaHQsIDEs
IG9mZnNldCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFNobDogewpAQCAtNTc0LDcgKzU5
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfHwgIUFyZzo6aXNWYWxpZEluZGV4Rm9y
bSgxLCBvZmZzZXQsIHdpZHRoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2soKTsK
IAotICAgICAgICAgICAgcmV0dXJuIEFyZzo6aW5kZXgodG1wKGxlZnQpLCB0bXAobGVmdCksIDEs
IG9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4gaW5kZXhBcmcodG1wKGxlZnQpLCBsZWZ0LCAx
LCBvZmZzZXQpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBGcmFtZVBvaW50ZXI6CkBAIC01
OTQsNyArNjE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIHBlcmhhcHMgbW9yZSBpbXBv
cnRhbnRseSwgaXQgd291bGQgYWxsb3cgdXMgdG8gYXZvaWQgYSB0cnVuY2F0aW5nCiAgICAgICAg
ICAgICAvLyBtb3ZlLiBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjM0NjUKIAotICAgICAgICAgICAgcmV0dXJuIEFyZzo6aW5kZXgoVG1wKHdhc21BZGRyZXNz
LT5waW5uZWRHUFIoKSksIHRtcChwb2ludGVyKSwgMSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmRleEFyZyhUbXAod2FzbUFkZHJlc3MtPnBpbm5lZEdQUigpKSwgcG9pbnRlciwgMSwg
b2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yMTE3LDcgKzIxNDIs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2tlZC5jb250YWlucyhzaGwt
PmNoaWxkKDApKSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1fbG9ja2VkLmNvbnRhaW5zKG90aGVy
KSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGFwcGVuZChsZWFPcGNvZGUsIEFyZzo6aW5k
ZXgodG1wKG90aGVyKSwgdG1wKHNobC0+Y2hpbGQoMCkpLCAqc2NhbGUsIG9mZnNldCksIHRtcCht
X3ZhbHVlKSk7CisgICAgICAgICAgICBhcHBlbmQobGVhT3Bjb2RlLCBpbmRleEFyZyh0bXAob3Ro
ZXIpLCBzaGwtPmNoaWxkKDApLCAqc2NhbGUsIG9mZnNldCksIHRtcChtX3ZhbHVlKSk7CiAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChpbm5lckFkZCk7CiAgICAgICAgICAgICBjb21taXRJbnRl
cm5hbChzaGwpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTM0LDcgKzIxNTksNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBBU1NFUlQoIW1f
bG9ja2VkLmNvbnRhaW5zKHZhbHVlLT5jaGlsZCgwKSkpOwogICAgICAgICBBU1NFUlQoIW1fbG9j
a2VkLmNvbnRhaW5zKHZhbHVlLT5jaGlsZCgxKSkpOwotICAgICAgICBhcHBlbmQobGVhT3Bjb2Rl
LCBBcmc6OmluZGV4KHRtcCh2YWx1ZS0+Y2hpbGQoMCkpLCB0bXAodmFsdWUtPmNoaWxkKDEpKSwg
MSwgb2Zmc2V0KSwgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgYXBwZW5kKGxlYU9wY29kZSwgaW5k
ZXhBcmcodG1wKHZhbHVlLT5jaGlsZCgwKSksIHZhbHVlLT5jaGlsZCgxKSwgMSwgb2Zmc2V0KSwg
dG1wKG1fdmFsdWUpKTsKICAgICAgICAgY29tbWl0SW50ZXJuYWwoaW5uZXJBZGQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNDkwLDE1ICsyNTE1LDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGxvd2VyKCkKICAgICB7CiAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBBaXI7Ci0KLSAg
ICAgICAgYXV0byBpc01lcmdlYWJsZUIzT3Bjb2RlID0gWyZdIChWYWx1ZSogdiwgQjM6Ok9wY29k
ZSBiM09wY29kZSkgLT4gYm9vbCB7IAotICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IGIz
T3Bjb2RlIHx8ICFjYW5CZUludGVybmFsKHYpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH07Ci0KICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICBj
YXNlIEIzOjpOb3A6IHsKICAgICAgICAgICAgIC8vIFllcywgd2Ugd2lsbCB0b3RhbGx5IHNlZSBO
b3AncyBiZWNhdXNlIHNvbWUgcGhhc2VzIHdpbGwgcmVwbGFjZVdpdGhOb3AoKSBpbnN0ZWFkIG9m
CkBAIC0yNTk5LDEwICsyNjE1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYWlyT3Bjb2RlICE9IE11bHRpcGx5QWRkNjQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURE
TDogZCA9IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5TGVmdCwgU0V4dDMyKSAmJiBpc01lcmdl
YWJsZUIzT3Bjb2RlKG11bHRpcGx5UmlnaHQsIFNFeHQzMikpIAorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlMZWZ0LCBTRXh0MzIsIHRydWUpICYm
IGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlSaWdodCwgU0V4dDMyLCB0cnVlKSkgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyOwogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gVU1BRERMOiBkID0gWkV4dDMyKG4pICogWkV4dDMyKG0p
ICsgYQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVs
dGlwbHlMZWZ0LCBaRXh0MzIpICYmIGlzTWVyZ2VhYmxlQjNPcGNvZGUobXVsdGlwbHlSaWdodCwg
WkV4dDMyKSkgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVWYWx1ZSht
dWx0aXBseUxlZnQsIFpFeHQzMiwgdHJ1ZSkgJiYgaXNNZXJnZWFibGVWYWx1ZShtdWx0aXBseVJp
Z2h0LCBaRXh0MzIsIHRydWUpKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
TXVsdGlwbHlBZGRaZXJvRXh0ZW5kMzI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
QWlyOjpPb3BzOwogICAgICAgICAgICAgICAgICAgICB9OwpAQCAtMjY4NywxMCArMjcwMywxMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAoYWlyT3Bjb2RlICE9IE11bHRpcGx5
U3ViNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQWlyOjpPb3BzOwogICAgICAg
ICAgICAgICAgICAgICAvLyBTTVNVQkw6IGQgPSBhIC0gU0V4dDMyKG4pICogU0V4dDMyKG0pCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5TGVmdCwg
U0V4dDMyKSAmJiBpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5UmlnaHQsIFNFeHQzMikpIAor
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVWYWx1ZShtdWx0aXBseUxlZnQsIFNF
eHQzMiwgdHJ1ZSkgJiYgaXNNZXJnZWFibGVWYWx1ZShtdWx0aXBseVJpZ2h0LCBTRXh0MzIsIHRy
dWUpKSAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNdWx0aXBseVN1YlNpZ25FeHRl
bmQzMjsKICAgICAgICAgICAgICAgICAgICAgLy8gVU1TVUJMOiBkID0gYSAtIFpFeHQzMihuKSAq
IFpFeHQzMihtKQotICAgICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVCM09wY29kZSht
dWx0aXBseUxlZnQsIFpFeHQzMikgJiYgaXNNZXJnZWFibGVCM09wY29kZShtdWx0aXBseVJpZ2h0
LCBaRXh0MzIpKSAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWVyZ2VhYmxlVmFsdWUobXVs
dGlwbHlMZWZ0LCBaRXh0MzIsIHRydWUpICYmIGlzTWVyZ2VhYmxlVmFsdWUobXVsdGlwbHlSaWdo
dCwgWkV4dDMyLCB0cnVlKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTXVsdGlw
bHlTdWJaZXJvRXh0ZW5kMzI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBaXI6Ok9vcHM7
CiAgICAgICAgICAgICAgICAgfTsKQEAgLTI3NjYsMTAgKzI3ODIsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGFpck9wY29kZSAhPSBNdWx0aXBseU5lZzY0KQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAgICAgICAg
Ly8gU01ORUdMOiBkID0gLShTRXh0MzIobikgKiBTRXh0MzIobSkpCi0gICAgICAgICAgICAgICAg
ICAgIGlmIChpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5TGVmdCwgU0V4dDMyKSAmJiBpc01l
cmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5UmlnaHQsIFNFeHQzMikpIAorICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNNZXJnZWFibGVWYWx1ZShtdWx0aXBseUxlZnQsIFNFeHQzMiwgdHJ1ZSkgJiYg
aXNNZXJnZWFibGVWYWx1ZShtdWx0aXBseVJpZ2h0LCBTRXh0MzIsIHRydWUpKSAKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBNdWx0aXBseU5lZ1NpZ25FeHRlbmQzMjsKICAgICAgICAg
ICAgICAgICAgICAgLy8gVU1ORUdMOiBkID0gLShaRXh0MzIobikgKiBaRXh0MzIobSkpCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5TGVmdCwgWkV4
dDMyKSAmJiBpc01lcmdlYWJsZUIzT3Bjb2RlKG11bHRpcGx5UmlnaHQsIFpFeHQzMikpIAorICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNNZXJnZWFibGVWYWx1ZShtdWx0aXBseUxlZnQsIFpFeHQz
MiwgdHJ1ZSkgJiYgaXNNZXJnZWFibGVWYWx1ZShtdWx0aXBseVJpZ2h0LCBaRXh0MzIsIHRydWUp
KSAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNdWx0aXBseU5lZ1plcm9FeHRlbmQz
MjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICAgICAgICAgICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggY2NlZjQ1Njg4MDNj
ZTI1NzIxMzBlM2JlYjc2YzEwZGVlYjhhNzI3OS4uY2U1YTRlNzM3OWFkNjQ0NDVmMGMzYWJkMTI5
ZjMyOWI5NDdmZTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC02
MjksNyArNjI5LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIElu
dCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIHN0YXRpYyBBcmcg
aW5kZXgoQWlyOjpUbXAgYmFzZSwgQWlyOjpUbXAgaW5kZXgsIHVuc2lnbmVkIHNjYWxlLCBJbnQg
b2Zmc2V0KQorICAgIHN0YXRpYyBBcmcgaW5kZXgoQWlyOjpUbXAgYmFzZSwgQWlyOjpUbXAgaW5k
ZXgsIHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0LCBNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kIGV4
dGVuZCA9IE1hY3JvQXNzZW1ibGVyOjpFeHRlbmQ6Ok5vbmUpCiAgICAgewogICAgICAgICBBU1NF
UlQoYmFzZS5pc0dQKCkpOwogICAgICAgICBBU1NFUlQoaW5kZXguaXNHUCgpKTsKQEAgLTY0MCw2
ICs2NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gaW5kZXg7CiAgICAg
ICAgIHJlc3VsdC5tX3NjYWxlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2NhbGUpOwogICAgICAg
ICByZXN1bHQubV9vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIHJlc3VsdC5tX2V4dGVuZCA9IGV4
dGVuZDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEzNzksNyArMTM4MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzSW5kZXgoKSk7CiAgICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KAogICAgICAgICAgICAgbV9iYXNlLmdwcigpLCBtX2lu
ZGV4LmdwcigpLCBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6U2NhbGU+KGxvZ1NjYWxlKCkp
LAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KG1fb2Zmc2V0KSk7
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4obV9vZmZzZXQpLCBt
X2V4dGVuZCk7CiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24gYXNSZWxhdGlvbmFsQ29uZGl0aW9uKCkgY29uc3QKQEAgLTE0ODQsNiArMTQ4NSw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgaW50NjRfdCBtX29mZnNldCB7IDAgfTsKICAgICBLaW5kIG1f
a2luZCB7IEludmFsaWQgfTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6RXh0ZW5kIG1fZXh0ZW5kIHsg
TWFjcm9Bc3NlbWJsZXI6OkV4dGVuZDo6Tm9uZSB9OwogICAgIGludDMyX3QgbV9zY2FsZSB7IDEg
fTsKICAgICBBaXI6OlRtcCBtX2Jhc2U7CiAgICAgQWlyOjpUbXAgbV9pbmRleDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuaAppbmRleCA5ODQ4ZjYzZTg2OWFmMmIzZmI1NmM1ZWIwNGFmZTBiYjM3
OTdiMDBjLi4zYmUyY2FhMmUxY2I2OGE2YWE0YWNjOGQzMzQ0YjMwNWNjOTUwNzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC04MjYsNiArODI2LDEwIEBAIHZvaWQgdGVzdE11bFRy
ZWVBcmczMihpbnQzMl90KTsKIHZvaWQgdGVzdEFyZyhpbnQgYXJndW1lbnQpOwogdm9pZCB0ZXN0
UmV0dXJuQ29uc3Q2NChpbnQ2NF90IHZhbHVlKTsKIHZvaWQgdGVzdFJldHVyblZvaWQoKTsKK3Zv
aWQgdGVzdExvYWRaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCk7Cit2b2lkIHRlc3RMb2FkU2lnbkV4
dGVuZEluZGV4QWRkcmVzcygpOwordm9pZCB0ZXN0U3RvcmVaZXJvRXh0ZW5kSW5kZXhBZGRyZXNz
KCk7Cit2b2lkIHRlc3RTdG9yZVNpZ25FeHRlbmRJbmRleEFkZHJlc3MoKTsKIHZvaWQgdGVzdEFk
ZEFyZyhpbnQpOwogdm9pZCB0ZXN0QWRkQXJncyhpbnQsIGludCk7CiB2b2lkIHRlc3RBZGRBcmdJ
bW0oaW50LCBpbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
M18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggMTcx
YjgzNzgxMzI1N2YxZDNlYzA2MmU5ZjY4NzkxZWI3YTJkMjBiNS4uNzhjNTkyYjAyNzZhNmM5MGJi
NGU5ZDMwNDM3NzljOWEwYmJhNzkwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIu
Y3BwCkBAIC0yOTcsNiArMjk3LDMxNCBAQCB2b2lkIHRlc3RSZXR1cm5Wb2lkKCkKICAgICBjb21w
aWxlQW5kUnVuPHZvaWQ+KHByb2MpOwogfQogCit2b2lkIHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4
QWRkcmVzcygpCit7CisgICAgaWYgKE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkgPCAyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRlc3QzMiA9IFsmXSAodWludDMyX3QgaW5kZXgs
IGludDMyX3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBW
YWx1ZSogYmFzZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5kZXgz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogaW5k
ZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgaW5k
ZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBi
YXNlVmFsdWUsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTaGws
IE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigp
LCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KGFt
b3VudCA9PSAyID8gIi4qbGRyLip1eHR3IzIuKiIgOiAiLipsZHIuKlsuKiwuKl0uKiIpOworICAg
ICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUp
OworICAgICAgICB9CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRy
X3Q+KCZudW0pOworICAgICAgICBpbnRwdHJfdCBiYXNlID0gYWRkciAtIChzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oaW5kZXgpIDw8IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQpKTsKKyAgICAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBiYXNlLCBpbmRleCksIG51bSk7Cisg
ICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbnVtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGlu
dDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAgICAgICAg
IHRlc3QzMihpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9CisgICAg
fQorCisgICAgYXV0byB0ZXN0NjQgPSBbJl0gKHVpbnQzMl90IGluZGV4LCBpbnQ2NF90IG51bSwg
aW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGJhc2VWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFpFeHQzMiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAg
ICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYmFzZVZhbHVlLCAKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmlnaW4oKSwgaW5k
ZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcykpOwor
CisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgICAgICBpZiAoaXNB
Uk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleChhbW91bnQgPT0gMyA/ICIu
Kmxkci4qdXh0dyMzLioiIDogIi4qbGRyLipbLiosLipdLioiKTsKKyAgICAgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsKKyAgICAgICAgfQor
ICAgICAgICBpbnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90PigmbnVtKTsKKyAg
ICAgICAgaW50cHRyX3QgYmFzZSA9IGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4
KSA8PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSk7CisgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ2NF90PigqY29kZSwgYmFzZSwgaW5kZXgpLCBudW0pOworICAgIH07CisKKyAgICBm
b3IgKGF1dG8gaW5kZXggOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51
bSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9
IDA7IGFtb3VudCA8IDEwOyArK2Ftb3VudCkKKyAgICAgICAgICAgICAgICB0ZXN0NjQoaW5kZXgu
dmFsdWUsIG51bS52YWx1ZSwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0
ZXN0TG9hZFNpZ25FeHRlbmRJbmRleEFkZHJlc3MoKQoreworICAgIGlmIChPcHRpb25zOjpkZWZh
dWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0ZXN0MzIg
PSBbJl0gKGludDMyX3QgaW5kZXgsIGludDMyX3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAg
ICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgICAgICBWYWx1ZSogYmFzZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgICAgICBWYWx1ZSogaW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkp
OworICAgICAgICBWYWx1ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
U0V4dDMyLCBPcmlnaW4oKSwgaW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAg
ICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBBZGQsIE9yaWdpbigpLCBiYXNlVmFsdWUsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0g
Y29tcGlsZVByb2MocHJvYyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIHJlZ2V4KGFtb3VudCA9PSAyID8gIi4qbGRyLipzeHR3IzIuKiIgOiAiLips
ZHIuKlsuKiwuKl0uKiIpOworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUs
IHJlZ2V4LmNfc3RyKCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIGludHB0cl90IGFkZHIg
PSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZudW0pOworICAgICAgICBpbnRwdHJfdCBiYXNlID0g
YWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IHN0YXRpY19jYXN0PGludHB0
cl90PihhbW91bnQpKTsKKyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDMyX3Q+KCpjb2RlLCBi
YXNlLCBpbmRleCksIG51bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbnVtIDogaW50MzJPcGVyYW5kcygpKSB7
CisgICAgICAgICAgICBmb3IgKGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1v
dW50KQorICAgICAgICAgICAgICAgIHRlc3QzMihpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91
bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byB0ZXN0NjQgPSBbJl0gKGludDMyX3Qg
aW5kZXgsIGludDY0X3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAg
ICAgICBWYWx1ZSogYmFzZVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSog
aW5kZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1
ZSogaW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU0V4dDMyLCBPcmlnaW4o
KSwgaW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLCBiYXNlVmFsdWUsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCAKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9y
aWdpbigpLCBhZGRyZXNzKSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJl
Z2V4KGFtb3VudCA9PSAzID8gIi4qbGRyLipzeHR3IzMuKiIgOiAiLipsZHIuKlsuKiwuKl0uKiIp
OworICAgICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCks
IHRydWUpOworICAgICAgICB9CisgICAgICAgIGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KCZudW0pOworICAgICAgICBpbnRwdHJfdCBiYXNlID0gYWRkciAtIChzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oaW5kZXgpIDw8IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQpKTsK
KyAgICAgICAgQ0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KCpjb2RlLCBiYXNlLCBpbmRleCksIG51
bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMyT3BlcmFuZHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gbnVtIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBm
b3IgKGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAg
ICAgICAgIHRlc3Q2NChpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZVplcm9FeHRlbmRJbmRleEFkZHJlc3MoKQorewor
ICAgIGlmIChPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byB0ZXN0MzIgPSBbJl0gKHVpbnQzMl90IGluZGV4LCBpbnQzMl90IG51bSwg
aW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSk7CisgICAg
ICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5kZXgz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSogaW5k
ZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgaW5k
ZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBi
YXNlLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBPcmln
aW4oKSwgaW5kZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsKKwor
ICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlzQVJN
NjQoKSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgoYW1vdW50ID09IDIgPyAiLipz
dHIuKnV4dHcjMi4qIiA6ICIuKnN0ci4qWy4qLC4qXS4qIik7CisgICAgICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAg
ICAgICAgaW50MzJfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAgIGludHB0cl90IGFkZHIgPSBi
aXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAgICAgICAgaW52b2tlPGludDMyX3Q+KCpj
b2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRleCkgPDwgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KGFtb3VudCkpLCBpbmRleCk7CisgICAgICAgIENIRUNLX0VRKHNsb3QsIG51bSk7
CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICBmb3IgKGF1dG8gbnVtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1vdW50KQorICAgICAgICAgICAg
ICAgIHRlc3QzMihpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91bnQpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgYXV0byB0ZXN0NjQgPSBbJl0gKHVpbnQzMl90IGluZGV4LCBpbnQ2NF90IG51
bSwgaW50MzJfdCBhbW91bnQpIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIHZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIG51bSk7Cisg
ICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBWYWx1ZSogaW5k
ZXgzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgICAgICBWYWx1ZSog
aW5kZXg2NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwg
aW5kZXgzMik7CisgICAgICAgIFZhbHVlKiBzY2FsZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpOworICAgICAgICBWYWx1ZSogYWRkcmVzcyA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigp
LCBiYXNlLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU2hsLCBP
cmlnaW4oKSwgaW5kZXg2NCwgc2NhbGUpKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgdmFsdWUsIGFkZHJlc3MpOworICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHZhbHVlKTsK
KworICAgICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICAgICAgaWYgKGlz
QVJNNjQoKSAmJiBhbW91bnQgPT0gMykgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVnZXgo
YW1vdW50ID09IDMgPyAiLipzdHIuKnV4dHcjMy4qIiA6ICIuKnN0ci4qWy4qLC4qXS4qIik7Cisg
ICAgICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgcmVnZXguY19zdHIoKSwgdHJ1
ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW50NjRfdCBzbG90ID0gMTIzNDEyMzQ7CisgICAgICAg
IGludHB0cl90IGFkZHIgPSBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZzbG90KTsKKyAgICAgICAg
aW52b2tlPGludDY0X3Q+KCpjb2RlLCBhZGRyIC0gKHN0YXRpY19jYXN0PGludHB0cl90PihpbmRl
eCkgPDwgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGFtb3VudCkpLCBpbmRleCk7CisgICAgICAgIENI
RUNLX0VRKHNsb3QsIG51bSk7CisgICAgfTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbnVtIDogaW50NjRPcGVyYW5kcygpKSB7
CisgICAgICAgICAgICBmb3IgKGludDMyX3QgYW1vdW50ID0gMDsgYW1vdW50IDwgMTA7ICsrYW1v
dW50KQorICAgICAgICAgICAgICAgIHRlc3Q2NChpbmRleC52YWx1ZSwgbnVtLnZhbHVlLCBhbW91
bnQpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RTdG9yZVNpZ25FeHRlbmRJbmRl
eEFkZHJlc3MoKQoreworICAgIGlmIChPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpIDwgMikK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0ZXN0MzIgPSBbJl0gKGludDMyX3QgaW5kZXgs
IGludDMyX3QgbnVtLCBpbnQzMl90IGFtb3VudCkgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgICAgICBW
YWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgbnVtKTsKKyAgICAgICAgVmFsdWUqIGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAg
IFZhbHVlKiBpbmRleDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAg
ICAgIFZhbHVlKiBpbmRleDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTRXh0MzIs
IE9yaWdpbigpLCBpbmRleDMyKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCk7CisgICAgICAgIFZhbHVl
KiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFk
ZCwgT3JpZ2luKCksIGJhc2UsIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTaGwsIE9yaWdpbigpLCBpbmRleDY0LCBzY2FsZSkpOworCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVz
cyk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgdmFsdWUpOworCisgICAgICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAg
ICAgICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyByZWdleChhbW91
bnQgPT0gMiA/ICIuKnN0ci4qc3h0dyMyLioiIDogIi4qc3RyLipbLiosLipdLioiKTsKKyAgICAg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCByZWdleC5jX3N0cigpLCB0cnVlKTsK
KyAgICAgICAgfQorICAgICAgICBpbnQzMl90IHNsb3QgPSAxMjM0MTIzNDsKKyAgICAgICAgaW50
cHRyX3QgYWRkciA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJnNsb3QpOworICAgICAgICBpbnZv
a2U8aW50MzJfdD4oKmNvZGUsIGFkZHIgLSAoc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGluZGV4KSA8
PCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oYW1vdW50KSksIGluZGV4KTsKKyAgICAgICAgQ0hFQ0tf
RVEoc2xvdCwgbnVtKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvIGluZGV4IDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBudW0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAg
ICAgICAgICAgIGZvciAoaW50MzJfdCBhbW91bnQgPSAwOyBhbW91bnQgPCAxMDsgKythbW91bnQp
CisgICAgICAgICAgICAgICAgdGVzdDMyKGluZGV4LnZhbHVlLCBudW0udmFsdWUsIGFtb3VudCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIHRlc3Q2NCA9IFsmXSAoaW50MzJfdCBpbmRl
eCwgaW50NjRfdCBudW0sIGludDMyX3QgYW1vdW50KSB7CisgICAgICAgIFByb2NlZHVyZSBwcm9j
OworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgICAg
IFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCBudW0pOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAg
ICAgVmFsdWUqIGluZGV4MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAg
ICAgICAgVmFsdWUqIGluZGV4NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNFeHQz
MiwgT3JpZ2luKCksIGluZGV4MzIpOworICAgICAgICBWYWx1ZSogc2NhbGUgPSByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KTsKKyAgICAgICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
QWRkLCBPcmlnaW4oKSwgYmFzZSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFNobCwgT3JpZ2luKCksIGluZGV4NjQsIHNjYWxlKSk7CisKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHZhbHVlLCBhZGRy
ZXNzKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCB2YWx1ZSk7CisKKyAgICAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7Cisg
ICAgICAgIGlmIChpc0FSTTY0KCkpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlZ2V4KGFt
b3VudCA9PSAzID8gIi4qc3RyLipzeHR3IzMuKiIgOiAiLipzdHIuKlsuKiwuKl0uKiIpOworICAg
ICAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsIHJlZ2V4LmNfc3RyKCksIHRydWUp
OworICAgICAgICB9CisgICAgICAgIGludDY0X3Qgc2xvdCA9IDEyMzQxMjM0OworICAgICAgICBp
bnRwdHJfdCBhZGRyID0gYml0d2lzZV9jYXN0PGludHB0cl90Pigmc2xvdCk7CisgICAgICAgIGlu
dm9rZTxpbnQ2NF90PigqY29kZSwgYWRkciAtIChzdGF0aWNfY2FzdDxpbnRwdHJfdD4oaW5kZXgp
IDw8IHN0YXRpY19jYXN0PGludHB0cl90PihhbW91bnQpKSwgaW5kZXgpOworICAgICAgICBDSEVD
S19FUShzbG90LCBudW0pOworICAgIH07CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG51bSA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICAgICAgZm9yIChpbnQzMl90IGFtb3VudCA9IDA7IGFtb3VudCA8IDEwOyArK2Ftb3Vu
dCkKKyAgICAgICAgICAgICAgICB0ZXN0NjQoaW5kZXgudmFsdWUsIG51bS52YWx1ZSwgYW1vdW50
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCB0ZXN0QWRkQXJnKGludCBhKQogewogICAg
IFByb2NlZHVyZSBwcm9jOwpAQCAtNTk0NCw2ICs2MjUyLDExIEBAIHZvaWQgYWRkQml0VGVzdHMo
Y29uc3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRh
c2tzKQogICAgIFJVTl9CSU5BUlkodGVzdEJpdFhvclRyZWVBcmdJbW0sIGludDY0T3BlcmFuZHMo
KSwgaW50NjRPcGVyYW5kcygpKTsKICAgICBSVU5fVU5BUlkodGVzdEJpdEFuZFRyZWVBcmczMiwg
aW50MzJPcGVyYW5kcygpKTsKICAgICBSVU5fVU5BUlkodGVzdEJpdE9yVHJlZUFyZzMyLCBpbnQz
Mk9wZXJhbmRzKCkpOworCisgICAgUlVOKHRlc3RMb2FkWmVyb0V4dGVuZEluZGV4QWRkcmVzcygp
KTsKKyAgICBSVU4odGVzdExvYWRTaWduRXh0ZW5kSW5kZXhBZGRyZXNzKCkpOworICAgIFJVTih0
ZXN0U3RvcmVaZXJvRXh0ZW5kSW5kZXhBZGRyZXNzKCkpOworICAgIFJVTih0ZXN0U3RvcmVTaWdu
RXh0ZW5kSW5kZXhBZGRyZXNzKCkpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>