<?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>33547</bug_id>
          
          <creation_ts>2010-01-12 12:57:36 -0800</creation_ts>
          <short_desc>[V8] Remove static const ints from V8CustomBinding.h</short_desc>
          <delta_ts>2010-01-12 14:14:44 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>32638</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>179947</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-12 12:57:36 -0800</bug_when>
    <thetext>This consists of the following:
1. Define all custom fields that need to be attached to V8 DOM objects in CodeGeneratorV8.pm.
2. Generate the indices for those fields in CodeGeneratorV8.pm.
3. Remove const ints from V8Custom
4. Remove special cases for custom field counts from V8DOMWrapper.cpp.

Also, this patch will include some slight reworking of #includes, because there are a couple of files that were piggybacking on V8CustomBinding.h&apos;s includes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179956</commentid>
    <comment_count>1</comment_count>
      <attachid>46396</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-12 13:10:51 -0800</bug_when>
    <thetext>Created attachment 46396
patch

This patch will cause a Chromium canary compile break, so cq-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179958</commentid>
    <comment_count>2</comment_count>
      <attachid>46396</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-12 13:16:56 -0800</bug_when>
    <thetext>Comment on attachment 46396
patch

Glorious.

Can you add a FIXME to make an effort to eliminate the hard-codiness in field array composition?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179974</commentid>
    <comment_count>3</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-01-12 14:14:44 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/53164</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46396</attachid>
            <date>2010-01-12 13:10:51 -0800</date>
            <delta_ts>2010-01-12 13:16:56 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>62334</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzE1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTAtMDEtMTIgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW1vdmUgc3RhdGljIGNvbnN0IGludHMgZnJvbSBWOEN1c3RvbUJpbmRpbmcuaAorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzU0NworCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06IEdlbmVyYXRlIGFuZCB1c2Ug
