<?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>227188</bug_id>
          
          <creation_ts>2021-06-19 18:03:18 -0700</creation_ts>
          <short_desc>Add a new pattern to instruction selector to utilize SMADDL supported by ARM64</short_desc>
          <delta_ts>2021-06-22 14:54:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yijia Huang">yijia_huang</reporter>
          <assigned_to name="Yijia Huang">yijia_huang</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>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>1771135</commentid>
    <comment_count>0</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-19 18:03:18 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771385</commentid>
    <comment_count>1</comment_count>
      <attachid>431889</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-21 11:55:17 -0700</bug_when>
    <thetext>Created attachment 431889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771390</commentid>
    <comment_count>2</comment_count>
      <attachid>431891</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-21 12:06:50 -0700</bug_when>
    <thetext>Created attachment 431891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771560</commentid>
    <comment_count>3</comment_count>
      <attachid>431891</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-21 18:17:09 -0700</bug_when>
    <thetext>Comment on attachment 431891
Patch

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

Nice. r=me

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2548
&gt;              Air::Opcode multiplyAddOpcode = tryOpcodeForType(MultiplyAdd32, MultiplyAdd64, m_value-&gt;type());

maybe worth an assert the multiple add sign extend is available on the same platforms as this, otherwise we wouldn&apos;t want it inside this if statement.

Maybe: ASSERT(isValidForm(MultiplyAdd64, Arg::Tmp, Arg::Tmp, Arg::Tmp, Arg::Tmp) == isValidForm(MultiplyAddSignExtend32, Arg::Tmp, Arg::Tmp, Arg::Tmp, Arg::Tmp))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771566</commentid>
    <comment_count>4</comment_count>
      <attachid>431938</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-21 18:47:00 -0700</bug_when>
    <thetext>Created attachment 431938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771703</commentid>
    <comment_count>5</comment_count>
      <attachid>431972</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-22 10:17:05 -0700</bug_when>
    <thetext>Created attachment 431972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771704</commentid>
    <comment_count>6</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-22 10:18:29 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #3)
&gt; Comment on attachment 431891 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431891&amp;action=review
&gt; 
&gt; Nice. r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2548
&gt; &gt;              Air::Opcode multiplyAddOpcode = tryOpcodeForType(MultiplyAdd32, MultiplyAdd64, m_value-&gt;type());
&gt; 
&gt; maybe worth an assert the multiple add sign extend is available on the same
&gt; platforms as this, otherwise we wouldn&apos;t want it inside this if statement.
&gt; 
&gt; Maybe: ASSERT(isValidForm(MultiplyAdd64, Arg::Tmp, Arg::Tmp, Arg::Tmp,
&gt; Arg::Tmp) == isValidForm(MultiplyAddSignExtend32, Arg::Tmp, Arg::Tmp,
&gt; Arg::Tmp, Arg::Tmp))

Updated, thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771711</commentid>
    <comment_count>7</comment_count>
      <attachid>431974</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-06-22 10:48:31 -0700</bug_when>
    <thetext>Created attachment 431974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771745</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-22 11:53:48 -0700</bug_when>
    <thetext>Committed r279134 (239048@main): &lt;https://commits.webkit.org/239048@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431974.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431889</attachid>
            <date>2021-06-21 11:55:17 -0700</date>
            <delta_ts>2021-06-21 12:06:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227188-20210621135516.patch</filename>
            <type>text/plain</type>
            <size>16649</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MzRjY2YyOTUyZTg2ZDc4ZDM3MTg1M2YwMjc0OGQzYzU0NDhlNTAwLi5lMmFjYTU3Njk0NDA2ODMz
ZWYwYjk1NWM3N2I2MDJiYjEzMGU0NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMS0wNi0yMSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBTTUFEREwgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduZWQgTXVsdGlwbHktQWRkIExvbmcoU01B
RERMKSwgc3VwcG9ydGVkIGJ5IEFSTTY0LCBtdWx0aXBsaWVzIHR3byAzMi1iaXQgCisgICAgICAg
IHJlZ2lzdGVyIHZhbHVlcywgYWRkcyBhIDY0LWJpdCByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRl
cyB0aGUgcmVzdWx0IHRvIHRoZSAKKyAgICAgICAgNjQtYml0IGRlc3RpbmF0aW9uIHJlZ2lzdGVy
LiBUaGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IgY2FuIHV0aWxpemUgdGhpcyB0byAKKyAgICAgICAg
bG93ZXJpbmcgY2VydGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBBaXIgb3B0
aW1pemF0aW9uLiAKKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIHNt
YWRkbCBkLCBuLCBtLCBhCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgd291bGQg
YmU6CisKKyAgICAgICAgZCA9IGEgKyBTRXh0MzIobikgKiBTRXh0MzIobSkKKyAgICAgICAgZCA9
IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAg
ICAgSW50IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBTRXh0MzIoVHJ1
bmMoQXJndW1lbnRSZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IFNFeHQzMihUcnVuYyhBcmd1
bWVudFJlZygleDIpKSkKKyAgICAgICAgSW50IEAzID0gTXVsKEAxLCBAMikKKyAgICAgICAgSW50
IEA0ID0gQWRkKEAwLCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkK
KworICAgICAgICBCZWZvcmUgQWRkaW5nIFNNQURETDoKKyAgICAgICAgLy8gT2xkIG9wdGltaXpl
ZCBBSVIKKyAgICAgICAgU2lnbkV4dGVuZDMyVG9QdHIgICV4MSwgJXgxLCAgICAgICAgICAgQDEK
KyAgICAgICAgU2lnbkV4dGVuZDMyVG9QdHIgICV4MiwgJXgyLCAgICAgICAgICAgQDIKKyAgICAg
ICAgTXVsdGlwbHlBZGQ2NCAgICAgICV4MSwgJXgyLCAleDAsICV4MCwgQDQKKyAgICAgICAgUmV0
NjQgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDUKKworICAgICAgICBBZnRlciBB
ZGRpbmcgU01BRERMOgorICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseUFkZFNpZ25FeHRlbmQzMiAleDEsICV4MiwgJXgwLCAleDAsIEA4CisgICAgICAgIFJldDY0
ICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDkKKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6Om11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
dGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJM
ZWZ0KToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyUmlnaHQpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18y
LmNwcDoKKyAgICAgICAgKHRlc3RNdWxBZGRBcmcpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NM
ZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRBcmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFk
ZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJB
cmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NMZWZ0MzIpOgorICAgICAgICAodGVz
dE11bEFkZEFyZ3NSaWdodDMyKToKKyAgICAgICAgKiBiMy90ZXN0YjNfMy5jcHA6CisgICAgICAg
IChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDYtMTkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtSZXZlcnQgcjI3ODU3Nl0gUHV0IHRoZSBCYXNlbGluZSBKSVQgcHJv
bG9ndWUgYW5kIG9wX2xvb3BfaGludCBjb2RlIGluIEpJVCB0aHVua3MuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4
IDBiMTc2NWRiMDg5YjJmOWE5OTlmNGM5NjllOTM4ZGE1YTczMmQ4ZDMuLjA0ZGM4ZGRlMzBkZTgw
NGU5ZWFhMjM5NDA1ZDY2MDAzMGEzYTU3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC02MjcsNiArNjI3LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubWFkZDw2ND4oZGVzdCwgbXVsTGVmdCwg
bXVsUmlnaHQsIHN1bW1hbmQpOwogICAgIH0KIAorICAgIHZvaWQgbXVsdGlwbHlBZGRTaWduRXh0
ZW5kMzIoUmVnaXN0ZXJJRCBtdWxMZWZ0LCBSZWdpc3RlcklEIG11bFJpZ2h0LCBSZWdpc3RlcklE
IHN1bW1hbmQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNt
YWRkbChkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCwgc3VtbWFuZCk7CisgICAgfQorCiAgICAgdm9p
ZCBtdWx0aXBseVN1YjY0KFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwg
UmVnaXN0ZXJJRCBtaW51ZW5kLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci5tc3ViPDY0PihkZXN0LCBtdWxMZWZ0LCBtdWxSaWdodCwgbWludWVuZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IDk5NDY1ODlj
MDI4YWMzZTQxZGZiZjlhNWY1YzI4ZDhmMzRmZWI2MzguLmI3YWZjZTllNWJmODM2MGNlNWI4N2E3
MWZjNTM0NDRhMTdkYmJkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
dGVzdG1hc20uY3BwCkBAIC05MjEsNiArOTIxLDUyIEBAIHZvaWQgdGVzdE11bDMyU2lnbkV4dGVu
ZCgpCiAgICAgfQogfQogCit2b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMkxlZnQoKQor
eworICAgIC8vIGQgPSBTRXh0MzIobikgKiBTRXh0MzIobSkgKyBhCisgICAgYXV0byBhZGQgPSBj
b21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoaml0KTsKKworICAgICAgICBqaXQubXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgCisg
ICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjIsIAorICAgICAgICAgICAgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOworCisgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7Cisg
ICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVy
YW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMoKSkKKyAgICAgICAgICAgICAgICBD
SEVDS19FUShpbnZva2U8aW50NjRfdD4oYWRkLCBuLCBtLCBhKSwgc3RhdGljX2Nhc3Q8aW50NjRf
dD4obikgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSArIGEpOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMlJpZ2h0KCkKK3sKKyAgICAvLyBk
ID0gYSArIFNFeHQzMihuKSAqIFNFeHQzMihtKQorICAgIGF1dG8gYWRkID0gY29tcGlsZShbPV0g
KENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7
CisKKyAgICAgICAgaml0Lm11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjIsIAorICAgICAgICAgICAg
R1BSSW5mbzo6YXJndW1lbnRHUFIwLCAKKyAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVl
R1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOworICAgICAgICBqaXQu
cmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMoKSkgewor
ICAgICAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9y
IChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpCisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoaW52
b2tlPGludDY0X3Q+KGFkZCwgYSwgbiwgbSksIGEgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSAq
IHN0YXRpY19jYXN0PGludDY0X3Q+KG0pKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCB0
ZXN0U3ViMzJBcmdzKCkKIHsKICAgICBmb3IgKGF1dG8gdmFsdWUgOiBpbnQzMk9wZXJhbmRzKCkp
IHsKQEAgLTMyNDcsNiArMzI5Myw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikgV1RG
X0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFp
cjY0SW50NjQoKSk7CiAgICAgUlVOKHRlc3RMb2FkU3RvcmVQYWlyNjREb3VibGUoKSk7CiAgICAg
UlVOKHRlc3RNdWwzMlNpZ25FeHRlbmQoKSk7CisgICAgUlVOKHRlc3RNdWx0aXBseUFkZFNpZ25F
eHRlbmQzMkxlZnQoKSk7CisgICAgUlVOKHRlc3RNdWx0aXBseUFkZFNpZ25FeHRlbmQzMlJpZ2h0
KCkpOwogICAgIFJVTih0ZXN0U3ViMzJBcmdzKCkpOwogICAgIFJVTih0ZXN0U3ViMzJJbW0oKSk7
CiAgICAgUlVOKHRlc3RTdWIzMkFyZ0ltbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKaW5kZXggNTNjZmE5ODQ4YTgxNzA3MDg5NDc5MGZkZWNjYWMxZTc1N2U3
M2U3ZS4uMTgyMzlhZTc2NjhmMzhmNzlhODlkZGY5MWYyNzE4ZTZjMzc4MTdjZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTI1NDQsMzYgKzI1NDQsNTUg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBZGQ6IHsKICAgICAgICAgICAgIGlmICh0cnlBcHBl
bmRMZWEoKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgQWlyOjpPcGNvZGUgbXVsdGlwbHlBZGRPcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKE11
bHRpcGx5QWRkMzIsIE11bHRpcGx5QWRkNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAg
ICBpZiAoaXNWYWxpZEZvcm0obXVsdGlwbHlBZGRPcGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6VG1wKSkgewogICAgICAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92
YWx1ZS0+Y2hpbGQoMCk7CiAgICAgICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+
Y2hpbGQoMSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpbW0ocmlnaHQpIHx8IG1fdmFsdWVUb1Rt
cFtyaWdodF0pIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlBcHBlbmRNdWx0aXBseUFk
ZCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkgLT4gYm9vbCB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobGVmdC0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFs
KGxlZnQpKQorICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeU11bHRpcGx5ID0gWyZdIChWYWx1
ZSogdikgLT4gYm9vbCB7IAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgp
ICE9IE11bCB8fCAhY2FuQmVJbnRlcm5hbCh2KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9sb2NrZWQuY29u
dGFpbnModi0+Y2hpbGQoMCkpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKHYtPmNoaWxkKDEpKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAg
ICAgICAgICAgICBhdXRvIHRyeVNFeHQzMiA9IFsmXSAoVmFsdWUqIHYpIC0+IGJvb2wgeyAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2LT5vcGNvZGUoKSA9PSBTRXh0MzIgJiYgY2Fu
QmVJbnRlcm5hbCh2KTsKKyAgICAgICAgICAgICAgICAgICAgfTsKIAorICAgICAgICAgICAgICAg
ICAgICAvLyBNQUREOiBkID0gbiAqIG0gKyBhCisgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5
QXBwZW5kTXVsdGlwbHlBZGQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJv
b2wgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0cnlNdWx0aXBseShsZWZ0KSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0gbGVmdC0+Y2hpbGQoMCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlSaWdodCA9IGxlZnQtPmNoaWxkKDEpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkJlSW50ZXJuYWwobXVsdGlwbHlMZWZ0KSB8fCBj
YW5CZUludGVybmFsKG11bHRpcGx5UmlnaHQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gU01BRERMOiBkID0g
U0V4dDMyKG4pICogIFNFeHQzMihtKSArIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
dWx0aXBseUFkZE9wY29kZSA9PSBNdWx0aXBseUFkZDY0ICYmIHRyeVNFeHQzMihtdWx0aXBseUxl
ZnQpICYmIHRyeVNFeHQzMihtdWx0aXBseVJpZ2h0KSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseUxlZnQtPmNoaWxkKDApKSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseVJpZ2h0LT5jaGlsZCgwKSksIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAocmlnaHQpLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG1wKG1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxlZnQpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5UmlnaHQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgICAgICAgICBhcHBlbmQobXVsdGlwbHlBZGRPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQp
LCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChyaWdodCksIHRtcChtX3ZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChsZWZ0KTsKLQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRpcGx5QWRkKGxlZnQsIHJpZ2h0KSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyeUFw
cGVuZE11bHRpcGx5QWRkKHJpZ2h0LCBsZWZ0KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRy
eUFwcGVuZE11bHRpcGx5QWRkKGxlZnQsIHJpZ2h0KSB8fCB0cnlBcHBlbmRNdWx0aXBseUFkZChy
aWdodCwgbGVmdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhcHBlbmRCaW5PcDxBZGQzMiwg
QWRkNjQsIEFkZERvdWJsZSwgQWRkRmxvYXQsIENvbW11dGF0aXZlPigKLSAgICAgICAgICAgICAg
ICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgYXBw
ZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3VibGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4o
bV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNv
ZGUub3Bjb2RlcwppbmRleCA1MjQzMjU4ZDk2ODczZTgxYjFhYzIyZWU4OGYwNDAwNGRiZjc1ZTY4
Li5kMzBkZWJmOWVlYzc3ZmJlYjVlM2JiY2QzMmMxMTk3YTAxMzhiZGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTI1MSw2ICsyNTEs
OSBAQCBhcm02NDogTXVsdGlwbHlBZGQzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMy
CiBhcm02NDogTXVsdGlwbHlBZGQ2NCBVOkc6NjQsIFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAg
ICBUbXAsIFRtcCwgVG1wLCBUbXAKIAorYXJtNjQ6IE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyIFU6
RzozMiwgVTpHOjMyLCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBUbXAsIFRtcAorCiBh
cm02NDogTXVsdGlwbHlTdWIzMiBVOkc6MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAg
VG1wLCBUbXAsIFRtcCwgVG1wCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCBhMjIz
ODEwNWFiMWI0NTkxNmUzY2NiNjM3NzliYWEyNTFiZWUwZWRkLi40MTU4Nzk1NTA2YTExMGQ5ODcz
NWFjNmUyYzA0NDY2MjY0MjM0MzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC04
NzIsNiArODcyLDggQEAgdm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQoKTsKIHZvaWQgdGVzdE11bEFk
ZEFyZ3NSaWdodCgpOwogdm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQzMigpOwogdm9pZCB0ZXN0TXVs
QWRkQXJnc1JpZ2h0MzIoKTsKK3ZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KCk7
Cit2b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzUmlnaHQoKTsKIHZvaWQgdGVzdE11bFN1
YkFyZ3NMZWZ0KCk7CiB2b2lkIHRlc3RNdWxTdWJBcmdzUmlnaHQoKTsKIHZvaWQgdGVzdE11bFN1
YkFyZ3NMZWZ0MzIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDM0
YWIwYTExNjlhN2UwMjkxODIwYWM4OGQ2MzdhNjQzNWVmYjkzNWUuLjRiMjg4YjY0NDViYzdjNzdh
NjBmN2M5NzNkN2E1NzZjZmZjNTUxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18y
LmNwcApAQCAtODQxLDcgKzg0MSwxMCBAQCB2b2lkIHRlc3RNdWxBZGRBcmcoaW50IGEpCiAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIHZhbHVl
LCB2YWx1ZSksCiAgICAgICAgICAgICB2YWx1ZSkpOwogCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ+KHByb2MsIGEpID09IGEgKiBhICsgYSk7CisgICAgYXV0byBjb2RlID0gY29tcGlsZVBy
b2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rp
b24oKmNvZGUsICJtYWRkIik7CisgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLCBh
LCBhKSA9PSBhICogYSArIGEpOwogfQogCiB2b2lkIHRlc3RNdWxBcmdzKGludCBhLCBpbnQgYikK
QEAgLTEwMDQsMTMgKzEwMDcsMTQgQEAgdm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQoKQogICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7
CiAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgp
KQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1hZGQiKTsKIAogICAgIGF1
dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RW
YWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBjIDog
dGVzdFZhbHVlcykKICAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUs
IGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZhbHVlICsgYy52YWx1
ZSk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDI4LDEyICsxMDMy
LDg3IEBAIHZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodCgpCiAgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZGVkKTsKIAogICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCAibWFkZCIpOwogCiAgICAgYXV0byB0ZXN0VmFsdWVzID0g
aW50NjRPcGVyYW5kcygpOwogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgewogICAgICAg
ICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byBjIDog
dGVzdFZhbHVlcykgeworICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKQogICAg
ICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1
ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSArIGIudmFsdWUgKiBjLnZhbHVlKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCB0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc0xlZnQoKQoreworICAg
IC8vIGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsgYQorICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogblZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgU0V4dDMyLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBW
YWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgU0V4
dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkp
KTsKKyAgICBWYWx1ZSogYVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworCisgICAgVmFsdWUqIG11
bFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBuVmFs
dWUsIG1WYWx1ZSk7CisgICAgVmFsdWUqIGFkZFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBBZGQsIE9yaWdpbigpLCBtdWxWYWx1ZSwgYVZhbHVlKTsKKyAgICByb290LT5hcHBl
bmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkVmFsdWUpOworCisg
ICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzbWFkZGwiKTsKKworICAgIGZvciAo
YXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJP
cGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMoKSkg
eworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBu
LnZhbHVlLCBtLnZhbHVlLCBhLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9
IHN0YXRpY19jYXN0PGludDY0X3Q+KG4udmFsdWUpICogc3RhdGljX2Nhc3Q8aW50NjRfdD4obS52
YWx1ZSkgKyBhLnZhbHVlOworICAgICAgICAgICAgICAgIENIRUNLKGxocyA9PSByaHMpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxBZGRTaWduRXh0
ZW5kMzJBcmdzUmlnaHQoKQoreworICAgIC8vIGQgPSBhICsgU0V4dDMyKG4pICogU0V4dDMyKG0p
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKworICAgIFZhbHVlKiBhVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUq
IG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFNFeHQzMiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7Cisg
ICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFNFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIpKSk7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAgICBWYWx1ZSogYWRkVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFWYWx1ZSwgbXVs
VmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBhZGRWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsK
KyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwg
InNtYWRkbCIpOworCisgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBp
bnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIG4udmFsdWUsIG0udmFsdWUpOworICAgICAg
ICAgICAgICAgIGludDY0X3QgcmhzID0gYS52YWx1ZSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4u
dmFsdWUpICogc3RhdGljX2Nhc3Q8aW50NjRfdD4obS52YWx1ZSk7CisgICAgICAgICAgICAgICAg
Q0hFQ0sobGhzID09IHJocyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0x
MDU1LDEzICsxMTM0LDE0IEBAIHZvaWQgdGVzdE11bEFkZEFyZ3NMZWZ0MzIoKQogICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAK
ICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQor
ICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1hZGQiKTsKIAogICAgIGF1dG8g
dGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1
ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVz
dFZhbHVlcykKICAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEu
dmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKiBiLnZhbHVlICsgYy52YWx1ZSk7
Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xMDgyLDEzICsxMTYyLDE0
IEBAIHZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodDMyKCkKICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQpOwogCiAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJtYWRkIik7CiAKICAgICBhdXRvIHRlc3RWYWx1ZXMgPSBp
bnQzMk9wZXJhbmRzKCk7CiAgICAgZm9yIChhdXRvIGEgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAg
IGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewotICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0
ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpCiAgICAg
ICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVl
LCBjLnZhbHVlKSA9PSBhLnZhbHVlICsgYi52YWx1ZSAqIGMudmFsdWUpOwotICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiM18zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMy5jcHAK
aW5kZXggODU5YjhmYzllNjM1NTg0NjJkODVmMWM1ZTdkM2EwMTA0MjU4ZjA1MS4uMTQ1MDY3ZjYw
N2VlMWY5MDViMzgzMWI0NGNlYjM1NjU4NmM5MDdjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzXzMuY3BwCkBAIC0zMTk2LDYgKzMxOTYsOCBAQCB2b2lkIGFkZEFyZ1Rlc3RzKGNvbnN0
IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNoYXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykK
ICAgICBSVU4odGVzdE11bEFkZEFyZ3NSaWdodCgpKTsKICAgICBSVU4odGVzdE11bEFkZEFyZ3NM
ZWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RNdWxBZGRBcmdzUmlnaHQzMigpKTsKKyAgICBSVU4odGVz
dE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KCkpOworICAgIFJVTih0ZXN0TXVsQWRkU2lnbkV4
dGVuZDMyQXJnc1JpZ2h0KCkpOwogICAgIFJVTih0ZXN0TXVsU3ViQXJnc0xlZnQoKSk7CiAgICAg
UlVOKHRlc3RNdWxTdWJBcmdzUmlnaHQoKSk7CiAgICAgUlVOKHRlc3RNdWxTdWJBcmdzTGVmdDMy
KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431891</attachid>
            <date>2021-06-21 12:06:50 -0700</date>
            <delta_ts>2021-06-21 18:46:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227188-20210621140649.patch</filename>
            <type>text/plain</type>
            <size>16650</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OTNjMGNmMWI2ZTcwMGVkMDQ1ZjkyZWU5ZDI3MmExODg0MTI4OGM1Li5lMTUwMDRjYjE0MGQ2OTVl
