<?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>235957</bug_id>
          
          <creation_ts>2022-02-01 08:51:45 -0800</creation_ts>
          <short_desc>Adopt c++20&apos;s &lt;bit&gt; functions</short_desc>
          <delta_ts>2022-02-01 11:28:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835989</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-02-01 08:51:45 -0800</bug_when>
    <thetext>Adopt c++20&apos;s &lt;bit&gt; functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836039</commentid>
    <comment_count>1</comment_count>
      <attachid>450544</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-02-01 10:12:26 -0800</bug_when>
    <thetext>Created attachment 450544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836040</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-01 10:16:41 -0800</bug_when>
    <thetext>Probably, this needs to wait for a bit more period since currently GCC is 8.3, which does not support &lt;bit&gt;.
At April, we can bump it to 9. https://trac.webkit.org/wiki/WebKitGTK/GCCRequirement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836086</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-02-01 11:28:39 -0800</bug_when>
    <thetext>Ugh, looks like the 10.15 builders are also unhappy. Bummer.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450544</attachid>
            <date>2022-02-01 10:12:26 -0800</date>
            <delta_ts>2022-02-01 10:30:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235957-20220201101225.patch</filename>
            <type>text/plain</type>
            <size>49378</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4ODg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBA
CisyMDIyLTAyLTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZG9wdCBjKysyMCdzIDxiaXQ+IGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6Om11bDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpi
cmFuY2hUZXN0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hU
ZXN0NjQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppc1Bvd2VyT2YyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpiaXRQb3NpdGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL1Nl
Y3VyZUFSTTY0RUhhc2hQaW5zLmg6CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoK
KyAgICAgICAgKEpTQzo6dGVzdENhZ2VQcmVzZXJ2ZXNQQUNGYWlsdXJlQml0KToKKyAgICAgICAg
KiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjNfNy5jcHA6Cisg
ICAgICAgICh0dXBsZVBhaXJWYXJpYWJsZUxvb3ApOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlSW5kZXguaDoKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9PcGVyYW5kcy5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdEFs
bG9jYXRlVmFyaWFibGVTaXplZCk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SlNCaWdJbnQ6OnRyeUdldFN0cmluZyk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdp
dERpdik6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjphYnNvbHV0ZURpdldpdGhCaWdJbnREaXZp
c29yKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmNhbGN1bGF0ZU1heGltdW1DaGFyYWN0ZXJz
UmVxdWlyZWQpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dG9TdHJpbmdCYXNlUG93ZXJPZlR3
byk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6dG9OdW1iZXJIZWFwKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5oOgorICAgICAgICAoSlNDOjppc1Bvd2VyT2YyKToK
KwogMjAyMi0wMS0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmVydCBPU0FsbG9jYXRvciBiZWhhdmlvciB0byBwcmUtU3RydWN0dXJlLUFsbG9jYXRv
ciBjaGFuZ2Ugb25lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyODg3NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQogCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgorI2luY2x1ZGUgPGJpdD4KIAogI2lmIENQVShBUk1fVEhVTUIyKQogI2RlZmluZSBUQVJHRVRf
QVNTRU1CTEVSIEFSTXY3QXNzZW1ibGVyCkBAIC0xOTI3LDggKzE5MjgsOCBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlciA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckJhc2UgeyAocHUKIAogICAgIHZvaWQg
bXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7Ci0gICAgICAgIGlmIChoYXNPbmVCaXRTZXQoaW1tLm1fdmFsdWUpKSB7Ci0gICAgICAg
ICAgICBsc2hpZnQzMihzcmMsIFRydXN0ZWRJbW0zMihnZXRMU0JTZXQoaW1tLm1fdmFsdWUpKSwg
ZGVzdCk7CisgICAgICAgIGlmIChzdGQ6Omhhc19zaW5nbGVfYml0KHN0YXRpY19jYXN0PHVpbnQz
Ml90PihpbW0ubV92YWx1ZSkpKSB7CisgICAgICAgICAgICBsc2hpZnQzMihzcmMsIFRydXN0ZWRJ
bW0zMihzdGQ6OmNvdW50cl96ZXJvKHN0YXRpY19jYXN0PHVpbnQzMl90PihpbW0ubV92YWx1ZSkp
KSwgZGVzdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgTWFjcm9B
c3NlbWJsZXJCYXNlOjptdWwzMihpbW0sIHNyYywgZGVzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2
aXNpb24gMjg4NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJBUk02NEFzc2VtYmxlci5oIgogI2luY2x1ZGUgIkFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIK
ICNpbmNsdWRlICJKSVRPcGVyYXRpb25WYWxpZGF0aW9uLmgiCisjaW5jbHVkZSA8Yml0PgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzQwNSw4ICsz
NDA2LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3Jv
QXNzZW1iCiAgICAgICAgICAgICBpZiAoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVy
bykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUNvbXBhcmVBbmRCcmFuY2g8MzI+
KHN0YXRpY19jYXN0PFplcm9Db25kaXRpb24+KGNvbmQpLCByZWcpKTsKICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnRzdDwzMj4ocmVnLCByZWcpOwotICAgICAgICB9IGVsc2UgaWYgKGhhc09uZUJp
dFNldChtYXNrLm1fdmFsdWUpICYmICgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJv
KSkpCi0gICAgICAgICAgICByZXR1cm4gSnVtcChtYWtlVGVzdEJpdEFuZEJyYW5jaChyZWcsIGdl
dExTQlNldChtYXNrLm1fdmFsdWUpLCBzdGF0aWNfY2FzdDxaZXJvQ29uZGl0aW9uPihjb25kKSkp
OworICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aGFzX3NpbmdsZV9iaXQobWFzay5tX3ZhbHVlKSAm
JiAoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpKQorICAgICAgICAgICAgcmV0
dXJuIEp1bXAobWFrZVRlc3RCaXRBbmRCcmFuY2gocmVnLCBzdGQ6OmNvdW50cl96ZXJvKG1hc2su
bV92YWx1ZSksIHN0YXRpY19jYXN0PFplcm9Db25kaXRpb24+KGNvbmQpKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBsb2dpY2FsSW1tID0gTG9naWNhbElt
bWVkaWF0ZTo6Y3JlYXRlMzIobWFzay5tX3ZhbHVlKTsKICAgICAgICAgICAgIGlmIChsb2dpY2Fs
SW1tLmlzVmFsaWQoKSkgewpAQCAtMzQ1NCw4ICszNDU1LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1iCiAgICAgICAgICAgICBpZiAoKGNv
bmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEp1bXAobWFrZUNvbXBhcmVBbmRCcmFuY2g8NjQ+KHN0YXRpY19jYXN0PFplcm9Db25kaXRpb24+
KGNvbmQpLCByZWcpKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdDw2ND4ocmVnLCByZWcp
OwotICAgICAgICB9IGVsc2UgaWYgKGhhc09uZUJpdFNldChtYXNrLm1fdmFsdWUpICYmICgoY29u
ZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSkpCi0gICAgICAgICAgICByZXR1cm4gSnVt
cChtYWtlVGVzdEJpdEFuZEJyYW5jaChyZWcsIGdldExTQlNldChtYXNrLm1fdmFsdWUpLCBzdGF0
aWNfY2FzdDxaZXJvQ29uZGl0aW9uPihjb25kKSkpOworICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6
aGFzX3NpbmdsZV9iaXQobWFzay5tX3ZhbHVlKSAmJiAoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQg
PT0gTm9uWmVybykpKQorICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZVRlc3RCaXRBbmRCcmFu
Y2gocmVnLCBzdGQ6OmNvdW50cl96ZXJvKG1hc2subV92YWx1ZSksIHN0YXRpY19jYXN0PFplcm9D
b25kaXRpb24+KGNvbmQpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTG9naWNhbElt
bWVkaWF0ZSBsb2dpY2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlNjQobWFzay5tX3Zh
bHVlKTsKIApAQCAtMzQ3Niw4ICszNDc3LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6
IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1iCiAgICAgICAgICAgICBpZiAoKGNvbmQgPT0gWmVy
bykgfHwgKGNvbmQgPT0gTm9uWmVybykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFr
ZUNvbXBhcmVBbmRCcmFuY2g8NjQ+KHN0YXRpY19jYXN0PFplcm9Db25kaXRpb24+KGNvbmQpLCBy
ZWcpKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdDw2ND4ocmVnLCByZWcpOwotICAgICAg
ICB9IGVsc2UgaWYgKGhhc09uZUJpdFNldChtYXNrLm1fdmFsdWUpICYmICgoY29uZCA9PSBaZXJv
KSB8fCAoY29uZCA9PSBOb25aZXJvKSkpCi0gICAgICAgICAgICByZXR1cm4gSnVtcChtYWtlVGVz
dEJpdEFuZEJyYW5jaChyZWcsIGdldExTQlNldChtYXNrLm1fdmFsdWUpLCBzdGF0aWNfY2FzdDxa
ZXJvQ29uZGl0aW9uPihjb25kKSkpOworICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aGFzX3Npbmds
ZV9iaXQobWFzay5tX3ZhbHVlKSAmJiAoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVy
bykpKQorICAgICAgICAgICAgcmV0dXJuIEp1bXAobWFrZVRlc3RCaXRBbmRCcmFuY2gocmVnLCBz
dGQ6OmNvdW50cl96ZXJvKG1hc2subV92YWx1ZSksIHN0YXRpY19jYXN0PFplcm9Db25kaXRpb24+
KGNvbmQpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTG9naWNhbEltbWVkaWF0ZSBs
b2dpY2FsSW1tID0gTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlNjQobWFzay5tX3ZhbHVlKTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oCShyZXZpc2lvbiAyODg3NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJNSVBTQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPGJpdD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTUzLDEyICs1NCwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmwKIAogICAgIGlubGluZSBib29sIGlzUG93ZXJPZjIoaW50MzJfdCB2KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc09uZUJpdFNldCh2KTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6aGFzX3NpbmdsZV9iaXQodik7CiAgICAgfQogCiAgICAgaW5saW5lIGludCBiaXRQb3NpdGlv
bihpbnQzMl90IHYpCiAgICAgewotICAgICAgICByZXR1cm4gZ2V0TFNCU2V0KHYpOworICAgICAg
ICByZXR1cm4gc3RkOjpjb3VudHJfemVybyh2KTsKICAgICB9CiAKICAgICAvLyBGb3Igc3Rvcmlu
ZyBpbW1lZGlhdGUgbnVtYmVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1NlY3VyZUFSTTY0RUhhc2hQaW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9TZWN1cmVBUk02NEVIYXNoUGlucy5oCShyZXZpc2lvbiAyODg3NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NlY3VyZUFSTTY0RUhhc2hQaW5zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIENQVShBUk02NEUpICYmIEVO
QUJMRShKSVQpCiAKKyNpbmNsdWRlIDxiaXQ+CiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTUxLDcgKzUyLDcgQEAgY2xhc3MgU2VjdXJlQVJNNjRFSGFzaFBp
bnMgeyAocHVibGljKQogICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKCkgeyBy
ZXR1cm4gc2l6ZW9mKFBhZ2UpICsgbnVtRW50cmllc1BlclBhZ2UgKiBzaXplb2YoRW50cnkpOyB9
CiAKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWFzayA9IG51bUVudHJpZXNQZXJQ
YWdlIC0gMTsKLSAgICAgICAgc3RhdGljX2Fzc2VydChoYXNPbmVCaXRTZXQobnVtRW50cmllc1Bl
clBhZ2UpKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omhhc19zaW5nbGVfYml0KG51bUVu
dHJpZXNQZXJQYWdlKSk7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoISFtYXNrKTsKICAgICAgICAg
c3RhdGljX2Fzc2VydCghKG1hc2sgJiBudW1FbnRyaWVzUGVyUGFnZSkpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2aXNpb24gMjg4
NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAj
aW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKKyNp
bmNsdWRlIDxiaXQ+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5o
PgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CkBAIC01NTc3LDcgKzU1NzgsNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0Q2FnZVByZXNlcnZlc1BBQ0ZhaWx1cmVCaXQoKQogCiAgICAgdm9pZCogcHRyID0g
R2lnYWNhZ2U6OnRyeU1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCAxKTsKICAgICB2b2lkKiB0
YWdnZWRQdHIgPSB0YWdBcnJheVB0cihwdHIsIDEpOwotICAgIFJFTEVBU0VfQVNTRVJUKGhhc09u
ZUJpdFNldChHaWdhY2FnZTo6bWF4U2l6ZShHaWdhY2FnZTo6UHJpbWl0aXZlKSA8PCAyKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoc3RkOjpoYXNfc2luZ2xlX2JpdChHaWdhY2FnZTo6bWF4U2l6ZShH
aWdhY2FnZTo6UHJpbWl0aXZlKSA8PCAyKSk7CiAgICAgdm9pZCogbm90Q2FnZWRQdHIgPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSArIChH
aWdhY2FnZTo6bWF4U2l6ZShHaWdhY2FnZTo6UHJpbWl0aXZlKSA8PCAyKSk7CiAgICAgQ0hFQ0tf
Tk9UX0VRKEdpZ2FjYWdlOjpjYWdlZChHaWdhY2FnZTo6UHJpbWl0aXZlLCBub3RDYWdlZFB0ciks
IG5vdENhZ2VkUHRyKTsKICAgICB2b2lkKiB0YWdnZWROb3RDYWdlZFB0ciA9IHRhZ0FycmF5UHRy
KG5vdENhZ2VkUHRyLCAxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VTdHJlbmd0aC5jcHAJKHJldmlzaW9uIDI4ODc1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUtleUlu
bGluZXMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPGJpdD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtODEzLDcgKzgxNCw3IEBAIGNsYXNzIFJlZHVj
ZVN0cmVuZ3RoIHsgKHByaXZhdGUpCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
Ly8gVHVybiB0aGlzOiBNdWwodmFsdWUsIGNvbnN0YW50KQogICAgICAgICAgICAgICAgIC8vIElu
dG8gdGhpczogU2hsKHZhbHVlLCBsb2cyKGNvbnN0YW50KSkKLSAgICAgICAgICAgICAgICBpZiAo
aGFzT25lQml0U2V0KGZhY3RvcikpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpoYXNfc2lu
Z2xlX2JpdChzdGF0aWNfY2FzdDx1aW50NjRfdD4oZmFjdG9yKSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgc2hpZnRBbW91bnQgPSBXVEY6OmZhc3RMb2cyKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihmYWN0b3IpKTsKICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXdWYWx1
ZSgKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcHJvYy5hZGQ8VmFsdWU+KApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM183LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzcuY3BwCShyZXZpc2lvbiAyODg3NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAidGVzdGIzLmgiCiAKKyNp
bmNsdWRlIDxiaXQ+CisKICNpZiBFTkFCTEUoQjNfSklUKQogCiB2b2lkIHRlc3RQaW5SZWdpc3Rl
cnMoKQpAQCAtMTc3Miw3ICsxNzc0LDcgQEAgc3RhdGljIHZvaWQgdHVwbGVQYWlyVmFyaWFibGVM
b29wKHVuc2lnbmVkIGZpcnN0LCB1aW50CiAgICAgdmFsaWRhdGUocHJvYyk7CiAgICAgaWYgKHNo
b3VsZEZpeFNTQSkKICAgICAgICAgZml4U1NBKHByb2MpOwotICAgIENIRUNLX0VRKGNvbXBpbGVB
bmRSdW48dWludDY0X3Q+KHByb2MsIGZpcnN0LCBzZWNvbmQpLCBzZWNvbmQgKyAoZmlyc3QgPyBn
ZXRNU0JTZXQoZmlyc3QpIDogZmlyc3QpICsgMSk7CisgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1
bjx1aW50NjRfdD4ocHJvYywgZmlyc3QsIHNlY29uZCksIHNlY29uZCArIChmaXJzdCA/IHN0ZDo6
Yml0X3dpZHRoKGZpcnN0KSAtIDEgOiBmaXJzdCkgKyAxKTsKIH0KIAogdGVtcGxhdGU8Ym9vbCBz
aG91bGRGaXhTU0E+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVJbmRleC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUluZGV4LmgJKHJldmlzaW9uIDI4ODc1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUluZGV4LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxiaXQ+CiAjaW5jbHVkZSA8d3RmL0hhc2hU
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC01Miw5ICs1Myw5IEBA
IGNsYXNzIEJ5dGVjb2RlSW5kZXggeyAocHVibGljKQogICAgIH0KIAogICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgbnVtYmVyT2ZDaGVja3BvaW50cyA9IDQ7Ci0gICAgc3RhdGljX2Fzc2Vy
dChoYXNPbmVCaXRTZXQobnVtYmVyT2ZDaGVja3BvaW50cyksICJudW1iZXJPZkNoZWNrcG9pbnRz
IHNob3VsZCBiZSBhIHBvd2VyIG9mIDIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aGFzX3Np
bmdsZV9iaXQobnVtYmVyT2ZDaGVja3BvaW50cyksICJudW1iZXJPZkNoZWNrcG9pbnRzIHNob3Vs
ZCBiZSBhIHBvd2VyIG9mIDIiKTsKICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGNoZWNr
cG9pbnRNYXNrID0gbnVtYmVyT2ZDaGVja3BvaW50cyAtIDE7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBjaGVja3BvaW50U2hpZnQgPSBXVEY6OmdldE1TQlNldENvbnN0ZXhwcihudW1i
ZXJPZkNoZWNrcG9pbnRzKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGNoZWNrcG9p
bnRTaGlmdCA9IHN0ZDo6Yml0X3dpZHRoKG51bWJlck9mQ2hlY2twb2ludHMpIC0gMTsKIAogICAg
IHVpbnQzMl90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFja2VkQml0cyA+PiBjaGVja3Bv
aW50U2hpZnQ7IH0KICAgICBDaGVja3BvaW50IGNoZWNrcG9pbnQoKSBjb25zdCB7IHJldHVybiBt
X3BhY2tlZEJpdHMgJiBjaGVja3BvaW50TWFzazsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMjg4NzU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiTExJbnRPcGNvZGUuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNs
dWRlIDxiaXQ+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgpAQCAtOTEsNyArOTIsNyBAQCBleHRlcm4gY29uc3QgdW5zaWduZWQgd2FzbU9wY29kZUxl
bmd0aHNbXTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4SlNPcGNvZGVMZW5ndGggPSAv
KiBPcGNvZGUgKi8gMSArIC8qIFdpZGUzMiBPcGNvZGUgKi8gMSArIC8qIE9wZXJhbmRzICovIChN
QVhfTEVOR1RIX09GX0JZVEVDT0RFX0lEUyAtIDEpICogNDsKIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbWF4V2FzbU9wY29kZUxlbmd0aCA9IC8qIE9wY29kZSAqLyAxICsgLyogV2lkZTMyIE9w
Y29kZSAqLyAxICsgLyogT3BlcmFuZHMgKi8gKE1BWF9MRU5HVEhfT0ZfV0FTTV9JRFMgLSAxKSAq
IDQ7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heE9wY29kZUxlbmd0aCA9IHN0ZDo6bWF4
KG1heEpTT3Bjb2RlTGVuZ3RoLCBtYXhXYXNtT3Bjb2RlTGVuZ3RoKTsKLXN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgYml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBXVEY6OmdldE1TQlNldENv
bnN0ZXhwcihtYXhPcGNvZGVMZW5ndGgpICsgMTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
Yml0V2lkdGhGb3JNYXhPcGNvZGVMZW5ndGggPSBzdGQ6OmJpdF93aWR0aChtYXhPcGNvZGVMZW5n
dGgpOwogCiAjZGVmaW5lIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUobWFjcm8p
IFwKICAgICBtYWNybyhPcENhbGxWYXJhcmdzKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAkocmV2aXNpb24gMjg4NzU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIu
aCIKIAorI2luY2x1ZGUgPGJpdD4KICNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00NCw3
ICs0NSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgT3BlcmFuZEtpbmQgbGFzdE9wZXJhbmRLaW5kID0g
T3BlcmFuZAogCiBjbGFzcyBPcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIGtpbmRCaXRzID0gV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIoc3RhdGljX2Nhc3Q8
c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxPcGVyYW5kS2luZD4+KGxhc3RPcGVyYW5kS2luZCkpICsg
MTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGtpbmRCaXRzID0gc3RkOjpiaXRfd2lk
dGgoc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxPcGVyYW5kS2luZD4+KGxhc3RP
cGVyYW5kS2luZCkpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4Qml0cyA9IDMy
ICsga2luZEJpdHM7CiAgICAgc3RhdGljX2Fzc2VydChtYXhCaXRzID09IDM0KTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjg4NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlQ2FjaGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIKKyNp
bmNsdWRlIDxiaXQ+CiAjaW5jbHVkZSA8d3RmL0Jvb2xlYW5MYXR0aWNlLmg+CiAjaW5jbHVkZSA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKQEAgLTg0Nyw3ICs4NDgsNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWYKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlID0g
dG9VSW50MzIoKm51bWJlcik7Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJl
cihjbHoodmFsdWUpKSk7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihz
dGQ6OmNvdW50bF96ZXJvKHZhbHVlKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjg4NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHUGhhc2Uu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPGJpdD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CkBAIC0yMTUsNyArMjE2LDcgQEAgY2xhc3MgQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZSB7IChw
cml2YXRlKQogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IGNvbnN0ZXhwciBOb2RlRmxhZ3MgVmFyaWFibGVJc1VzZWQgPSAxIDw8ICgxICsgV1RGOjpnZXRN
U0JTZXRDb25zdGV4cHIoTm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNrKSk7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBOb2RlRmxhZ3MgVmFyaWFibGVJc1VzZWQgPSAxIDw8IHN0ZDo6Yml0X3dpZHRoKHN0
YXRpY19jYXN0PE5vZGVGbGFncz4oTm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNrKSk7CiAgICAgc3Rh
dGljX2Fzc2VydCghKFZhcmlhYmxlSXNVc2VkICYgTm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNrKSk7
CiAgICAgc3RhdGljX2Fzc2VydChWYXJpYWJsZUlzVXNlZCA+IE5vZGVCeXRlY29kZUJhY2tQcm9w
TWFzaywgIlZlcmlmeSB0aGUgYWJvdmUgZG9lc24ndCBvdmVyZmxvdyIpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAy
ODg3NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAiU3ltYm9sLmgiCiAjaW5j
bHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCisjaW5jbHVk
ZSA8Yml0PgogCiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTY1Myw3
ICs2NTQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQXJpdGhDbHozMiwg
VUNQVVN0cmkKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsK
ICAgICB1aW50MzJfdCB2YWx1ZSA9IG9wMS50b1VJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgcmV0dXJuIHRvVUNQVVN0cmljdElu
dDMyKGNseih2YWx1ZSkpOworICAgIHJldHVybiB0b1VDUFVTdHJpY3RJbnQzMihzdGQ6OmNvdW50
bF96ZXJvKHZhbHVlKSk7CiB9CiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25B
cml0aEZSb3VuZCwgZG91YmxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDI4ODc1NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogI2luY2x1
ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIllhcnJKSVRSZWdpc3RlcnMuaCIKKyNpbmNs
dWRlIDxiaXQ+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtNTM4Nyw4
ICs1Mzg4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob2JqZWN0R1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVJREdQUik7CiAgICAgICAgIG1faml0
LmFkZDMyKHN0cnVjdHVyZUlER1BSLCBoYXNoR1BSKTsKICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1
c3RlZEltbTMyKEhhc093blByb3BlcnR5Q2FjaGU6Om1hc2spLCBoYXNoR1BSKTsKLSAgICAgICAg
aWYgKGhhc09uZUJpdFNldChzaXplb2YoSGFzT3duUHJvcGVydHlDYWNoZTo6RW50cnkpKSkgLy8g
aXMgYSBwb3dlciBvZiAyCi0gICAgICAgICAgICBtX2ppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIo
Z2V0TFNCU2V0KHNpemVvZihIYXNPd25Qcm9wZXJ0eUNhY2hlOjpFbnRyeSkpKSwgaGFzaEdQUik7
CisgICAgICAgIGlmIChzdGQ6Omhhc19zaW5nbGVfYml0KHNpemVvZihIYXNPd25Qcm9wZXJ0eUNh
Y2hlOjpFbnRyeSkpKSAvLyBpcyBhIHBvd2VyIG9mIDIKKyAgICAgICAgICAgIG1faml0LmxzaGlm
dDMyKFRydXN0ZWRJbW0zMihzdGQ6OmNvdW50cl96ZXJvKHNpemVvZihIYXNPd25Qcm9wZXJ0eUNh
Y2hlOjpFbnRyeSkpKSwgaGFzaEdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1faml0
Lm11bDMyKFRydXN0ZWRJbW0zMihzaXplb2YoSGFzT3duUHJvcGVydHlDYWNoZTo6RW50cnkpKSwg
aGFzaEdQUiwgaGFzaEdQUik7CiAgICAgICAgIEFTU0VSVCh2bSgpLmhhc093blByb3BlcnR5Q2Fj
aGUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkocmV2aXNpb24gMjg4NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAK
ICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cu
aCIKICNpbmNsdWRlICJXZWFrTWFwSW1wbC5oIgorI2luY2x1ZGUgPGJpdD4KICNpbmNsdWRlIDx3
dGYvQml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0JveC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CkBAIC02NjM2LDcgKzY2MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhNb2QoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5jaGls
ZDIoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKICAgICAgICAgICAgIGludDMyX3QgZGl2aXNvciA9
IG5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCk7Ci0gICAgICAgICAgICBpZiAoZGl2aXNvciA+IDEg
JiYgaGFzT25lQml0U2V0KGRpdmlzb3IpKSB7CisgICAgICAgICAgICBpZiAoZGl2aXNvciA+IDEg
JiYgc3RkOjpoYXNfc2luZ2xlX2JpdChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGl2aXNvcikpKSB7
CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9nYXJpdGhtID0gV1RGOjpmYXN0TG9nMihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZGl2aXNvcikpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBkaXZp
ZGVuZEdQUiA9IG9wMS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAkocmV2aXNpb24gMjg4NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDcgQEAKICNp
bmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJZYXJySklUUmVnaXN0ZXJzLmgi
CiAjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPGJpdD4KICNpbmNsdWRlIDx3dGYvQm94Lmg+
CiAjaW5jbHVkZSA8d3RmL1JlY3Vyc2FibGVMYW1iZGEuaD4KICNpbmNsdWRlIDx3dGYvU3RkVW5v
cmRlcmVkU2V0Lmg+CkBAIC0xMjYzMCwxMSArMTI2MzEsMTEgQEAgSUdOT1JFX0NMQU5HX1dBUk5J
TkdTX0VORAogICAgICAgICBMVmFsdWUgYnVja2V0OwogCiAgICAgICAgIGlmIChtX25vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBXZWFrTWFwT2JqZWN0VXNlKSB7Ci0gICAgICAgICAgICBzdGF0
aWNfYXNzZXJ0KGhhc09uZUJpdFNldChzaXplb2YoV2Vha01hcEJ1Y2tldDxXZWFrTWFwQnVja2V0
RGF0YUtleVZhbHVlPikpLCAiU2hvdWxkIGJlIGEgcG93ZXIgb2YgMiIpOwotICAgICAgICAgICAg
YnVja2V0ID0gbV9vdXQuYWRkKGJ1ZmZlciwgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW5kZXgs
IEludDY0KSwgbV9vdXQuY29uc3RJbnQzMihnZXRMU0JTZXQoc2l6ZW9mKFdlYWtNYXBCdWNrZXQ8
V2Vha01hcEJ1Y2tldERhdGFLZXlWYWx1ZT4pKSkpKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjpoYXNfc2luZ2xlX2JpdChzaXplb2YoV2Vha01hcEJ1Y2tldDxXZWFrTWFwQnVja2V0
RGF0YUtleVZhbHVlPikpLCAiU2hvdWxkIGJlIGEgcG93ZXIgb2YgMiIpOworICAgICAgICAgICAg
YnVja2V0ID0gbV9vdXQuYWRkKGJ1ZmZlciwgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW5kZXgs
IEludDY0KSwgbV9vdXQuY29uc3RJbnQzMihzdGQ6OmNvdW50cl96ZXJvKHNpemVvZihXZWFrTWFw
QnVja2V0PFdlYWtNYXBCdWNrZXREYXRhS2V5VmFsdWU+KSkpKSk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KGhhc09uZUJpdFNldChzaXplb2YoV2Vha01hcEJ1
Y2tldDxXZWFrTWFwQnVja2V0RGF0YUtleT4pKSwgIlNob3VsZCBiZSBhIHBvd2VyIG9mIDIiKTsK
LSAgICAgICAgICAgIGJ1Y2tldCA9IG1fb3V0LmFkZChidWZmZXIsIG1fb3V0LnNobChtX291dC56
ZXJvRXh0KGluZGV4LCBJbnQ2NCksIG1fb3V0LmNvbnN0SW50MzIoZ2V0TFNCU2V0KHNpemVvZihX
ZWFrTWFwQnVja2V0PFdlYWtNYXBCdWNrZXREYXRhS2V5PikpKSkpOworICAgICAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6Omhhc19zaW5nbGVfYml0KHNpemVvZihXZWFrTWFwQnVja2V0PFdlYWtN
YXBCdWNrZXREYXRhS2V5PikpLCAiU2hvdWxkIGJlIGEgcG93ZXIgb2YgMiIpOworICAgICAgICAg
ICAgYnVja2V0ID0gbV9vdXQuYWRkKGJ1ZmZlciwgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHQoaW5k
ZXgsIEludDY0KSwgbV9vdXQuY29uc3RJbnQzMihzdGQ6OmNvdW50cl96ZXJvKHNpemVvZihXZWFr
TWFwQnVja2V0PFdlYWtNYXBCdWNrZXREYXRhS2V5PikpKSkpOwogICAgICAgICB9CiAKICAgICAg
ICAgTFZhbHVlIGJ1Y2tldEtleSA9IG1fb3V0LmxvYWQ2NChidWNrZXQsIG1faGVhcHMuV2Vha01h
cEJ1Y2tldF9rZXkpOwpAQCAtMTY4ODUsNyArMTY4ODYsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklO
R1NfRU5ECiAgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnRQdHIoYWN0dWFsQWxsb2Nh
dG9yLmxvY2FsQWxsb2NhdG9yKCkpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB1bnNp
Z25lZCBzdGVwU2hpZnQgPSBnZXRMU0JTZXQoTWFya2VkU3BhY2U6OnNpemVTdGVwKTsKKyAgICAg
ICAgdW5zaWduZWQgc3RlcFNoaWZ0ID0gc3RkOjpjb3VudHJfemVybyhNYXJrZWRTcGFjZTo6c2l6
ZVN0ZXApOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAyODg3NTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgog
I2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgor
I2luY2x1ZGUgPGJpdD4KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICNpbmNsdWRlICJXYXNt
TWVtb3J5SW5mb3JtYXRpb24uaCIKQEAgLTYwOSw3ICs2MTAsNyBAQCB2b2lkIEFzc2VtYmx5SGVs
cGVyczo6ZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZChHUFJSZWcKIHsKICAgICBzdGF0aWNfYXNz
ZXJ0KCEoTWFya2VkU3BhY2U6OnNpemVTdGVwICYgKE1hcmtlZFNwYWNlOjpzaXplU3RlcCAtIDEp
KSwgIk1hcmtlZFNwYWNlOjpzaXplU3RlcCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwogICAg
IAotICAgIHVuc2lnbmVkIHN0ZXBTaGlmdCA9IGdldExTQlNldChNYXJrZWRTcGFjZTo6c2l6ZVN0
ZXApOworICAgIHVuc2lnbmVkIHN0ZXBTaGlmdCA9IHN0ZDo6Y291bnRyX3plcm8oTWFya2VkU3Bh
Y2U6OnNpemVTdGVwKTsKICAgICAKICAgICBhZGQzMihUcnVzdGVkSW1tMzIoTWFya2VkU3BhY2U6
OnNpemVTdGVwIC0gMSksIGFsbG9jYXRpb25TaXplLCBzY3JhdGNoR1BSMSk7CiAgICAgdXJzaGlm
dDMyKFRydXN0ZWRJbW0zMihzdGVwU2hpZnQpLCBzY3JhdGNoR1BSMSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gMjg4NzU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAK
ICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0
T2Zmc2V0TGlzdC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCisjaW5jbHVkZSA8Yml0Pgog
Ci0KIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBQQ1RvQ29kZU9yaWdpbk1hcDsKQEAgLTYzLDcg
KzYzLDcgQEAgZW51bSBjbGFzcyBKSVRUeXBlIDogdWludDhfdCB7CiAgICAgRlRMSklUID0gMGIx
MDEsCiB9Owogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCB3aWR0aE9mSklUVHlwZSA9IDM7Ci1z
dGF0aWNfYXNzZXJ0KFdURjo6Z2V0TVNCU2V0Q29uc3RleHByKHN0YXRpY19jYXN0PHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpICsgMSA9PSB3aWR0aE9m
SklUVHlwZSk7CitzdGF0aWNfYXNzZXJ0KHN0ZDo6Yml0X3dpZHRoKHN0YXRpY19jYXN0PHN0ZDo6
dW5kZXJseWluZ190eXBlX3Q8SklUVHlwZT4+KEpJVFR5cGU6OkZUTEpJVCkpID09IHdpZHRoT2ZK
SVRUeXBlKTsKIAogY2xhc3MgSklUQ29kZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxK
SVRDb2RlPiB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9I
YXNPd25Qcm9wZXJ0eUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNoZS5oCShyZXZpc2lvbiAyODg3NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDEyICsyOCwxMyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSA8Yml0
PgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGFzT3duUHJvcGVydHlDYWNoZSB7CiAgICAg
c3RhdGljIGNvbnN0IHVpbnQzMl90IHNpemUgPSAyICogMTAyNDsKLSAgICBzdGF0aWNfYXNzZXJ0
KGhhc09uZUJpdFNldChzaXplKSwgInNpemUgc2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvLiIpOwor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjpoYXNfc2luZ2xlX2JpdChzaXplKSwgInNpemUgc2hvdWxk
IGJlIGEgcG93ZXIgb2YgdHdvLiIpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBtYXNrID0gc2l6ZSAtIDE7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0JpZ0ludC5jcHAJKHJldmlzaW9uIDI4ODc1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAog
I2luY2x1ZGUgIlBhcnNlSW50LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxiaXQ+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5o
PgogI2luY2x1ZGUgPHd0Zi9JbnQxMjguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpA
QCAtNDA1LDcgKzQwNiw3IEBAIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdAogICAgIGlmICh0aGlzLT5pc1plcm8oKSkKICAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+dm0oKS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVw
KCcwJyk7CiAKLSAgICBpZiAoaGFzT25lQml0U2V0KHJhZGl4KSkKKyAgICBpZiAoc3RkOjpoYXNf
c2luZ2xlX2JpdChyYWRpeCkpCiAgICAgICAgIHJldHVybiB0b1N0cmluZ0Jhc2VQb3dlck9mVHdv
KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCB0aGlzLCByYWRpeCk7CiAKICAgICBy
ZXR1cm4gdG9TdHJpbmdHZW5lcmljKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCB0
aGlzLCByYWRpeCk7CkBAIC00MTYsNyArNDE3LDcgQEAgU3RyaW5nIEpTQmlnSW50Ojp0cnlHZXRT
dHJpbmcoVk0mIHZtLCBKU0JpZ0ludCogYmlnSW50CiAgICAgaWYgKGJpZ0ludC0+aXNaZXJvKCkp
CiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVw
KCcwJyk7CiAKLSAgICBpZiAoaGFzT25lQml0U2V0KHJhZGl4KSkKKyAgICBpZiAoc3RkOjpoYXNf
c2luZ2xlX2JpdChyYWRpeCkpCiAgICAgICAgIHJldHVybiB0b1N0cmluZ0Jhc2VQb3dlck9mVHdv
KHZtLCBudWxscHRyLCBiaWdJbnQsIHJhZGl4KTsKIAogICAgIHJldHVybiB0b1N0cmluZ0dlbmVy
aWModm0sIG51bGxwdHIsIGJpZ0ludCwgcmFkaXgpOwpAQCAtMTI4NSw3ICsxMjg2LDcgQEAgaW5s
aW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXREaXYoRGlnaXQgaGlnaCwgCiAjZWxz
ZQogICAgIHN0YXRpYyBjb25zdGV4cHIgRGlnaXQgaGFsZkRpZ2l0QmFzZSA9IDF1bGwgPDwgaGFs
ZkRpZ2l0Qml0czsKICAgICAvLyBBZGFwdGVkIGZyb20gV2FycmVuLCBIYWNrZXIncyBEZWxpZ2h0
LCBwLiAxNTIuCi0gICAgdW5zaWduZWQgcyA9IGNseihkaXZpc29yKTsKKyAgICB1bnNpZ25lZCBz
ID0gc3RkOjpjb3VudGxfemVybyhkaXZpc29yKTsKICAgICAvLyBJZiB7c30gaXMgZGlnaXRCaXRz
IGhlcmUsIGl0IGNhdXNlcyBhbiB1bmRlZmluZWQgYmVoYXZpb3IuCiAgICAgLy8gQnV0IHtzfSBp
cyBuZXZlciBkaWdpdEJpdHMgc2luY2Uge2Rpdmlzb3J9IGlzIG5ldmVyIHplcm8gaGVyZS4KICAg
ICBBU1NFUlQocyAhPSBkaWdpdEJpdHMpOwpAQCAtMTY2MSw3ICsxNjYyLDcgQEAgdm9pZCBKU0Jp
Z0ludDo6YWJzb2x1dGVEaXZXaXRoQmlnSW50RGl2aXNvcihKU0dsb2JhbE9iCiAgICAgLy8gb3Zl
cmZsb3dpbmcgKHRoZXkgdGFrZSBhIHR3byBkaWdpdHMgd2lkZSBpbnB1dCwgYW5kIHJldHVybiBh
IG9uZSBkaWdpdAogICAgIC8vIHJlc3VsdCkuCiAgICAgRGlnaXQgbGFzdERpZ2l0ID0gZGl2aXNv
ci0+ZGlnaXQobiAtIDEpOwotICAgIHVuc2lnbmVkIHNoaWZ0ID0gY2x6KGxhc3REaWdpdCk7Cisg
ICAgdW5zaWduZWQgc2hpZnQgPSBzdGQ6OmNvdW50bF96ZXJvKGxhc3REaWdpdCk7CiAKICAgICBp
ZiAoc2hpZnQgPiAwKSB7CiAgICAgICAgIGRpdmlzb3IgPSBhYnNvbHV0ZUxlZnRTaGlmdEFsd2F5
c0NvcHkoZ2xvYmFsT2JqZWN0LCBIZWFwQmlnSW50SW1wbCB7IGRpdmlzb3IgfSwgc2hpZnQsIExl
ZnRTaGlmdE1vZGU6OlNhbWVTaXplUmVzdWx0KTsKQEAgLTIxNjMsNyArMjE2NCw3IEBAIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGJpdHNQZXJDaGFyVGFibGVNdWx0aXBsaWVyID0gMQogLy8gRGl2
aWRlIGJpdCBsZW5ndGggb2YgdGhlIEJpZ0ludCBieSBiaXRzIHJlcHJlc2VudGFibGUgcGVyIGNo
YXJhY3Rlci4KIHVpbnQ2NF90IEpTQmlnSW50OjpjYWxjdWxhdGVNYXhpbXVtQ2hhcmFjdGVyc1Jl
cXVpcmVkKHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgcmFkaXgsIERpZ2l0IGxhc3REaWdpdCwg
Ym9vbCBzaWduKQogewotICAgIHVuc2lnbmVkIGxlYWRpbmdaZXJvcyA9IGNseihsYXN0RGlnaXQp
OworICAgIHVuc2lnbmVkIGxlYWRpbmdaZXJvcyA9IHN0ZDo6Y291bnRsX3plcm8obGFzdERpZ2l0
KTsKIAogICAgIHNpemVfdCBiaXRMZW5ndGggPSBsZW5ndGggKiBkaWdpdEJpdHMgLSBsZWFkaW5n
WmVyb3M7CiAKQEAgLTIxODksMTkgKzIxOTAsMTkgQEAgdWludDY0X3QgSlNCaWdJbnQ6OmNhbGN1
bGF0ZU1heGltdW1DaGFyYWN0ZXJzUmVxdWlyZWQoCiAKIFN0cmluZyBKU0JpZ0ludDo6dG9TdHJp
bmdCYXNlUG93ZXJPZlR3byhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWxPYmpl
Y3RGb3JPT00sIEpTQmlnSW50KiB4LCB1bnNpZ25lZCByYWRpeCkKIHsKLSAgICBBU1NFUlQoaGFz
T25lQml0U2V0KHJhZGl4KSk7CisgICAgQVNTRVJUKHN0ZDo6aGFzX3NpbmdsZV9iaXQocmFkaXgp
KTsKICAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzMik7CiAgICAgQVNTRVJUKCF4
LT5pc1plcm8oKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBsZW5ndGggPSB4LT5sZW5ndGgoKTsK
ICAgICBjb25zdCBib29sIHNpZ24gPSB4LT5zaWduKCk7Ci0gICAgY29uc3QgdW5zaWduZWQgYml0
c1BlckNoYXIgPSBjdHoocmFkaXgpOworICAgIGNvbnN0IHVuc2lnbmVkIGJpdHNQZXJDaGFyID0g
c3RkOjpjb3VudHJfemVybyhyYWRpeCk7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhck1hc2sgPSBy
YWRpeCAtIDE7CiAgICAgLy8gQ29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3Ry
aW5nOiBkaXZpZGUgdGhlIGJpdCBsZW5ndGggb2YgdGhlCiAgICAgLy8gQmlnSW50IGJ5IHRoZSBu
dW1iZXIgb2YgYml0cyByZXByZXNlbnRhYmxlIHBlciBjaGFyYWN0ZXIgKHJvdW5kaW5nIHVwKS4K
ICAgICBjb25zdCBEaWdpdCBtc2QgPSB4LT5kaWdpdChsZW5ndGggLSAxKTsKIAotICAgIGNvbnN0
IHVuc2lnbmVkIG1zZExlYWRpbmdaZXJvcyA9IGNseihtc2QpOworICAgIGNvbnN0IHVuc2lnbmVk
IG1zZExlYWRpbmdaZXJvcyA9IHN0ZDo6Y291bnRsX3plcm8obXNkKTsKIAogICAgIGNvbnN0IHNp
emVfdCBiaXRMZW5ndGggPSBsZW5ndGggKiBkaWdpdEJpdHMgLSBtc2RMZWFkaW5nWmVyb3M7CiAg
ICAgY29uc3Qgc2l6ZV90IGNoYXJzUmVxdWlyZWQgPSAoYml0TGVuZ3RoICsgYml0c1BlckNoYXIg
LSAxKSAvIGJpdHNQZXJDaGFyICsgc2lnbjsKQEAgLTI2NzksNyArMjY4MCw3IEBAIEpTQmlnSW50
OjpDb21wYXJpc29uUmVzdWx0IEpTQmlnSW50Ojpjb21wYXJlVG9Eb3VibGUoSgogCiAgICAgaW50
IHhMZW5ndGggPSB4LT5sZW5ndGgoKTsKICAgICBEaWdpdCB4TVNEID0geC0+ZGlnaXQoeExlbmd0
aCAtIDEpOwotICAgIGludCBtc2RMZWFkaW5nWmVyb3MgPSBjbHooeE1TRCk7CisgICAgaW50IG1z
ZExlYWRpbmdaZXJvcyA9IHN0ZDo6Y291bnRsX3plcm8oeE1TRCk7CiAKICAgICBpbnQgeEJpdExl
bmd0aCA9IHhMZW5ndGggKiBkaWdpdEJpdHMgLSBtc2RMZWFkaW5nWmVyb3M7CiAgICAgaW50IHlC
aXRMZW5ndGggPSBleHBvbmVudCArIDE7CkBAIC0yODI4LDcgKzI4MjksNyBAQCBKU1ZhbHVlIEpT
QmlnSW50Ojp0b051bWJlckhlYXAoSlNCaWdJbnQqIGJpZ0ludCkKICAgICBjb25zdCB1bnNpZ25l
ZCBsZW5ndGggPSBiaWdJbnQtPmxlbmd0aCgpOwogICAgIGNvbnN0IGJvb2wgc2lnbiA9IGJpZ0lu
dC0+c2lnbigpOwogICAgIGNvbnN0IERpZ2l0IG1zZCA9IGJpZ0ludC0+ZGlnaXQobGVuZ3RoIC0g
MSk7Ci0gICAgY29uc3QgdW5zaWduZWQgbXNkTGVhZGluZ1plcm9zID0gY2x6KG1zZCk7CisgICAg
Y29uc3QgdW5zaWduZWQgbXNkTGVhZGluZ1plcm9zID0gc3RkOjpjb3VudGxfemVybyhtc2QpOwog
ICAgIGNvbnN0IHNpemVfdCBiaXRMZW5ndGggPSBsZW5ndGggKiBkaWdpdEJpdHMgLSBtc2RMZWFk
aW5nWmVyb3M7CiAgICAgLy8gRG91YmxlJ3MgZXhwb25lbnQgYml0cyBvdmVyZmxvdy4KICAgICBp
ZiAoYml0TGVuZ3RoID4gMTAyNCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhPYmplY3QuY3BwCShyZXZpc2lvbiAyODg3NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMs
NyBAQAogCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIK
KyNpbmNsdWRlIDxiaXQ+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE2Niw3ICsxNjcs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04obWF0aFByb3RvRnVuY0NsejMyLCAoSlNHbG9i
YWwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgdWludDMy
X3QgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvVUludDMyKGdsb2JhbE9iamVjdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGNseih2YWx1ZSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoc3RkOjpjb3VudGxfemVybyh2YWx1ZSkpKTsKIH0KIAog
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1hdGhQcm90b0Z1bmNDb3MsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCShyZXZpc2lvbiAyODg3NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorI2luY2x1
ZGUgPGJpdD4KICNpbmNsdWRlIDx3dGYvSGFzaFRhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC01OSw3ICs2MCw3IEBA
IEpTX0VYUE9SVF9QUklWQVRFIGV4dGVybiBQcm9wZXJ0eVRhYmxlU3RhdHMqIHByb3BlcnR5VAog
CiBpbmxpbmUgYm9vbCBpc1Bvd2VyT2YyKHVuc2lnbmVkIHYpCiB7Ci0gICAgcmV0dXJuIGhhc09u
ZUJpdFNldCh2KTsKKyAgICByZXR1cm4gc3RkOjpoYXNfc2luZ2xlX2JpdCh2KTsKIH0KIAogaW5s
aW5lIHVuc2lnbmVkIG5leHRQb3dlck9mMih1bnNpZ25lZCB2KQpJbmRleDogU291cmNlL1dURi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4
ODg4MSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjkgQEAKKzIwMjItMDItMDEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkb3B0IGMrKzIwJ3MgPGJpdD4gZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9JbnQxMjguY3BwOgorICAgICAgICAqIHd0
Zi9NYXRoRXh0cmFzLmg6CisgICAgICAgIChXVEY6OmlzTmFOQ29uc3RFeHByKToKKyAgICAgICAg
KGhhc09uZUJpdFNldCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmNsekNvbnN0ZXhwcik6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OmNseik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmN0ekNv
bnN0ZXhwcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmN0eik6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OmdldExTQlNldCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmdldExTQlNldENvbnN0
ZXhwcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmdldE1TQlNldCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OmdldE1TQlNldENvbnN0ZXhwcik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL09w
dGlvblNldC5oOgorICAgICAgICAoV1RGOjppc1ZhbGlkT3B0aW9uU2V0RW51bSk6CisgICAgICAg
ICogd3RmL1BhY2tlZC5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybU9TLmg6CisgICAgICAgICog
d3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjpmaW5kQml0SW5Xb3JkKToKKwogMjAy
Mi0wMS0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmVydCBPU0FsbG9jYXRvciBiZWhhdmlvciB0byBwcmUtU3RydWN0dXJlLUFsbG9jYXRvciBjaGFu
Z2Ugb25lCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9JbnQxMjguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL0ludDEyOC5jcHAJKHJldmlzaW9uIDI4ODc1NCkKKysrIFNvdXJjZS9XVEYv
d3RmL0ludDEyOC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvSW50MTI4Lmg+CiAKKyNpbmNsdWRlIDxiaXQ+CiAj
aW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8Y2Fzc2VydD4KICNpbmNsdWRlIDxpb21hbmlw
PgpAQCAtMzcsMTEgKzM4LDExIEBAIG5hbWVzcGFjZSB7CiBzdGF0aWMgQUxXQVlTX0lOTElORSBp
bnQgRmxzMTI4KFVJbnQxMjhJbXBsIG4pIHsKICAgaWYgKHVpbnQ2NF90IGhpID0gVUludDEyOEhp
Z2g2NChuKSkgewogICAgIEFTU0VSVChoaSAhPSAwKTsKLSAgICByZXR1cm4gMTI3IC0gY2x6KGhp
KTsKKyAgICByZXR1cm4gMTI3IC0gc3RkOjpjb3VudGxfemVybyhoaSk7CiAgIH0KICAgY29uc3Qg
dWludDY0X3QgbG93ID0gVUludDEyOExvdzY0KG4pOwogICBBU1NFUlQobG93ICE9IDApOwotICBy
ZXR1cm4gNjMgLSBjbHoobG93KTsKKyAgcmV0dXJuIDYzIC0gc3RkOjpjb3VudGxfemVybyhsb3cp
OwogfQogCiAvLyBMb25nIGRpdmlzaW9uL21vZHVsbyBmb3IgVUludDEyOEltcGwgaW1wbGVtZW50
ZWQgdXNpbmcgdGhlIHNoaWZ0LXN1YnRyYWN0CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYXRoRXh0
cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCShyZXZpc2lv
biAyODg3NTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgor
I2luY2x1ZGUgPGJpdD4KICNpbmNsdWRlIDxjbGltaXRzPgogI2luY2x1ZGUgPGNtYXRoPgogI2lu
Y2x1ZGUgPGZsb2F0Lmg+CkBAIC0zMDksMTEgKzMxMCw2IEBAIGlubGluZSBmbG9hdCBub3JtYWxp
emVkRmxvYXQoZmxvYXQgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBoYXNPbmVCaXRTZXQoVCB2YWx1ZSkKLXsKLSAgICBy
ZXR1cm4gISgodmFsdWUgLSAxKSAmIHZhbHVlKSAmJiB2YWx1ZTsKLX0KLQogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY29uc3RleHByIGJvb2wgaGFzWmVyb09yT25lQml0c1NldChUIHZhbHVlKQogewog
ICAgIHJldHVybiAhKCh2YWx1ZSAtIDEpICYgdmFsdWUpOwpAQCAtNjEzLDEyNCArNjA5LDYgQEAg
dm9pZCBzaHVmZmxlVmVjdG9yKFZlY3RvclR5cGUmIHZlY3RvciwgY29uc3QgUmFuZG9tRnVuCiAg
ICAgc2h1ZmZsZVZlY3Rvcih2ZWN0b3IsIHZlY3Rvci5zaXplKCksIHJhbmRvbUZ1bmMpOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciB1bnNpZ25lZCBjbHpDb25zdGV4cHIo
VCB2YWx1ZSkKLXsKLSAgICBjb25zdGV4cHIgdW5zaWduZWQgYml0U2l6ZSA9IHNpemVvZihUKSAq
IENIQVJfQklUOwotCi0gICAgdXNpbmcgVVQgPSB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8
VD46OnR5cGU7Ci0gICAgVVQgdVZhbHVlID0gdmFsdWU7Ci0KLSAgICB1bnNpZ25lZCB6ZXJvQ291
bnQgPSAwOwotICAgIGZvciAoaW50IGkgPSBiaXRTaXplIC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAg
ICAgICAgaWYgKHVWYWx1ZSA+PiBpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHplcm9D
b3VudCsrOwotICAgIH0KLSAgICByZXR1cm4gemVyb0NvdW50OwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotaW5saW5lIHVuc2lnbmVkIGNseihUIHZhbHVlKQotewotICAgIGNvbnN0ZXhwciB1
bnNpZ25lZCBiaXRTaXplID0gc2l6ZW9mKFQpICogQ0hBUl9CSVQ7Ci0KLSAgICB1c2luZyBVVCA9
IHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxUPjo6dHlwZTsKLSAgICBVVCB1VmFsdWUgPSB2
YWx1ZTsKLQotI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQotICAgIGNvbnN0ZXhwciB1bnNp
Z25lZCBiaXRTaXplNjQgPSBzaXplb2YodWludDY0X3QpICogQ0hBUl9CSVQ7Ci0gICAgaWYgKHVW
YWx1ZSkKLSAgICAgICAgcmV0dXJuIF9fYnVpbHRpbl9jbHpsbCh1VmFsdWUpIC0gKGJpdFNpemU2
NCAtIGJpdFNpemUpOwotICAgIHJldHVybiBiaXRTaXplOwotI2VsaWYgQ09NUElMRVIoTVNWQykg
JiYgIUNQVShYODYpCi0gICAgLy8gVmlzdWFsIFN0dWRpbyAyMDA4IG9yIHVwcGVyIGhhdmUgX19s
emNudCwgYnV0IHdlIGNhbid0IGRldGVjdCBJbnRlbCBBVlggYXQgY29tcGlsZSB0aW1lLgotICAg
IC8vIFNvIHdlIHVzZSBiaXQtc2Nhbi1yZXZlcnNlIG9wZXJhdGlvbiB0byBjYWxjdWxhdGUgY2x6
LgotICAgIC8vIF9CaXRTY2FuUmV2ZXJzZTY0IGlzIGRlZmluZWQgaW4gWDg2XzY0IGFuZCBBUk0g
aW4gTVNWQyBzdXBwb3J0ZWQgZW52aXJvbm1lbnRzLgotICAgIHVuc2lnbmVkIGxvbmcgcmV0ID0g
MDsKLSAgICBpZiAoX0JpdFNjYW5SZXZlcnNlNjQoJnJldCwgdVZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIGJpdFNpemUgLSAxIC0gcmV0OwotICAgIHJldHVybiBiaXRTaXplOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oYml0U2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHVWYWx1ZSk7Ci0gICAgcmV0
dXJuIGNsekNvbnN0ZXhwcih2YWx1ZSk7Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jb25zdGV4cHIgdW5zaWduZWQgY3R6Q29uc3RleHByKFQgdmFsdWUpCi17Ci0gICAgY29u
c3RleHByIHVuc2lnbmVkIGJpdFNpemUgPSBzaXplb2YoVCkgKiBDSEFSX0JJVDsKLQotICAgIHVz
aW5nIFVUID0gdHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlOwotICAgIFVUIHVW
YWx1ZSA9IHZhbHVlOwotCi0gICAgdW5zaWduZWQgemVyb0NvdW50ID0gMDsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYml0U2l6ZTsgaSsrKSB7Ci0gICAgICAgIGlmICh1VmFsdWUgJiAx
KQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgemVyb0NvdW50Kys7Ci0gICAgICAgIHVW
YWx1ZSA+Pj0gMTsKLSAgICB9Ci0gICAgcmV0dXJuIHplcm9Db3VudDsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLWlubGluZSB1bnNpZ25lZCBjdHooVCB2YWx1ZSkKLXsKLSAgICBjb25zdGV4
cHIgdW5zaWduZWQgYml0U2l6ZSA9IHNpemVvZihUKSAqIENIQVJfQklUOwotCi0gICAgdXNpbmcg
VVQgPSB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8VD46OnR5cGU7Ci0gICAgVVQgdVZhbHVl
ID0gdmFsdWU7Ci0KLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICBpZiAodVZhbHVl
KQotICAgICAgICByZXR1cm4gX19idWlsdGluX2N0emxsKHVWYWx1ZSk7Ci0gICAgcmV0dXJuIGJp
dFNpemU7Ci0jZWxpZiBDT01QSUxFUihNU1ZDKSAmJiAhQ1BVKFg4NikKLSAgICB1bnNpZ25lZCBs
b25nIHJldCA9IDA7Ci0gICAgaWYgKF9CaXRTY2FuRm9yd2FyZDY0KCZyZXQsIHVWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiByZXQ7Ci0gICAgcmV0dXJuIGJpdFNpemU7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShiaXRTaXplKTsKLSAgICBVTlVTRURfUEFSQU0odVZhbHVlKTsKLSAgICByZXR1cm4g
Y3R6Q29uc3RleHByKHZhbHVlKTsKLSNlbmRpZgotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
aW5saW5lIHVuc2lnbmVkIGdldExTQlNldChUIHQpCi17Ci0gICAgQVNTRVJUKHQpOwotICAgIHJl
dHVybiBjdHoodCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgdW5zaWdu
ZWQgZ2V0TFNCU2V0Q29uc3RleHByKFQgdCkKLXsKLSAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBS
X0NPTlRFWFQodCk7Ci0gICAgcmV0dXJuIGN0ekNvbnN0ZXhwcih0KTsKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLWlubGluZSB1bnNpZ25lZCBnZXRNU0JTZXQoVCB0KQotewotICAgIGNvbnN0
ZXhwciB1bnNpZ25lZCBiaXRTaXplID0gc2l6ZW9mKFQpICogQ0hBUl9CSVQ7Ci0gICAgQVNTRVJU
KHQpOwotICAgIHJldHVybiBiaXRTaXplIC0gMSAtIGNseih0KTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWNvbnN0ZXhwciB1bnNpZ25lZCBnZXRNU0JTZXRDb25zdGV4cHIoVCB0KQotewot
ICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRTaXplID0gc2l6ZW9mKFQpICogQ0hBUl9CSVQ7Ci0g
ICAgQVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhUKHQpOwotICAgIHJldHVybiBiaXRTaXpl
IC0gMSAtIGNsekNvbnN0ZXhwcih0KTsKLX0KLQogaW5saW5lIHNpemVfdCBjb3VudFRyYWlsaW5n
WmVyb3ModWludDMyX3QgdikKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTW9kMzdCaXRQ
b3NpdGlvbltdID0gewpAQCAtNzcwLDExICs2NDgsMjMgQEAgaW5saW5lIHVpbnQzMl90IHJldmVy
c2VCaXRzMzIodWludDMyX3QgdmFsdWUpCiAjZW5kaWYKIH0KIAorLy8gRklYTUU6IFJlcGxhY2Ug
d2l0aCBzdGQ6OmlzbmFuKCkgb25jZSBzdGQ6OmlzbmFuKCkgaXMgY29uc3RleHByLgordGVtcGxh
dGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Zsb2F0aW5n
X3BvaW50X3Y8VD4sIGJvb2w+IGlzTmFOQ29uc3RFeHByKFQgdmFsdWUpCit7CisjaWYgX19oYXNf
YnVpbHRpbihfX2J1aWx0aW5faXNuYW4pCisgICAgcmV0dXJuIF9fYnVpbHRpbl9pc25hbih2YWx1
ZSk7CisjZWxzZQorICAgIHJldHVybiB2YWx1ZSAhPSB2YWx1ZTsKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW50ZWdy
YWxfdjxUPiwgYm9vbD4gaXNOYU5Db25zdEV4cHIoVCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OnNodWZmbGVWZWN0b3I7Ci11c2lu
ZyBXVEY6OmNsejsKLXVzaW5nIFdURjo6Y3R6OwotdXNpbmcgV1RGOjpnZXRMU0JTZXQ7Ci11c2lu
ZyBXVEY6OmdldE1TQlNldDsKIHVzaW5nIFdURjo6cmV2ZXJzZUJpdHMzMjsKK3VzaW5nIFdURjo6
aXNOYU5Db25zdEV4cHI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAkocmV2aXNpb24gMjg4NzU0KQorKysg
U291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxiaXQ+CiAjaW5jbHVkZSA8aW5pdGlhbGl6
ZXJfbGlzdD4KICNpbmNsdWRlIDxpdGVyYXRvcj4KICNpbmNsdWRlIDxvcHRpb25hbD4KQEAgLTc5
LDcgKzgwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X2VudW08RT46CiBjb25zdGV4cHIgYm9vbCBpc1ZhbGlkT3B0aW9uU2V0RW51bShFIGUpCiB7CiAg
ICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIGFsbCBPcHRpb25TZXQ8PiBlbnVtcyBoYXZlIEVudW1U
cmFpdHM8PiBkZWZpbmVkLgotICAgIHJldHVybiBoYXNPbmVCaXRTZXQoc3RhdGljX2Nhc3Q8dHlw
ZW5hbWUgT3B0aW9uU2V0PEU+OjpTdG9yYWdlVHlwZT4oZSkpOworICAgIHJldHVybiBzdGQ6Omhh
c19zaW5nbGVfYml0KHN0YXRpY19jYXN0PHR5cGVuYW1lIE9wdGlvblNldDxFPjo6U3RvcmFnZVR5
cGU+KGUpKTsKIH0KIAogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QYWNrZWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QYWNrZWQuaAkocmV2aXNpb24gMjg4NzU0KQorKysgU291cmNl
L1dURi93dGYvUGFja2VkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Yml0PgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
RnVuY3Rpb25zLmg+CkBAIC0xMTAsMTAgKzExMSwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgcGFzc2VkQWxpZ25tZW50PgogY2xhc3MgUGFja2VkQWxpZ25lZFB0ciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljX2Fzc2VydChoYXNPbmVC
aXRTZXQocGFzc2VkQWxpZ25tZW50KSwgIkFsaWdubWVudCBuZWVkcyB0byBiZSBwb3dlci1vZi10
d28iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aGFzX3NpbmdsZV9iaXQocGFzc2VkQWxpZ25t
ZW50KSwgIkFsaWdubWVudCBuZWVkcyB0byBiZSBwb3dlci1vZi10d28iKTsKICAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBhbGlnbm1lbnQgPSBwYXNzZWRBbGlnbm1lbnQ7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzUGFja2VkVHlwZSA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBhbGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFibGUgPSBnZXRMU0JTZXRDb25z
dGV4cHIoYWxpZ25tZW50KTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGFsaWdubWVu
dFNoaWZ0U2l6ZUlmUHJvZml0YWJsZSA9IHN0ZDo6Y291bnRyX3plcm8oYWxpZ25tZW50KTsKICAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHN0b3JhZ2VTaXplV2l0aG91dEFsaWdubWVudFNo
aWZ0ID0gcm91bmRVcFRvTXVsdGlwbGVPZjw4PihPU19DT05TVEFOVChFRkZFQ1RJVkVfQUREUkVT
U19XSURUSCkpIC8gODsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHN0b3JhZ2VTaXpl
V2l0aEFsaWdubWVudFNoaWZ0ID0gcm91bmRVcFRvTXVsdGlwbGVPZjw4PihPU19DT05TVEFOVChF
RkZFQ1RJVkVfQUREUkVTU19XSURUSCkgLSBhbGlnbm1lbnRTaGlmdFNpemVJZlByb2ZpdGFibGUp
IC8gODsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBbGlnbm1lbnRTaGlmdFByb2ZpdGFi
bGUgPSBzdG9yYWdlU2l6ZVdpdGhvdXRBbGlnbm1lbnRTaGlmdCA+IHN0b3JhZ2VTaXplV2l0aEFs
aWdubWVudFNoaWZ0OwpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1PUy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtT1MuaAkocmV2aXNpb24gMjg4NzU0KQorKysg
U291cmNlL1dURi93dGYvUGxhdGZvcm1PUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNyArMTM3
LDcgQEAKIAogI2lmIENQVShBRERSRVNTNjQpCiAjaWYgT1MoREFSV0lOKQotI2RlZmluZSBXVEZf
T1NfQ09OU1RBTlRfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggKFdURjo6Z2V0TVNCU2V0Q29uc3Rl
eHByKE1BQ0hfVk1fTUFYX0FERFJFU1MpICsgMSkKKyNkZWZpbmUgV1RGX09TX0NPTlNUQU5UX0VG
RkVDVElWRV9BRERSRVNTX1dJRFRIIChzdGQ6OmJpdF93aWR0aChNQUNIX1ZNX01BWF9BRERSRVNT
KSkKICNlbHNlCiAvKiBXZSBzdHJvbmdseSBhc3N1bWUgdGhhdCBlZmZlY3RpdmUgYWRkcmVzcyB3
aWR0aCBpcyA8PSA0OCBpbiA2NGJpdCBhcmNoaXRlY3R1cmVzIChlLmcuIE5hTiBib3hpbmcpLiAq
LwogI2RlZmluZSBXVEZfT1NfQ09OU1RBTlRfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggNDgKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1N0ZExpYkV4dHJhcy5oCShyZXZpc2lvbiAyODg3NTQpCisrKyBTb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPGJpdD4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KQEAgLTMxNyw5ICszMTgsNiBAQCBib29s
IGNoZWNrQW5kU2V0KFQmIGxlZnQsIFUgcmlnaHQpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1pbmxpbmUgdW5zaWduZWQgY3R6KFQgdmFsdWUpOyAvLyBDbGllbnRzIHdpbGwgYWxzbyBuZWVk
IHRvICNpbmNsdWRlIE1hdGhFeHRyYXMuaAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgogYm9vbCBm
aW5kQml0SW5Xb3JkKFQgd29yZCwgc2l6ZV90JiBzdGFydE9yUmVzdWx0SW5kZXgsIHNpemVfdCBl
bmRJbmRleCwgYm9vbCB2YWx1ZSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWdu
ZWQ8VD46OnZhbHVlLCAiVHlwZSB1c2VkIGluIGZpbmRCaXRJbldvcmQgbXVzdCBiZSB1bnNpZ25l
ZCIpOwpAQCAtMzMxLDEyICszMjksMTIgQEAgYm9vbCBmaW5kQml0SW5Xb3JkKFQgd29yZCwgc2l6
ZV90JiBzdGFydE9yUmVzdWx0SW5kZXgsCiAgICAgd29yZCA+Pj0gaW5kZXg7CiAKICNpZiBDT01Q
SUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgKENQVShYODZfNjQpIHx8IENQVShBUk02NCkpCi0gICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgdXNlIGN0eigpIHdoZW4gd2Uga25vdyB0aGF0IGN0eigpIGlzIGlt
cGxlbWVudGF0ZWQgdXNpbmcKLSAgICAvLyBhIGZhc3QgaGFyZHdhcmUgaW5zdHJ1Y3Rpb24uIE90
aGVyd2lzZSwgdGhpcyB3aWxsIGFjdHVhbGx5IHJlc3VsdCBpbgotICAgIC8vIHdvcnNlIHBlcmZv
cm1hbmNlLgorICAgIC8vIFdlIHNob3VsZCBvbmx5IHVzZSBzdGQ6OmNvdW50cl96ZXJvKCkgd2hl
biB3ZSBrbm93IHRoYXQgc3RkOjpjb3VudHJfemVybygpCisgICAgLy8gaXMgaW1wbGVtZW50YXRl
ZCB1c2luZyBhIGZhc3QgaGFyZHdhcmUgaW5zdHJ1Y3Rpb24uIE90aGVyd2lzZSwgdGhpcyB3aWxs
IGFjdHVhbGx5CisgICAgLy8gcmVzdWx0IGluIHdvcnNlIHBlcmZvcm1hbmNlLgogCiAgICAgd29y
ZCBePSAoc3RhdGljX2Nhc3Q8VD4odmFsdWUpIC0gMSk7Ci0gICAgaW5kZXggKz0gY3R6KHdvcmQp
OworICAgIGluZGV4ICs9IHN0ZDo6Y291bnRyX3plcm8od29yZCk7CiAgICAgaWYgKGluZGV4IDwg
ZW5kSW5kZXgpIHsKICAgICAgICAgc3RhcnRPclJlc3VsdEluZGV4ID0gaW5kZXg7CiAgICAgICAg
IHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODg4NSkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDIt
MDEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IGMrKzIw
J3MgPGJpdD4gZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzU5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpzdG9wV2FpdGluZ0ZvckV2ZW50KToKKwogMjAyMi0wMi0wMSAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNaW5vciBjbGVhbnVwIGlu
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbgpAQCAtMjM1Myw2ICsyMzYzLDIwIEBA
CiAgICAgICAgIEV2ZXIgc2luY2UgcjI4NzEwMCB3ZSBhcmUgdXNpbmcgdGhlIHNhbmRib3ggcHJv
ZmlsZSwgYnV0IGl0IGRvZXNuJ3QgZXhpc3Qgc28gd2UganVzdCBjcmFzaC4KIAogICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDIyLTAxLTE3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDYW52YXMgZnVuY3Rpb25zIHRoYXQg
dGFrZSBjb2xvcnMgYXMgc3RyaW5ncyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgc3ludGF4IHRoYXQg
Q1NTIHN1cHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzUyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBVcGRhdGUgZm9yIHJlbmFtZSBvZiBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoKSB0byBDU1NQYXJz
ZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dCgpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0Q29sb3IuY3BwOgorICAgICAgICAod2Via2l0X2NvbG9yX3BhcnNlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6
CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbik6CiAKIDIwMjItMDEtMTcgIENo
YW5nU2VvayBPaCAgPGNoYW5nc2Vva0B3ZWJraXQub3JnPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI4
ODc1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8Yml0PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMzMyLDcgKzMzMyw3IEBAIHZvaWQgVmlld0dlc3R1cmVD
b250cm9sbGVyOjpTbmFwc2hvdFJlbW92YWxUcmFja2VyOjpyZQogCiBib29sIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6IHN0b3BXYWl0aW5nRm9yRXZlbnQo
RXZlbnRzIGV2ZW50LCBjb25zdCBTdHJpbmcmIGxvZ1JlYXNvbiwgU2hvdWxkSWdub3JlRXZlbnRJ
ZlBhdXNlZCBzaG91bGRJZ25vcmVFdmVudElmUGF1c2VkKQogewotICAgIEFTU0VSVChoYXNPbmVC
aXRTZXQoZXZlbnQpKTsKKyAgICBBU1NFUlQoc3RkOjpoYXNfc2luZ2xlX2JpdChldmVudCkpOwog
CiAgICAgaWYgKCEobV9vdXRzdGFuZGluZ0V2ZW50cyAmIGV2ZW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg4ODgxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMDEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkb3B0IGMrKzIwJ3MgPGJpdD4gZnVuY3Rpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL01hdGhFeHRyYXMuY3BwOgorICAgICAgICBSZW1vdmUgdGVzdHMgZm9yIHJlbW92ZWQg
ZnVuY3Rpb25zLgorCiAyMDIyLTAyLTAxICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5j
b20+CiAKICAgICAgICAgTWlncmF0ZSBMYXlvdXRUZXN0RmluZGVyIHRlc3RzIGZyb20gRmlsZVN5
c3RlbU1vY2sgdG8gcHlmYWtlZnMKQEAgLTEzOTAsNiArMTQwMCwxNyBAQAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgQ2hyaXMgRHVtZXouCiAgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVVVJRC5jcHA6CiAgICAgICAgIEltcHJvdmUgdGVzdCBjb3ZlcmFnZS4K
KworMjAyMi0wMS0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
W0NTUyBDb2xvciA0XSBBZGQgc3VwcG9ydCBmb3IgIk1pc3NpbmciLyJub25lIiBjb2xvciBjb21w
b25lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM1MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg2MDI2MDg3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9zdm4tY3JlYXRlLXBh
dGNoOgorICAgICAgICAoZGlmZk9wdGlvbnNGb3JGaWxlKToKIAogMjAyMi0wMS0xNyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIApJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTWF0aEV4dHJhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTWF0aEV4dHJhcy5jcHAJKHJldmlzaW9uIDI4ODc1NCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01hdGhFeHRyYXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzAsMTUyICs0NzAsNCBAQCBURVNUKFdURiwgcm91bmRVcFRvUG93ZXJPZlR3bykKICAg
ICBFWFBFQ1RfRVEoV1RGOjpyb3VuZFVwVG9Qb3dlck9mVHdvKCgxVSA8PCAzMSkgKyAxKSwgMFUp
OwogfQogCi1URVNUKFdURiwgY2x6KQotewotICAgIEVYUEVDVF9FUShXVEY6OmNsejxpbnQzMl90
PigxKSwgMzFVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjbHo8aW50MzJfdD4oNDIpLCAyNlUpOwot
ICAgIEVYUEVDVF9FUShXVEY6OmNsejx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KC0x
KSksIDBVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjbHo8dWludDMyX3Q+KHN0YXRpY19jYXN0PHVp
bnQzMl90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkgPj4gMSksIDFVKTsK
LSAgICBFWFBFQ1RfRVEoV1RGOjpjbHo8dWludDMyX3Q+KDApLCAzMlUpOwotCi0gICAgRVhQRUNU
X0VRKFdURjo6Y2x6PGludDhfdD4oNDIpLCAyVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Y2x6PGlu
dDhfdD4oMyksIDZVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjbHo8dWludDhfdD4oc3RhdGljX2Nh
c3Q8dWludDhfdD4oLTEpKSwgMFUpOwotICAgIEVYUEVDVF9FUShXVEY6OmNsejx1aW50OF90Pigw
KSwgOFUpOwotCi0gICAgRVhQRUNUX0VRKFdURjo6Y2x6PGludDY0X3Q+KC0xKSwgMFUpOwotICAg
IEVYUEVDVF9FUShXVEY6OmNsejxpbnQ2NF90PigxKSwgNjNVKTsKLSAgICBFWFBFQ1RfRVEoV1RG
OjpjbHo8aW50NjRfdD4oMyksIDYyVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Y2x6PHVpbnQ2NF90
Pig0MiksIDU4VSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Y2x6PHVpbnQ2NF90PigwKSwgNjRVKTsK
LX0KLQotVEVTVChXVEYsIGN0eikKLXsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjdHo8aW50MzJfdD4o
MSksIDBVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjdHo8aW50MzJfdD4oNDIpLCAxVSk7Ci0gICAg
RVhQRUNUX0VRKFdURjo6Y3R6PHVpbnQzMl90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oLTEpKSwg
MFUpOwotICAgIEVYUEVDVF9FUShXVEY6OmN0ejx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSA+PiAxKSwgMzBVKTsKLSAg
ICBFWFBFQ1RfRVEoV1RGOjpjdHo8dWludDMyX3Q+KDApLCAzMlUpOwotCi0gICAgRVhQRUNUX0VR
KFdURjo6Y3R6PGludDhfdD4oNDIpLCAxVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Y3R6PGludDhf
dD4oMyksIDBVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjdHo8dWludDhfdD4oc3RhdGljX2Nhc3Q8
dWludDhfdD4oLTEpKSwgMFUpOwotICAgIEVYUEVDVF9FUShXVEY6OmN0ejx1aW50OF90PigwKSwg
OFUpOwotCi0gICAgRVhQRUNUX0VRKFdURjo6Y3R6PGludDY0X3Q+KHN0YXRpY19jYXN0PHVpbnQz
Ml90PigtMSkpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Y3R6PGludDY0X3Q+KDEpLCAwVSk7
Ci0gICAgRVhQRUNUX0VRKFdURjo6Y3R6PGludDY0X3Q+KDMpLCAwVSk7Ci0gICAgRVhQRUNUX0VR
KFdURjo6Y3R6PHVpbnQ2NF90Pig0MiksIDFVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjdHo8dWlu
dDY0X3Q+KDApLCA2NFUpOwotfQotCi1URVNUKFdURiwgZ2V0TFNCU2V0KQotewotICAgIEVYUEVD
VF9FUShXVEY6OmdldExTQlNldDxpbnQzMl90PigxKSwgMFUpOwotICAgIEVYUEVDVF9FUShXVEY6
OmdldExTQlNldDxpbnQzMl90Pig0MiksIDFVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpnZXRMU0JT
ZXQ8dWludDMyX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PigtMSkpLCAwVSk7Ci0gICAgRVhQRUNU
X0VRKFdURjo6Z2V0TFNCU2V0PHVpbnQzMl90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpID4+IDEpLCAzMFUpOwotCi0gICAgRVhQRUNU
X0VRKFdURjo6Z2V0TFNCU2V0PGludDhfdD4oNDIpLCAxVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6
Z2V0TFNCU2V0PGludDhfdD4oMyksIDBVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpnZXRMU0JTZXQ8
dWludDhfdD4oc3RhdGljX2Nhc3Q8dWludDhfdD4oLTEpKSwgMFUpOwotCi0gICAgRVhQRUNUX0VR
KFdURjo6Z2V0TFNCU2V0PGludDY0X3Q+KC0xKSwgMFUpOwotICAgIEVYUEVDVF9FUShXVEY6Omdl
dExTQlNldDxpbnQ2NF90PigxKSwgMFUpOwotICAgIEVYUEVDVF9FUShXVEY6OmdldExTQlNldDxp
bnQ2NF90PigzKSwgMFUpOwotICAgIEVYUEVDVF9FUShXVEY6OmdldExTQlNldDx1aW50NjRfdD4o
NDIpLCAxVSk7Ci19Ci0KLVRFU1QoV1RGLCBnZXRNU0JTZXQpCi17Ci0gICAgRVhQRUNUX0VRKFdU
Rjo6Z2V0TVNCU2V0PGludDMyX3Q+KDEpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Z2V0TVNC
U2V0PGludDMyX3Q+KDQyKSwgNVUpOwotICAgIEVYUEVDVF9FUShXVEY6OmdldE1TQlNldDx1aW50
MzJfdD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KC0xKSksIDMxVSk7Ci0gICAgRVhQRUNUX0VRKFdU
Rjo6Z2V0TVNCU2V0PHVpbnQzMl90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWluKCkpID4+IDEpLCAzMFUpOwotCi0gICAgRVhQRUNUX0VRKFdU
Rjo6Z2V0TVNCU2V0PGludDhfdD4oNDIpLCA1VSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Z2V0TVNC
U2V0PGludDhfdD4oMyksIDFVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpnZXRNU0JTZXQ8dWludDhf
dD4oc3RhdGljX2Nhc3Q8dWludDhfdD4oLTEpKSwgN1UpOwotCi0gICAgRVhQRUNUX0VRKFdURjo6
Z2V0TVNCU2V0PGludDY0X3Q+KC0xKSwgNjNVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpnZXRNU0JT
ZXQ8aW50NjRfdD4oMSksIDBVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpnZXRNU0JTZXQ8aW50NjRf
dD4oMyksIDFVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpnZXRNU0JTZXQ8dWludDY0X3Q+KDQyKSwg
NVUpOwotfQotCi1URVNUKFdURiwgY2x6Q29uc3RleHByKQotewotICAgIEVYUEVDVF9FUShXVEY6
OmNsekNvbnN0ZXhwcjxpbnQzMl90PigxKSwgMzFVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjbHpD
b25zdGV4cHI8aW50MzJfdD4oNDIpLCAyNlUpOwotICAgIEVYUEVDVF9FUShXVEY6OmNsekNvbnN0
ZXhwcjx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KC0xKSksIDBVKTsKLSAgICBFWFBF
Q1RfRVEoV1RGOjpjbHpDb25zdGV4cHI8dWludDMyX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90Pihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkgPj4gMSksIDFVKTsKLSAgICBFWFBF
Q1RfRVEoV1RGOjpjbHpDb25zdGV4cHI8dWludDMyX3Q+KDApLCAzMlUpOwotCi0gICAgRVhQRUNU
X0VRKFdURjo6Y2x6Q29uc3RleHByPGludDhfdD4oNDIpLCAyVSk7Ci0gICAgRVhQRUNUX0VRKFdU
Rjo6Y2x6Q29uc3RleHByPGludDhfdD4oMyksIDZVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjbHpD
b25zdGV4cHI8dWludDhfdD4oc3RhdGljX2Nhc3Q8dWludDhfdD4oLTEpKSwgMFUpOwotICAgIEVY
UEVDVF9FUShXVEY6OmNsekNvbnN0ZXhwcjx1aW50OF90PigwKSwgOFUpOwotCi0gICAgRVhQRUNU
X0VRKFdURjo6Y2x6Q29uc3RleHByPGludDY0X3Q+KC0xKSwgMFUpOwotICAgIEVYUEVDVF9FUShX
VEY6OmNsekNvbnN0ZXhwcjxpbnQ2NF90PigxKSwgNjNVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpj
bHpDb25zdGV4cHI8aW50NjRfdD4oMyksIDYyVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Y2x6Q29u
c3RleHByPHVpbnQ2NF90Pig0MiksIDU4VSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Y2x6Q29uc3Rl
eHByPHVpbnQ2NF90PigwKSwgNjRVKTsKLX0KLQotVEVTVChXVEYsIGN0ekNvbnN0ZXhwcikKLXsK
LSAgICBFWFBFQ1RfRVEoV1RGOjpjdHpDb25zdGV4cHI8aW50MzJfdD4oMSksIDBVKTsKLSAgICBF
WFBFQ1RfRVEoV1RGOjpjdHpDb25zdGV4cHI8aW50MzJfdD4oNDIpLCAxVSk7Ci0gICAgRVhQRUNU
X0VRKFdURjo6Y3R6Q29uc3RleHByPHVpbnQzMl90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oLTEp
KSwgMFUpOwotICAgIEVYUEVDVF9FUShXVEY6OmN0ekNvbnN0ZXhwcjx1aW50MzJfdD4oc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSA+PiAx
KSwgMzBVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjdHpDb25zdGV4cHI8dWludDMyX3Q+KDApLCAz
MlUpOwotCi0gICAgRVhQRUNUX0VRKFdURjo6Y3R6Q29uc3RleHByPGludDhfdD4oNDIpLCAxVSk7
Ci0gICAgRVhQRUNUX0VRKFdURjo6Y3R6Q29uc3RleHByPGludDhfdD4oMyksIDBVKTsKLSAgICBF
WFBFQ1RfRVEoV1RGOjpjdHpDb25zdGV4cHI8dWludDhfdD4oc3RhdGljX2Nhc3Q8dWludDhfdD4o
LTEpKSwgMFUpOwotICAgIEVYUEVDVF9FUShXVEY6OmN0ekNvbnN0ZXhwcjx1aW50OF90PigwKSwg
OFUpOwotCi0gICAgRVhQRUNUX0VRKFdURjo6Y3R6Q29uc3RleHByPGludDY0X3Q+KHN0YXRpY19j
YXN0PHVpbnQzMl90PigtMSkpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Y3R6Q29uc3RleHBy
PGludDY0X3Q+KDEpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Y3R6Q29uc3RleHByPGludDY0
X3Q+KDMpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Y3R6Q29uc3RleHByPHVpbnQ2NF90Pig0
MiksIDFVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpjdHpDb25zdGV4cHI8dWludDY0X3Q+KDApLCA2
NFUpOwotfQotCi1URVNUKFdURiwgZ2V0TFNCU2V0Q29uc3RleHByKQotewotICAgIEVYUEVDVF9F
UShXVEY6OmdldExTQlNldENvbnN0ZXhwcjxpbnQzMl90PigxKSwgMFUpOwotICAgIEVYUEVDVF9F
UShXVEY6OmdldExTQlNldENvbnN0ZXhwcjxpbnQzMl90Pig0MiksIDFVKTsKLSAgICBFWFBFQ1Rf
RVEoV1RGOjpnZXRMU0JTZXRDb25zdGV4cHI8dWludDMyX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90
PigtMSkpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Z2V0TFNCU2V0Q29uc3RleHByPHVpbnQz
Ml90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWluKCkpID4+IDEpLCAzMFUpOwotCi0gICAgRVhQRUNUX0VRKFdURjo6Z2V0TFNCU2V0Q29uc3Rl
eHByPGludDhfdD4oNDIpLCAxVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Z2V0TFNCU2V0Q29uc3Rl
eHByPGludDhfdD4oMyksIDBVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpnZXRMU0JTZXRDb25zdGV4
cHI8dWludDhfdD4oc3RhdGljX2Nhc3Q8dWludDhfdD4oLTEpKSwgMFUpOwotCi0gICAgRVhQRUNU
X0VRKFdURjo6Z2V0TFNCU2V0Q29uc3RleHByPGludDY0X3Q+KC0xKSwgMFUpOwotICAgIEVYUEVD
VF9FUShXVEY6OmdldExTQlNldENvbnN0ZXhwcjxpbnQ2NF90PigxKSwgMFUpOwotICAgIEVYUEVD
VF9FUShXVEY6OmdldExTQlNldENvbnN0ZXhwcjxpbnQ2NF90PigzKSwgMFUpOwotICAgIEVYUEVD
VF9FUShXVEY6OmdldExTQlNldENvbnN0ZXhwcjx1aW50NjRfdD4oNDIpLCAxVSk7Ci19Ci0KLVRF
U1QoV1RGLCBnZXRNU0JTZXRDb25zdGV4cHIpCi17Ci0gICAgRVhQRUNUX0VRKFdURjo6Z2V0TVNC
U2V0Q29uc3RleHByPGludDMyX3Q+KDEpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Z2V0TVNC
U2V0Q29uc3RleHByPGludDMyX3Q+KDQyKSwgNVUpOwotICAgIEVYUEVDVF9FUShXVEY6OmdldE1T
QlNldENvbnN0ZXhwcjx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KC0xKSksIDMxVSk7
Ci0gICAgRVhQRUNUX0VRKFdURjo6Z2V0TVNCU2V0Q29uc3RleHByPHVpbnQzMl90PihzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpID4+IDEp
LCAzMFUpOwotCi0gICAgRVhQRUNUX0VRKFdURjo6Z2V0TVNCU2V0Q29uc3RleHByPGludDhfdD4o
NDIpLCA1VSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6Z2V0TVNCU2V0Q29uc3RleHByPGludDhfdD4o
MyksIDFVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpnZXRNU0JTZXRDb25zdGV4cHI8dWludDhfdD4o
c3RhdGljX2Nhc3Q8dWludDhfdD4oLTEpKSwgN1UpOwotCi0gICAgRVhQRUNUX0VRKFdURjo6Z2V0
TVNCU2V0Q29uc3RleHByPGludDY0X3Q+KC0xKSwgNjNVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpn
ZXRNU0JTZXRDb25zdGV4cHI8aW50NjRfdD4oMSksIDBVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpn
ZXRNU0JTZXRDb25zdGV4cHI8aW50NjRfdD4oMyksIDFVKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpn
ZXRNU0JTZXRDb25zdGV4cHI8dWludDY0X3Q+KDQyKSwgNVUpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="commit-queue"
          id="476967"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>