Y3VzdG9tIAorICAgICAgICAgICAgaW50ZXJuYWwgZmllbGQgaW5kaWNlcyBmcm9tIGxpc3RzIG9m
IGN1c3RvbSBpbnRlcm5hbCBmaWVsZHMuCisgICAgICAgICogYmluZGluZ3MvdjgvTlBWOE9iamVj
dC5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvTlBWOE9iamVjdC5oOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5k
b3dTaGVsbC5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6IFJlbW92ZSBhIGJ1bmNoIG9m
IG5vdyB1bm5lY2Vzc2FyeQorICAgICAgICAgICAgbWFudWFsbHkgY2FsbHMgdG8gc2V0SW50ZXJu
YWxGaWVsZENvdW50KCkuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhJbmRleC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
SXNvbGF0ZWRDb250ZXh0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOElzb2xhdGVkQ29u
dGV4dC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6IFJlbW92ZSB0aGUgc3RhdGlj
IGNvbnN0IGludHMuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NQXBwbGljYXRp
b25DYWNoZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1ZGlvRWxlbWVu
dENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9j
dW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHA6CisKIDIwMTAtMDEtMTIg
IEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVk
IGJ5IERhdmUgSHlhdHQuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0JKHJldmlzaW9uIDUzMTUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMjY1LDkgKzI2NSw4IEBACiAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpbmNsdWRlIDx2OC5oPlxuIik7CiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPlxuIik7CiAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNpbmNsdWRlIFwiU3RyaW5nSGFzaC5oXCJcbiIpOwotCi0gICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIlxubmFtZXNwYWNlIFdlYkNvcmUge1xuXG4iKTsKLSAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiY2xhc3MgVjhDbGFzc0luZGV4O1xuIik7CisgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiNpbmNsdWRlIFwiVjhJbmRleC5oXCJcbiIpOworICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJcbm5hbWVzcGFjZSBXZWJDb3JlIHtcbiIpOwogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJcbmNsYXNzICRjbGFzc05hbWUge1xuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgPDxFTkQpOwogCkBAIC0zMjAsNiArMzE5LDcgQEAKICAgICBHZW5lcmF0ZUhlYWRlclJ1bnRp
bWVFbmFibGVyRGVjbGFyYXRpb25zKEBlbmFibGVkQXRSdW50aW1lKTsKICAgICBHZW5lcmF0ZUhl
YWRlck5hbWVkQW5kSW5kZXhlZFByb3BlcnR5QWNjZXNzb3JzKCRkYXRhTm9kZSk7CiAgICAgR2Vu
ZXJhdGVIZWFkZXJDdXN0b21DYWxsKCRkYXRhTm9kZSk7CisgICAgR2VuZXJhdGVIZWFkZXJDdXN0
b21JbnRlcm5hbEZpZWxkSW5kaWNlcygkZGF0YU5vZGUpOwogICAgIAogICAgIGlmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0RvbWFpblNlY3VyaXR5In0pIHsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwpAQCAtMzQ0LDYgKzM0NCw1MiBAQAogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogfQogCitzdWIgR2V0SW50ZXJuYWxGaWVsZHMKK3sK
KyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkbmFtZSA9ICRkYXRhTm9kZS0+bmFt
ZTsKKyAgICAKKyAgICByZXR1cm4gKCJjYWNoZUluZGV4IiwgImltcGxlbWVudGF0aW9uSW5kZXgi
KSBpZiAoJG5hbWUgZXEgIkRvY3VtZW50IikgfHwgKCRuYW1lIGVxICJTVkdEb2N1bWVudCIpOwor
ICAgIHJldHVybiAoImNhY2hlSW5kZXgiLCAiaW1wbGVtZW50YXRpb25JbmRleCIsICJtYXJrZXJJ
bmRleCIsICJzaGFkb3dJbmRleCIpIGlmICRuYW1lIGVxICJIVE1MRG9jdW1lbnQiOworICAgIHJl
dHVybiAoImNhY2hlSW5kZXgiKSBpZiBJc05vZGVTdWJUeXBlKCRkYXRhTm9kZSk7CisgICAgcmV0
dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJYTUxIdHRwUmVxdWVzdCI7CisgICAgcmV0
dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJYTUxIdHRwUmVxdWVzdFVwbG9hZCI7Cisg
ICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJNZXNzYWdlUG9ydCI7CisgICAg
cmV0dXJuICgicG9ydDFJbmRleCIsICJwb3J0MkluZGV4IikgaWYgKCRuYW1lIGVxICJNZXNzYWdl
Q2hhbm5lbCIpOworICAgIHJldHVybiAoImNhY2hlSW5kZXgiKSBpZiAkbmFtZSBlcSAiQWJzdHJh
Y3RXb3JrZXIiOworICAgIHJldHVybiAoImFic3RyYWN0V29ya2VyQ2FjaGVJbmRleCIsICJjYWNo
ZUluZGV4IikgaWYgJG5hbWUgZXEgIldvcmtlciI7CisgICAgcmV0dXJuICgiYWJzdHJhY3RXb3Jr
ZXJDYWNoZUluZGV4IiwgImNhY2hlSW5kZXgiKSBpZiAkbmFtZSBlcSAiV29ya2VyQ29udGV4dCI7
CisgICAgcmV0dXJuICgiYWJzdHJhY3RXb3JrZXJDYWNoZUluZGV4IiwgIndvcmtlckNvbnRleHRD
YWNoZUluZGV4IiwgImNhY2hlSW5kZXgiKSBpZiAkbmFtZSBlcSAiRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCI7CisgICAgcmV0dXJuICgiYWJzdHJhY3RXb3JrZXJDYWNoZUluZGV4IiwgImNhY2hlSW5k
ZXgiKSBpZiAkbmFtZSBlcSAiU2hhcmVkV29ya2VyIjsKKyAgICByZXR1cm4gKCJhYnN0cmFjdFdv
cmtlckNhY2hlSW5kZXgiLCAid29ya2VyQ29udGV4dENhY2hlSW5kZXgiLCAiY2FjaGVJbmRleCIp
IGlmICRuYW1lIGVxICJTaGFyZWRXb3JrZXJDb250ZXh0IjsKKyAgICByZXR1cm4gKCJjYWNoZUlu
ZGV4IikgaWYgJG5hbWUgZXEgIk5vdGlmaWNhdGlvbiI7CisgICAgcmV0dXJuICgiY2FjaGVJbmRl
eCIpIGlmICRuYW1lIGVxICJTVkdFbGVtZW50SW5zdGFuY2UiOworICAgIHJldHVybiAoImNvbnNv
bGVJbmRleCIsICJoaXN0b3J5SW5kZXgiLCAibG9jYXRpb25iYXJJbmRleCIsICJtZW51YmFySW5k
ZXgiLCAibmF2aWdhdG9ySW5kZXgiLCAicGVyc29uYWxiYXJJbmRleCIsCisgICAgICAgICJzY3Jl
ZW5JbmRleCIsICJzY3JvbGxiYXJzSW5kZXgiLCAic2VsZWN0aW9uSW5kZXgiLCAic3RhdHVzYmFy
SW5kZXgiLCAidG9vbGJhckluZGV4IiwgImxvY2F0aW9uSW5kZXgiLAorICAgICAgICAiZG9tU2Vs
ZWN0aW9uSW5kZXgiLCAiY2FjaGVJbmRleCIsICJlbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4Iikg
aWYgJG5hbWUgZXEgIkRPTVdpbmRvdyI7CisgICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRu
YW1lIGVxICJET01BcHBsaWNhdGlvbkNhY2hlIjsKKyAgICByZXR1cm4gKCJjYWNoZUluZGV4Iikg
aWYgJG5hbWUgZXEgIldlYlNvY2tldCI7CisgICAgcmV0dXJuICgib3duZXJOb2RlSW5kZXgiKSBp
ZiAoJG5hbWUgZXEgIlN0eWxlU2hlZXQiKSB8fCAoJG5hbWUgZXEgIkNTU1N0eWxlU2hlZXQiKTsK
KyAgICByZXR1cm4gKCJvd25lck5vZGVJbmRleCIpIGlmICgkbmFtZSBlcSAiTmFtZWROb2RlTWFw
Iik7CisgICAgcmV0dXJuICgpOworfQorCitzdWIgR2VuZXJhdGVIZWFkZXJDdXN0b21JbnRlcm5h
bEZpZWxkSW5kaWNlcworeworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15IEBjdXN0
b21JbnRlcm5hbEZpZWxkcyA9IEdldEludGVybmFsRmllbGRzKCRkYXRhTm9kZSk7CisgICAgbXkg
JGN1c3RvbUZpZWxkQ291bnRlciA9IDA7CisgICAgZm9yZWFjaCBteSAkY3VzdG9tSW50ZXJuYWxG
aWVsZCAoQGN1c3RvbUludGVybmFsRmllbGRzKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIDw8RU5EKTsKKyAgc3RhdGljIGNvbnN0IGludCAke2N1c3RvbUludGVybmFsRmllbGR9ID0g
djhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArICR7Y3VzdG9tRmllbGRDb3VudGVy
fTsKK0VORAorICAgICAgICAkY3VzdG9tRmllbGRDb3VudGVyKys7CisgICAgfQorICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKKyAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxk
Q291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgJHtjdXN0b21GaWVs
ZENvdW50ZXJ9OworRU5ECit9CisKIHN1YiBHZW5lcmF0ZUhlYWRlclJ1bnRpbWVFbmFibGVyRGVj
bGFyYXRpb25zCiB7CiAgICAgbXkgQGVuYWJsZWRBdFJ1bnRpbWUgPSBAXzsKQEAgLTQ3NCwyOCAr
NTIwLDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3ViIEdldEhpZGRlbkRlcGVuZGVuY3lJbmRl
eAotewotICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwotICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlm
dDsKLSAgICBteSAkbmFtZSA9ICRkYXRhTm9kZS0+bmFtZTsKLSAgICByZXR1cm4gIlY4Q3VzdG9t
OjprTm9kZUV2ZW50TGlzdGVuZXJDYWNoZUluZGV4IiBpZiBJc05vZGVTdWJUeXBlKCRkYXRhTm9k
ZSk7Ci0gICAgcmV0dXJuICJWOEN1c3RvbTo6a1NWR0VsZW1lbnRJbnN0YW5jZUV2ZW50TGlzdGVu
ZXJDYWNoZUluZGV4IiBpZiAkbmFtZSBlcSAiU1ZHRWxlbWVudEluc3RhbmNlIjsKLSAgICByZXR1
cm4gIlY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCIgaWYgJG5hbWUg
ZXEgIkFic3RyYWN0V29ya2VyIjsKLSAgICByZXR1cm4gIlY4Q3VzdG9tOjprV29ya2VyUmVxdWVz
dENhY2hlSW5kZXgiIGlmICRuYW1lIGVxICJXb3JrZXIiOwotICAgIHJldHVybiAiVjhDdXN0b206
OmtEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXgiIGlmICRuYW1lIGVxICJE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0IjsKLSAgICByZXR1cm4gIlY4Q3VzdG9tOjprV29ya2VyQ29u
dGV4dFJlcXVlc3RDYWNoZUluZGV4IiBpZiAkbmFtZSBlcSAiV29ya2VyQ29udGV4dCI7Ci0gICAg
cmV0dXJuICJWOEN1c3RvbTo6a1dvcmtlckNvbnRleHRSZXF1ZXN0Q2FjaGVJbmRleCIgaWYgJG5h
bWUgZXEgIlNoYXJlZFdvcmtlckNvbnRleHQiOwotICAgIHJldHVybiAiVjhDdXN0b206OmtNZXNz
YWdlUG9ydFJlcXVlc3RDYWNoZUluZGV4IiBpZiAkbmFtZSBlcSAiTWVzc2FnZVBvcnQiOwotICAg
IHJldHVybiAiVjhDdXN0b206OmtXZWJTb2NrZXRDYWNoZUluZGV4IiBpZiAkbmFtZSBlcSAiV2Vi
U29ja2V0IjsKLSAgICByZXR1cm4gIlY4Q3VzdG9tOjprWE1MSHR0cFJlcXVlc3RDYWNoZUluZGV4
IiBpZiAkbmFtZSBlcSAiWE1MSHR0cFJlcXVlc3QiOwotICAgIHJldHVybiAiVjhDdXN0b206OmtY
TUxIdHRwUmVxdWVzdENhY2hlSW5kZXgiIGlmICRuYW1lIGVxICJYTUxIdHRwUmVxdWVzdFVwbG9h
ZCI7Ci0gICAgcmV0dXJuICJWOEN1c3RvbTo6a0RPTUFwcGxpY2F0aW9uQ2FjaGVDYWNoZUluZGV4
IiBpZiAkbmFtZSBlcSAiRE9NQXBwbGljYXRpb25DYWNoZSI7Ci0gICAgcmV0dXJuICJWOEN1c3Rv
bTo6a05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUluZGV4IiBpZiAkbmFtZSBlcSAiTm90aWZpY2F0
aW9uIjsKLSAgICByZXR1cm4gIlY4Q3VzdG9tOjprRE9NV2luZG93RXZlbnRMaXN0ZW5lckNhY2hl
SW5kZXgiIGlmICRuYW1lIGVxICJET01XaW5kb3ciOwotICAgIGRpZSAiVW5leHBlY3RlZCBuYW1l
ICIgLiAkbmFtZSAuICIgd2hlbiBnZW5lcmF0aW5nICIgLiAkYXR0cmlidXRlOwotfQotCiBzdWIg
SG9sZGVyVG9OYXRpdmUKIHsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKQEAgLTk0MSw4ICs5
NjUsNyBAQAogICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEg
IkV2ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOEFic3RyYWN0
RXZlbnRMaXN0ZW5lci5oIn0gPSAxOwogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhDdXN0
b21CaW5kaW5nLmgifSA9IDE7Ci0gICAgICAgICAgICAkY2FjaGVJbmRleCA9IEdldEhpZGRlbkRl
cGVuZGVuY3lJbmRleCgkZGF0YU5vZGUsICRhdHRyTmFtZSk7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgIHRyYW5zZmVySGlkZGVuRGVwZW5kZW5jeShob2xkZXIsIGlt
cC0+JGF0dHJOYW1lKCksIHZhbHVlLCAkY2FjaGVJbmRleCk7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgdHJhbnNmZXJIaWRkZW5EZXBlbmRlbmN5KGhvbGRl
ciwgaW1wLT4kYXR0ck5hbWUoKSwgdmFsdWUsIFY4JHtpbnRlcmZhY2VOYW1lfTo6Y2FjaGVJbmRl
eCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5z
ZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShWOERPTVdyYXBwZXI6OmdldEV2ZW50TGlzdGVuZXIo
aW1wLCB2YWx1ZSwgdHJ1ZSwgTGlzdGVuZXJGaW5kT3JDcmVhdGUpIik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGltcC0+c2V0JGlt
cGxTZXR0ZXJGdW5jdGlvbk5hbWUoJHJlc3VsdCIpOwpAQCAtMTY3MCwxOCArMTY5MywxMiBAQAog
ICAgICAgICAkcGFyZW50Q2xhc3NJbmRleCA9IHVjKCRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVs
ZSgkcGFyZW50KSk7CiAgICAgICAgIGxhc3Q7CiAgICAgfQotCi0gICAgIyBmaW5kIHRoZSBmaWVs
ZCBjb3VudAotICAgIG15ICRmaWVsZENvdW50ID0gIlY4Q3VzdG9tOjprRGVmYXVsdFdyYXBwZXJJ
bnRlcm5hbEZpZWxkQ291bnQiOwotICAgIGlmIChJc05vZGVTdWJUeXBlKCRkYXRhTm9kZSkpIHsK
LSAgICAgICAgJGZpZWxkQ291bnQgPSAiVjhDdXN0b206OmtOb2RlTWluaW11bUludGVybmFsRmll
bGRDb3VudCI7Ci0gICAgfQogICAgIAogICAgICMgR2VuZXJhdGUgdGhlIHRlbXBsYXRlIGNvbmZp
Z3VyYXRpb24gbWV0aG9kCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CiBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7Y2xhc3NOYW1l
fVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKSB7CiAg
IHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0X3NpZ25hdHVyZSA9IGNvbmZpZ3VyZVRl
bXBsYXRlKGRlc2MsIFwiJHtpbnRlcmZhY2VOYW1lfVwiLAotICAgICAgVjhDbGFzc0luZGV4Ojok
cGFyZW50Q2xhc3NJbmRleCwgJGZpZWxkQ291bnQsCisgICAgICBWOENsYXNzSW5kZXg6OiRwYXJl
bnRDbGFzc0luZGV4LCBWOCR7aW50ZXJmYWNlTmFtZX06OmludGVybmFsRmllbGRDb3VudCwKIEVO
RAogCiAgICAgIyBTZXQgdXAgb3VyIGF0dHJpYnV0ZXMgaWYgd2UgaGF2ZSB0aGVtCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCShyZXZpc2lvbiA1MzE1MykKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTEg
KzQ4LDE1IEBACiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNsdWRlICJWOEV2ZW50TGlz
dGVuZXJMaXN0LmgiCiAjaW5jbHVkZSAiVjhIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlY4
SFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhJbmRleC5oIgogI2luY2x1ZGUgIlY4SXNvbGF0
ZWRDb250ZXh0LmgiCisjaW5jbHVkZSAiVjhNZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUgIlY4
TG9jYXRpb24uaCIKKyNpbmNsdWRlICJWOE5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9k
ZUxpc3QuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhTdHlsZVNoZWV0Lmgi
CiAjaW5jbHVkZSAiV2ViR0xBcnJheS5oIgogI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCkBAIC0yODgsNTYg
KzI5MiwxNCBAQAogICAgICAgICB0b1N0cmluZ1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhDb25zdHJ1
Y3RvclRvU3RyaW5nKSk7CiAgICAgZGVzY3JpcHRvci0+U2V0KEdldFRvU3RyaW5nTmFtZSgpLCB0
b1N0cmluZ1RlbXBsYXRlKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFY4Q2xhc3NJ
bmRleDo6SFRNTERPQ1VNRU5UOiB7Ci0gICAgICAgIC8vIFdlIGFkZCBhbiBleHRyYSBpbnRlcm5h
bCBmaWVsZCB0byBhbGwgRG9jdW1lbnQgd3JhcHBlcnMgZm9yCi0gICAgICAgIC8vIHN0b3Jpbmcg
YSBwZXIgZG9jdW1lbnQgRE9NSW1wbGVtZW50YXRpb24gd3JhcHBlci4KLSAgICAgICAgLy8KLSAg
ICAgICAgLy8gQWRkaXRpb25hbGx5LCB3ZSBhZGQgdHdvIGV4dHJhIGludGVybmFsIGZpZWxkcyBm
b3IKLSAgICAgICAgLy8gSFRNTERvY3VtZW50cyB0byBpbXBsZW1lbnQgdGVtcG9yYXJ5IHNoYWRv
d2luZyBvZgotICAgICAgICAvLyBkb2N1bWVudC5hbGwuIE9uZSBmaWVsZCBob2xkcyBhbiBvYmpl
Y3QgdGhhdCBpcyB1c2VkIGFzIGEKLSAgICAgICAgLy8gbWFya2VyLiBUaGUgb3RoZXIgZmllbGQg
aG9sZHMgdGhlIG1hcmtlciBvYmplY3QgaWYKLSAgICAgICAgLy8gZG9jdW1lbnQuYWxsIGlzIG5v
dCBzaGFkb3dlZCBhbmQgc29tZSBvdGhlciB2YWx1ZSBpZgotICAgICAgICAvLyBkb2N1bWVudC5h
bGwgaXMgc2hhZG93ZWQuCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGlu
c3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCk7Ci0gICAgICAg
IEFTU0VSVChpbnN0YW5jZVRlbXBsYXRlLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEN1c3Rv
bTo6a05vZGVNaW5pbXVtSW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICAgICAgaW5zdGFuY2VUZW1w
bGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprSFRNTERvY3VtZW50SW50ZXJu
YWxGaWVsZENvdW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotI2lmIEVOQUJMRShTVkcpCi0g
ICAgY2FzZSBWOENsYXNzSW5kZXg6OlNWR0RPQ1VNRU5UOiAgLy8gZmFsbCB0aHJvdWdoCi0jZW5k
aWYKLSAgICBjYXNlIFY4Q2xhc3NJbmRleDo6RE9DVU1FTlQ6IHsKLSAgICAgICAgLy8gV2UgYWRk
IGFuIGV4dHJhIGludGVybmFsIGZpZWxkIHRvIGFsbCBEb2N1bWVudCB3cmFwcGVycyBmb3IKLSAg
ICAgICAgLy8gc3RvcmluZyBhIHBlciBkb2N1bWVudCBET01JbXBsZW1lbnRhdGlvbiB3cmFwcGVy
LgotICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZVRlbXBsYXRl
ID0gZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpOwotICAgICAgICBBU1NFUlQoaW5zdGFu
Y2VUZW1wbGF0ZS0+SW50ZXJuYWxGaWVsZENvdW50KCkgPT0gVjhDdXN0b206OmtOb2RlTWluaW11
bUludGVybmFsRmllbGRDb3VudCk7Ci0gICAgICAgIGluc3RhbmNlVGVtcGxhdGUtPlNldEludGVy
bmFsRmllbGRDb3VudCggVjhDdXN0b206OmtEb2N1bWVudE1pbmltdW1JbnRlcm5hbEZpZWxkQ291
bnQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBWOENsYXNzSW5kZXg6OlNUWUxF
U0hFRVQ6ICAvLyBmYWxsIHRocm91Z2gKLSAgICBjYXNlIFY4Q2xhc3NJbmRleDo6Q1NTU1RZTEVT
SEVFVDogewotICAgICAgICAvLyBXZSBhZGQgYW4gZXh0cmEgaW50ZXJuYWwgZmllbGQgdG8gaG9s
ZCBhIHJlZmVyZW5jZSB0bwotICAgICAgICAvLyB0aGUgb3duZXIgbm9kZS4KLSAgICAgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2VUZW1wbGF0ZSA9IGRlc2NyaXB0b3It
Pkluc3RhbmNlVGVtcGxhdGUoKTsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNlVGVtcGxhdGUtPklu
dGVybmFsRmllbGRDb3VudCgpID09IFY4Q3VzdG9tOjprRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQpOwotICAgICAgICBpbnN0YW5jZVRlbXBsYXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291
bnQoVjhDdXN0b206OmtTdHlsZVNoZWV0SW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGNhc2UgVjhDbGFzc0luZGV4OjpOQU1FRE5PREVNQVA6IHsKLSAgICAg
ICAgLy8gV2UgYWRkIGFuIGV4dHJhIGludGVybmFsIGZpZWxkIHRvIGhvbGQgYSByZWZlcmVuY2Ug
dG8gdGhlIG93bmVyIG5vZGUuCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+
IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCk7Ci0gICAg
ICAgIEFTU0VSVChpbnN0YW5jZVRlbXBsYXRlLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEN1
c3RvbTo6a0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICAgICAgaW5zdGFu
Y2VUZW1wbGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprTmFtZWROb2RlTWFw
SW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2UgVjhD
bGFzc0luZGV4OjpET01XSU5ET1c6IHsKLSAgICAgICAgZGVzY3JpcHRvci0+UHJvdG90eXBlVGVt
cGxhdGUoKS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprRE9NV2luZG93SW50ZXJu
YWxGaWVsZENvdW50KTsKKyAgICAgICAgZGVzY3JpcHRvci0+UHJvdG90eXBlVGVtcGxhdGUoKS0+
U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4RE9NV2luZG93OjppbnRlcm5hbEZpZWxkQ291bnQpOwog
ICAgICAgICBkZXNjcmlwdG9yLT5TZXRIaWRkZW5Qcm90b3R5cGUodHJ1ZSk7CiAKICAgICAgICAg
Ly8gUmVzZXJ2ZSBzcGFjZXMgZm9yIHJlZmVyZW5jZXMgdG8gbG9jYXRpb24sIGhpc3RvcnkgYW5k
CiAgICAgICAgIC8vIG5hdmlnYXRvciBvYmplY3RzLgogICAgICAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdFRlbXBsYXRlPiBpbnN0YW5jZVRlbXBsYXRlID0gZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1w
bGF0ZSgpOwotICAgICAgICBpbnN0YW5jZVRlbXBsYXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQo
VjhDdXN0b206OmtET01XaW5kb3dJbnRlcm5hbEZpZWxkQ291bnQpOworICAgICAgICBpbnN0YW5j
ZVRlbXBsYXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhET01XaW5kb3c6OmludGVybmFsRmll
bGRDb3VudCk7CiAKICAgICAgICAgLy8gU2V0IGFjY2VzcyBjaGVjayBjYWxsYmFja3MsIGJ1dCB0
dXJuZWQgb2ZmIGluaXRpYWxseS4KICAgICAgICAgLy8gV2hlbiBhIGNvbnRleHQgaXMgZGV0YWNo
ZWQgZnJvbSBhIGZyYW1lLCB0dXJuIG9uIHRoZSBhY2Nlc3MgY2hlY2suCkBAIC0zNTUsMTA1ICsz
MTcsMjUgQEAKICAgICAgICAgaW5zdGFuY2UtPlNldEFjY2Vzc29yKHY4OjpTdHJpbmc6Ok5ldygi
YXNzaWduIiksIFY4TG9jYXRpb246OmFzc2lnbkFjY2Vzc29yR2V0dGVyLCAwLCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKSwgdjg6OkFMTF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSB8IHY4OjpSZWFkT25seSkpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgY2FzZSBWOENsYXNzSW5kZXg6OkhJU1RPUlk6Ci0gICAgICAgIGJyZWFr
OwotCiAgICAgY2FzZSBWOENsYXNzSW5kZXg6Ok1FU1NBR0VDSEFOTkVMOiB7Ci0gICAgICAgIC8v
IFJlc2VydmUgdHdvIG1vcmUgaW50ZXJuYWwgZmllbGRzIGZvciByZWZlcmVuY2luZyB0aGUgcG9y
dDEKLSAgICAgICAgLy8gYW5kIHBvcnQyIHdyYXBwZXJzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUg
cG9ydCB3cmFwcGVycyBhcmUKLSAgICAgICAgLy8ga2VwdCBhbGl2ZSB3aGVuIHRoZSBjaGFubmVs
IHdyYXBwZXIgaXMuCiAgICAgICAgIGRlc2NyaXB0b3ItPlNldENhbGxIYW5kbGVyKFVTRV9DQUxM
QkFDSyhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yKSk7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRl
bXBsYXRlKCk7Ci0gICAgICAgIGluc3RhbmNlVGVtcGxhdGUtPlNldEludGVybmFsRmllbGRDb3Vu
dChWOEN1c3RvbTo6a01lc3NhZ2VDaGFubmVsSW50ZXJuYWxGaWVsZENvdW50KTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBWOENsYXNzSW5kZXg6Ok1FU1NBR0VQT1JUOiB7Ci0g
ICAgICAgIC8vIFJlc2VydmUgb25lIG1vcmUgaW50ZXJuYWwgZmllbGQgZm9yIGtlZXBpbmcgZXZl
bnQgbGlzdGVuZXJzLgotICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0
YW5jZVRlbXBsYXRlID0gZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpOwotICAgICAgICBp
bnN0YW5jZVRlbXBsYXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhDdXN0b206OmtNZXNzYWdl
UG9ydEludGVybmFsRmllbGRDb3VudCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQotICAgIGNhc2UgVjhDbGFzc0luZGV4OjpOT1RJRklDQVRJT046
IHsKLSAgICAgICAgLy8gUmVzZXJ2ZSBvbmUgbW9yZSBpbnRlcm5hbCBmaWVsZCBmb3Iga2VlcGlu
ZyBldmVudCBsaXN0ZW5lcnMuCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+
IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCk7Ci0gICAg
ICAgIGluc3RhbmNlVGVtcGxhdGUtPlNldEludGVybmFsRmllbGRDb3VudChWOEN1c3RvbTo6a05v
dGlmaWNhdGlvbkludGVybmFsRmllbGRDb3VudCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSNl
bmRpZiAvLyBOT1RJRklDQVRJT05TCi0KLSNpZiBFTkFCTEUoU1ZHKQotICAgIGNhc2UgVjhDbGFz
c0luZGV4OjpTVkdFTEVNRU5USU5TVEFOQ0U6IHsKLSAgICAgICAgLy8gUmVzZXJ2ZSBvbmUgbW9y
ZSBpbnRlcm5hbCBmaWVsZCBmb3Iga2VlcGluZyBldmVudCBsaXN0ZW5lcnMuCi0gICAgICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9y
LT5JbnN0YW5jZVRlbXBsYXRlKCk7Ci0gICAgICAgIGluc3RhbmNlVGVtcGxhdGUtPlNldEludGVy
bmFsRmllbGRDb3VudChWOEN1c3RvbTo6a1NWR0VsZW1lbnRJbnN0YW5jZUludGVybmFsRmllbGRD
b3VudCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFdPUktF
UlMpCi0gICAgY2FzZSBWOENsYXNzSW5kZXg6OkFCU1RSQUNUV09SS0VSOiB7Ci0gICAgICAgIC8v
IFJlc2VydmUgb25lIG1vcmUgaW50ZXJuYWwgZmllbGQgZm9yIGtlZXBpbmcgZXZlbnQgbGlzdGVu
ZXJzLgotICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZVRlbXBs
YXRlID0gZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpOwotICAgICAgICBpbnN0YW5jZVRl
bXBsYXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhDdXN0b206OmtBYnN0cmFjdFdvcmtlcklu
dGVybmFsRmllbGRDb3VudCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgVjhD
bGFzc0luZGV4OjpERURJQ0FURURXT1JLRVJDT05URVhUOiB7Ci0gICAgICAgIC8vIFJlc2VydmUg
aW50ZXJuYWwgZmllbGRzIGZvciBrZWVwaW5nIGV2ZW50IGxpc3RlbmVycy4KLSAgICAgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2VUZW1wbGF0ZSA9IGRlc2NyaXB0b3It
Pkluc3RhbmNlVGVtcGxhdGUoKTsKLSAgICAgICAgQVNTRVJUKGluc3RhbmNlVGVtcGxhdGUtPklu
dGVybmFsRmllbGRDb3VudCgpID09IFY4Q3VzdG9tOjprRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQpOwotICAgICAgICBpbnN0YW5jZVRlbXBsYXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291
bnQoVjhDdXN0b206OmtEZWRpY2F0ZWRXb3JrZXJDb250ZXh0SW50ZXJuYWxGaWVsZENvdW50KTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OldPUktFUjog
ewotICAgICAgICAvLyBSZXNlcnZlIG9uZSBtb3JlIGludGVybmFsIGZpZWxkIGZvciBrZWVwaW5n
IGV2ZW50IGxpc3RlbmVycy4KLSAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4g
aW5zdGFuY2VUZW1wbGF0ZSA9IGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKTsKLSAgICAg
ICAgaW5zdGFuY2VUZW1wbGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprV29y
a2VySW50ZXJuYWxGaWVsZENvdW50KTsKICAgICAgICAgZGVzY3JpcHRvci0+U2V0Q2FsbEhhbmRs
ZXIoVVNFX0NBTExCQUNLKFdvcmtlckNvbnN0cnVjdG9yKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLQotICAgIGNhc2UgVjhDbGFzc0luZGV4OjpXT1JLRVJDT05URVhUOiB7Ci0gICAgICAgIC8v
IFJlc2VydmUgb25lIG1vcmUgaW50ZXJuYWwgZmllbGQgZm9yIGtlZXBpbmcgZXZlbnQgbGlzdGVu
ZXJzLgotICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZVRlbXBs
YXRlID0gZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpOwotICAgICAgICBBU1NFUlQoaW5z
dGFuY2VUZW1wbGF0ZS0+SW50ZXJuYWxGaWVsZENvdW50KCkgPT0gVjhDdXN0b206OmtEZWZhdWx0
V3JhcHBlckludGVybmFsRmllbGRDb3VudCk7Ci0gICAgICAgIGluc3RhbmNlVGVtcGxhdGUtPlNl
dEludGVybmFsRmllbGRDb3VudChWOEN1c3RvbTo6a1dvcmtlckNvbnRleHRNaW5pbXVtSW50ZXJu
YWxGaWVsZENvdW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAjZW5kaWYgLy8gV09SS0VS
UwogCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpT
SEFSRURXT1JLRVI6IHsKLSAgICAgICAgLy8gUmVzZXJ2ZSBvbmUgbW9yZSBpbnRlcm5hbCBmaWVs
ZCBmb3Iga2VlcGluZyBldmVudCBsaXN0ZW5lcnMuCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0VGVtcGxhdGU+IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBs
YXRlKCk7Ci0gICAgICAgIGluc3RhbmNlVGVtcGxhdGUtPlNldEludGVybmFsRmllbGRDb3VudChW
OEN1c3RvbTo6a1NoYXJlZFdvcmtlckludGVybmFsRmllbGRDb3VudCk7CiAgICAgICAgIGRlc2Ny
aXB0b3ItPlNldENhbGxIYW5kbGVyKFVTRV9DQUxMQkFDSyhTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
cikpOwogICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBjYXNlIFY4Q2xhc3NJbmRleDo6U0hB
UkVEV09SS0VSQ09OVEVYVDogewotICAgICAgICAvLyBSZXNlcnZlIGludGVybmFsIGZpZWxkcyBm
b3Iga2VlcGluZyBldmVudCBsaXN0ZW5lcnMuCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
VGVtcGxhdGU+IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRl
KCk7Ci0gICAgICAgIEFTU0VSVChpbnN0YW5jZVRlbXBsYXRlLT5JbnRlcm5hbEZpZWxkQ291bnQo
KSA9PSBWOEN1c3RvbTo6a0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICAg
ICAgaW5zdGFuY2VUZW1wbGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprU2hh
cmVkV29ya2VyQ29udGV4dEludGVybmFsRmllbGRDb3VudCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KICNlbmRpZiAvLyBTSEFSRURfV09SS0VSUwogCi0jaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUykKLSAgICBjYXNlIFY4Q2xhc3NJbmRleDo6RE9NQVBQTElDQVRJT05DQUNIRTog
ewotICAgICAgICAvLyBSZXNlcnZlIG9uZSBtb3JlIGludGVybmFsIGZpZWxkIGZvciBrZWVwaW5n
IGV2ZW50IGxpc3RlbmVycy4KLSAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4g
aW5zdGFuY2VUZW1wbGF0ZSA9IGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKTsKLSAgICAg
ICAgaW5zdGFuY2VUZW1wbGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprRE9N
QXBwbGljYXRpb25DYWNoZUZpZWxkQ291bnQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAgICAgLy8gVGhlIGZvbGxvd2luZyBvYmplY3Rz
IGFyZSBjcmVhdGVkIGZyb20gSmF2YVNjcmlwdC4KICAgICBjYXNlIFY4Q2xhc3NJbmRleDo6V0VC
R0xBUlJBWUJVRkZFUjoKQEAgLTQ5Miw5ICszNzQsNiBAQAogICAgICAgICBicmVhazsKICNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OldFQlNPQ0tFVDogewot
ICAgICAgICAvLyBSZXNlcnZlIG9uZSBtb3JlIGludGVybmFsIGZpZWxkIGZvciBrZWVwaW5nIGV2
ZW50IGxpc3RlbmVycy4KLSAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5z
dGFuY2VUZW1wbGF0ZSA9IGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKTsKLSAgICAgICAg
aW5zdGFuY2VUZW1wbGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprV2ViU29j
a2V0SW50ZXJuYWxGaWVsZENvdW50KTsKICAgICAgICAgZGVzY3JpcHRvci0+U2V0Q2FsbEhhbmRs
ZXIoVVNFX0NBTExCQUNLKFdlYlNvY2tldENvbnN0cnVjdG9yKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTUwMywxOCArMzgyLDkgQEAKICAgICAgICAgZGVzY3JpcHRvci0+U2V0Q2FsbEhh
bmRsZXIoVVNFX0NBTExCQUNLKFhNTFNlcmlhbGl6ZXJDb25zdHJ1Y3RvcikpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFY4Q2xhc3NJbmRleDo6WE1MSFRUUFJFUVVFU1Q6IHsKLSAgICAgICAg
Ly8gUmVzZXJ2ZSBvbmUgbW9yZSBpbnRlcm5hbCBmaWVsZCBmb3Iga2VlcGluZyBldmVudCBsaXN0
ZW5lcnMuCi0gICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlVGVt
cGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCk7Ci0gICAgICAgIGluc3RhbmNl
VGVtcGxhdGUtPlNldEludGVybmFsRmllbGRDb3VudChWOEN1c3RvbTo6a1hNTEh0dHBSZXF1ZXN0
SW50ZXJuYWxGaWVsZENvdW50KTsKICAgICAgICAgZGVzY3JpcHRvci0+U2V0Q2FsbEhhbmRsZXIo
VVNFX0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQotICAgIGNhc2UgVjhDbGFzc0luZGV4OjpYTUxIVFRQUkVRVUVTVFVQTE9BRDogewot
ICAgICAgICAvLyBSZXNlcnZlIG9uZSBtb3JlIGludGVybmFsIGZpZWxkIGZvciBrZWVwaW5nIGV2
ZW50IGxpc3RlbmVycy4KLSAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5z
dGFuY2VUZW1wbGF0ZSA9IGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKTsKLSAgICAgICAg
aW5zdGFuY2VUZW1wbGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprWE1MSHR0
cFJlcXVlc3RJbnRlcm5hbEZpZWxkQ291bnQpOwotICAgICAgICBicmVhazsKLSAgICB9CiAgICAg
Y2FzZSBWOENsYXNzSW5kZXg6OlhQQVRIRVZBTFVBVE9SOgogICAgICAgICBkZXNjcmlwdG9yLT5T
ZXRDYWxsSGFuZGxlcihVU0VfQ0FMTEJBQ0soWFBhdGhFdmFsdWF0b3JDb25zdHJ1Y3RvcikpOwog
ICAgICAgICBicmVhazsKQEAgLTcxOSw0NCArNTg5LDQ0IEBACiAgICAgICAgICAgICAvLyByZXVz
ZWQgYnkgYSBuZXcgcGFnZS4KICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAg
ICAgY2FzZSBWOENsYXNzSW5kZXg6OkNPTlNPTEU6Ci0gICAgICAgICAgICAgICAgc2V0SGlkZGVu
V2luZG93UmVmZXJlbmNlKHN0YXRpY19jYXN0PENvbnNvbGUqPihpbXBsKS0+ZnJhbWUoKSwgVjhD
dXN0b206OmtET01XaW5kb3dDb25zb2xlSW5kZXgsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAg
c2V0SGlkZGVuV2luZG93UmVmZXJlbmNlKHN0YXRpY19jYXN0PENvbnNvbGUqPihpbXBsKS0+ZnJh
bWUoKSwgVjhET01XaW5kb3c6OmNvbnNvbGVJbmRleCwgcmVzdWx0KTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVjhDbGFzc0luZGV4OjpISVNUT1JZOgotICAgICAg
ICAgICAgICAgIHNldEhpZGRlbldpbmRvd1JlZmVyZW5jZShzdGF0aWNfY2FzdDxIaXN0b3J5Kj4o
aW1wbCktPmZyYW1lKCksIFY4Q3VzdG9tOjprRE9NV2luZG93SGlzdG9yeUluZGV4LCByZXN1bHQp
OworICAgICAgICAgICAgICAgIHNldEhpZGRlbldpbmRvd1JlZmVyZW5jZShzdGF0aWNfY2FzdDxI
aXN0b3J5Kj4oaW1wbCktPmZyYW1lKCksIFY4RE9NV2luZG93OjpoaXN0b3J5SW5kZXgsIHJlc3Vs
dCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFY4Q2xhc3NJbmRl
eDo6TkFWSUdBVE9SOgotICAgICAgICAgICAgICAgIHNldEhpZGRlbldpbmRvd1JlZmVyZW5jZShz
dGF0aWNfY2FzdDxOYXZpZ2F0b3IqPihpbXBsKS0+ZnJhbWUoKSwgVjhDdXN0b206OmtET01XaW5k
b3dOYXZpZ2F0b3JJbmRleCwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzZXRIaWRkZW5XaW5k
b3dSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8TmF2aWdhdG9yKj4oaW1wbCktPmZyYW1lKCksIFY4RE9N
V2luZG93OjpuYXZpZ2F0b3JJbmRleCwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVjhDbGFzc0luZGV4OjpTQ1JFRU46Ci0gICAgICAgICAgICAgICAg
c2V0SGlkZGVuV2luZG93UmVmZXJlbmNlKHN0YXRpY19jYXN0PFNjcmVlbio+KGltcGwpLT5mcmFt
ZSgpLCBWOEN1c3RvbTo6a0RPTVdpbmRvd1NjcmVlbkluZGV4LCByZXN1bHQpOworICAgICAgICAg
ICAgICAgIHNldEhpZGRlbldpbmRvd1JlZmVyZW5jZShzdGF0aWNfY2FzdDxTY3JlZW4qPihpbXBs
KS0+ZnJhbWUoKSwgVjhET01XaW5kb3c6OnNjcmVlbkluZGV4LCByZXN1bHQpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWOENsYXNzSW5kZXg6OkxPQ0FUSU9OOgot
ICAgICAgICAgICAgICAgIHNldEhpZGRlbldpbmRvd1JlZmVyZW5jZShzdGF0aWNfY2FzdDxMb2Nh
dGlvbio+KGltcGwpLT5mcmFtZSgpLCBWOEN1c3RvbTo6a0RPTVdpbmRvd0xvY2F0aW9uSW5kZXgs
IHJlc3VsdCk7CisgICAgICAgICAgICAgICAgc2V0SGlkZGVuV2luZG93UmVmZXJlbmNlKHN0YXRp
Y19jYXN0PExvY2F0aW9uKj4oaW1wbCktPmZyYW1lKCksIFY4RE9NV2luZG93Ojpsb2NhdGlvbklu
ZGV4LCByZXN1bHQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBW
OENsYXNzSW5kZXg6OkRPTVNFTEVDVElPTjoKLSAgICAgICAgICAgICAgICBzZXRIaWRkZW5XaW5k
b3dSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8RE9NU2VsZWN0aW9uKj4oaW1wbCktPmZyYW1lKCksIFY4
Q3VzdG9tOjprRE9NV2luZG93RE9NU2VsZWN0aW9uSW5kZXgsIHJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgc2V0SGlkZGVuV2luZG93UmVmZXJlbmNlKHN0YXRpY19jYXN0PERPTVNlbGVjdGlvbio+
KGltcGwpLT5mcmFtZSgpLCBWOERPTVdpbmRvdzo6ZG9tU2VsZWN0aW9uSW5kZXgsIHJlc3VsdCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFY4Q2xhc3NJbmRleDo6
QkFSSU5GTzogewogICAgICAgICAgICAgICAgIEJhckluZm8qIGJhckluZm8gPSBzdGF0aWNfY2Fz
dDxCYXJJbmZvKj4oaW1wbCk7CiAgICAgICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gYmFySW5m
by0+ZnJhbWUoKTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhckluZm8tPnR5cGUoKSkgewog
ICAgICAgICAgICAgICAgIGNhc2UgQmFySW5mbzo6TG9jYXRpb25iYXI6Ci0gICAgICAgICAgICAg
ICAgICAgIHNldEhpZGRlbldpbmRvd1JlZmVyZW5jZShmcmFtZSwgVjhDdXN0b206OmtET01XaW5k
b3dMb2NhdGlvbmJhckluZGV4LCByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBzZXRIaWRk
ZW5XaW5kb3dSZWZlcmVuY2UoZnJhbWUsIFY4RE9NV2luZG93Ojpsb2NhdGlvbmJhckluZGV4LCBy
ZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNl
IEJhckluZm86Ok1lbnViYXI6Ci0gICAgICAgICAgICAgICAgICAgIHNldEhpZGRlbldpbmRvd1Jl
ZmVyZW5jZShmcmFtZSwgVjhDdXN0b206OmtET01XaW5kb3dNZW51YmFySW5kZXgsIHJlc3VsdCk7
CisgICAgICAgICAgICAgICAgICAgIHNldEhpZGRlbldpbmRvd1JlZmVyZW5jZShmcmFtZSwgVjhE
T01XaW5kb3c6Om1lbnViYXJJbmRleCwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCYXJJbmZvOjpQZXJzb25hbGJhcjoKLSAgICAgICAg
ICAgICAgICAgICAgc2V0SGlkZGVuV2luZG93UmVmZXJlbmNlKGZyYW1lLCBWOEN1c3RvbTo6a0RP
TVdpbmRvd1BlcnNvbmFsYmFySW5kZXgsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHNl
dEhpZGRlbldpbmRvd1JlZmVyZW5jZShmcmFtZSwgVjhET01XaW5kb3c6OnBlcnNvbmFsYmFySW5k
ZXgsIHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IGNhc2UgQmFySW5mbzo6U2Nyb2xsYmFyczoKLSAgICAgICAgICAgICAgICAgICAgc2V0SGlkZGVu
V2luZG93UmVmZXJlbmNlKGZyYW1lLCBWOEN1c3RvbTo6a0RPTVdpbmRvd1Njcm9sbGJhcnNJbmRl
eCwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0SGlkZGVuV2luZG93UmVmZXJlbmNl
KGZyYW1lLCBWOERPTVdpbmRvdzo6c2Nyb2xsYmFyc0luZGV4LCByZXN1bHQpOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEJhckluZm86OlN0YXR1c2Jh
cjoKLSAgICAgICAgICAgICAgICAgICAgc2V0SGlkZGVuV2luZG93UmVmZXJlbmNlKGZyYW1lLCBW
OEN1c3RvbTo6a0RPTVdpbmRvd1N0YXR1c2JhckluZGV4LCByZXN1bHQpOworICAgICAgICAgICAg
ICAgICAgICBzZXRIaWRkZW5XaW5kb3dSZWZlcmVuY2UoZnJhbWUsIFY4RE9NV2luZG93OjpzdGF0
dXNiYXJJbmRleCwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgY2FzZSBCYXJJbmZvOjpUb29sYmFyOgotICAgICAgICAgICAgICAgICAgICBzZXRI
aWRkZW5XaW5kb3dSZWZlcmVuY2UoZnJhbWUsIFY4Q3VzdG9tOjprRE9NV2luZG93VG9vbGJhcklu
ZGV4LCByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBzZXRIaWRkZW5XaW5kb3dSZWZlcmVu
Y2UoZnJhbWUsIFY4RE9NV2luZG93Ojp0b29sYmFySW5kZXgsIHJlc3VsdCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTc3OCw3ICs2NDgsNyBAQAogICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKGludGVybmFsSW5kZXggPCBWOEN1c3RvbTo6a0RPTVdp
bmRvd0ludGVybmFsRmllbGRDb3VudCk7CisgICAgQVNTRVJUKGludGVybmFsSW5kZXggPCBWOERP
TVdpbmRvdzo6aW50ZXJuYWxGaWVsZENvdW50KTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7CiAgICAgLy8gTG9vayBmb3IgcmVhbCBET00g
d3JhcHBlci4KQEAgLTc5MSw3ICs2NjEsNyBAQAogVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBl
IFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmpl
Y3QpCiB7CiAgICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVyKG9iamVjdCkp
OwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0eXBlID0gb2JqZWN0LT5HZXRJbnRlcm5hbEZp
ZWxkKFY4Q3VzdG9tOjprRE9NV3JhcHBlclR5cGVJbmRleCk7CisgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHR5cGUgPSBvYmplY3QtPkdldEludGVybmFsRmllbGQodjhET01XcmFwcGVyVHlwZUlu
ZGV4KTsKICAgICByZXR1cm4gVjhDbGFzc0luZGV4OjpGcm9tSW50KHR5cGUtPkludDMyVmFsdWUo
KSk7CiB9CiAKQEAgLTg1NywxMyArNzI3LDEzIEBACiAgICAgaWYgKCFvYmplY3QtPkludGVybmFs
RmllbGRDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQob2JqZWN0
LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSBWOEN1c3RvbTo6a0RlZmF1bHRXcmFwcGVySW50ZXJu
YWxGaWVsZENvdW50KTsKKyAgICBBU1NFUlQob2JqZWN0LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+
PSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50KTsKIAotICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0eXBlID0gb2JqZWN0LT5HZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprRE9N
V3JhcHBlclR5cGVJbmRleCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHR5cGUgPSBvYmpl
Y3QtPkdldEludGVybmFsRmllbGQodjhET01XcmFwcGVyVHlwZUluZGV4KTsKICAgICBBU1NFUlQo
dHlwZS0+SXNJbnQzMigpKTsKICAgICBBU1NFUlQoVjhDbGFzc0luZGV4OjpJTlZBTElEX0NMQVNT
X0lOREVYIDwgdHlwZS0+SW50MzJWYWx1ZSgpICYmIHR5cGUtPkludDMyVmFsdWUoKSA8IFY4Q2xh
c3NJbmRleDo6Q0xBU1NJTkRFWF9FTkQpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdy
YXBwZXIgPSBvYmplY3QtPkdldEludGVybmFsRmllbGQoVjhDdXN0b206OmtET01XcmFwcGVyT2Jq
ZWN0SW5kZXgpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gb2JqZWN0LT5H
ZXRJbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KTsKICAgICBBU1NFUlQod3Jh
cHBlci0+SXNOdW1iZXIoKSB8fCB3cmFwcGVyLT5Jc0V4dGVybmFsKCkpOwogCiAgICAgcmV0dXJu
IHRydWU7CkBAIC04ODYsMTIgKzc1NiwxMiBAQAogICAgIGlmICghb2JqZWN0LT5JbnRlcm5hbEZp
ZWxkQ291bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJUKG9iamVjdC0+
SW50ZXJuYWxGaWVsZENvdW50KCkgPj0gVjhDdXN0b206OmtEZWZhdWx0V3JhcHBlckludGVybmFs
RmllbGRDb3VudCk7CisgICAgQVNTRVJUKG9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkgPj0g
djhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd3JhcHBlciA9IG9iamVjdC0+R2V0SW50ZXJuYWxGaWVsZChWOEN1c3RvbTo6a0RP
TVdyYXBwZXJPYmplY3RJbmRleCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIg
PSBvYmplY3QtPkdldEludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpOwogICAg
IEFTU0VSVCh3cmFwcGVyLT5Jc051bWJlcigpIHx8IHdyYXBwZXItPklzRXh0ZXJuYWwoKSk7CiAK
LSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdHlwZSA9IG9iamVjdC0+R2V0SW50ZXJuYWxGaWVs
ZChWOEN1c3RvbTo6a0RPTVdyYXBwZXJUeXBlSW5kZXgpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0eXBlID0gb2JqZWN0LT5HZXRJbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5cGVJbmRl
eCk7CiAgICAgQVNTRVJUKHR5cGUtPklzSW50MzIoKSk7CiAgICAgQVNTRVJUKFY4Q2xhc3NJbmRl
eDo6SU5WQUxJRF9DTEFTU19JTkRFWCA8IHR5cGUtPkludDMyVmFsdWUoKSAmJiB0eXBlLT5JbnQz
MlZhbHVlKCkgPCBWOENsYXNzSW5kZXg6OkNMQVNTSU5ERVhfRU5EKTsKIApAQCAtMTMzNCwxMCAr
MTIwNCwxMCBAQAogICAgICAgICAgICAgLy8gQ3JlYXRlIG1hcmtlciBvYmplY3QgYW5kIGluc2Vy
dCBpdCBpbiB0d28gaW50ZXJuYWwgZmllbGRzLgogICAgICAgICAgICAgLy8gVGhpcyBpcyB1c2Vk
IHRvIGltcGxlbWVudCB0ZW1wb3Jhcnkgc2hhZG93aW5nIG9mCiAgICAgICAgICAgICAvLyBkb2N1
bWVudC5hbGwuCi0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5JbnRlcm5hbEZpZWxkQ291bnQo
KSA9PSBWOEN1c3RvbTo6a0hUTUxEb2N1bWVudEludGVybmFsRmllbGRDb3VudCk7CisgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1bWVu
dDo6aW50ZXJuYWxGaWVsZENvdW50KTsKICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBtYXJrZXIgPSB2ODo6T2JqZWN0OjpOZXcoKTsKLSAgICAgICAgICAgIHJlc3VsdC0+U2V0SW50
ZXJuYWxGaWVsZChWOEN1c3RvbTo6a0hUTUxEb2N1bWVudE1hcmtlckluZGV4LCBtYXJrZXIpOwot
ICAgICAgICAgICAgcmVzdWx0LT5TZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprSFRNTERvY3Vt
ZW50U2hhZG93SW5kZXgsIG1hcmtlcik7CisgICAgICAgICAgICByZXN1bHQtPlNldEludGVybmFs
RmllbGQoVjhIVE1MRG9jdW1lbnQ6Om1hcmtlckluZGV4LCBtYXJrZXIpOworICAgICAgICAgICAg
cmVzdWx0LT5TZXRJbnRlcm5hbEZpZWxkKFY4SFRNTERvY3VtZW50OjpzaGFkb3dJbmRleCwgbWFy
a2VyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTUzNSw3ICsxNDA1LDcgQEAKICAgICBOb2Rl
KiBvd25lck5vZGUgPSBzaGVldC0+b3duZXJOb2RlKCk7CiAgICAgaWYgKG93bmVyTm9kZSkgewog
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG93bmVyID0gdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChjb252ZXJ0Tm9kZVRvVjhPYmplY3Qob3duZXJOb2RlKSk7Ci0gICAgICAgIHJl
c3VsdC0+U2V0SW50ZXJuYWxGaWVsZChWOEN1c3RvbTo6a1N0eWxlU2hlZXRPd25lck5vZGVJbmRl
eCwgb3duZXIpOworICAgICAgICByZXN1bHQtPlNldEludGVybmFsRmllbGQoVjhTdHlsZVNoZWV0
Ojpvd25lck5vZGVJbmRleCwgb3duZXIpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBA
IC0xNjgzLDcgKzE1NTMsNyBAQAogICAgIC8vIEFkZCBhIGhpZGRlbiByZWZlcmVuY2UgZnJvbSBu
YW1lZCBub2RlIG1hcCB0byBpdHMgb3duZXIgbm9kZS4KICAgICBpZiAoRWxlbWVudCogZWxlbWVu
dCA9IG1hcC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb3du
ZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnZlcnROb2RlVG9WOE9iamVjdChl
bGVtZW50KSk7Ci0gICAgICAgIHJlc3VsdC0+U2V0SW50ZXJuYWxGaWVsZChWOEN1c3RvbTo6a05h
bWVkTm9kZU1hcE93bmVyTm9kZUluZGV4LCBvd25lcik7CisgICAgICAgIHJlc3VsdC0+U2V0SW50
ZXJuYWxGaWVsZChWOE5hbWVkTm9kZU1hcDo6b3duZXJOb2RlSW5kZXgsIG93bmVyKTsKICAgICB9
CiAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdp
bmRvd1NoZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmgJKHJldmlzaW9uIDUzMTUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdp
bmRvd1NoZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxNiBAQAogI2RlZmluZSBW
OERPTVdpbmRvd1NoZWxsX2gKIAogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1
ZGUgIlY4SW5kZXguaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEZyYW1lOworY2xhc3MgU3RyaW5nOwog
CiAvLyBWOFdpbmRvd1NoZWxsIHJlcHJlc2VudHMgYWxsIHRoZSBwZXItZ2xvYmFsIG9iamVjdCBz
dGF0ZSBmb3IgYSBGcmFtZSB0aGF0CiAvLyBwZXJzaXN0IGJldHdlZW4gbmF2aWdhdGlvbnMuCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgJKHJldmlzaW9uIDUzMTUzKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDgg
KzExMiw4IEBACiAgICAgICAgIHN0YXRpYyB2b2lkIHNldERPTVdyYXBwZXIodjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBvYmplY3QsIGludCB0eXBlLCB2b2lkKiBjcHRyKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQob2JqZWN0LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSAyKTsKLSAgICAg
ICAgICAgIG9iamVjdC0+U2V0UG9pbnRlckluSW50ZXJuYWxGaWVsZChWOEN1c3RvbTo6a0RPTVdy
YXBwZXJPYmplY3RJbmRleCwgY3B0cik7Ci0gICAgICAgICAgICBvYmplY3QtPlNldEludGVybmFs
RmllbGQoVjhDdXN0b206OmtET01XcmFwcGVyVHlwZUluZGV4LCB2ODo6SW50ZWdlcjo6TmV3KHR5
cGUpKTsKKyAgICAgICAgICAgIG9iamVjdC0+U2V0UG9pbnRlckluSW50ZXJuYWxGaWVsZCh2OERP
TVdyYXBwZXJPYmplY3RJbmRleCwgY3B0cik7CisgICAgICAgICAgICBvYmplY3QtPlNldEludGVy
bmFsRmllbGQodjhET01XcmFwcGVyVHlwZUluZGV4LCB2ODo6SW50ZWdlcjo6TmV3KHR5cGUpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGxvb2t1
cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIHR5cGUsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb2JqZWN0KQpAQCAtMTMwLDcgKzEzMCw3IEBACiAgICAgICAgICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgICAgICAgICBBU1NFUlQobWF5YmVET01XcmFw
cGVyKG9iamVjdCkpOwogI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxDKj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQoVjhDdXN0b206OmtET01X
cmFwcGVyT2JqZWN0SW5kZXgpKTsKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PEMqPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmpl
Y3RJbmRleCkpOwogICAgICAgICB9CiAKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEM+CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAJKHJldmlzaW9uIDUzMTUz
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzI5LDcgKzMyOSw3IEBACiAKICAgICAvLyBJbnN0YWxsIGEgc2VjdXJpdHkgaGFu
ZGxlciB3aXRoIFY4LgogICAgIGdsb2JhbFRlbXBsYXRlLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNr
cyhWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrLCBWOERPTVdpbmRvdzo6aW5kZXhlZFNl
Y3VyaXR5Q2hlY2ssIHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFzc0luZGV4OjpET01XSU5ET1cpKTsK
LSAgICBnbG9iYWxUZW1wbGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprRE9N
V2luZG93SW50ZXJuYWxGaWVsZENvdW50KTsKKyAgICBnbG9iYWxUZW1wbGF0ZS0+U2V0SW50ZXJu
YWxGaWVsZENvdW50KFY4RE9NV2luZG93OjppbnRlcm5hbEZpZWxkQ291bnQpOwogCiAgICAgLy8g
VXNlZCB0byBhdm9pZCBzbGVlcCBjYWxscyBpbiB1bmxvYWQgaGFuZGxlcnMuCiAgICAgaWYgKCFW
OFByb3h5OjpyZWdpc3RlcmVkRXh0ZW5zaW9uV2l0aFY4KERhdGVFeHRlbnNpb246OmdldCgpKSkK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAkocmV2aXNpb24gNTMxNTMpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3
ICs3NCw3IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVGhlIGhvbGRlciBvYmplY3QgaXMg
bm90IGEgc3VidHlwZSBvZiBIVE1MUGx1Z0luRWxlbWVudCwgaXQgbXVzdCBiZSBhbiBOUE9iamVj
dCB3aGljaCBoYXMgdGhyZWUKICAgICAgICAgLy8gaW50ZXJuYWwgZmllbGRzLgotICAgICAgICBp
ZiAoYXJncy5Ib2xkZXIoKS0+SW50ZXJuYWxGaWVsZENvdW50KCkgIT0gVjhDdXN0b206OmtOUE9i
amVjdEludGVybmFsRmllbGRDb3VudCkKKyAgICAgICAgaWYgKGFyZ3MuSG9sZGVyKCktPkludGVy
bmFsRmllbGRDb3VudCgpICE9IG5wT2JqZWN0SW50ZXJuYWxGaWVsZENvdW50KQogICAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKCJOUE1ldGhvZCBjYWxsZWQgb24gbm9uLU5QT2JqZWN0IiwgVjhQ
cm94eTo6UmVmZXJlbmNlRXJyb3IpOwogCiAgICAgICAgIG5wT2JqZWN0ID0gVjhET01XcmFwcGVy
Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8TlBPYmplY3Q+KFY4Q2xhc3NJbmRleDo6TlBPQkpFQ1Qs
IGFyZ3MuSG9sZGVyKCkpOwpAQCAtMzU3LDcgKzM1Nyw3IEBACiAgICAgLy8gY2FuIGJlIHVzZWQg
YnkgRE9NIGJpbmRpbmdzLgogICAgIGlmIChucE9iamVjdERlc2MuSXNFbXB0eSgpKSB7CiAgICAg
ICAgIG5wT2JqZWN0RGVzYyA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6
TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoKSk7Ci0gICAgICAgIG5wT2JqZWN0RGVzYy0+
SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhDdXN0b206OmtOUE9i
amVjdEludGVybmFsRmllbGRDb3VudCk7CisgICAgICAgIG5wT2JqZWN0RGVzYy0+SW5zdGFuY2VU
ZW1wbGF0ZSgpLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQobnBPYmplY3RJbnRlcm5hbEZpZWxkQ291
bnQpOwogICAgICAgICBucE9iamVjdERlc2MtPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0TmFtZWRQ
cm9wZXJ0eUhhbmRsZXIobnBPYmplY3ROYW1lZFByb3BlcnR5R2V0dGVyLCBucE9iamVjdE5hbWVk
UHJvcGVydHlTZXR0ZXIsIDAsIDAsIG5wT2JqZWN0TmFtZWRQcm9wZXJ0eUVudW1lcmF0b3IpOwog
ICAgICAgICBucE9iamVjdERlc2MtPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0SW5kZXhlZFByb3Bl
cnR5SGFuZGxlcihucE9iamVjdEluZGV4ZWRQcm9wZXJ0eUdldHRlciwgbnBPYmplY3RJbmRleGVk
UHJvcGVydHlTZXR0ZXIsIDAsIDAsIG5wT2JqZWN0SW5kZXhlZFByb3BlcnR5RW51bWVyYXRvcik7
CiAgICAgICAgIG5wT2JqZWN0RGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRDYWxsQXNGdW5j
dGlvbkhhbmRsZXIobnBPYmplY3RJbnZva2VEZWZhdWx0SGFuZGxlcik7CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvTlBWOE9iamVjdC5jcHAJKHJldmlzaW9uIDUzMTUzKQorKysgV2ViQ29yZS9iaW5kaW5n
cy92OC9OUFY4T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiVjhIZWxwZXJzLmgiCisjaW5jbHVkZSAiVjhJbmRleC5oIgogI2luY2x1ZGUgIlY4
TlBVdGlscy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJiaW5kaW5ncy9ucHJ1
bnRpbWUuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdFeHRyYXMuaD4KIAordXNpbmcgV2ViQ29yZTo6bnBPYmplY3RJbnRlcm5hbEZpZWxk
Q291bnQ7CiB1c2luZyBXZWJDb3JlOjp0b1Y4Q29udGV4dDsKIHVzaW5nIFdlYkNvcmU6OnRvVjhQ
cm94eTsKIHVzaW5nIFdlYkNvcmU6OlY4Q2xhc3NJbmRleDsKQEAgLTEwNCw4ICsxMDYsOCBAQAog
TlBPYmplY3QqIG5wQ3JlYXRlVjhTY3JpcHRPYmplY3QoTlBQIG5wcCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmplY3QsIFdlYkNvcmU6OkRPTVdpbmRvdyogcm9vdCkKIHsKICAgICAvLyBDaGVj
ayB0byBzZWUgaWYgdGhpcyBvYmplY3QgaXMgYWxyZWFkeSB3cmFwcGVkLgotICAgIGlmIChvYmpl
Y3QtPkludGVybmFsRmllbGRDb3VudCgpID09IFY4Q3VzdG9tOjprTlBPYmplY3RJbnRlcm5hbEZp
ZWxkQ291bnQpIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdHlwZUluZGV4ID0gb2Jq
ZWN0LT5HZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprRE9NV3JhcHBlclR5cGVJbmRleCk7Cisg
ICAgaWYgKG9iamVjdC0+SW50ZXJuYWxGaWVsZENvdW50KCkgPT0gbnBPYmplY3RJbnRlcm5hbEZp
ZWxkQ291bnQpIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdHlwZUluZGV4ID0gb2Jq
ZWN0LT5HZXRJbnRlcm5hbEZpZWxkKFdlYkNvcmU6OnY4RE9NV3JhcHBlclR5cGVJbmRleCk7CiAg
ICAgICAgIGlmICh0eXBlSW5kZXgtPklzTnVtYmVyKCkgJiYgdHlwZUluZGV4LT5VaW50MzJWYWx1
ZSgpID09IFY4Q2xhc3NJbmRleDo6TlBPQkpFQ1QpIHsKIAogICAgICAgICAgICAgTlBPYmplY3Qq
IHJldHVyblZhbHVlID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8TlBPYmpl
Y3Q+KFY4Q2xhc3NJbmRleDo6TlBPQkpFQ1QsIG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4SW5kZXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5k
ZXguaAkocmV2aXNpb24gNTMxNTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDEzIEBACiAjZGVmaW5lIFY4SW5kZXhfaAogCiAj
aW5jbHVkZSA8djguaD4KLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIiAgLy8gZm9yIFdlYkNv
cmU6OlN0cmluZwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCBpbnQgdjhE
T01XcmFwcGVyVHlwZUluZGV4ID0gMDsKK3N0YXRpYyBjb25zdCBpbnQgdjhET01XcmFwcGVyT2Jq
ZWN0SW5kZXggPSAxOworc3RhdGljIGNvbnN0IGludCB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxG
aWVsZENvdW50ID0gMjsKKwogdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKIAogI2lmIEVOQUJMRShEQVRBR1JJ
RCkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmgJKHJldmlzaW9u
IDUzMTUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJJc29sYXRlZFdvcmxkLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIiAvLyBmb3IgV2ViQ29yZTo6U2NyaXB0U291
cmNlQ29kZQorI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhJbmRleC5oIgog
I2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgpAQCAtODUsNyAr
ODYsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmICghdjg6OkNvbnRleHQ6
OkluQ29udGV4dCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFY4SXNvbGF0ZWRDb250ZXh0Kj4oZ2V0R2xvYmFsT2JqZWN0KHY4OjpDb250
ZXh0OjpHZXRFbnRlcmVkKCkpLT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQoVjhDdXN0b206
OmtET01XaW5kb3dFbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4KSk7CisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFY4SXNvbGF0ZWRDb250ZXh0Kj4oZ2V0R2xvYmFsT2JqZWN0KHY4OjpD
b250ZXh0OjpHZXRFbnRlcmVkKCkpLT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQoVjhET01X
aW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgpKTsKICAgICB9CiAKICAgICB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LT5nZXQoKTsgfQpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmgJKHJldmlzaW9uIDUzMTUzKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwx
NCBAQAogI2lmbmRlZiBOUFY4T2JqZWN0X2gKICNkZWZpbmUgTlBWOE9iamVjdF9oCiAKKyNpbmNs
dWRlICJWOEluZGV4LmgiCiAjaW5jbHVkZSAiYmluZGluZ3MvbnBydW50aW1lLmgiCiAjaW5jbHVk
ZSA8djguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERPTVdpbmRvdzsKKwor
ICAgIHN0YXRpYyBjb25zdCBpbnQgbnBPYmplY3RJbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1
bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKIH0KIAogZXh0ZXJuIE5QQ2xhc3MqIG5w
U2NyaXB0T2JqZWN0Q2xhc3M7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRD
b250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRD
b250ZXh0LmNwcAkocmV2aXNpb24gNTMxNTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNv
bGF0ZWRDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQAogICAgIC8v
IFJ1biBjb2RlIGluIHRoZSBuZXcgY29udGV4dC4KICAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29u
dGV4dFNjb3BlKG1fY29udGV4dC0+Z2V0KCkpOwogCi0gICAgZ2V0R2xvYmFsT2JqZWN0KG1fY29u
dGV4dC0+Z2V0KCkpLT5TZXRQb2ludGVySW5JbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprRE9NV2lu
ZG93RW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCwgdGhpcyk7CisgICAgZ2V0R2xvYmFsT2JqZWN0
KG1fY29udGV4dC0+Z2V0KCkpLT5TZXRQb2ludGVySW5JbnRlcm5hbEZpZWxkKFY4RE9NV2luZG93
OjplbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4LCB0aGlzKTsKIAogICAgIFY4RE9NV2luZG93U2hl
bGw6Omluc3RhbGxIaWRkZW5PYmplY3RQcm90b3R5cGUobV9jb250ZXh0LT5nZXQoKSk7CiAgICAg
Ly8gRklYTUU6IFRoaXMgd2lsbCBnbyBhd2F5IG9uY2Ugd2UgaGF2ZSBhIHdpbmRvd1NoZWxsIGZv
ciB0aGUgaXNvbGF0ZWQgd29ybGQuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCShy
ZXZpc2lvbiA1MzE1MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI4LDExICsxMjgsMTEgQEAKIAogCiB2b2lkKiB2OERPTVdyYXBwZXJU
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkgewotICAgIHJldHVybiBvYmpl
Y3QtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZChWOEN1c3RvbTo6a0RPTVdyYXBwZXJPYmpl
Y3RJbmRleCk7CisgICAgcmV0dXJuIG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxk
KHY4RE9NV3JhcHBlck9iamVjdEluZGV4KTsKIH0KICAgICAKIHZvaWQqIHY4RE9NV3JhcHBlclRv
TmF0aXZlKGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pIHsKLSAgICByZXR1cm4gaW5mby5I
b2xkZXIoKS0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprRE9NV3JhcHBl
ck9iamVjdEluZGV4KTsKKyAgICByZXR1cm4gaW5mby5Ib2xkZXIoKS0+R2V0UG9pbnRlckZyb21J
bnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KTsKIH0KICAgICAKIApJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUFwcGxpY2F0
aW9uQ2FjaGVDdXN0b20uY3BwCShyZXZpc2lvbiA1MzE1MykKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDcgQEAKIAogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9
IFY4RE9NV3JhcHBlcjo6Z2V0RXZlbnRMaXN0ZW5lcihhcHBjYWNoZSwgYXJnc1sxXSwgZmFsc2Us
IExpc3RlbmVyRmluZE9yQ3JlYXRlKTsKICAgICBpZiAobGlzdGVuZXIpIHsKLSAgICAgICAgY3Jl
YXRlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBWOEN1c3RvbTo6a0RP
TUFwcGxpY2F0aW9uQ2FjaGVDYWNoZUluZGV4KTsKKyAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5k
ZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBjYWNoZUluZGV4KTsKICAgICAgICAgU3RyaW5n
IGV2ZW50VHlwZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKICAgICAgICAgYm9vbCB1c2VD
YXB0dXJlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgICAgIGFwcGNhY2hlLT5hZGRF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwpAQCAtNjgsNyAr
NjgsNyBAQAogCiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFw
cGVyOjpnZXRFdmVudExpc3RlbmVyKGFwcGNhY2hlLCBhcmdzWzFdLCBmYWxzZSwgTGlzdGVuZXJG
aW5kT25seSk7CiAgICAgaWYgKGxpc3RlbmVyKSB7Ci0gICAgICAgIHJlbW92ZUhpZGRlbkRlcGVu
ZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206OmtET01BcHBsaWNhdGlvbkNh
Y2hlQ2FjaGVJbmRleCk7CisgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xk
ZXIoKSwgYXJnc1sxXSwgY2FjaGVJbmRleCk7CiAgICAgICAgIFN0cmluZyBldmVudFR5cGUgPSB0
b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3Nb
Ml0tPkJvb2xlYW5WYWx1ZSgpOwogICAgICAgICBhcHBjYWNoZS0+cmVtb3ZlRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGxpc3RlbmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gNTMxNTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
MyArMjksMTMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhNZXNz
YWdlQ2hhbm5lbC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCi0KICNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
ICNpbmNsdWRlICJWOFByb3h5LmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXb3JrZXJDb250
ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCkBAIC02Niw4
ICs2Niw4IEBACiAgICAgLy8gQ3JlYXRlIHJlZmVyZW5jZXMgZnJvbSB0aGUgTWVzc2FnZUNoYW5u
ZWwgd3JhcHBlciB0byB0aGUgdHdvCiAgICAgLy8gTWVzc2FnZVBvcnQgd3JhcHBlcnMgdG8gbWFr
ZSBzdXJlIHRoYXQgdGhlIE1lc3NhZ2VQb3J0IHdyYXBwZXJzCiAgICAgLy8gc3RheSBhbGl2ZSBh
cyBsb25nIGFzIHRoZSBNZXNzYWdlQ2hhbm5lbCB3cmFwcGVyIGlzIGFyb3VuZC4KLSAgICBtZXNz
YWdlQ2hhbm5lbC0+U2V0SW50ZXJuYWxGaWVsZChrTWVzc2FnZUNoYW5uZWxQb3J0MUluZGV4LCBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6TUVTU0FHRVBPUlQs
IG9iai0+cG9ydDEoKSkpOwotICAgIG1lc3NhZ2VDaGFubmVsLT5TZXRJbnRlcm5hbEZpZWxkKGtN
ZXNzYWdlQ2hhbm5lbFBvcnQySW5kZXgsIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3Qo
VjhDbGFzc0luZGV4OjpNRVNTQUdFUE9SVCwgb2JqLT5wb3J0MigpKSk7CisgICAgbWVzc2FnZUNo
YW5uZWwtPlNldEludGVybmFsRmllbGQoVjhNZXNzYWdlQ2hhbm5lbDo6cG9ydDFJbmRleCwgVjhE
T01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6Ok1FU1NBR0VQT1JULCBv
YmotPnBvcnQxKCkpKTsKKyAgICBtZXNzYWdlQ2hhbm5lbC0+U2V0SW50ZXJuYWxGaWVsZChWOE1l
c3NhZ2VDaGFubmVsOjpwb3J0MkluZGV4LCBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0
KFY4Q2xhc3NJbmRleDo6TUVTU0FHRVBPUlQsIG9iai0+cG9ydDIoKSkpOwogCiAgICAgLy8gU2V0
dXAgdGhlIHN0YW5kYXJkIHdyYXBwZXIgb2JqZWN0IGludGVybmFsIGZpZWxkcy4KICAgICBWOERP
TVdyYXBwZXI6OnNldERPTVdyYXBwZXIobWVzc2FnZUNoYW5uZWwsIFY4Q2xhc3NJbmRleDo6TUVT
U0FHRUNIQU5ORUwsIG9iai5nZXQoKSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA1MzE1MykKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYzLDcgKzM2Myw3IEBACiAKICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgaW1w
LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwotICAg
ICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3Vz
dG9tOjprRE9NV2luZG93RXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgpOworICAgICAgICBjcmVhdGVI
aWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIGNhY2hlSW5kZXgpOwogICAg
IH0KIAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0zOTUsNyArMzk1LDcgQEAKIAog
ICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICBpbXAtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBsaXN0ZW5lci5nZXQoKSwgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHJlbW92ZUhpZGRl
bkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206OmtET01XaW5kb3dF
dmVudExpc3RlbmVyQ2FjaGVJbmRleCk7CisgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3ko
YXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgY2FjaGVJbmRleCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9j
dW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MzE1MykKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUs
MTAgKzExNSwxMCBAQAogLy8gZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgd3JhcHBlci4KIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50OjppbXBsZW1lbnRhdGlvbkFjY2Vzc29yR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewotICAgIEFTU0VSVChpbmZvLkhvbGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSBW
OEN1c3RvbTo6a0RvY3VtZW50TWluaW11bUludGVybmFsRmllbGRDb3VudCk7CisgICAgQVNTRVJU
KGluZm8uSG9sZGVyKCktPkludGVybmFsRmllbGRDb3VudCgpID49IGludGVybmFsRmllbGRDb3Vu
dCk7CiAKICAgICAvLyBDaGVjayBpZiB0aGUgaW50ZXJuYWwgZmllbGQgYWxyZWFkeSBjb250YWlu
cyBhIHdyYXBwZXIuCi0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW1wbGVtZW50YXRpb24gPSBp
bmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprRG9jdW1lbnRJbXBsZW1l
bnRhdGlvbkluZGV4KTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpbXBsZW1lbnRhdGlvbiA9
IGluZm8uSG9sZGVyKCktPkdldEludGVybmFsRmllbGQoVjhEb2N1bWVudDo6aW1wbGVtZW50YXRp
b25JbmRleCk7CiAgICAgaWYgKCFpbXBsZW1lbnRhdGlvbi0+SXNVbmRlZmluZWQoKSkKICAgICAg
ICAgcmV0dXJuIGltcGxlbWVudGF0aW9uOwogCkBAIC0xMjcsNyArMTI3LDcgQEAKICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTUltcGxl
bWVudGF0aW9uVG9WOE9iamVjdChkb2N1bWVudC0+aW1wbGVtZW50YXRpb24oKSk7CiAKICAgICAv
LyBTdG9yZSB0aGUgd3JhcHBlciBpbiB0aGUgaW50ZXJuYWwgZmllbGQuCi0gICAgaW5mby5Ib2xk
ZXIoKS0+U2V0SW50ZXJuYWxGaWVsZChWOEN1c3RvbTo6a0RvY3VtZW50SW1wbGVtZW50YXRpb25J
bmRleCwgd3JhcHBlcik7CisgICAgaW5mby5Ib2xkZXIoKS0+U2V0SW50ZXJuYWxGaWVsZChpbXBs
ZW1lbnRhdGlvbkluZGV4LCB3cmFwcGVyKTsKIAogICAgIHJldHVybiB3cmFwcGVyOwogfQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRD
dXN0b20uY3BwCShyZXZpc2lvbiA1MzE1MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMs
NyBAQAogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsK
ICAgICAgICAgd29ya2VyQ29udGV4dC0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwg
dXNlQ2FwdHVyZSk7CiAKLSAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRl
cigpLCBhcmdzWzFdLCBWOEN1c3RvbTo6a1dvcmtlckNvbnRleHRSZXF1ZXN0Q2FjaGVJbmRleCk7
CisgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwg
Y2FjaGVJbmRleCk7CiAgICAgfQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CkBAIC0x
NjksNyArMTY5LDcgQEAKICAgICAgICAgYm9vbCB1c2VDYXB0dXJlID0gYXJnc1syXS0+Qm9vbGVh
blZhbHVlKCk7CiAgICAgICAgIHdvcmtlckNvbnRleHQtPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlw
ZSwgbGlzdGVuZXIuZ2V0KCksIHVzZUNhcHR1cmUpOwogCi0gICAgICAgIHJlbW92ZUhpZGRlbkRl
cGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206OmtXb3JrZXJDb250ZXh0
UmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3Mu
SG9sZGVyKCksIGFyZ3NbMV0sIGNhY2hlSW5kZXgpOwogICAgIH0KICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0
aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA1
MzE1MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbkVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlRleHQuaCIKLQog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4SFRNTE9wdGlvbkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJWOFByb3h5LmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01NCw3
ICs1NCw3IEBACiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiByZXN1bHQgPSB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFVTRV9DQUxMQkFDSyhIVE1MT3B0aW9uRWxlbWVudENv
bnN0cnVjdG9yKSk7CiAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5j
ZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwotICAgIGluc3RhbmNlLT5TZXRJbnRlcm5h
bEZpZWxkQ291bnQoVjhDdXN0b206OmtOb2RlTWluaW11bUludGVybmFsRmllbGRDb3VudCk7Cisg
ICAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudChWOEhUTUxPcHRpb25FbGVtZW50Ojpp
bnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6
Ok5ldygiSFRNTE9wdGlvbkVsZW1lbnQiKSk7CiAgICAgcmVzdWx0LT5Jbmhlcml0KFY4RE9NV3Jh
cHBlcjo6Z2V0VGVtcGxhdGUoVjhDbGFzc0luZGV4OjpIVE1MT1BUSU9ORUxFTUVOVCkpOwogCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAJKHJldmlz
aW9uIDUzMTUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogICAgICAgICBTdHJpbmcgdHlwZSA9
IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKICAgICAgICAgYm9vbCB1c2VDYXB0dXJlID0gYXJn
c1syXS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgICAgIG5vZGUtPmFkZEV2ZW50TGlzdGVuZXIodHlw
ZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwotICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5
KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprTm9kZUV2ZW50TGlzdGVuZXJDYWNo
ZUluZGV4KTsKKyAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBh
cmdzWzFdLCBjYWNoZUluZGV4KTsKICAgICB9CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
IH0KQEAgLTczLDcgKzczLDcgQEAKICAgICAgICAgQXRvbWljU3RyaW5nIHR5cGUgPSB2OFZhbHVl
VG9BdG9taWNXZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgICAgICBib29sIHVzZUNhcHR1cmUg
PSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKICAgICAgICAgbm9kZS0+cmVtb3ZlRXZlbnRMaXN0
ZW5lcih0eXBlLCBsaXN0ZW5lci5nZXQoKSwgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHJlbW92ZUhp
ZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206OmtOb2RlRXZl
bnRMaXN0ZW5lckNhY2hlSW5kZXgpOworICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFy
Z3MuSG9sZGVyKCksIGFyZ3NbMV0sIGNhY2hlSW5kZXgpOwogICAgIH0KIAogICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA1
MzE1MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
LQogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4SFRNTEltYWdlRWxlbWVudC5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUz
LDcgKzUzLDcgQEAKICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHJlc3VsdCA9
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVVNFX0NBTExCQUNLKEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3RvcikpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFu
Y2UgPSByZXN1bHQtPkluc3RhbmNlVGVtcGxhdGUoKTsKLSAgICBpbnN0YW5jZS0+U2V0SW50ZXJu
YWxGaWVsZENvdW50KFY4Q3VzdG9tOjprTm9kZU1pbmltdW1JbnRlcm5hbEZpZWxkQ291bnQpOwor
ICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhIVE1MSW1hZ2VFbGVtZW50Ojpp
bnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6
Ok5ldygiSFRNTEltYWdlRWxlbWVudCIpKTsKICAgICByZXN1bHQtPkluaGVyaXQoVjhET01XcmFw
cGVyOjpnZXRUZW1wbGF0ZShWOENsYXNzSW5kZXg6OkhUTUxJTUFHRUVMRU1FTlQpKTsKIApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNTMxNTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNyw4IEBA
CiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0j
aW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgotCiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAt
NTcsOSArNTQsOSBAQAogICAgIGlmIChrZXkgIT0gYWxsKQogICAgICAgICByZXR1cm4gZGVsZXRp
b25Ob3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwogCi0gICAgQVNTRVJUKGluZm8uSG9sZGVyKCkt
PkludGVybmFsRmllbGRDb3VudCgpID09IFY4Q3VzdG9tOjprSFRNTERvY3VtZW50SW50ZXJuYWxG
aWVsZENvdW50KTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBtYXJrZXIgPSBpbmZvLkhvbGRl
cigpLT5HZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprSFRNTERvY3VtZW50TWFya2VySW5kZXgp
OwotICAgIGluZm8uSG9sZGVyKCktPlNldEludGVybmFsRmllbGQoVjhDdXN0b206OmtIVE1MRG9j
dW1lbnRTaGFkb3dJbmRleCwgbWFya2VyKTsKKyAgICBBU1NFUlQoaW5mby5Ib2xkZXIoKS0+SW50
ZXJuYWxGaWVsZENvdW50KCkgPT0gVjhIVE1MRG9jdW1lbnQ6OmludGVybmFsRmllbGRDb3VudCk7
CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbWFya2VyID0gaW5mby5Ib2xkZXIoKS0+R2V0SW50
ZXJuYWxGaWVsZChWOEhUTUxEb2N1bWVudDo6bWFya2VySW5kZXgpOworICAgIGluZm8uSG9sZGVy
KCktPlNldEludGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4LCBtYXJrZXIp
OwogICAgIHJldHVybiB2ODo6VHJ1ZSgpOwogfQogCkBAIC03Myw5ICs3MCw5IEBACiAgICAgLy8g
YmVlbiB0ZW1wb3JhcmlseSBzaGFkb3dlZCBhbmQgd2UgcmV0dXJuIHRoZSB2YWx1ZS4KICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWxsLCAoImFsbCIpKTsKICAg
ICBpZiAoa2V5ID09IGFsbCkgewotICAgICAgICBBU1NFUlQoaW5mby5Ib2xkZXIoKS0+SW50ZXJu
YWxGaWVsZENvdW50KCkgPT0gVjhDdXN0b206OmtIVE1MRG9jdW1lbnRJbnRlcm5hbEZpZWxkQ291
bnQpOwotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBtYXJrZXIgPSBpbmZvLkhvbGRlcigp
LT5HZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprSFRNTERvY3VtZW50TWFya2VySW5kZXgpOwot
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdldElu
dGVybmFsRmllbGQoVjhDdXN0b206OmtIVE1MRG9jdW1lbnRTaGFkb3dJbmRleCk7CisgICAgICAg
IEFTU0VSVChpbmZvLkhvbGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEhUTUxEb2N1
bWVudDo6aW50ZXJuYWxGaWVsZENvdW50KTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
bWFya2VyID0gaW5mby5Ib2xkZXIoKS0+R2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1bWVudDo6
bWFya2VySW5kZXgpOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSA9IGluZm8u
SG9sZGVyKCktPkdldEludGVybmFsRmllbGQoVjhIVE1MRG9jdW1lbnQ6OnNoYWRvd0luZGV4KTsK
ICAgICAgICAgaWYgKG1hcmtlciAhPSB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsK
ICAgICB9CkBAIC0xODcsOCArMTg0LDggQEAKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9j
dW1lbnQuYWxsLl9zZXQiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGlu
Zm8uSG9sZGVyKCk7Ci0gICAgQVNTRVJUKGluZm8uSG9sZGVyKCktPkludGVybmFsRmllbGRDb3Vu
dCgpID09IFY4Q3VzdG9tOjprSFRNTERvY3VtZW50SW50ZXJuYWxGaWVsZENvdW50KTsKLSAgICBp
bmZvLkhvbGRlcigpLT5TZXRJbnRlcm5hbEZpZWxkKFY4Q3VzdG9tOjprSFRNTERvY3VtZW50U2hh
ZG93SW5kZXgsIHZhbHVlKTsKKyAgICBBU1NFUlQoaW5mby5Ib2xkZXIoKS0+SW50ZXJuYWxGaWVs
ZENvdW50KCkgPT0gVjhIVE1MRG9jdW1lbnQ6OmludGVybmFsRmllbGRDb3VudCk7CisgICAgaW5m
by5Ib2xkZXIoKS0+U2V0SW50ZXJuYWxGaWVsZChWOEhUTUxEb2N1bWVudDo6c2hhZG93SW5kZXgs
IHZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDUzMTUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAKICAgICAgICAg
Ym9vbCB1c2VDYXB0dXJlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgICAgIHhtbEh0
dHBSZXF1ZXN0LT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsK
IAotICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0s
IFY4Q3VzdG9tOjprWE1MSHR0cFJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgY3JlYXRlSGlk
ZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBjYWNoZUluZGV4KTsKICAgICB9
CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KQEAgLTc5LDcgKzc5LDcgQEAKICAgICAg
ICAgYm9vbCB1c2VDYXB0dXJlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgICAgIHht
bEh0dHBSZXF1ZXN0LT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLmdldCgpLCB1
c2VDYXB0dXJlKTsKIAotICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVy
KCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprWE1MSHR0cFJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAg
ICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBjYWNoZUlu
ZGV4KTsKICAgICB9CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHJldmlzaW9uIDUzMTUz
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDk3ICszNyw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgVjhDdXN0b20gewogICAgIHB1YmxpYzoKLSAgICAgICAgLy8gQ29uc3RhbnRzLgotICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IGtET01XcmFwcGVyVHlwZUluZGV4ID0gMDsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBrRE9NV3JhcHBlck9iamVjdEluZGV4ID0gMTsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgPSAyOwotCi0gICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQga05QT2JqZWN0SW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1
bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKLQotICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtOb2RlRXZlbnRMaXN0ZW5lckNhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5h
bEZpZWxkQ291bnQgKyAwOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtOb2RlTWluaW11bUlu
dGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7
Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRG9jdW1lbnRJbXBsZW1lbnRhdGlvbkluZGV4
ID0ga05vZGVNaW5pbXVtSW50ZXJuYWxGaWVsZENvdW50ICsgMDsKLSAgICAgICAgc3RhdGljIGNv
bnN0IGludCBrRG9jdW1lbnRNaW5pbXVtSW50ZXJuYWxGaWVsZENvdW50ID0ga05vZGVNaW5pbXVt
SW50ZXJuYWxGaWVsZENvdW50ICsgMTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtIVE1M
RG9jdW1lbnRNYXJrZXJJbmRleCA9IGtEb2N1bWVudE1pbmltdW1JbnRlcm5hbEZpZWxkQ291bnQg
KyAwOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtIVE1MRG9jdW1lbnRTaGFkb3dJbmRleCA9
IGtEb2N1bWVudE1pbmltdW1JbnRlcm5hbEZpZWxkQ291bnQgKyAxOwotICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IGtIVE1MRG9jdW1lbnRJbnRlcm5hbEZpZWxkQ291bnQgPSBrRG9jdW1lbnRNaW5p
bXVtSW50ZXJuYWxGaWVsZENvdW50ICsgMjsKLQotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtY
TUxIdHRwUmVxdWVzdENhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291
bnQgKyAwOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtYTUxIdHRwUmVxdWVzdEludGVybmFs
RmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7Ci0KLSAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBrTWVzc2FnZUNoYW5uZWxQb3J0MUluZGV4ID0ga0RlZmF1
bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IGlu
dCBrTWVzc2FnZUNoYW5uZWxQb3J0MkluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVs
ZENvdW50ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBrTWVzc2FnZUNoYW5uZWxJbnRl
cm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAyOwot
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga01lc3NhZ2VQb3J0UmVxdWVzdENhY2hlSW5kZXgg
PSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwotICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IGtNZXNzYWdlUG9ydEludGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBl
ckludGVybmFsRmllbGRDb3VudCArIDE7Ci0KLSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICAgICAg
c3RhdGljIGNvbnN0IGludCBrQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCA9IGtEZWZh
dWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBp
bnQga0Fic3RyYWN0V29ya2VySW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50
ZXJuYWxGaWVsZENvdW50ICsgMTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtXb3JrZXJS
ZXF1ZXN0Q2FjaGVJbmRleCA9IGtBYnN0cmFjdFdvcmtlckludGVybmFsRmllbGRDb3VudCArIDA7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtlckludGVybmFsRmllbGRDb3VudCA9IGtB
YnN0cmFjdFdvcmtlckludGVybmFsRmllbGRDb3VudCArIDE7Ci0KLSAgICAgICAgc3RhdGljIGNv
bnN0IGludCBrV29ya2VyQ29udGV4dFJlcXVlc3RDYWNoZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVy
SW50ZXJuYWxGaWVsZENvdW50ICsgMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBrV29ya2Vy
Q29udGV4dE1pbmltdW1JbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5h
bEZpZWxkQ291bnQgKyAxOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RlZGljYXRlZFdv
cmtlckNvbnRleHRSZXF1ZXN0Q2FjaGVJbmRleCA9IGtXb3JrZXJDb250ZXh0TWluaW11bUludGVy
bmFsRmllbGRDb3VudCArIDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RlZGljYXRlZFdv
cmtlckNvbnRleHRJbnRlcm5hbEZpZWxkQ291bnQgPSBrV29ya2VyQ29udGV4dE1pbmltdW1JbnRl
cm5hbEZpZWxkQ291bnQgKyAxOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMp
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1NoYXJlZFdvcmtlclJlcXVlc3RDYWNoZUluZGV4
ID0ga0Fic3RyYWN0V29ya2VySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBrU2hhcmVkV29ya2VySW50ZXJuYWxGaWVsZENvdW50ID0ga0Fic3RyYWN0V29y
a2VySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtT
aGFyZWRXb3JrZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXggPSBrV29ya2VyQ29udGV4dE1pbmlt
dW1JbnRlcm5hbEZpZWxkQ291bnQgKyAwOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtTaGFy
ZWRXb3JrZXJDb250ZXh0SW50ZXJuYWxGaWVsZENvdW50ID0ga1dvcmtlckNvbnRleHRNaW5pbXVt
SW50ZXJuYWxGaWVsZENvdW50ICsgMTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCi0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga05vdGlmaWNhdGlvblJlcXVlc3RDYWNoZUlu
ZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBrTm90aWZpY2F0aW9uSW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRX
cmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFNWRykK
LSAgICAgICAgc3RhdGljIGNvbnN0IGludCBrU1ZHRWxlbWVudEluc3RhbmNlRXZlbnRMaXN0ZW5l
ckNhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwotICAg
ICAgICBzdGF0aWMgY29uc3QgaW50IGtTVkdFbGVtZW50SW5zdGFuY2VJbnRlcm5hbEZpZWxkQ291
bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwotI2VuZGlmCi0KLSAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93Q29uc29sZUluZGV4ID0ga0RlZmF1bHRX
cmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBr
RE9NV2luZG93SGlzdG9yeUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50
ICsgMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93TG9jYXRpb25iYXJJbmRl
eCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDI7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBpbnQga0RPTVdpbmRvd01lbnViYXJJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVy
bmFsRmllbGRDb3VudCArIDM7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd05h
dmlnYXRvckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgNDsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93UGVyc29uYWxiYXJJbmRleCA9IGtEZWZh
dWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBp
bnQga0RPTVdpbmRvd1NjcmVlbkluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENv
dW50ICsgNjsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93U2Nyb2xsYmFyc0lu
ZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgNzsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBrRE9NV2luZG93U2VsZWN0aW9uSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJ
bnRlcm5hbEZpZWxkQ291bnQgKyA4OwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5k
b3dTdGF0dXNiYXJJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDk7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd1Rvb2xiYXJJbmRleCA9IGtEZWZh
dWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDEwOwotICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtET01XaW5kb3dMb2NhdGlvbkluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVs
ZENvdW50ICsgMTE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd0RPTVNlbGVj
dGlvbkluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTI7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd0V2ZW50TGlzdGVuZXJDYWNoZUluZGV4ID0g
a0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTM7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBpbnQga0RPTVdpbmRvd0VudGVyZWRJc29sYXRlZFdvcmxkSW5kZXggPSBrRGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxNDsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBr
RE9NV2luZG93SW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVs
ZENvdW50ICsgMTU7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBrU3R5bGVTaGVldE93bmVy
Tm9kZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBrU3R5bGVTaGVldEludGVybmFsRmllbGRDb3VudCA9IGtEZWZh
dWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBp
bnQga05hbWVkTm9kZU1hcE93bmVyTm9kZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxG
aWVsZENvdW50ICsgMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBrTmFtZWROb2RlTWFwSW50
ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsK
LQotI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAgICAgIHN0YXRpYyBj
b25zdCBpbnQga0RPTUFwcGxpY2F0aW9uQ2FjaGVDYWNoZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVy
SW50ZXJuYWxGaWVsZENvdW50ICsgMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NQXBw
bGljYXRpb25DYWNoZUZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291
bnQgKyAxOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgICAgIHN0YXRp
YyBjb25zdCBpbnQga1dlYlNvY2tldENhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5h
bEZpZWxkQ291bnQgKyAwOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtXZWJTb2NrZXRJbnRl
cm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwot
I2VuZGlmCi0KICNkZWZpbmUgREVDTEFSRV9DQUxMQkFDSyhOQU1FKSBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHY4IyNOQU1FIyNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogI2RlZmluZSBVU0VfQ0FMTEJBQ0soTkFNRSkgVjhDdXN0b206OnY4IyNOQU1FIyNDYWxsYmFj
awogCkBAIC0xNjgsNyArNzcsNiBAQAogCiAjdW5kZWYgREVDTEFSRV9DQUxMQkFDSwogICAgIH07
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFY4Q3VzdG9tQmluZGluZ19o
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0VXBsb2Fk
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhN
TEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAkocmV2aXNpb24gNTMxNTMpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBh
cmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKICAgICAgICAgeG1sSHR0cFJlcXVlc3RVcGxvYWQtPmFk
ZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogCi0gICAgICAgIGNy
ZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206OmtY
TUxIdHRwUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5
KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIGNhY2hlSW5kZXgpOwogICAgIH0KICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOwogfQpAQCAtNzQsNyArNzQsNyBAQAogICAgICAgICBib29sIHVzZUNh
cHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKICAgICAgICAgeG1sSHR0cFJlcXVlc3RV
cGxvYWQtPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIuZ2V0KCksIHVzZUNhcHR1
cmUpOwogCi0gICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJn
c1sxXSwgVjhDdXN0b206OmtYTUxIdHRwUmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICByZW1v
dmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIGNhY2hlSW5kZXgpOwog
ICAgIH0KIAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCShyZXZpc2lvbiA1MzE1
MykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogICAgICAgICBib29sIHVzZUNhcHR1cmUg
PSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKICAgICAgICAgd2ViU29ja2V0LT5hZGRFdmVudExp
c3RlbmVyKHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKIAotICAgICAgICBjcmVhdGVIaWRk
ZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprV2ViU29ja2V0
Q2FjaGVJbmRleCk7CisgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIo
KSwgYXJnc1sxXSwgY2FjaGVJbmRleCk7CiAgICAgfQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiB9CkBAIC03MSw3ICs3MSw3IEBACiAgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3Jl
U3RyaW5nKGFyZ3NbMF0pOwogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29s
ZWFuVmFsdWUoKTsKICAgICAgICAgd2ViU29ja2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUs
IGxpc3RlbmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKLSAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5k
ZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBWOEN1c3RvbTo6a1dlYlNvY2tldENhY2hlSW5k
ZXgpOworICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3Nb
MV0sIGNhY2hlSW5kZXgpOwogICAgIH0KICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZp
Y2F0aW9uQ2VudGVyQ3VzdG9tLmNwcAkocmV2aXNpb24gNTMxNTMpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDcgKzU4LDcgQEAKICAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJp
bmcoYXJnc1swXSk7CiAgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5W
YWx1ZSgpOwogICAgICAgICBub3RpZmljYXRpb24tPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlz
dGVuZXIsIHVzZUNhcHR1cmUpOwotICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3Mu
SG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprTm90aWZpY2F0aW9uUmVxdWVzdENhY2hlSW5k
ZXgpOworICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3Nb
MV0sIGNhY2hlSW5kZXgpOwogICAgIH0KIAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBA
IC03NCw3ICs3NCw3IEBACiAgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pOwogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUo
KTsKICAgICAgICAgbm90aWZpY2F0aW9uLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3Rl
bmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKLSAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShh
cmdzLkhvbGRlcigpLCBhcmdzWzFdLCBWOEN1c3RvbTo6a05vdGlmaWNhdGlvblJlcXVlc3RDYWNo
ZUluZGV4KTsKKyAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBh
cmdzWzFdLCBjYWNoZUluZGV4KTsKICAgICB9CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9y
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDUzMTUzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcg
QEAKICAgICAgICAgYm9vbCB1c2VDYXB0dXJlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CiAg
ICAgICAgIG1lc3NhZ2VQb3J0LT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCB1c2VD
YXB0dXJlKTsKIAotICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCks
IGFyZ3NbMV0sIFY4Q3VzdG9tOjprTWVzc2FnZVBvcnRSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAg
ICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgY2FjaGVJ
bmRleCk7CiAgICAgfQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CkBAIC02OCw3ICs2
OCw3IEBACiAgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgp
OwogICAgICAgICBtZXNzYWdlUG9ydC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5l
ci5nZXQoKSwgdXNlQ2FwdHVyZSk7CiAKLSAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShh
cmdzLkhvbGRlcigpLCBhcmdzWzFdLCBWOEN1c3RvbTo6a01lc3NhZ2VQb3J0UmVxdWVzdENhY2hl
SW5kZXgpOworICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFy
Z3NbMV0sIGNhY2hlSW5kZXgpOwogICAgIH0KIAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0
V29ya2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gNTMxNTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NyArNTUsNyBAQAogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFs
dWUoKTsKICAgICAgICAgd29ya2VyLT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCB1
c2VDYXB0dXJlKTsKIAotICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVy
KCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCk7
CisgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwg
Y2FjaGVJbmRleCk7CiAgICAgfQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CkBAIC03
MSw3ICs3MSw3IEBACiAgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5W
YWx1ZSgpOwogICAgICAgICB3b3JrZXItPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVu
ZXIuZ2V0KCksIHVzZUNhcHR1cmUpOwogCi0gICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3ko
YXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206OmtBYnN0cmFjdFdvcmtlclJlcXVlc3RD
YWNoZUluZGV4KTsKKyAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigp
LCBhcmdzWzFdLCBjYWNoZUluZGV4KTsKICAgICB9CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdFbGVtZW50SW5zdGFu
Y2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTMxNTMpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAKICAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNv
cmVTdHJpbmcoYXJnc1swXSk7CiAgICAgICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJv
b2xlYW5WYWx1ZSgpOwogICAgICAgICBpbnN0YW5jZS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBs
aXN0ZW5lciwgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJn
cy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhDdXN0b206OmtOb2RlRXZlbnRMaXN0ZW5lckNhY2hlSW5k
ZXgpOworICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3Nb
MV0sIGNhY2hlSW5kZXgpOwogICAgIH0KIAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBA
IC03MCw3ICs3MCw3IEBACiAgICAgICAgIFN0cmluZyB0eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pOwogICAgICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUo
KTsKICAgICAgICAgaW5zdGFuY2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIu
Z2V0KCksIHVzZUNhcHR1cmUpOwotICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3Mu
SG9sZGVyKCksIGFyZ3NbMV0sIFY4Q3VzdG9tOjprTm9kZUV2ZW50TGlzdGVuZXJDYWNoZUluZGV4
KTsKKyAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFd
LCBjYWNoZUluZGV4KTsKICAgICB9CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEF1
ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gNTMxNTMpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBdWRpb0VsZW1lbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0KICNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKKyNpbmNsdWRlICJWOEhUTUxBdWRpb0VsZW1lbnQuaCIKICNpbmNsdWRlICJWOFByb3h5
LmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01Myw3ICs1Myw3IEBACiAgICAgdjg6
OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiByZXN1bHQgPSB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFVTRV9DQUxMQkFDSyhIVE1MQXVkaW9FbGVtZW50Q29uc3RydWN0b3IpKTsKIAogICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0YW5j
ZVRlbXBsYXRlKCk7Ci0gICAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudChWOEN1c3Rv
bTo6a05vZGVNaW5pbXVtSW50ZXJuYWxGaWVsZENvdW50KTsKKyAgICBpbnN0YW5jZS0+U2V0SW50
ZXJuYWxGaWVsZENvdW50KFY4SFRNTEF1ZGlvRWxlbWVudDo6aW50ZXJuYWxGaWVsZENvdW50KTsK
ICAgICByZXN1bHQtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXcoIkhUTUxBdWRpb0VsZW1l
bnQiKSk7CiAgICAgcmVzdWx0LT5Jbmhlcml0KFY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUoVjhD
bGFzc0luZGV4OjpIVE1MQVVESU9FTEVNRU5UKSk7CiAK
</data>
<flag name="review"
          id="28642"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="28643"
          type_id="3"
          status="-"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>