YmI4MDkwYTQ2MzYwMDBjNmE5N2Q3NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMS0wNi0yMSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBTTUFEREwgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduZWQgTXVsdGlwbHktQWRkIExvbmcoU01B
RERMKSwgc3VwcG9ydGVkIGJ5IEFSTTY0LCBtdWx0aXBsaWVzIHR3byAzMi1iaXQgCisgICAgICAg
IHJlZ2lzdGVyIHZhbHVlcywgYWRkcyBhIDY0LWJpdCByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRl
cyB0aGUgcmVzdWx0IHRvIHRoZSAKKyAgICAgICAgNjQtYml0IGRlc3RpbmF0aW9uIHJlZ2lzdGVy
LiBUaGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IgY2FuIHV0aWxpemUgdGhpcyB0byAKKyAgICAgICAg
bG93ZXJpbmcgY2VydGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBBaXIgb3B0
aW1pemF0aW9uLiAKKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIHNt
YWRkbCBkLCBuLCBtLCBhCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgd291bGQg
YmU6CisKKyAgICAgICAgZCA9IGEgKyBTRXh0MzIobikgKiBTRXh0MzIobSkKKyAgICAgICAgZCA9
IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAg
ICAgSW50IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBTRXh0MzIoVHJ1
bmMoQXJndW1lbnRSZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IFNFeHQzMihUcnVuYyhBcmd1
bWVudFJlZygleDIpKSkKKyAgICAgICAgSW50IEAzID0gTXVsKEAxLCBAMikKKyAgICAgICAgSW50
IEA0ID0gQWRkKEAwLCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkK
KworICAgICAgICBCZWZvcmUgQWRkaW5nIFNNQURETDoKKyAgICAgICAgLy8gT2xkIG9wdGltaXpl
ZCBBSVIKKyAgICAgICAgU2lnbkV4dGVuZDMyVG9QdHIgICV4MSwgJXgxLCAgICAgICAgICAgQDEK
KyAgICAgICAgU2lnbkV4dGVuZDMyVG9QdHIgICV4MiwgJXgyLCAgICAgICAgICAgQDIKKyAgICAg
ICAgTXVsdGlwbHlBZGQ2NCAgICAgICV4MSwgJXgyLCAleDAsICV4MCwgQDQKKyAgICAgICAgUmV0
NjQgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDUKKworICAgICAgICBBZnRlciBB
ZGRpbmcgU01BRERMOgorICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseUFkZFNpZ25FeHRlbmQzMiAleDEsICV4MiwgJXgwLCAleDAsIEA4CisgICAgICAgIFJldDY0
ICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDkKKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6Om11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
dGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJM
ZWZ0KToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyUmlnaHQpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18y
LmNwcDoKKyAgICAgICAgKHRlc3RNdWxBZGRBcmcpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NM
ZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRBcmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFk
ZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJB
cmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NMZWZ0MzIpOgorICAgICAgICAodGVz
dE11bEFkZEFyZ3NSaWdodDMyKToKKyAgICAgICAgKiBiMy90ZXN0YjNfMy5jcHA6CisgICAgICAg
IChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDYtMjEgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNl
bGVjdG9yIHRvIHV0aWxpemUgU01TVUJMIHN1cHBvcnRlZCBieSBBUk02NApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCBjYTg3YTllMDRhM2YyZjU4OTE3YzNhNzRhMzY4MGMyYzI3MTBhYjhmLi4xNDJjMzk3NzgyOWU2
ZWM2YTVlZGE3ZDdkMjk2M2E1YjZlMTYwMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNjI3LDYgKzYyNywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1hZGQ8NjQ+KGRlc3QsIG11bExlZnQs
IG11bFJpZ2h0LCBzdW1tYW5kKTsKICAgICB9CiAKKyAgICB2b2lkIG11bHRpcGx5QWRkU2lnbkV4
dGVuZDMyKFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJ
RCBzdW1tYW5kLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
bWFkZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1hbmQpOworICAgIH0KKwogICAgIHZv
aWQgbXVsdGlwbHlTdWI2NChSZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQs
IFJlZ2lzdGVySUQgbWludWVuZCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIubXN1Yjw2ND4oZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIG1pbnVlbmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCA3MGMwOWQy
ZTU2OTlkODNmNzc5MDRmNzgxZmRiZTJmZWJlM2FlNTJlLi5jYmE3ZjNmNTIwMGM3NmE4ZDgwOTJi
ZjQ2YzJjNzBlNWZmNjA0ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcApAQCAtOTIxLDYgKzkyMSw1MiBAQCB2b2lkIHRlc3RNdWwzMlNpZ25FeHRl
bmQoKQogICAgIH0KIH0KIAordm9pZCB0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkK
K3sKKyAgICAvLyBkID0gU0V4dDMyKG4pICogU0V4dDMyKG0pICsgYQorICAgIGF1dG8gYWRkID0g
Y29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAor
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKKyAgICAgICAgICAgIEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpCisgICAgICAgICAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KGFkZCwgbiwgbSwgYSksIHN0YXRpY19jYXN0PGludDY0
X3Q+KG4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4obSkgKyBhKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdodCgpCit7CisgICAgLy8g
ZCA9IGEgKyBTRXh0MzIobikgKiBTRXh0MzIobSkKKyAgICBhdXRvIGFkZCA9IGNvbXBpbGUoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQp
OworCisgICAgICAgIGppdC5tdWx0aXBseUFkZFNpZ25FeHRlbmQzMihHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKKyAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0
LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKQorICAgICAgICAgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0pLCBhICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obikg
KiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
dGVzdFN1YjMyQXJncygpCiB7CiAgICAgZm9yIChhdXRvIHZhbHVlIDogaW50MzJPcGVyYW5kcygp
KSB7CkBAIC0zMjcwLDYgKzMzMTYsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBSVU4odGVzdExvYWRTdG9yZVBh
aXI2NEludDY0KCkpOwogICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjY0RG91YmxlKCkpOwogICAg
IFJVTih0ZXN0TXVsMzJTaWduRXh0ZW5kKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWdu
RXh0ZW5kMzJMZWZ0KCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdo
dCgpKTsKICAgICBSVU4odGVzdFN1YjMyQXJncygpKTsKICAgICBSVU4odGVzdFN1YjMySW1tKCkp
OwogICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCmluZGV4IDMzODYzZWI4ZWM0ODcyNDIxNjVjZjEwODUwN2IwNjYwZTJh
ZTdmNGMuLjE0OGZjMWRkZWZiOWQwN2JhYjZmZGQwMjNjN2U0Nzc3MjcwYWNmYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTQ0LDM2ICsyNTQ0LDU1
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBw
ZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5QWRkT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShN
dWx0aXBseUFkZDMyLCBNdWx0aXBseUFkZDY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAg
ICAgaWYgKGlzVmFsaWRGb3JtKG11bHRpcGx5QWRkT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAs
IEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKICAgICAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1f
dmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUt
PmNoaWxkKDEpOwogICAgICAgICAgICAgICAgIGlmICghaW1tKHJpZ2h0KSB8fCBtX3ZhbHVlVG9U
bXBbcmlnaHRdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlB
ZGQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRlcm5h
bChsZWZ0KSkKKyAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9IFsmXSAoVmFs
dWUqIHYpIC0+IGJvb2wgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2LT5vcGNvZGUo
KSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNv
bnRhaW5zKHYtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgxKSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH07CiAKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsgCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi0+b3Bjb2RlKCkgPT0gU0V4dDMyICYmIGNh
bkJlSW50ZXJuYWwodik7CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gTUFERDogZCA9IG4gKiBtICsgYQorICAgICAgICAgICAgICAgICAgICBhdXRvIHRy
eUFwcGVuZE11bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBi
b29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJ5TXVsdGlwbHkobGVmdCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUqIG11bHRpcGx5TGVmdCA9IGxlZnQtPmNoaWxkKDApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSBsZWZ0LT5jaGlsZCgxKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5CZUludGVybmFsKG11bHRpcGx5TGVmdCkgfHwg
Y2FuQmVJbnRlcm5hbChtdWx0aXBseVJpZ2h0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURETDogZCA9
IFNFeHQzMihuKSAqICBTRXh0MzIobSkgKyBhCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bXVsdGlwbHlBZGRPcGNvZGUgPT0gTXVsdGlwbHlBZGQ2NCAmJiB0cnlTRXh0MzIobXVsdGlwbHlM
ZWZ0KSAmJiB0cnlTRXh0MzIobXVsdGlwbHlSaWdodCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcHBlbmQoTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0bXAobXVsdGlwbHlMZWZ0LT5jaGlsZCgwKSksIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0bXAobXVsdGlwbHlSaWdodC0+Y2hpbGQoMCkpLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKHJpZ2h0KSwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRtcChtX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlMZWZ0KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseVJpZ2h0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21taXRJbnRlcm5hbChsZWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kKG11bHRpcGx5QWRkT3Bjb2RlLCB0bXAobXVsdGlwbHlMZWZ0
KSwgdG1wKG11bHRpcGx5UmlnaHQpLCB0bXAocmlnaHQpLCB0bXAobV92YWx1ZSkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobGVmdCk7Ci0KICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAg
ICAgICAgICAgICAgIGlmICh0cnlBcHBlbmRNdWx0aXBseUFkZChsZWZ0LCByaWdodCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0cnlB
cHBlbmRNdWx0aXBseUFkZChyaWdodCwgbGVmdCkpCisgICAgICAgICAgICAgICAgICAgIGlmICh0
cnlBcHBlbmRNdWx0aXBseUFkZChsZWZ0LCByaWdodCkgfHwgdHJ5QXBwZW5kTXVsdGlwbHlBZGQo
cmlnaHQsIGxlZnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIs
IEFkZDY0LCBBZGREb3VibGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4oCi0gICAgICAgICAgICAg
ICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgIGFw
cGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+
KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bj
b2RlLm9wY29kZXMKaW5kZXggOWEyZTc0Mjc2NTM3MGYzM2Q2ZjJkYzY2MjUxZTYxN2E1NGZkMjI5
ZC4uMmM4ODM1OGZmMjYxNmQ4MTYwNmM2OWI0MGJlNTBhOTY2Yjk3YmMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC0yNTEsNiArMjUx
LDkgQEAgYXJtNjQ6IE11bHRpcGx5QWRkMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6Rzoz
MgogYXJtNjQ6IE11bHRpcGx5QWRkNjQgVTpHOjY0LCBVOkc6NjQsIFU6Rzo2NCwgRDpHOjY0CiAg
ICAgVG1wLCBUbXAsIFRtcCwgVG1wCiAKK2FybTY0OiBNdWx0aXBseUFkZFNpZ25FeHRlbmQzMiBV
Okc6MzIsIFU6RzozMiwgVTpHOjY0LCBEOkc6NjQKKyAgICBUbXAsIFRtcCwgVG1wLCBUbXAKKwog
YXJtNjQ6IE11bHRpcGx5U3ViMzIgVTpHOjMyLCBVOkc6MzIsIFU6RzozMiwgWkQ6RzozMgogICAg
IFRtcCwgVG1wLCBUbXAsIFRtcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXggYjVl
NGNmMmM3ODg4ODJmNjVkM2YxMmM3MzJlZTI0ZDVjNjgzM2VlNC4uZGI4YWEzMTg1ZTA3MThiZmE4
MmQxZGRkZDUzZDI0YTQ2OTMyMTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApAQCAt
ODcyLDYgKzg3Miw4IEBAIHZvaWQgdGVzdE11bEFkZEFyZ3NMZWZ0KCk7CiB2b2lkIHRlc3RNdWxB
ZGRBcmdzUmlnaHQoKTsKIHZvaWQgdGVzdE11bEFkZEFyZ3NMZWZ0MzIoKTsKIHZvaWQgdGVzdE11
bEFkZEFyZ3NSaWdodDMyKCk7Cit2b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzTGVmdCgp
Owordm9pZCB0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc1JpZ2h0KCk7CiB2b2lkIHRlc3RNdWxT
dWJBcmdzTGVmdCgpOwogdm9pZCB0ZXN0TXVsU3ViQXJnc1JpZ2h0KCk7CiB2b2lkIHRlc3RNdWxT
dWJBcmdzTGVmdDMyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAppbmRleCAx
ZGRjNzFmMTAyYWQ1YWFiYjcxOTIxMWRlNDc5ZjBkMWM4YTY5YTcxLi4zNGQ5MWQ1NmFiZTU2ZTZm
MDM3ZGQ3YTUyOTM5ZGNhNTg5MDkyZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzXzIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNf
Mi5jcHAKQEAgLTg0MSw3ICs4NDEsMTAgQEAgdm9pZCB0ZXN0TXVsQWRkQXJnKGludCBhKQogICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCB2YWx1
ZSwgdmFsdWUpLAogICAgICAgICAgICAgdmFsdWUpKTsKIAotICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhKSA9PSBhICogYSArIGEpOworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQ
cm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0
aW9uKCpjb2RlLCAibWFkZCIpOworICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwgYSwg
YSwgYSkgPT0gYSAqIGEgKyBhKTsKIH0KIAogdm9pZCB0ZXN0TXVsQXJncyhpbnQgYSwgaW50IGIp
CkBAIC0xMDA0LDEzICsxMDA3LDE0IEBAIHZvaWQgdGVzdE11bEFkZEFyZ3NMZWZ0KCkKICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQp
OwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQo
KSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJtYWRkIik7CiAKICAgICBh
dXRvIHRlc3RWYWx1ZXMgPSBpbnQ2NE9wZXJhbmRzKCk7CiAgICAgZm9yIChhdXRvIGEgOiB0ZXN0
VmFsdWVzKSB7CiAgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewotICAgICAgICAg
ICAgZm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYyA6
IHRlc3RWYWx1ZXMpCiAgICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2Rl
LCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlICogYi52YWx1ZSArIGMudmFs
dWUpOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTAyOCwxMiArMTAz
Miw4NyBAQCB2b2lkIHRlc3RNdWxBZGRBcmdzUmlnaHQoKQogICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAKICAgICBhdXRvIGNv
ZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVj
a1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1hZGQiKTsKIAogICAgIGF1dG8gdGVzdFZhbHVlcyA9
IGludDY0T3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAgICAg
ICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYyA6
IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykKICAg
ICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFs
dWUsIGMudmFsdWUpID09IGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1ZSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KCkKK3sKKyAg
ICAvLyBkID0gU0V4dDMyKG4pICogIFNFeHQzMihtKSArIGEKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIG5W
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFNFeHQzMiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAg
VmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFNF
eHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
KSk7CisgICAgVmFsdWUqIGFWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKworICAgIFZhbHVlKiBt
dWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZh
bHVlLCBtVmFsdWUpOworICAgIFZhbHVlKiBhZGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgbXVsVmFsdWUsIGFWYWx1ZSk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZFZhbHVlKTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAic21hZGRsIik7CisKKyAgICBmb3Ig
KGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMy
T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkp
IHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PigqY29kZSwg
bi52YWx1ZSwgbS52YWx1ZSwgYS52YWx1ZSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMg
PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihuLnZhbHVlKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0u
dmFsdWUpICsgYS52YWx1ZTsKKyAgICAgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsQWRkU2lnbkV4
dGVuZDMyQXJnc1JpZ2h0KCkKK3sKKyAgICAvLyBkID0gYSArIFNFeHQzMihuKSAqIFNFeHQzMiht
KQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICBWYWx1ZSogYVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVl
KiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBTRXh0MzIs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOwor
ICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9j
LCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKSkpOworCisgICAgVmFsdWUqIG11bFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNdWwsIE9yaWdpbigpLCBuVmFsdWUsIG1WYWx1ZSk7CisgICAgVmFsdWUqIGFkZFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBhVmFsdWUsIG11
bFZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgYWRkVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7
CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUs
ICJzbWFkZGwiKTsKKworICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7CisgICAg
ICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgICAgIGludDY0X3QgbGhzID0g
aW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBuLnZhbHVlLCBtLnZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBpbnQ2NF90IHJocyA9IGEudmFsdWUgKyBzdGF0aWNfY2FzdDxpbnQ2NF90Pihu
LnZhbHVlKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KG0udmFsdWUpOworICAgICAgICAgICAgICAg
IENIRUNLKGxocyA9PSByaHMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
MTA1NSwxMyArMTEzNCwxNCBAQCB2b2lkIHRlc3RNdWxBZGRBcmdzTGVmdDMyKCkKICAgICByb290
LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQpOwog
CiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkK
KyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJtYWRkIik7CiAKICAgICBhdXRv
IHRlc3RWYWx1ZXMgPSBpbnQzMk9wZXJhbmRzKCk7CiAgICAgZm9yIChhdXRvIGEgOiB0ZXN0VmFs
dWVzKSB7CiAgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewotICAgICAgICAgICAg
Zm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRl
c3RWYWx1ZXMpCiAgICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDMyX3Q+KCpjb2RlLCBh
LnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlICogYi52YWx1ZSArIGMudmFsdWUp
OwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTA4MiwxMyArMTE2Miwx
NCBAQCB2b2lkIHRlc3RNdWxBZGRBcmdzUmlnaHQzMigpCiAgICAgcm9vdC0+YXBwZW5kTmV3Q29u
dHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZGVkKTsKIAogICAgIGF1dG8gY29k
ZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNr
VXNlc0luc3RydWN0aW9uKCpjb2RlLCAibWFkZCIpOwogCiAgICAgYXV0byB0ZXN0VmFsdWVzID0g
aW50MzJPcGVyYW5kcygpOwogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVlcykgewogICAgICAg
ICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byBjIDog
dGVzdFZhbHVlcykgeworICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKQogICAg
ICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1
ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSArIGIudmFsdWUgKiBjLnZhbHVlKTsKLSAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjNfMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3Bw
CmluZGV4IDcxZTQ5YmM2MWRhMDgxMWQyMDM0NDU2OTg0MTgxYWUxZDBlN2UyMjUuLjdiNzZmYTBi
ZTAwMjQ0NzgwMzY3OGVlN2YxMThjNDA2YjQxZDBkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiM18zLmNwcApAQCAtMzE5Niw2ICszMTk2LDggQEAgdm9pZCBhZGRBcmdUZXN0cyhjb25z
dCBjaGFyKiBmaWx0ZXIsIERlcXVlPFJlZlB0cjxTaGFyZWRUYXNrPHZvaWQoKT4+PiYgdGFza3Mp
CiAgICAgUlVOKHRlc3RNdWxBZGRBcmdzUmlnaHQoKSk7CiAgICAgUlVOKHRlc3RNdWxBZGRBcmdz
TGVmdDMyKCkpOwogICAgIFJVTih0ZXN0TXVsQWRkQXJnc1JpZ2h0MzIoKSk7CisgICAgUlVOKHRl
c3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzTGVmdCgpKTsKKyAgICBSVU4odGVzdE11bEFkZFNpZ25F
eHRlbmQzMkFyZ3NSaWdodCgpKTsKICAgICBSVU4odGVzdE11bFN1YkFyZ3NMZWZ0KCkpOwogICAg
IFJVTih0ZXN0TXVsU3ViQXJnc1JpZ2h0KCkpOwogICAgIFJVTih0ZXN0TXVsU3ViQXJnc0xlZnQz
MigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431938</attachid>
            <date>2021-06-21 18:47:00 -0700</date>
            <delta_ts>2021-06-22 10:17:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227188-20210621204659.patch</filename>
            <type>text/plain</type>
            <size>16819</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OTNjMGNmMWI2ZTcwMGVkMDQ1ZjkyZWU5ZDI3MmExODg0MTI4OGM1Li5lMTUwMDRjYjE0MGQ2OTVl
YmI4MDkwYTQ2MzYwMDBjNmE5N2Q3NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMS0wNi0yMSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBTTUFEREwgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduZWQgTXVsdGlwbHktQWRkIExvbmcoU01B
RERMKSwgc3VwcG9ydGVkIGJ5IEFSTTY0LCBtdWx0aXBsaWVzIHR3byAzMi1iaXQgCisgICAgICAg
IHJlZ2lzdGVyIHZhbHVlcywgYWRkcyBhIDY0LWJpdCByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRl
cyB0aGUgcmVzdWx0IHRvIHRoZSAKKyAgICAgICAgNjQtYml0IGRlc3RpbmF0aW9uIHJlZ2lzdGVy
LiBUaGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IgY2FuIHV0aWxpemUgdGhpcyB0byAKKyAgICAgICAg
bG93ZXJpbmcgY2VydGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBBaXIgb3B0
aW1pemF0aW9uLiAKKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIHNt
YWRkbCBkLCBuLCBtLCBhCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgd291bGQg
YmU6CisKKyAgICAgICAgZCA9IGEgKyBTRXh0MzIobikgKiBTRXh0MzIobSkKKyAgICAgICAgZCA9
IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAg
ICAgSW50IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBTRXh0MzIoVHJ1
bmMoQXJndW1lbnRSZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IFNFeHQzMihUcnVuYyhBcmd1
bWVudFJlZygleDIpKSkKKyAgICAgICAgSW50IEAzID0gTXVsKEAxLCBAMikKKyAgICAgICAgSW50
IEA0ID0gQWRkKEAwLCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkK
KworICAgICAgICBCZWZvcmUgQWRkaW5nIFNNQURETDoKKyAgICAgICAgLy8gT2xkIG9wdGltaXpl
ZCBBSVIKKyAgICAgICAgU2lnbkV4dGVuZDMyVG9QdHIgICV4MSwgJXgxLCAgICAgICAgICAgQDEK
KyAgICAgICAgU2lnbkV4dGVuZDMyVG9QdHIgICV4MiwgJXgyLCAgICAgICAgICAgQDIKKyAgICAg
ICAgTXVsdGlwbHlBZGQ2NCAgICAgICV4MSwgJXgyLCAleDAsICV4MCwgQDQKKyAgICAgICAgUmV0
NjQgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDUKKworICAgICAgICBBZnRlciBB
ZGRpbmcgU01BRERMOgorICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseUFkZFNpZ25FeHRlbmQzMiAleDEsICV4MiwgJXgwLCAleDAsIEA4CisgICAgICAgIFJldDY0
ICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDkKKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6Om11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
dGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJM
ZWZ0KToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyUmlnaHQpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18y
LmNwcDoKKyAgICAgICAgKHRlc3RNdWxBZGRBcmcpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NM
ZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRBcmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFk
ZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJB
cmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NMZWZ0MzIpOgorICAgICAgICAodGVz
dE11bEFkZEFyZ3NSaWdodDMyKToKKyAgICAgICAgKiBiMy90ZXN0YjNfMy5jcHA6CisgICAgICAg
IChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDYtMjEgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNl
bGVjdG9yIHRvIHV0aWxpemUgU01TVUJMIHN1cHBvcnRlZCBieSBBUk02NApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCBjYTg3YTllMDRhM2YyZjU4OTE3YzNhNzRhMzY4MGMyYzI3MTBhYjhmLi4xNDJjMzk3NzgyOWU2
ZWM2YTVlZGE3ZDdkMjk2M2E1YjZlMTYwMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNjI3LDYgKzYyNywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1hZGQ8NjQ+KGRlc3QsIG11bExlZnQs
IG11bFJpZ2h0LCBzdW1tYW5kKTsKICAgICB9CiAKKyAgICB2b2lkIG11bHRpcGx5QWRkU2lnbkV4
dGVuZDMyKFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJ
RCBzdW1tYW5kLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
bWFkZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1hbmQpOworICAgIH0KKwogICAgIHZv
aWQgbXVsdGlwbHlTdWI2NChSZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQs
IFJlZ2lzdGVySUQgbWludWVuZCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIubXN1Yjw2ND4oZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIG1pbnVlbmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCA3MGMwOWQy
ZTU2OTlkODNmNzc5MDRmNzgxZmRiZTJmZWJlM2FlNTJlLi5jYmE3ZjNmNTIwMGM3NmE4ZDgwOTJi
ZjQ2YzJjNzBlNWZmNjA0ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcApAQCAtOTIxLDYgKzkyMSw1MiBAQCB2b2lkIHRlc3RNdWwzMlNpZ25FeHRl
bmQoKQogICAgIH0KIH0KIAordm9pZCB0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkK
K3sKKyAgICAvLyBkID0gU0V4dDMyKG4pICogU0V4dDMyKG0pICsgYQorICAgIGF1dG8gYWRkID0g
Y29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAor
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKKyAgICAgICAgICAgIEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpCisgICAgICAgICAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KGFkZCwgbiwgbSwgYSksIHN0YXRpY19jYXN0PGludDY0
X3Q+KG4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4obSkgKyBhKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdodCgpCit7CisgICAgLy8g
ZCA9IGEgKyBTRXh0MzIobikgKiBTRXh0MzIobSkKKyAgICBhdXRvIGFkZCA9IGNvbXBpbGUoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQp
OworCisgICAgICAgIGppdC5tdWx0aXBseUFkZFNpZ25FeHRlbmQzMihHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKKyAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0
LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKQorICAgICAgICAgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0pLCBhICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obikg
KiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
dGVzdFN1YjMyQXJncygpCiB7CiAgICAgZm9yIChhdXRvIHZhbHVlIDogaW50MzJPcGVyYW5kcygp
KSB7CkBAIC0zMjcwLDYgKzMzMTYsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBSVU4odGVzdExvYWRTdG9yZVBh
aXI2NEludDY0KCkpOwogICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjY0RG91YmxlKCkpOwogICAg
IFJVTih0ZXN0TXVsMzJTaWduRXh0ZW5kKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWdu
RXh0ZW5kMzJMZWZ0KCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdo
dCgpKTsKICAgICBSVU4odGVzdFN1YjMyQXJncygpKTsKICAgICBSVU4odGVzdFN1YjMySW1tKCkp
OwogICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCmluZGV4IDMzODYzZWI4ZWM0ODcyNDIxNjVjZjEwODUwN2IwNjYwZTJh
ZTdmNGMuLjJhODBkYTIxYjFmYmVkZGRmMzU1MTdkZjIxNDhhZjA4MGQ4M2QyMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTQ0LDM2ICsyNTQ0LDU4
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBw
ZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIEFpcjo6T3Bjb2RlIG11bHRpcGx5QWRkT3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShN
dWx0aXBseUFkZDMyLCBNdWx0aXBseUFkZDY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAg
ICAgaWYgKGlzVmFsaWRGb3JtKG11bHRpcGx5QWRkT3Bjb2RlLCBBcmc6OlRtcCwgQXJnOjpUbXAs
IEFyZzo6VG1wLCBBcmc6OlRtcCkpIHsKICAgICAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IG1f
dmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IG1fdmFsdWUt
PmNoaWxkKDEpOwogICAgICAgICAgICAgICAgIGlmICghaW1tKHJpZ2h0KSB8fCBtX3ZhbHVlVG9U
bXBbcmlnaHRdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlB
ZGQgPSBbJl0gKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGxlZnQtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRlcm5h
bChsZWZ0KSkKKyAgICAgICAgICAgICAgICAgICAgYXV0byB0cnlNdWx0aXBseSA9IFsmXSAoVmFs
dWUqIHYpIC0+IGJvb2wgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2LT5vcGNvZGUo
KSAhPSBNdWwgfHwgIWNhbkJlSW50ZXJuYWwodikpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNv
bnRhaW5zKHYtPmNoaWxkKDApKSB8fCBtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgxKSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH07CiAKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byB0cnlTRXh0MzIgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsgCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi0+b3Bjb2RlKCkgPT0gU0V4dDMyICYmIGNh
bkJlSW50ZXJuYWwodik7CisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gTUFERDogZCA9IG4gKiBtICsgYQorICAgICAgICAgICAgICAgICAgICBhdXRvIHRy
eUFwcGVuZE11bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBi
b29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJ5TXVsdGlwbHkobGVmdCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsdWUqIG11bHRpcGx5TGVmdCA9IGxlZnQtPmNoaWxkKDApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWUqIG11bHRpcGx5UmlnaHQgPSBsZWZ0LT5jaGlsZCgxKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5CZUludGVybmFsKG11bHRpcGx5TGVmdCkgfHwg
Y2FuQmVJbnRlcm5hbChtdWx0aXBseVJpZ2h0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNNQURETDogZCA9
IFNFeHQzMihuKSAqICBTRXh0MzIobSkgKyBhCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
aXNWYWxpZEZvcm0oTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwg
QXJnOjpUbXAsIEFyZzo6VG1wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIG11bHRp
cGx5QWRkT3Bjb2RlID09IE11bHRpcGx5QWRkNjQgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgdHJ5U0V4dDMyKG11bHRpcGx5TGVmdCkgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgdHJ5U0V4dDMyKG11bHRpcGx5UmlnaHQpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kKE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQoMCkpLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5UmlnaHQtPmNoaWxkKDApKSwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChyaWdodCksIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0bXAobV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5TGVmdCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWl0SW50ZXJuYWwobGVmdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZChtdWx0aXBseUFkZE9wY29kZSwgdG1wKG11bHRpcGx5TGVmdCks
IHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKHJpZ2h0KSwgdG1wKG1fdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOwotCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAg
ICAgICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlwbHlBZGQobGVmdCwgcmlnaHQpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICBpZiAodHJ5QXBw
ZW5kTXVsdGlwbHlBZGQocmlnaHQsIGxlZnQpKQorICAgICAgICAgICAgICAgICAgICBpZiAodHJ5
QXBwZW5kTXVsdGlwbHlBZGQobGVmdCwgcmlnaHQpIHx8IHRyeUFwcGVuZE11bHRpcGx5QWRkKHJp
Z2h0LCBsZWZ0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFkZDMyLCBB
ZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+KAotICAgICAgICAgICAgICAg
IG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICBhcHBl
bmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFkZERvdWJsZSwgQWRkRmxvYXQsIENvbW11dGF0aXZlPiht
X3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzCmluZGV4IDlhMmU3NDI3NjUzNzBmMzNkNmYyZGM2NjI1MWU2MTdhNTRmZDIyOWQu
LjJjODgzNThmZjI2MTZkODE2MDZjNjliNDBiZTUwYTk2NmI5N2JjMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtMjUxLDYgKzI1MSw5
IEBAIGFybTY0OiBNdWx0aXBseUFkZDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIK
IGFybTY0OiBNdWx0aXBseUFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAg
IFRtcCwgVG1wLCBUbXAsIFRtcAogCithcm02NDogTXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIgVTpH
OjMyLCBVOkc6MzIsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBUbXAsIFRtcCwgVG1wCisKIGFy
bTY0OiBNdWx0aXBseVN1YjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKICAgICBU
bXAsIFRtcCwgVG1wLCBUbXAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IGI1ZTRj
ZjJjNzg4ODgyZjY1ZDNmMTJjNzMyZWUyNGQ1YzY4MzNlZTQuLmRiOGFhMzE4NWUwNzE4YmZhODJk
MWRkZGQ1M2QyNGE0NjkzMjEwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTg3
Miw2ICs4NzIsOCBAQCB2b2lkIHRlc3RNdWxBZGRBcmdzTGVmdCgpOwogdm9pZCB0ZXN0TXVsQWRk
QXJnc1JpZ2h0KCk7CiB2b2lkIHRlc3RNdWxBZGRBcmdzTGVmdDMyKCk7CiB2b2lkIHRlc3RNdWxB
ZGRBcmdzUmlnaHQzMigpOwordm9pZCB0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc0xlZnQoKTsK
K3ZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NSaWdodCgpOwogdm9pZCB0ZXN0TXVsU3Vi
QXJnc0xlZnQoKTsKIHZvaWQgdGVzdE11bFN1YkFyZ3NSaWdodCgpOwogdm9pZCB0ZXN0TXVsU3Vi
QXJnc0xlZnQzMigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3Ri
M18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKaW5kZXggMWRk
YzcxZjEwMmFkNWFhYmI3MTkyMTFkZTQ3OWYwZDFjOGE2OWE3MS4uMzRkOTFkNTZhYmU1NmU2ZjAz
N2RkN2E1MjkzOWRjYTU4OTA5MmQwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzIu
Y3BwCkBAIC04NDEsNyArODQxLDEwIEBAIHZvaWQgdGVzdE11bEFkZEFyZyhpbnQgYSkKICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgdmFsdWUs
IHZhbHVlKSwKICAgICAgICAgICAgIHZhbHVlKSk7CiAKLSAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludD4ocHJvYywgYSkgPT0gYSAqIGEgKyBhKTsKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgIm1hZGQiKTsKKyAgICBDSEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEsIGEs
IGEpID09IGEgKiBhICsgYSk7CiB9CiAKIHZvaWQgdGVzdE11bEFyZ3MoaW50IGEsIGludCBiKQpA
QCAtMTAwNCwxMyArMTAwNywxNCBAQCB2b2lkIHRlc3RNdWxBZGRBcmdzTGVmdCgpCiAgICAgcm9v
dC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZGVkKTsK
IAogICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkp
CisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibWFkZCIpOwogCiAgICAgYXV0
byB0ZXN0VmFsdWVzID0gaW50NjRPcGVyYW5kcygpOwogICAgIGZvciAoYXV0byBhIDogdGVzdFZh
bHVlcykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAg
IGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykgeworICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0
ZXN0VmFsdWVzKQogICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2NF90PigqY29kZSwg
YS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAqIGIudmFsdWUgKyBjLnZhbHVl
KTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEwMjgsMTIgKzEwMzIs
ODcgQEAgdm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0KCkKICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQpOwogCiAgICAgYXV0byBjb2Rl
ID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJtYWRkIik7CiAKICAgICBhdXRvIHRlc3RWYWx1ZXMgPSBp
bnQ2NE9wZXJhbmRzKCk7CiAgICAgZm9yIChhdXRvIGEgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAg
IGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewotICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0
ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpCiAgICAg
ICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVl
LCBjLnZhbHVlKSA9PSBhLnZhbHVlICsgYi52YWx1ZSAqIGMudmFsdWUpOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzTGVmdCgpCit7CisgICAg
Ly8gZCA9IFNFeHQzMihuKSAqICBTRXh0MzIobSkgKyBhCisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBuVmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBTRXh0MzIsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZh
bHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBTRXh0
MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkp
OworICAgIFZhbHVlKiBhVmFsdWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisKKyAgICBWYWx1ZSogbXVs
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1
ZSwgbVZhbHVlKTsKKyAgICBWYWx1ZSogYWRkVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEFkZCwgT3JpZ2luKCksIG11bFZhbHVlLCBhVmFsdWUpOworICAgIHJvb3QtPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRWYWx1ZSk7CisKKyAg
ICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInNtYWRkbCIpOworCisgICAgZm9yIChh
dXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9w
ZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhIDogaW50NjRPcGVyYW5kcygpKSB7
CisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oKmNvZGUsIG4u
dmFsdWUsIG0udmFsdWUsIGEudmFsdWUpOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4obi52YWx1ZSkgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtLnZh
bHVlKSArIGEudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdGVzdE11bEFkZFNpZ25FeHRl
bmQzMkFyZ3NSaWdodCgpCit7CisgICAgLy8gZCA9IGEgKyBTRXh0MzIobikgKiBTRXh0MzIobSkK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworCisgICAgVmFsdWUqIGFWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSog
blZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgU0V4dDMyLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAg
ICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywg
U0V4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MikpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAgIFZhbHVlKiBhZGRWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYVZhbHVlLCBtdWxW
YWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGFkZFZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwor
ICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAi
c21hZGRsIik7CisKKyAgICBmb3IgKGF1dG8gYSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRv
IG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGxocyA9IGlu
dm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgbi52YWx1ZSwgbS52YWx1ZSk7CisgICAgICAg
ICAgICAgICAgaW50NjRfdCByaHMgPSBhLnZhbHVlICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obi52
YWx1ZSkgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBD
SEVDSyhsaHMgPT0gcmhzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTEw
NTUsMTMgKzExMzQsMTQgQEAgdm9pZCB0ZXN0TXVsQWRkQXJnc0xlZnQzMigpCiAgICAgcm9vdC0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZGVkKTsKIAog
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibWFkZCIpOwogCiAgICAgYXV0byB0
ZXN0VmFsdWVzID0gaW50MzJPcGVyYW5kcygpOwogICAgIGZvciAoYXV0byBhIDogdGVzdFZhbHVl
cykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsKLSAgICAgICAgICAgIGZv
ciAoYXV0byBjIDogdGVzdFZhbHVlcykgeworICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0ZXN0
VmFsdWVzKQogICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQzMl90PigqY29kZSwgYS52
YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAqIGIudmFsdWUgKyBjLnZhbHVlKTsK
LSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEwODIsMTMgKzExNjIsMTQg
QEAgdm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0MzIoKQogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAKICAgICBhdXRvIGNvZGUg
PSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgIm1hZGQiKTsKIAogICAgIGF1dG8gdGVzdFZhbHVlcyA9IGlu
dDMyT3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAg
Zm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRl
c3RWYWx1ZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykKICAgICAg
ICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUs
IGMudmFsdWUpID09IGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1ZSk7Ci0gICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcApp
bmRleCA3MWU0OWJjNjFkYTA4MTFkMjAzNDQ1Njk4NDE4MWFlMWQwZTdlMjI1Li43Yjc2ZmEwYmUw
MDI0NDc4MDM2NzhlZTdmMTE4YzQwNmI0MWQwZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfMy5jcHAKQEAgLTMxOTYsNiArMzE5Niw4IEBAIHZvaWQgYWRkQXJnVGVzdHMoY29uc3Qg
Y2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+Pj4mIHRhc2tzKQog
ICAgIFJVTih0ZXN0TXVsQWRkQXJnc1JpZ2h0KCkpOwogICAgIFJVTih0ZXN0TXVsQWRkQXJnc0xl
ZnQzMigpKTsKICAgICBSVU4odGVzdE11bEFkZEFyZ3NSaWdodDMyKCkpOworICAgIFJVTih0ZXN0
TXVsQWRkU2lnbkV4dGVuZDMyQXJnc0xlZnQoKSk7CisgICAgUlVOKHRlc3RNdWxBZGRTaWduRXh0
ZW5kMzJBcmdzUmlnaHQoKSk7CiAgICAgUlVOKHRlc3RNdWxTdWJBcmdzTGVmdCgpKTsKICAgICBS
VU4odGVzdE11bFN1YkFyZ3NSaWdodCgpKTsKICAgICBSVU4odGVzdE11bFN1YkFyZ3NMZWZ0MzIo
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431972</attachid>
            <date>2021-06-22 10:17:05 -0700</date>
            <delta_ts>2021-06-22 10:49:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227188-20210622121704.patch</filename>
            <type>text/plain</type>
            <size>16961</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OTNjMGNmMWI2ZTcwMGVkMDQ1ZjkyZWU5ZDI3MmExODg0MTI4OGM1Li5lMTUwMDRjYjE0MGQ2OTVl
YmI4MDkwYTQ2MzYwMDBjNmE5N2Q3NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMS0wNi0yMSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBTTUFEREwgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduZWQgTXVsdGlwbHktQWRkIExvbmcoU01B
RERMKSwgc3VwcG9ydGVkIGJ5IEFSTTY0LCBtdWx0aXBsaWVzIHR3byAzMi1iaXQgCisgICAgICAg
IHJlZ2lzdGVyIHZhbHVlcywgYWRkcyBhIDY0LWJpdCByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRl
cyB0aGUgcmVzdWx0IHRvIHRoZSAKKyAgICAgICAgNjQtYml0IGRlc3RpbmF0aW9uIHJlZ2lzdGVy
LiBUaGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IgY2FuIHV0aWxpemUgdGhpcyB0byAKKyAgICAgICAg
bG93ZXJpbmcgY2VydGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBBaXIgb3B0
aW1pemF0aW9uLiAKKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIHNt
YWRkbCBkLCBuLCBtLCBhCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgd291bGQg
YmU6CisKKyAgICAgICAgZCA9IGEgKyBTRXh0MzIobikgKiBTRXh0MzIobSkKKyAgICAgICAgZCA9
IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAg
ICAgSW50IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBTRXh0MzIoVHJ1
bmMoQXJndW1lbnRSZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IFNFeHQzMihUcnVuYyhBcmd1
bWVudFJlZygleDIpKSkKKyAgICAgICAgSW50IEAzID0gTXVsKEAxLCBAMikKKyAgICAgICAgSW50
IEA0ID0gQWRkKEAwLCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkK
KworICAgICAgICBCZWZvcmUgQWRkaW5nIFNNQURETDoKKyAgICAgICAgLy8gT2xkIG9wdGltaXpl
ZCBBSVIKKyAgICAgICAgU2lnbkV4dGVuZDMyVG9QdHIgICV4MSwgJXgxLCAgICAgICAgICAgQDEK
KyAgICAgICAgU2lnbkV4dGVuZDMyVG9QdHIgICV4MiwgJXgyLCAgICAgICAgICAgQDIKKyAgICAg
ICAgTXVsdGlwbHlBZGQ2NCAgICAgICV4MSwgJXgyLCAleDAsICV4MCwgQDQKKyAgICAgICAgUmV0
NjQgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDUKKworICAgICAgICBBZnRlciBB
ZGRpbmcgU01BRERMOgorICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseUFkZFNpZ25FeHRlbmQzMiAleDEsICV4MiwgJXgwLCAleDAsIEA4CisgICAgICAgIFJldDY0
ICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDkKKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6Om11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
dGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJM
ZWZ0KToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyUmlnaHQpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18y
LmNwcDoKKyAgICAgICAgKHRlc3RNdWxBZGRBcmcpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NM
ZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRBcmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFk
ZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJB
cmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NMZWZ0MzIpOgorICAgICAgICAodGVz
dE11bEFkZEFyZ3NSaWdodDMyKToKKyAgICAgICAgKiBiMy90ZXN0YjNfMy5jcHA6CisgICAgICAg
IChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDYtMjEgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNl
bGVjdG9yIHRvIHV0aWxpemUgU01TVUJMIHN1cHBvcnRlZCBieSBBUk02NApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCBjYTg3YTllMDRhM2YyZjU4OTE3YzNhNzRhMzY4MGMyYzI3MTBhYjhmLi4xNDJjMzk3NzgyOWU2
ZWM2YTVlZGE3ZDdkMjk2M2E1YjZlMTYwMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNjI3LDYgKzYyNywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1hZGQ8NjQ+KGRlc3QsIG11bExlZnQs
IG11bFJpZ2h0LCBzdW1tYW5kKTsKICAgICB9CiAKKyAgICB2b2lkIG11bHRpcGx5QWRkU2lnbkV4
dGVuZDMyKFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJ
RCBzdW1tYW5kLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
bWFkZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1hbmQpOworICAgIH0KKwogICAgIHZv
aWQgbXVsdGlwbHlTdWI2NChSZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQs
IFJlZ2lzdGVySUQgbWludWVuZCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIubXN1Yjw2ND4oZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIG1pbnVlbmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCA3MGMwOWQy
ZTU2OTlkODNmNzc5MDRmNzgxZmRiZTJmZWJlM2FlNTJlLi5jYmE3ZjNmNTIwMGM3NmE4ZDgwOTJi
ZjQ2YzJjNzBlNWZmNjA0ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcApAQCAtOTIxLDYgKzkyMSw1MiBAQCB2b2lkIHRlc3RNdWwzMlNpZ25FeHRl
bmQoKQogICAgIH0KIH0KIAordm9pZCB0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkK
K3sKKyAgICAvLyBkID0gU0V4dDMyKG4pICogU0V4dDMyKG0pICsgYQorICAgIGF1dG8gYWRkID0g
Y29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAor
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKKyAgICAgICAgICAgIEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpCisgICAgICAgICAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KGFkZCwgbiwgbSwgYSksIHN0YXRpY19jYXN0PGludDY0
X3Q+KG4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4obSkgKyBhKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdodCgpCit7CisgICAgLy8g
ZCA9IGEgKyBTRXh0MzIobikgKiBTRXh0MzIobSkKKyAgICBhdXRvIGFkZCA9IGNvbXBpbGUoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQp
OworCisgICAgICAgIGppdC5tdWx0aXBseUFkZFNpZ25FeHRlbmQzMihHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKKyAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0
LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKQorICAgICAgICAgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0pLCBhICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obikg
KiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
dGVzdFN1YjMyQXJncygpCiB7CiAgICAgZm9yIChhdXRvIHZhbHVlIDogaW50MzJPcGVyYW5kcygp
KSB7CkBAIC0zMjcwLDYgKzMzMTYsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBSVU4odGVzdExvYWRTdG9yZVBh
aXI2NEludDY0KCkpOwogICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjY0RG91YmxlKCkpOwogICAg
IFJVTih0ZXN0TXVsMzJTaWduRXh0ZW5kKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWdu
RXh0ZW5kMzJMZWZ0KCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdo
dCgpKTsKICAgICBSVU4odGVzdFN1YjMyQXJncygpKTsKICAgICBSVU4odGVzdFN1YjMySW1tKCkp
OwogICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCmluZGV4IDMzODYzZWI4ZWM0ODcyNDIxNjVjZjEwODUwN2IwNjYwZTJh
ZTdmNGMuLjMyY2Y4MGY2MDUyMDdhNTFkODMyYTBiZjc2Y2QzODA0OWQ4YjNjM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTQ0LDM2ICsyNTQ0LDU4
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBw
ZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCisKKyAgICAg
ICAgICAgIGJvb2wgaXNWYWxpZEZvcm1NdWxBZGQ2NCA9IGlzVmFsaWRGb3JtKE11bHRpcGx5QWRk
NjQsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKTsKKyAgICAgICAgICAg
IGJvb2wgaXNWYWxpZEZvcm1NdWxBZGRTRXh0MzIgPSBpc1ZhbGlkRm9ybShNdWx0aXBseUFkZFNp
Z25FeHRlbmQzMiwgQXJnOjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApOworICAg
ICAgICAgICAgQVNTRVJUKGlzVmFsaWRGb3JtKGlzVmFsaWRGb3JtTXVsQWRkNjQgPT0gaXNWYWxp
ZEZvcm1NdWxBZGRTRXh0MzIpOwogICAgICAgICAgICAgQWlyOjpPcGNvZGUgbXVsdGlwbHlBZGRP
cGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKE11bHRpcGx5QWRkMzIsIE11bHRpcGx5QWRkNjQsIG1f
dmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0obXVsdGlwbHlBZGRP
cGNvZGUsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFyZzo6VG1wKSkgewogICAgICAg
ICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gbV92YWx1ZS0+Y2hpbGQoMCk7CiAgICAgICAgICAgICAg
ICAgVmFsdWUqIHJpZ2h0ID0gbV92YWx1ZS0+Y2hpbGQoMSk7CiAgICAgICAgICAgICAgICAgaWYg
KCFpbW0ocmlnaHQpIHx8IG1fdmFsdWVUb1RtcFtyaWdodF0pIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byB0cnlBcHBlbmRNdWx0aXBseUFkZCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZhbHVlKiBy
aWdodCkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVmdC0+b3Bjb2Rl
KCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKGxlZnQpKQorICAgICAgICAgICAgICAgICAgICBh
dXRvIHRyeU11bHRpcGx5ID0gWyZdIChWYWx1ZSogdikgLT4gYm9vbCB7IAorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHYtPm9wY29kZSgpICE9IE11bCB8fCAhY2FuQmVJbnRlcm5hbCh2KSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnModi0+Y2hpbGQoMCkpIHx8IG1fbG9ja2Vk
LmNvbnRhaW5zKHYtPmNoaWxkKDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgfTsKIAorICAgICAgICAgICAgICAgICAgICBhdXRvIHRyeVNFeHQzMiA9IFsm
XSAoVmFsdWUqIHYpIC0+IGJvb2wgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2
LT5vcGNvZGUoKSA9PSBTRXh0MzIgJiYgY2FuQmVJbnRlcm5hbCh2KTsKKyAgICAgICAgICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICAvLyBNQUREOiBkID0gbiAqIG0gKyBhCisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kTXVsdGlwbHlBZGQgPSBbJl0gKFZhbHVl
KiBsZWZ0LCBWYWx1ZSogcmlnaHQpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCF0cnlNdWx0aXBseShsZWZ0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlMZWZ0ID0g
bGVmdC0+Y2hpbGQoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSogbXVsdGlwbHlS
aWdodCA9IGxlZnQtPmNoaWxkKDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkJl
SW50ZXJuYWwobXVsdGlwbHlMZWZ0KSB8fCBjYW5CZUludGVybmFsKG11bHRpcGx5UmlnaHQpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gU01BRERMOiBkID0gU0V4dDMyKG4pICogIFNFeHQzMihtKSArIGEKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtdWx0aXBseUFkZE9wY29kZSA9PSBNdWx0aXBseUFk
ZDY0ICYmIHRyeVNFeHQzMihtdWx0aXBseUxlZnQpICYmIHRyeVNFeHQzMihtdWx0aXBseVJpZ2h0
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChNdWx0aXBseUFkZFNpZ25F
eHRlbmQzMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0aXBseUxl
ZnQtPmNoaWxkKDApKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChtdWx0
aXBseVJpZ2h0LT5jaGlsZCgwKSksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
bXAocmlnaHQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG1fdmFsdWUp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5hbChtdWx0aXBseUxl
ZnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5
UmlnaHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQobXVsdGlwbHlB
ZGRPcGNvZGUsIHRtcChtdWx0aXBseUxlZnQpLCB0bXAobXVsdGlwbHlSaWdodCksIHRtcChyaWdo
dCksIHRtcChtX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRJbnRlcm5h
bChsZWZ0KTsKLQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRp
cGx5QWRkKGxlZnQsIHJpZ2h0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRpcGx5QWRkKHJpZ2h0LCBsZWZ0KSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHRyeUFwcGVuZE11bHRpcGx5QWRkKGxlZnQsIHJpZ2h0
KSB8fCB0cnlBcHBlbmRNdWx0aXBseUFkZChyaWdodCwgbGVmdCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBhcHBlbmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFkZERvdWJsZSwgQWRkRmxvYXQsIENv
bW11dGF0aXZlPigKLSAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+
Y2hpbGQoMSkpOworICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3Vi
bGUsIEFkZEZsb2F0LCBDb21tdXRhdGl2ZT4obV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNo
aWxkKDEpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCA5YTJlNzQyNzY1Mzcw
ZjMzZDZmMmRjNjYyNTFlNjE3YTU0ZmQyMjlkLi4yYzg4MzU4ZmYyNjE2ZDgxNjA2YzY5YjQwYmU1
MGE5NjZiOTdiYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bj
b2RlLm9wY29kZXMKQEAgLTI1MSw2ICsyNTEsOSBAQCBhcm02NDogTXVsdGlwbHlBZGQzMiBVOkc6
MzIsIFU6RzozMiwgVTpHOjMyLCBaRDpHOjMyCiBhcm02NDogTXVsdGlwbHlBZGQ2NCBVOkc6NjQs
IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1wLCBUbXAKIAorYXJtNjQ6
IE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyIFU6RzozMiwgVTpHOjMyLCBVOkc6NjQsIEQ6Rzo2NAor
ICAgIFRtcCwgVG1wLCBUbXAsIFRtcAorCiBhcm02NDogTXVsdGlwbHlTdWIzMiBVOkc6MzIsIFU6
RzozMiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgVG1wLCBUbXAsIFRtcCwgVG1wCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuaAppbmRleCBiNWU0Y2YyYzc4ODg4MmY2NWQzZjEyYzczMmVlMjRkNWM2
ODMzZWU0Li5kYjhhYTMxODVlMDcxOGJmYTgyZDFkZGRkNTNkMjRhNDY5MzIxMGVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC04NzIsNiArODcyLDggQEAgdm9pZCB0ZXN0TXVsQWRk
QXJnc0xlZnQoKTsKIHZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodCgpOwogdm9pZCB0ZXN0TXVsQWRk
QXJnc0xlZnQzMigpOwogdm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0MzIoKTsKK3ZvaWQgdGVzdE11
bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KCk7Cit2b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJB
cmdzUmlnaHQoKTsKIHZvaWQgdGVzdE11bFN1YkFyZ3NMZWZ0KCk7CiB2b2lkIHRlc3RNdWxTdWJB
cmdzUmlnaHQoKTsKIHZvaWQgdGVzdE11bFN1YkFyZ3NMZWZ0MzIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzXzIuY3BwCmluZGV4IDFkZGM3MWYxMDJhZDVhYWJiNzE5MjExZGU0NzlmMGQx
YzhhNjlhNzEuLjM0ZDkxZDU2YWJlNTZlNmYwMzdkZDdhNTI5MzlkY2E1ODkwOTJkMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcApAQCAtODQxLDcgKzg0MSwxMCBAQCB2b2lk
IHRlc3RNdWxBZGRBcmcoaW50IGEpCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIE11bCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSksCiAgICAgICAgICAgICB2YWx1ZSkp
OwogCi0gICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IGEgKiBhICsgYSk7
CisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQoKSkK
KyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJtYWRkIik7CisgICAgQ0hFQ0so
aW52b2tlPGludDY0X3Q+KCpjb2RlLCBhLCBhLCBhKSA9PSBhICogYSArIGEpOwogfQogCiB2b2lk
IHRlc3RNdWxBcmdzKGludCBhLCBpbnQgYikKQEAgLTEwMDQsMTMgKzEwMDcsMTQgQEAgdm9pZCB0
ZXN0TXVsQWRkQXJnc0xlZnQoKQogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJv
Yyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgIm1hZGQiKTsKIAogICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDY0T3BlcmFuZHMo
KTsKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIg
OiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykKICAgICAgICAgICAgICAgICBD
SEVDSyhpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09
IGEudmFsdWUgKiBiLnZhbHVlICsgYy52YWx1ZSk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiB9CkBAIC0xMDI4LDEyICsxMDMyLDg3IEBAIHZvaWQgdGVzdE11bEFkZEFyZ3NSaWdo
dCgpCiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIGFkZGVkKTsKIAogICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAgIGlm
IChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibWFkZCIp
OwogCiAgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRPcGVyYW5kcygpOwogICAgIGZvciAoYXV0
byBhIDogdGVzdFZhbHVlcykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMpIHsK
LSAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykgeworICAgICAgICAgICAgZm9y
IChhdXRvIGMgOiB0ZXN0VmFsdWVzKQogICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxpbnQ2
NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSArIGIudmFs
dWUgKiBjLnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCB0ZXN0TXVsQWRkU2ln
bkV4dGVuZDMyQXJnc0xlZnQoKQoreworICAgIC8vIGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0p
ICsgYQorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgcHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgcHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSogYVZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOworCisgICAgVmFsdWUqIG11bFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBNdWwsIE9yaWdpbigpLCBuVmFsdWUsIG1WYWx1ZSk7CisgICAgVmFsdWUqIGFkZFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBtdWxWYWx1
ZSwgYVZhbHVlKTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgYWRkVmFsdWUpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJv
Yyk7CisgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNv
ZGUsICJzbWFkZGwiKTsKKworICAgIGZvciAoYXV0byBuIDogaW50MzJPcGVyYW5kcygpKSB7Cisg
ICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYSA6IGludDY0T3BlcmFuZHMoKSkgeworICAgICAgICAgICAgICAgIGludDY0X3QgbGhz
ID0gaW52b2tlPGludDY0X3Q+KCpjb2RlLCBuLnZhbHVlLCBtLnZhbHVlLCBhLnZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBpbnQ2NF90IHJocyA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG4udmFsdWUp
ICogc3RhdGljX2Nhc3Q8aW50NjRfdD4obS52YWx1ZSkgKyBhLnZhbHVlOworICAgICAgICAgICAg
ICAgIENIRUNLKGxocyA9PSByaHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzUmlnaHQoKQoreworICAgIC8vIGQg
PSBhICsgU0V4dDMyKG4pICogU0V4dDMyKG0pCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiBhVmFsdWUgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIG5WYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgIHByb2MsIFNFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksIAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAgVmFsdWUqIG1WYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFNFeHQzMiwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
IAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpKSk7CisKKyAgICBWYWx1ZSogbXVsVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZh
bHVlKTsKKyAgICBWYWx1ZSogYWRkVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEFkZCwgT3JpZ2luKCksIGFWYWx1ZSwgbXVsVmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRWYWx1ZSk7CisKKyAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInNtYWRkbCIpOworCisgICAgZm9yIChhdXRvIGEg
OiBpbnQ2NE9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRz
KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKSB7CisgICAg
ICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8aW50NjRfdD4oKmNvZGUsIGEudmFsdWUs
IG4udmFsdWUsIG0udmFsdWUpOworICAgICAgICAgICAgICAgIGludDY0X3QgcmhzID0gYS52YWx1
ZSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4udmFsdWUpICogc3RhdGljX2Nhc3Q8aW50NjRfdD4o
bS52YWx1ZSk7CisgICAgICAgICAgICAgICAgQ0hFQ0sobGhzID09IHJocyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDU1LDEzICsxMTM0LDE0IEBAIHZvaWQgdGVzdE11
bEFkZEFyZ3NMZWZ0MzIoKQogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7CiAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhw
cm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigq
Y29kZSwgIm1hZGQiKTsKIAogICAgIGF1dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsK
ICAgICBmb3IgKGF1dG8gYSA6IHRlc3RWYWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0
ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykKICAgICAgICAgICAgICAgICBDSEVD
SyhpbnZva2U8aW50MzJfdD4oKmNvZGUsIGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEu
dmFsdWUgKiBiLnZhbHVlICsgYy52YWx1ZSk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiB9CkBAIC0xMDgyLDEzICsxMTYyLDE0IEBAIHZvaWQgdGVzdE11bEFkZEFyZ3NSaWdodDMy
KCkKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgYWRkZWQpOwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYg
KGlzQVJNNjQoKSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJtYWRkIik7
CiAKICAgICBhdXRvIHRlc3RWYWx1ZXMgPSBpbnQzMk9wZXJhbmRzKCk7CiAgICAgZm9yIChhdXRv
IGEgOiB0ZXN0VmFsdWVzKSB7CiAgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewot
ICAgICAgICAgICAgZm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gYyA6IHRlc3RWYWx1ZXMpCiAgICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDMy
X3Q+KCpjb2RlLCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlICsgYi52YWx1
ZSAqIGMudmFsdWUpOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjNfMy5jcHAKaW5kZXggNzFlNDliYzYxZGEwODExZDIwMzQ0NTY5
ODQxODFhZTFkMGU3ZTIyNS4uN2I3NmZhMGJlMDAyNDQ3ODAzNjc4ZWU3ZjExOGM0MDZiNDFkMGRm
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwCkBAIC0zMTk2LDYgKzMxOTYs
OCBAQCB2b2lkIGFkZEFyZ1Rlc3RzKGNvbnN0IGNoYXIqIGZpbHRlciwgRGVxdWU8UmVmUHRyPFNo
YXJlZFRhc2s8dm9pZCgpPj4+JiB0YXNrcykKICAgICBSVU4odGVzdE11bEFkZEFyZ3NSaWdodCgp
KTsKICAgICBSVU4odGVzdE11bEFkZEFyZ3NMZWZ0MzIoKSk7CiAgICAgUlVOKHRlc3RNdWxBZGRB
cmdzUmlnaHQzMigpKTsKKyAgICBSVU4odGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KCkp
OworICAgIFJVTih0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc1JpZ2h0KCkpOwogICAgIFJVTih0
ZXN0TXVsU3ViQXJnc0xlZnQoKSk7CiAgICAgUlVOKHRlc3RNdWxTdWJBcmdzUmlnaHQoKSk7CiAg
ICAgUlVOKHRlc3RNdWxTdWJBcmdzTGVmdDMyKCkpOwo=
</data>
<flag name="commit-queue"
          id="453894"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431974</attachid>
            <date>2021-06-22 10:48:31 -0700</date>
            <delta_ts>2021-06-22 14:54:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227188-20210622124829.patch</filename>
            <type>text/plain</type>
            <size>16837</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OTNjMGNmMWI2ZTcwMGVkMDQ1ZjkyZWU5ZDI3MmExODg0MTI4OGM1Li5lMTUwMDRjYjE0MGQ2OTVl
YmI4MDkwYTQ2MzYwMDBjNmE5N2Q3NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMS0wNi0yMSAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IHBhdHRlcm4gdG8gaW5zdHJ1Y3Rpb24gc2VsZWN0b3Ig
dG8gdXRpbGl6ZSBTTUFEREwgc3VwcG9ydGVkIGJ5IEFSTTY0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaWduZWQgTXVsdGlwbHktQWRkIExvbmcoU01B
RERMKSwgc3VwcG9ydGVkIGJ5IEFSTTY0LCBtdWx0aXBsaWVzIHR3byAzMi1iaXQgCisgICAgICAg
IHJlZ2lzdGVyIHZhbHVlcywgYWRkcyBhIDY0LWJpdCByZWdpc3RlciB2YWx1ZSwgYW5kIHdyaXRl
cyB0aGUgcmVzdWx0IHRvIHRoZSAKKyAgICAgICAgNjQtYml0IGRlc3RpbmF0aW9uIHJlZ2lzdGVy
LiBUaGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IgY2FuIHV0aWxpemUgdGhpcyB0byAKKyAgICAgICAg
bG93ZXJpbmcgY2VydGFpbiBwYXR0ZXJucyBpbiBCMyBJUiBiZWZvcmUgZnVydGhlciBBaXIgb3B0
aW1pemF0aW9uLiAKKworICAgICAgICBHaXZlbiB0aGUgb3BlcmF0aW9uOgorCisgICAgICAgIHNt
YWRkbCBkLCBuLCBtLCBhCisKKyAgICAgICAgVGhlIGVxdWl2YWxlbnQgcGF0dGVybnMgd291bGQg
YmU6CisKKyAgICAgICAgZCA9IGEgKyBTRXh0MzIobikgKiBTRXh0MzIobSkKKyAgICAgICAgZCA9
IFNFeHQzMihuKSAqIFNFeHQzMihtKSArIGEKKworICAgICAgICBHaXZlbiBCMyBJUjoKKyAgICAg
ICAgSW50IEAwID0gQXJndW1lbnRSZWcoJXgwKQorICAgICAgICBJbnQgQDEgPSBTRXh0MzIoVHJ1
bmMoQXJndW1lbnRSZWcoJXgxKSkpCisgICAgICAgIEludCBAMiA9IFNFeHQzMihUcnVuYyhBcmd1
bWVudFJlZygleDIpKSkKKyAgICAgICAgSW50IEAzID0gTXVsKEAxLCBAMikKKyAgICAgICAgSW50
IEA0ID0gQWRkKEAwLCBAMykKKyAgICAgICAgVm9pZEA1ID0gUmV0dXJuKEA0LCBUZXJtaW5hbCkK
KworICAgICAgICBCZWZvcmUgQWRkaW5nIFNNQURETDoKKyAgICAgICAgLy8gT2xkIG9wdGltaXpl
ZCBBSVIKKyAgICAgICAgU2lnbkV4dGVuZDMyVG9QdHIgICV4MSwgJXgxLCAgICAgICAgICAgQDEK
KyAgICAgICAgU2lnbkV4dGVuZDMyVG9QdHIgICV4MiwgJXgyLCAgICAgICAgICAgQDIKKyAgICAg
ICAgTXVsdGlwbHlBZGQ2NCAgICAgICV4MSwgJXgyLCAleDAsICV4MCwgQDQKKyAgICAgICAgUmV0
NjQgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDUKKworICAgICAgICBBZnRlciBB
ZGRpbmcgU01BRERMOgorICAgICAgICAvLyBOZXcgb3B0aW1pemVkIEFJUgorICAgICAgICBNdWx0
aXBseUFkZFNpZ25FeHRlbmQzMiAleDEsICV4MiwgJXgwLCAleDAsIEA4CisgICAgICAgIFJldDY0
ICAgICAgICAgICAgICAgICAgICV4MCwgICAgICAgICAgICAgICAgQDkKKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6Om11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
dGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJM
ZWZ0KToKKyAgICAgICAgKEpTQzo6dGVzdE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyUmlnaHQpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAqIGIzL3Rlc3RiM18y
LmNwcDoKKyAgICAgICAgKHRlc3RNdWxBZGRBcmcpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NM
ZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRBcmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFk
ZFNpZ25FeHRlbmQzMkFyZ3NMZWZ0KToKKyAgICAgICAgKHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJB
cmdzUmlnaHQpOgorICAgICAgICAodGVzdE11bEFkZEFyZ3NMZWZ0MzIpOgorICAgICAgICAodGVz
dE11bEFkZEFyZ3NSaWdodDMyKToKKyAgICAgICAgKiBiMy90ZXN0YjNfMy5jcHA6CisgICAgICAg
IChhZGRBcmdUZXN0cyk6CisKIDIwMjEtMDYtMjEgIFlpamlhIEh1YW5nICA8eWlqaWFfaHVhbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBwYXR0ZXJuIHRvIGluc3RydWN0aW9uIHNl
bGVjdG9yIHRvIHV0aWxpemUgU01TVUJMIHN1cHBvcnRlZCBieSBBUk02NApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRl
eCBjYTg3YTllMDRhM2YyZjU4OTE3YzNhNzRhMzY4MGMyYzI3MTBhYjhmLi4xNDJjMzk3NzgyOWU2
ZWM2YTVlZGE3ZDdkMjk2M2E1YjZlMTYwMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNjI3LDYgKzYyNywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1hZGQ8NjQ+KGRlc3QsIG11bExlZnQs
IG11bFJpZ2h0LCBzdW1tYW5kKTsKICAgICB9CiAKKyAgICB2b2lkIG11bHRpcGx5QWRkU2lnbkV4
dGVuZDMyKFJlZ2lzdGVySUQgbXVsTGVmdCwgUmVnaXN0ZXJJRCBtdWxSaWdodCwgUmVnaXN0ZXJJ
RCBzdW1tYW5kLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
bWFkZGwoZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIHN1bW1hbmQpOworICAgIH0KKwogICAgIHZv
aWQgbXVsdGlwbHlTdWI2NChSZWdpc3RlcklEIG11bExlZnQsIFJlZ2lzdGVySUQgbXVsUmlnaHQs
IFJlZ2lzdGVySUQgbWludWVuZCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIubXN1Yjw2ND4oZGVzdCwgbXVsTGVmdCwgbXVsUmlnaHQsIG1pbnVlbmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAppbmRleCA3MGMwOWQy
ZTU2OTlkODNmNzc5MDRmNzgxZmRiZTJmZWJlM2FlNTJlLi5jYmE3ZjNmNTIwMGM3NmE4ZDgwOTJi
ZjQ2YzJjNzBlNWZmNjA0ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcApAQCAtOTIxLDYgKzkyMSw1MiBAQCB2b2lkIHRlc3RNdWwzMlNpZ25FeHRl
bmQoKQogICAgIH0KIH0KIAordm9pZCB0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJMZWZ0KCkK
K3sKKyAgICAvLyBkID0gU0V4dDMyKG4pICogU0V4dDMyKG0pICsgYQorICAgIGF1dG8gYWRkID0g
Y29tcGlsZShbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKGppdCk7CisKKyAgICAgICAgaml0Lm11bHRpcGx5QWRkU2lnbkV4dGVuZDMyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjphcmd1bWVudEdQUjEsIAor
ICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKKyAgICAgICAgICAgIEdQUkluZm86
OnJldHVyblZhbHVlR1BSKTsKKworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShqaXQpOwor
ICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisKKyAgICBmb3IgKGF1dG8gbiA6IGludDMyT3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbSA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpCisgICAgICAgICAgICAgICAg
Q0hFQ0tfRVEoaW52b2tlPGludDY0X3Q+KGFkZCwgbiwgbSwgYSksIHN0YXRpY19jYXN0PGludDY0
X3Q+KG4pICogc3RhdGljX2Nhc3Q8aW50NjRfdD4obSkgKyBhKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCB0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdodCgpCit7CisgICAgLy8g
ZCA9IGEgKyBTRXh0MzIobikgKiBTRXh0MzIobSkKKyAgICBhdXRvIGFkZCA9IGNvbXBpbGUoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQp
OworCisgICAgICAgIGppdC5tdWx0aXBseUFkZFNpZ25FeHRlbmQzMihHUFJJbmZvOjphcmd1bWVu
dEdQUjEsIAorICAgICAgICAgICAgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCAKKyAgICAgICAgICAg
IEdQUkluZm86OmFyZ3VtZW50R1BSMCwgCisgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisKKyAgICAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgaml0
LnJldCgpOworICAgIH0pOworCisgICAgZm9yIChhdXRvIGEgOiBpbnQ2NE9wZXJhbmRzKCkpIHsK
KyAgICAgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byBtIDogaW50MzJPcGVyYW5kcygpKQorICAgICAgICAgICAgICAgIENIRUNLX0VRKGlu
dm9rZTxpbnQ2NF90PihhZGQsIGEsIG4sIG0pLCBhICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obikg
KiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
dGVzdFN1YjMyQXJncygpCiB7CiAgICAgZm9yIChhdXRvIHZhbHVlIDogaW50MzJPcGVyYW5kcygp
KSB7CkBAIC0zMjcwLDYgKzMzMTYsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpIFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKICAgICBSVU4odGVzdExvYWRTdG9yZVBh
aXI2NEludDY0KCkpOwogICAgIFJVTih0ZXN0TG9hZFN0b3JlUGFpcjY0RG91YmxlKCkpOwogICAg
IFJVTih0ZXN0TXVsMzJTaWduRXh0ZW5kKCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWdu
RXh0ZW5kMzJMZWZ0KCkpOworICAgIFJVTih0ZXN0TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzJSaWdo
dCgpKTsKICAgICBSVU4odGVzdFN1YjMyQXJncygpKTsKICAgICBSVU4odGVzdFN1YjMySW1tKCkp
OwogICAgIFJVTih0ZXN0U3ViMzJBcmdJbW0oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCmluZGV4IDMzODYzZWI4ZWM0ODcyNDIxNjVjZjEwODUwN2IwNjYwZTJh
ZTdmNGMuLjdjMjY3NDE4YmEyYjU0MjE2OGMwZDYzNDMyNmU1NzY4NzczNDM2YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTQ0LDM2ICsyNTQ0LDU3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQWRkOiB7CiAgICAgICAgICAgICBpZiAodHJ5QXBw
ZW5kTGVhKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCisKKyAgICAg
ICAgICAgIEFTU0VSVChpc1ZhbGlkRm9ybShNdWx0aXBseUFkZDY0LCBBcmc6OlRtcCwgQXJnOjpU
bXAsIEFyZzo6VG1wLCBBcmc6OlRtcCkgCisgICAgICAgICAgICAgICAgPT0gaXNWYWxpZEZvcm0o
TXVsdGlwbHlBZGRTaWduRXh0ZW5kMzIsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXAsIEFy
Zzo6VG1wKSk7CiAgICAgICAgICAgICBBaXI6Ok9wY29kZSBtdWx0aXBseUFkZE9wY29kZSA9IHRy
eU9wY29kZUZvclR5cGUoTXVsdGlwbHlBZGQzMiwgTXVsdGlwbHlBZGQ2NCwgbV92YWx1ZS0+dHlw
ZSgpKTsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShtdWx0aXBseUFkZE9wY29kZSwgQXJn
OjpUbXAsIEFyZzo6VG1wLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CiAgICAgICAgICAgICAgICAg
VmFsdWUqIGxlZnQgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKICAgICAgICAgICAgICAgICBWYWx1ZSog
cmlnaHQgPSBtX3ZhbHVlLT5jaGlsZCgxKTsKICAgICAgICAgICAgICAgICBpZiAoIWltbShyaWdo
dCkgfHwgbV92YWx1ZVRvVG1wW3JpZ2h0XSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHRy
eUFwcGVuZE11bHRpcGx5QWRkID0gWyZdIChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KSAtPiBi
b29sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0LT5vcGNvZGUoKSAhPSBNdWwg
fHwgIWNhbkJlSW50ZXJuYWwobGVmdCkpCisgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5TXVs
dGlwbHkgPSBbJl0gKFZhbHVlKiB2KSAtPiBib29sIHsgCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodi0+b3Bjb2RlKCkgIT0gTXVsIHx8ICFjYW5CZUludGVybmFsKHYpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX2xvY2tlZC5jb250YWlucyh2LT5jaGlsZCgwKSkgfHwgbV9sb2NrZWQuY29udGFpbnMo
di0+Y2hpbGQoMSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAg
ICB9OwogCisgICAgICAgICAgICAgICAgICAgIGF1dG8gdHJ5U0V4dDMyID0gWyZdIChWYWx1ZSog
dikgLT4gYm9vbCB7IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYtPm9wY29kZSgp
ID09IFNFeHQzMiAmJiBjYW5CZUludGVybmFsKHYpOworICAgICAgICAgICAgICAgICAgICB9Owor
CisgICAgICAgICAgICAgICAgICAgIC8vIE1BREQ6IGQgPSBuICogbSArIGEKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byB0cnlBcHBlbmRNdWx0aXBseUFkZCA9IFsmXSAoVmFsdWUqIGxlZnQsIFZh
bHVlKiByaWdodCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRyeU11
bHRpcGx5KGxlZnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseUxlZnQgPSBsZWZ0LT5jaGls
ZCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBtdWx0aXBseVJpZ2h0ID0gbGVm
dC0+Y2hpbGQoMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuQmVJbnRlcm5hbCht
dWx0aXBseUxlZnQpIHx8IGNhbkJlSW50ZXJuYWwobXVsdGlwbHlSaWdodCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTTUFEREw6IGQgPSBTRXh0MzIobikgKiAgU0V4dDMyKG0pICsgYQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG11bHRpcGx5QWRkT3Bjb2RlID09IE11bHRpcGx5QWRkNjQgJiYgdHJ5
U0V4dDMyKG11bHRpcGx5TGVmdCkgJiYgdHJ5U0V4dDMyKG11bHRpcGx5UmlnaHQpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE11bHRpcGx5QWRkU2lnbkV4dGVuZDMyLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5TGVmdC0+Y2hpbGQo
MCkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKG11bHRpcGx5UmlnaHQt
PmNoaWxkKDApKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcChyaWdodCks
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAobV92YWx1ZSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKG11bHRpcGx5TGVmdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobXVsdGlwbHlSaWdodCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0SW50ZXJuYWwobGVmdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChtdWx0aXBseUFkZE9wY29kZSwg
dG1wKG11bHRpcGx5TGVmdCksIHRtcChtdWx0aXBseVJpZ2h0KSwgdG1wKHJpZ2h0KSwgdG1wKG1f
dmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEludGVybmFsKGxlZnQpOwot
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgfTsKIAotICAgICAgICAgICAgICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlwbHlBZGQobGVm
dCwgcmlnaHQpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlwbHlBZGQocmlnaHQsIGxlZnQpKQorICAgICAgICAg
ICAgICAgICAgICBpZiAodHJ5QXBwZW5kTXVsdGlwbHlBZGQobGVmdCwgcmlnaHQpIHx8IHRyeUFw
cGVuZE11bHRpcGx5QWRkKHJpZ2h0LCBsZWZ0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFw
cGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+
KAotICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7
CisgICAgICAgICAgICBhcHBlbmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFkZERvdWJsZSwgQWRkRmxv
YXQsIENvbW11dGF0aXZlPihtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDlhMmU3NDI3NjUzNzBmMzNkNmYyZGM2
NjI1MWU2MTdhNTRmZDIyOWQuLjJjODgzNThmZjI2MTZkODE2MDZjNjliNDBiZTUwYTk2NmI5N2Jj
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9w
Y29kZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
cwpAQCAtMjUxLDYgKzI1MSw5IEBAIGFybTY0OiBNdWx0aXBseUFkZDMyIFU6RzozMiwgVTpHOjMy
LCBVOkc6MzIsIFpEOkc6MzIKIGFybTY0OiBNdWx0aXBseUFkZDY0IFU6Rzo2NCwgVTpHOjY0LCBV
Okc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAsIFRtcAogCithcm02NDogTXVsdGlwbHlB
ZGRTaWduRXh0ZW5kMzIgVTpHOjMyLCBVOkc6MzIsIFU6Rzo2NCwgRDpHOjY0CisgICAgVG1wLCBU
bXAsIFRtcCwgVG1wCisKIGFybTY0OiBNdWx0aXBseVN1YjMyIFU6RzozMiwgVTpHOjMyLCBVOkc6
MzIsIFpEOkc6MzIKICAgICBUbXAsIFRtcCwgVG1wLCBUbXAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5oCmluZGV4IGI1ZTRjZjJjNzg4ODgyZjY1ZDNmMTJjNzMyZWUyNGQ1YzY4MzNlZTQuLmRi
OGFhMzE4NWUwNzE4YmZhODJkMWRkZGQ1M2QyNGE0NjkzMjEwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmgKQEAgLTg3Miw2ICs4NzIsOCBAQCB2b2lkIHRlc3RNdWxBZGRBcmdzTGVmdCgp
Owogdm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0KCk7CiB2b2lkIHRlc3RNdWxBZGRBcmdzTGVmdDMy
KCk7CiB2b2lkIHRlc3RNdWxBZGRBcmdzUmlnaHQzMigpOwordm9pZCB0ZXN0TXVsQWRkU2lnbkV4
dGVuZDMyQXJnc0xlZnQoKTsKK3ZvaWQgdGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NSaWdodCgp
Owogdm9pZCB0ZXN0TXVsU3ViQXJnc0xlZnQoKTsKIHZvaWQgdGVzdE11bFN1YkFyZ3NSaWdodCgp
Owogdm9pZCB0ZXN0TXVsU3ViQXJnc0xlZnQzMigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjNfMi5jcHAKaW5kZXggMWRkYzcxZjEwMmFkNWFhYmI3MTkyMTFkZTQ3OWYwZDFjOGE2OWE3MS4u
MzRkOTFkNTZhYmU1NmU2ZjAzN2RkN2E1MjkzOWRjYTU4OTA5MmQwYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzXzIuY3BwCkBAIC04NDEsNyArODQxLDEwIEBAIHZvaWQgdGVzdE11bEFk
ZEFyZyhpbnQgYSkKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVs
LCBPcmlnaW4oKSwgdmFsdWUsIHZhbHVlKSwKICAgICAgICAgICAgIHZhbHVlKSk7CiAKLSAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gYSAqIGEgKyBhKTsKKyAgICBhdXRv
IGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICBj
aGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1hZGQiKTsKKyAgICBDSEVDSyhpbnZva2U8aW50
NjRfdD4oKmNvZGUsIGEsIGEsIGEpID09IGEgKiBhICsgYSk7CiB9CiAKIHZvaWQgdGVzdE11bEFy
Z3MoaW50IGEsIGludCBiKQpAQCAtMTAwNCwxMyArMTAwNywxNCBAQCB2b2lkIHRlc3RNdWxBZGRB
cmdzTGVmdCgpCiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwg
T3JpZ2luKCksIGFkZGVkKTsKIAogICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOwor
ICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAi
bWFkZCIpOwogCiAgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50NjRPcGVyYW5kcygpOwogICAgIGZv
ciAoYXV0byBhIDogdGVzdFZhbHVlcykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1
ZXMpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykgeworICAgICAgICAg
ICAgZm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKQogICAgICAgICAgICAgICAgIENIRUNLKGludm9r
ZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAq
IGIudmFsdWUgKyBjLnZhbHVlKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTEwMjgsMTIgKzEwMzIsODcgQEAgdm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0KCkKICAgICBy
b290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWRkZWQp
OwogCiAgICAgYXV0byBjb2RlID0gY29tcGlsZVByb2MocHJvYyk7CisgICAgaWYgKGlzQVJNNjQo
KSkKKyAgICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJtYWRkIik7CiAKICAgICBh
dXRvIHRlc3RWYWx1ZXMgPSBpbnQ2NE9wZXJhbmRzKCk7CiAgICAgZm9yIChhdXRvIGEgOiB0ZXN0
VmFsdWVzKSB7CiAgICAgICAgIGZvciAoYXV0byBiIDogdGVzdFZhbHVlcykgewotICAgICAgICAg
ICAgZm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gYyA6
IHRlc3RWYWx1ZXMpCiAgICAgICAgICAgICAgICAgQ0hFQ0soaW52b2tlPGludDY0X3Q+KCpjb2Rl
LCBhLnZhbHVlLCBiLnZhbHVlLCBjLnZhbHVlKSA9PSBhLnZhbHVlICsgYi52YWx1ZSAqIGMudmFs
dWUpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJB
cmdzTGVmdCgpCit7CisgICAgLy8gZCA9IFNFeHQzMihuKSAqICBTRXh0MzIobSkgKyBhCisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KworICAgIFZhbHVlKiBuVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSkpOworICAgIFZhbHVlKiBtVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICBwcm9jLCBTRXh0MzIsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCAKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSkpOworICAgIFZhbHVlKiBhVmFsdWUgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7
CisKKyAgICBWYWx1ZSogbXVsVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11
bCwgT3JpZ2luKCksIG5WYWx1ZSwgbVZhbHVlKTsKKyAgICBWYWx1ZSogYWRkVmFsdWUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIG11bFZhbHVlLCBhVmFsdWUp
OworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCBhZGRWYWx1ZSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBp
ZiAoaXNBUk02NCgpKQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInNtYWRk
bCIpOworCisgICAgZm9yIChhdXRvIG4gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBhIDog
aW50NjRPcGVyYW5kcygpKSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCBsaHMgPSBpbnZva2U8
aW50NjRfdD4oKmNvZGUsIG4udmFsdWUsIG0udmFsdWUsIGEudmFsdWUpOworICAgICAgICAgICAg
ICAgIGludDY0X3QgcmhzID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4obi52YWx1ZSkgKiBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihtLnZhbHVlKSArIGEudmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0so
bGhzID09IHJocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
dGVzdE11bEFkZFNpZ25FeHRlbmQzMkFyZ3NSaWdodCgpCit7CisgICAgLy8gZCA9IGEgKyBTRXh0
MzIobikgKiBTRXh0MzIobSkKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmFsdWUqIGFWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICBWYWx1ZSogblZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgcHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSogbVZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgU0V4dDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwgCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMikpKTsKKworICAgIFZhbHVlKiBtdWxWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgblZhbHVlLCBtVmFsdWUpOworICAg
IFZhbHVlKiBhZGRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmln
aW4oKSwgYVZhbHVlLCBtdWxWYWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFkZFZhbHVlKTsKKworICAgIGF1dG8gY29kZSA9IGNv
bXBpbGVQcm9jKHByb2MpOworICAgIGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0lu
c3RydWN0aW9uKCpjb2RlLCAic21hZGRsIik7CisKKyAgICBmb3IgKGF1dG8gYSA6IGludDY0T3Bl
cmFuZHMoKSkgeworICAgICAgICBmb3IgKGF1dG8gbiA6IGludDMyT3BlcmFuZHMoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIG0gOiBpbnQzMk9wZXJhbmRzKCkpIHsKKyAgICAgICAgICAgICAg
ICBpbnQ2NF90IGxocyA9IGludm9rZTxpbnQ2NF90PigqY29kZSwgYS52YWx1ZSwgbi52YWx1ZSwg
bS52YWx1ZSk7CisgICAgICAgICAgICAgICAgaW50NjRfdCByaHMgPSBhLnZhbHVlICsgc3RhdGlj
X2Nhc3Q8aW50NjRfdD4obi52YWx1ZSkgKiBzdGF0aWNfY2FzdDxpbnQ2NF90PihtLnZhbHVlKTsK
KyAgICAgICAgICAgICAgICBDSEVDSyhsaHMgPT0gcmhzKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KQEAgLTEwNTUsMTMgKzExMzQsMTQgQEAgdm9pZCB0ZXN0TXVsQWRkQXJnc0xl
ZnQzMigpCiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGFkZGVkKTsKIAogICAgIGF1dG8gY29kZSA9IGNvbXBpbGVQcm9jKHByb2MpOworICAg
IGlmIChpc0FSTTY0KCkpCisgICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibWFk
ZCIpOwogCiAgICAgYXV0byB0ZXN0VmFsdWVzID0gaW50MzJPcGVyYW5kcygpOwogICAgIGZvciAo
YXV0byBhIDogdGVzdFZhbHVlcykgewogICAgICAgICBmb3IgKGF1dG8gYiA6IHRlc3RWYWx1ZXMp
IHsKLSAgICAgICAgICAgIGZvciAoYXV0byBjIDogdGVzdFZhbHVlcykgeworICAgICAgICAgICAg
Zm9yIChhdXRvIGMgOiB0ZXN0VmFsdWVzKQogICAgICAgICAgICAgICAgIENIRUNLKGludm9rZTxp
bnQzMl90PigqY29kZSwgYS52YWx1ZSwgYi52YWx1ZSwgYy52YWx1ZSkgPT0gYS52YWx1ZSAqIGIu
dmFsdWUgKyBjLnZhbHVlKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KQEAg
LTEwODIsMTMgKzExNjIsMTQgQEAgdm9pZCB0ZXN0TXVsQWRkQXJnc1JpZ2h0MzIoKQogICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhZGRlZCk7
CiAKICAgICBhdXRvIGNvZGUgPSBjb21waWxlUHJvYyhwcm9jKTsKKyAgICBpZiAoaXNBUk02NCgp
KQorICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgIm1hZGQiKTsKIAogICAgIGF1
dG8gdGVzdFZhbHVlcyA9IGludDMyT3BlcmFuZHMoKTsKICAgICBmb3IgKGF1dG8gYSA6IHRlc3RW
YWx1ZXMpIHsKICAgICAgICAgZm9yIChhdXRvIGIgOiB0ZXN0VmFsdWVzKSB7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8gYyA6IHRlc3RWYWx1ZXMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBjIDog
dGVzdFZhbHVlcykKICAgICAgICAgICAgICAgICBDSEVDSyhpbnZva2U8aW50MzJfdD4oKmNvZGUs
IGEudmFsdWUsIGIudmFsdWUsIGMudmFsdWUpID09IGEudmFsdWUgKyBiLnZhbHVlICogYy52YWx1
ZSk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiM18zLmNwcAppbmRleCA3MWU0OWJjNjFkYTA4MTFkMjAzNDQ1Njk4NDE4MWFlMWQw
ZTdlMjI1Li43Yjc2ZmEwYmUwMDI0NDc4MDM2NzhlZTdmMTE4YzQwNmI0MWQwZGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMy5jcHAKQEAgLTMxOTYsNiArMzE5Niw4IEBAIHZvaWQg
YWRkQXJnVGVzdHMoY29uc3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2
b2lkKCk+Pj4mIHRhc2tzKQogICAgIFJVTih0ZXN0TXVsQWRkQXJnc1JpZ2h0KCkpOwogICAgIFJV
Tih0ZXN0TXVsQWRkQXJnc0xlZnQzMigpKTsKICAgICBSVU4odGVzdE11bEFkZEFyZ3NSaWdodDMy
KCkpOworICAgIFJVTih0ZXN0TXVsQWRkU2lnbkV4dGVuZDMyQXJnc0xlZnQoKSk7CisgICAgUlVO
KHRlc3RNdWxBZGRTaWduRXh0ZW5kMzJBcmdzUmlnaHQoKSk7CiAgICAgUlVOKHRlc3RNdWxTdWJB
cmdzTGVmdCgpKTsKICAgICBSVU4odGVzdE11bFN1YkFyZ3NSaWdodCgpKTsKICAgICBSVU4odGVz
dE11bFN1YkFyZ3NMZWZ0MzIoKSk7Cg==
</data>
<flag name="commit-queue"
          id="453929"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>