<?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>216731</bug_id>
          
          <creation_ts>2020-09-19 11:29:06 -0700</creation_ts>
          <short_desc>Using [Exposed=Window] with [Default] object toJSON() doesn&apos;t work</short_desc>
          <delta_ts>2020-09-21 12:06:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1690099</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-19 11:29:06 -0700</bug_when>
    <thetext>Using [Exposed=Window] with [Default] object toJSON() doesn&apos;t work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690100</commentid>
    <comment_count>1</comment_count>
      <attachid>409206</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-19 11:35:09 -0700</bug_when>
    <thetext>Created attachment 409206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690230</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-20 15:26:24 -0700</bug_when>
    <thetext>Committed r267331: &lt;https://trac.webkit.org/changeset/267331&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409206.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690397</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-21 12:06:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/69318665&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409206</attachid>
            <date>2020-09-19 11:35:09 -0700</date>
            <delta_ts>2020-09-20 15:26:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216731-20200919113508.patch</filename>
            <type>text/plain</type>
            <size>50852</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDIwLTA5LTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBVc2luZyBbRXhwb3NlZD1XaW5kb3dd
IHdpdGggW0RlZmF1bHRdIG9iamVjdCB0b0pTT04oKSBkb2Vzbid0IHdvcmsKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjczMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVzIGZpbHRlcmluZyBhbiBh
dHRyaWJ1dGUgb3V0IG9mIFtEZWZhdWx0XSB0b0pTT04gb3BlcmF0aW9uIGJhc2VkCisgICAgICAg
IG9uIHdoaWNoIHdoaWNoIGdsb2JhbCBvYmplY3RzIGl0IGlzIGV4cG9zZWQgdG8gYnkgZW5zdXJp
bmcgd2UgYWx3YXlzCisgICAgICAgIHBhc3MgYSBnbG9iYWwgb2JqZWN0IHBvaW50ZXIgYWNjZXNz
b3IgZnVuY3Rpb24gdG8gCisgICAgICAgIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFs
U3RyaW5nRm9yRXhwb3NlZC4gRm9yIGdvb2QgbWVhc3VyZSwKKyAgICAgICAgd2Ugbm93IGFsd2F5
cyBwYXNzIHRoZSBnbG9iYWwgb2JqZWN0IG9iamVjdCBwb2ludGVyIHRvIAorICAgICAgICBHZW5l
cmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyBhcyB3ZWxsIHNvIHRoYXQgaXQgaXMg
YWx3YXlzCisgICAgICAgIGV4cGxpY2l0LgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBuZWVk
ZWQgdG8gc3VwcG9ydCBmaWx0ZXJpbmcgb3V0IFBlcmZvcm1hbmNlLm5hdmlnYXRpb24gYW5kCisg
ICAgICAgIFBlcmZvcm1hbmNlLnRpbWluZyBmcm9tIHRoZSBQZXJmb3JtYW5jZSBpbnRlcmZhY2Un
cyB0b0pTT04gaW1wbGVtZW50YXRpb24KKyAgICAgICAgd2hpY2ggd2lsbCBiZSBhZGRyZXNzZWQg
aW4gYSBzZXBhcmF0ZSBjaGFuZ2UuCisgCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25h
bFN0cmluZ0ZvckV4cG9zZWQpOgorICAgICAgICAoR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0
aW9uYWxTdHJpbmcpOgorICAgICAgICBSZW1vdmUgaW1wbGljaXQgZ2xvYmFsIG9iamVjdCBhY2Nl
c3NvciBzdHJpbmcgY29uc3RydWN0aW9uIGJ5IGFsd2F5cworICAgICAgICByZXF1aXJpbmcgaXQg
dG8gYmUgcGFzc2VkLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RPTVdpbmRv
d0NvbnN0cnVjdG9ycy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RE9NV2luZG93LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcDogQWRkZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1l
bnRhbERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsOgor
ICAgICAgICBBZGQgbmV3IHRlc3QgZm9yIHVwZGF0ZWQgYmVoYXZpb3IuIEkgY291bGRuJ3QgYWRk
IGl0IHRvIHRoZSBleGlzdGluZworICAgICAgICBUZXN0RGVmYXVsdFRvSlNPTi5pZGwgdGVzdCBh
cyB0aGF0IHRlc3QgcmVxdWlyZXMgdGhlIGludGVyZmFjZSBvbmx5IGJlIGV4cG9zZWQKKyAgICAg
ICAgdG8gV2luZG93IHRvIHN1cHBvcnQgdGVzdGluZyBFbmFibGVkQnlTZXR0aW5nLgorCiAyMDIw
LTA5LTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBQZXJmb3Jt
YW5jZSBhbmQgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIGludGVyZmFjZXMgYXJlIG1pc3NpbmcgdG9K
U09OIG9wZXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNjczMTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtMzk3MCw3ICszOTcwLDcgQEAgc3ViIFRvTWV0aG9kTmFtZQogCiBzdWIgR2VuZXJhdGVSdW50
aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2VkCiB7Ci0gICAgbXkgKCRpbnRlcmZh
Y2UsICRjb250ZXh0LCAkY29uanVuY3RzLCAkZ2xvYmFsT2JqZWN0SXNQYXJhbSkgPSBAXzsKKyAg
ICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICRnbG9iYWxPYmplY3RQdHIsICRjb25qdW5jdHMp
ID0gQF87CiAKICAgICBhc3NlcnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgRXhwb3NlZC4iKSBp
ZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RXhwb3NlZH0gZXEgIlZBTFVFX0lTX01J
U1NJTkciOwogCkBAIC0zOTg0LDggKzM5ODQsNiBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpCiAgICAgICAgICRleHBvc2VkID0gQCRleHBvc2VkWzBdOwogICAgIH0K
IAotICAgIG15ICRnbG9iYWxPYmplY3RQdHIgPSAkZ2xvYmFsT2JqZWN0SXNQYXJhbSA/ICImZ2xv
YmFsT2JqZWN0IiA6ICJnbG9iYWxPYmplY3QoKSI7Ci0KICAgICBpZiAoJGV4cG9zZWQgZXEgIldp
bmRvdyIpIHsKICAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNEb2N1bWVudCgpIik7CiAgICAgfSBlbHNpZiAoJGV4cG9zZWQgZXEgIldvcmtlciIpIHsK
QEAgLTQwMDQsMTEgKzQwMDIsOSBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9u
YWxTdHJpCiAjIChlLmcuIElETEludGVyZmFjZSwgSURMQXR0cmlidXRlLCBJRExPcGVyYXRpb24s
IElETEl0ZXJhYmxlLCBldGMuKQogc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFs
U3RyaW5nCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRjb250ZXh0LCAkZ2xvYmFsT2JqZWN0SXNQ
YXJhbSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICRnbG9iYWxPYmplY3RQ
dHIpID0gQF87CiAKICAgICBteSBAY29uanVuY3RzOwotICAgIG15ICRnbG9iYWxPYmplY3RQdHIg
PSAkZ2xvYmFsT2JqZWN0SXNQYXJhbSA/ICRnbG9iYWxPYmplY3RJc1BhcmFtIDogImdsb2JhbE9i
amVjdCgpIjsKLSAgICAKICAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Nl
Y3VyZUNvbnRleHR9KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiKTsKIApAQCAtNDAyMSw3ICs0MDE3LDcgQEAgc3ViIEdlbmVyYXRlUnVudGlt
ZUVuYWJsZUNvbmRpdGlvbmFsU3RyaQogICAgIH0KIAogICAgIGlmICgkY29udGV4dC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RXhwb3NlZH0pIHsKLSAgICAgICAgR2VuZXJhdGVSdW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2VkKCRpbnRlcmZhY2UsICRjb250ZXh0LCBcQGNvbmp1
bmN0cyk7CisgICAgICAgIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9y
RXhwb3NlZCgkaW50ZXJmYWNlLCAkY29udGV4dCwgJGdsb2JhbE9iamVjdFB0ciwgXEBjb25qdW5j
dHMpOwogICAgIH0KIAogICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5h
YmxlZEZvcldvcmxkfSkgewpAQCAtNDU2MCw3ICs0NTU2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUgKEBydW50
aW1lRW5hYmxlZFByb3BlcnRpZXMpIHsKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmlu
ZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb25P
ckF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkg
JHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNv
bmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRvcGVyYXRpb25PckF0dHJpYnV0ZSk7CisgICAg
ICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50
aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwgJG9wZXJhdGlvbk9yQXR0cmli
dXRlLCAiZ2xvYmFsT2JqZWN0KCkiKTsKICAgICAgICAgICAgIG15ICRuYW1lID0gJG9wZXJhdGlv
bk9yQXR0cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCEke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRp
ZXMgPSB0cnVlO1xuIik7CkBAIC00NTc1LDcgKzQ1NzEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEBydW50aW1lRW5hYmxlZEF0
dHJpYnV0ZXMpIHsKICAgICAgICAgICAgIGlmIChOZWVkc1J1bnRpbWVSZWFkV3JpdGVDaGVjaygk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKLSAgICAgICAgICAgICAgICBteSAkcnVudGlt
ZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9u
YWxTdHJpbmcoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkgJHJ1
bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRp
dGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUsICJnbG9iYWxPYmplY3QoKSIpOwog
CiAgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwog
ICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRl
cmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwpAQCAtNDcwOCw3ICs0NzA0LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbmV4dCB1bmxlc3MgQXR0cmlidXRlU2hv
dWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKLSAgICAgICAgbXkgJHJ1bnRp
bWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlv
bmFsU3RyaW5nKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICBteSAkcnVudGltZUVu
YWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxT
dHJpbmcoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSwgImdsb2JhbE9iamVjdCgpIik7CiAgICAgICAg
IG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgbXkgJGdldHRl
ciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7CiAgICAgICAgIG15ICRzZXR0ZXIgPSBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpID8gIm51
bGxwdHIiIDogR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
YXR0cmlidXRlKTsKQEAgLTQ3NDUsNyArNDc0MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRvcGVy
YXRpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CiAKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IldlYkNvcmVKU0NsaWVudERhdGEuaCIpOwotICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRp
dGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGlu
dGVyZmFjZSwgJG9wZXJhdGlvbik7CisgICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9u
YWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJm
YWNlLCAkb3BlcmF0aW9uLCAiZ2xvYmFsT2JqZWN0KCkiKTsKICAgICAgICAgbXkgJGZ1bmN0aW9u
TmFtZSA9ICRvcGVyYXRpb24tPm5hbWU7CiAgICAgICAgIG15ICRpbXBsZW1lbnRhdGlvbkZ1bmN0
aW9uID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24p
OwogICAgICAgICBteSAkZnVuY3Rpb25MZW5ndGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkb3BlcmF0
aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5k
b3dDb25zdHJ1Y3RvcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsCShyZXZpc2lvbiAyNjczMTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2luZG93Q29uc3Ry
dWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIHBhcnRpYWwgaW50ZXJm
YWNlIERPTVdpbmRvdyB7CiAgICAgYXR0cmlidXRlIEV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0Nv
bnN0cnVjdG9yIEV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzsKICAgICBhdHRyaWJ1dGUgVGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvciBUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0
ZTsKKyAgICBhdHRyaWJ1dGUgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0
cnVjdG9yIFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ7CiAgICAgYXR0cmlidXRl
IFRlc3ROb2RlQ29uc3RydWN0b3IgVGVzdE5vZGU7CiAgICAgYXR0cmlidXRlIFRlc3RPYmpDb25z
dHJ1Y3RvciBUZXN0T2JqZWN0OwogICAgIGF0dHJpYnV0ZSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2
ZW50Q29uc3RydWN0b3IgVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBw
bGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNjczMTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAko
d29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOSBAQCBXZWJET01UZXN0RGVmYXVsdFRvSlNPTi5o
OiAKIEpTVGVzdERlZmF1bHRUb0pTT05FbnVtLmg6IAogRE9NVGVzdERlZmF1bHRUb0pTT05FbnVt
Lmg6IAogV2ViRE9NVGVzdERlZmF1bHRUb0pTT05FbnVtLmg6IAorSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkLmg6IAorRE9NVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZC5oOiAKK1dlYkRPTVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaDogCiBK
U1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5oOiAKIERPTVRlc3REZWZhdWx0
VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZS5oOiAKIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZS5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZC5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
RXhwb3NlZD0oV2luZG93LFdvcmtlcikKK10gaW50ZXJmYWNlIFRlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG5vcm1hbEF0dHJp
YnV0ZTsKKyAgICBbRXhwb3NlZD1XaW5kb3ddIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgZmls
dGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGU7CisgICAgW0V4cG9zZWQ9V29ya2VyXSByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRl
OworCisgICAgW0RlZmF1bHRdIG9iamVjdCB0b0pTT04oKTsKK307CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9X
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0
cnVjdG9ycy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiBwYXJ0aWFsIGludGVy
ZmFjZSBXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgYXR0cmlidXRlIEV4cG9zZWRUb1dvcmtlckFu
ZFdpbmRvd0NvbnN0cnVjdG9yIEV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzsKKyAgICBhdHRyaWJ1
dGUgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yIFRlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ7CiAgICAgYXR0cmlidXRlIFRlc3ROb2RlQ29uc3Ry
dWN0b3IgVGVzdE5vZGU7CiAgICAgYXR0cmlidXRlIFRlc3RPYmpDb25zdHJ1Y3RvciBUZXN0T2Jq
ZWN0OwogICAgIGF0dHJpYnV0ZSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3Ig
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkocmV2aXNpb24g
MjY3MzE5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9N
V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cu
aCIKICNpbmNsdWRlICJKU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmgiCisjaW5jbHVkZSAi
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmgiCiAjaW5jbHVkZSAiSlNUZXN0
Tm9kZS5oIgogI2luY2x1ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIkpTVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudC5oIgpAQCAtNTYsNiArNTcsOCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
RE9NV2luZG93RXhwb3NlZFRvCiBib29sIHNldEpTRE9NV2luZG93RXhwb3NlZFRvV29ya2VyQW5k
V2luZG93Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRv
d1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNE
T01XaW5kb3dUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNET01XaW5kb3dUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc0RPTVdpbmRvd1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNET01X
aW5kb3dUZXN0Tm9kZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNE
T01XaW5kb3dUZXN0T2JqZWN0Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTY3LDcgKzcwLDcgQEAgdXNp
bmcgSlNET01XaW5kb3dDb25zdHJ1Y3RvciA9IEpTRE9NQ29ucwogCiAvKiBIYXNoIHRhYmxlICov
CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RPTVdpbmRvd1RhYmxl
SW5kZXhbMThdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9N
V2luZG93VGFibGVJbmRleFsxOV0gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDAsIDE2IH0s
CiAgICAgeyAtMSwgLTEgfSwKQEAgLTc3LDE1ICs4MCwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNECiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzLCAtMSB9LAorICAgIHsgNCwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgNCwgLTEgfSwKKyAgICB7IDUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IDEsIDE3IH0sCi0gICAgeyAyLCAtMSB9LAorICAgIHsgMiwgMTggfSwKKyAgICB7IDMsIC0xIH0s
CiB9OwogCiAKQEAgLTkzLDEyICs5NywxMyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNET01XaW5kb3dUCiB7CiAgICAgeyAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0RPTVdpbmRvd0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNET01X
aW5kb3dFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRl
c3RDb25kaXRpb25hbGx5UmVhZFdyaXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd1Rlc3RDb25kaXRp
b25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0RPTVdpbmRvd1Rlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTRE9NV2luZG93VGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5vZGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzRE9NV2luZG93VGVzdE5vZGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTRE9NV2luZG93VGVzdE5vZGVDb25z
dHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3RPYmplY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93VGVz
dE9iamVjdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNET01XaW5kb3dUZXN0T2JqZWN0Q29uc3RydWN0b3IpIH0g
fSwKICAgICB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRv
d1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTRE9NV2luZG93VGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTRE9NV2luZG93VGFibGUgPSB7IDUsIDE1LCB0cnVlLCBKU0RPTVdpbmRvdzo6
aW5mbygpLCBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzLCBKU0RPTVdpbmRvd1RhYmxlSW5kZXggfTsK
K3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNET01XaW5kb3dUYWJsZSA9IHsgNiwgMTUsIHRydWUs
IEpTRE9NV2luZG93OjppbmZvKCksIEpTRE9NV2luZG93VGFibGVWYWx1ZXMsIEpTRE9NV2luZG93
VGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTRE9NV2luZG93Q29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gSlNFdmVudFRhcmdldDo6Z2V0Q29uc3Ry
dWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOwpAQCAtMjMwLDYgKzIzNSwyOSBAQCBib29sIHNldEpT
RE9NV2luZG93VGVzdENvbmRpdGlvbmFsbHlSZWFkCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0RPTVdpbmRvdz46OnNldDxzZXRKU0RPTVdpbmRvd1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
Q29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIlRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlIik7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRD
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNE
T01XaW5kb3cmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIHJldHVybiBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6
OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09i
amVjdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93VGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTRE9NV2luZG93Pjo6Z2V0PGpzRE9NV2luZG93VGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIp
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NV2luZG93JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQor
eworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmpl
Y3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiKSwg
c3RybGVuKCJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIikpLCB2YWx1ZSk7Cit9
CisKK2Jvb2wgc2V0SlNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpzZXQ8c2V0SlNET01XaW5kb3dUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQiKTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzRE9NV2luZG93
VGVzdE5vZGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNET01XaW5kb3cmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGlj
YWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNjkgQEAKKy8qCisgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAg
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNET01BdHRy
aWJ1dGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMu
aCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFu
YWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworLy8g
RnVuY3Rpb25zCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKKworLy8gQXR0cmlidXRlcworCitKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkTm9ybWFsQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBv
c2VkV2luZG93QXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CisKK2NsYXNzIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0
dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAg
ICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQ
cm90b3R5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZTo6
QmFzZSk7CisKK3VzaW5nIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0
cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkPjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7
CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9u
UHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKK3Rl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcikgfTsK
KworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIm5vcm1hbEF0dHJpYnV0
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWROb3JtYWxBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiZmlsdGVyZWRCeUV4
cG9zZWRXaW5kb3dBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dB
dHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCisgICAgeyAiZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAg
eyAidG9KU09OIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVG
dW5jdGlvblRvSlNPTiksIChpbnRwdHJfdCkgKDApIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5m
byBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZt
LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmluZm8oKSwgSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
KyAgICBib29sIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSBmYWxzZTsKKyAgICBpZiAo
IWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1l
UHJvcGVydGllcyA9IHRydWU7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJmaWx0ZXJl
ZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZSIpLCBzdHJsZW4oImZpbHRlcmVkQnlFeHBvc2VkV2lu
ZG93QXR0cmlidXRlIikpOworICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CisgICAg
ICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQor
ICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgeworICAgICAgICBo
YXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oImZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlIiksIHN0cmxlbigiZmls
dGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKKyAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpT
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICB9CisgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYg
c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQorICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9i
amVjdCh2bSk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9
CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6
OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCkgfTsKKworSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkOjpKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBw
ZXI8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4oc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAg
ICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1h
cmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFz
cyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9i
amVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5
cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
eworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkPih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3I+KHZtLCAq
anNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3Zv
aWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQoreworICAgIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZCo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZDo6fkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCgpOworfQor
Cit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQq
IElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+OjpjYXN0
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBJRExPcGVyYXRpb248SlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4oSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJv
dG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWRQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChV
TkxJS0VMWSghcHJvdG90eXBlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkTm9ybWFsQXR0cmlidXRlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQmIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExvbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubm9ybWFsQXR0cmlidXRlKCkpKSk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZE5vcm1h
bEF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+OjpnZXQ8anNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkTm9ybWFsQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
bm9ybWFsQXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkJiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExEb3Vi
bGU+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZmlsdGVyZWRCeUV4cG9z
ZWRXaW5kb3dBdHRyaWJ1dGUoKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPjo6Z2V0PGpzVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRlcmVk
QnlFeHBvc2VkV29ya2VyQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQmIHRoaXNPYmpl
Y3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5maWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSgpKSkpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRGaWx0ZXJl
ZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+Ojpn
ZXQ8anNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRX
b3JrZXJBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0
dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keShKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiwgSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Cisg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvKiByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibm9ybWFsQXR0cmlidXRlIiksIHRvSlM8
SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubm9ybWFsQXR0
cmlidXRlKCkpKTsKKyAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQo
KSkgeworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlIiksIHRvSlM8SURMRG91Ymxl
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5maWx0ZXJlZEJ5RXhwb3Nl
ZFdpbmRvd0F0dHJpYnV0ZSgpKSk7CisgICAgfQorICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJB
dHRyaWJ1dGUiKSwgdG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlKCkpKTsKKyAgICB9
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3Rv
dHlwZUZ1bmN0aW9uVG9KU09OKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD46OmNhbGw8anNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmNhbGxGcmFtZSwgInRvSlNPTiIpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OnN1YnNwYWNlRm9ySW1wbChKU0M6
OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5z
dWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuZ2V0KCkpCisgICAgICAgIHJldHVybiBz
cGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4gfHwgIUpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6bmVlZHNEZXN0cnVjdGlvbik7Cisg
ICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtl
VW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVj
dGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZCk7CisgICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOworICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmdldCgp
OworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJO
SU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6
OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRw
dXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQK
K0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGws
IEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqPihjZWxsKTsKKyAgICBhbmFs
eXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgp
KTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAg
ICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6
ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29sIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25z
dCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNF
RF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkT3du
ZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250
ZXh0KQoreworICAgIGF1dG8qIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9
IHN0YXRpY19jYXN0PEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCo+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC0+d3JhcHBlZCgpLCBqc1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdS
SVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQor
ZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxz
ZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMzRUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkRVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+
JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2
b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsK
KyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19p
ZGVudGlmaWVyKCI/P183VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEBXZWJDb3Jl
QEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZO
N1dlYkNvcmUzNFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRFWzJdOworI2VuZGlm
CisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWQgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8v
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVm
aW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPjo6dmFsdWUsICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkIGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0
aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisg
ICAgLy8gVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCBoYXMgc3ViY2xhc3Nlcy4g
SWYgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCBoYXMgc3ViY2xhc3NlcyB0aGF0
IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhh
cmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmli
dXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChh
Y3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAg
ICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkJiBpbXBs
KQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
aW1wbCk7Cit9CisKK1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCo+KHZtLCB2YWx1ZSkpCisgICAg
ICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDkzIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZCA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZD4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdy
YXBwZXI8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD47CisgICAgc3RhdGljIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogY3JlYXRlKEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPihnbG9i
YWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7
CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJv
dG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNW
YWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisK
KyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3Bh
Y2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZv
aWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3Byb3RlY3RlZDoK
KyAgICBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworY2xh
c3MgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkT3duZXIgOiBwdWJsaWMgSlND
OjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0
LCBKU0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitp
bmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQm
LCBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKikKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkT3duZXI+IG93
bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVy
S2V5KFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIHdyYXBwYWJsZU9iamVjdCkK
K3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogaW1wbCkgeyByZXR1
cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkg
OiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZD4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQ+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpq
c051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFp
dHM8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4geworICAgIHVzaW5nIFdyYXBw
ZXJDbGFzcyA9IEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDsKKyAgICB1c2lu
ZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZCo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xv
YmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyNjczMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAj
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU0V4cG9zZWRUb1dvcmtl
ckFuZFdpbmRvdy5oIgorI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZC5oIgogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIK
ICNpbmNsdWRlICJKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCIKQEAgLTUzLDYgKzU0LDgg
QEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlQwogYm9vbCBzZXRKU1dv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1dvcmtlckdsb2JhbFNjb3BlRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKIGJvb2wgc2V0SlNXb3JrZXJHbG9iYWxTY29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0Nv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNXb3JrZXJHbG9iYWxTY29w
ZVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9v
bCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNXb3JrZXJHbG9iYWxT
Y29wZVRlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNXb3JrZXJHbG9iYWxTY29w
ZVRlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1dvcmtl
ckdsb2JhbFNjb3BlVGVzdE9iamVjdENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkBAIC02NCwxNiArNjcsMjQg
QEAgdXNpbmcgSlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yID0gSgogCiAvKiBIYXNoIHRh
YmxlICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1dvcmtlckds
b2JhbFNjb3BlVGFibGVJbmRleFsxMF0gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbMThdID0geworICAgIHsgLTEs
IC0xIH0sCisgICAgeyAwLCAxNiB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgOCB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAzLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxLCA5IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA0LCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAxLCAxNyB9LAogICAgIHsgMiwgLTEgfSwKIH07CiAKQEAgLTgxLDEyICs5Miwx
MyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNXCiBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQogewog
ICAgIHsgIkV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxT
Y29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNXb3JrZXJHbG9iYWxT
Y29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxT
Y29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTV29y
a2VyR2xvYmFsU2NvcGVUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0
b3IpIH0gfSwKICAgICB7ICJUZXN0Tm9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29wZVRl
c3ROb2RlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdE5vZGVDb25zdHJ1Y3Rv
cikgfSB9LAogICAgIHsgIlRlc3RPYmplY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVU
ZXN0T2JqZWN0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdE9iamVjdENvbnN0
cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNXb3JrZXJHbG9iYWxTY29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3Ip
IH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZVRh
YmxlID0geyA0LCA3LCB0cnVlLCBKU1dvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTV29ya2Vy
R2xvYmFsU2NvcGVUYWJsZVZhbHVlcywgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsK
K3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyA1LCAx
NSwgdHJ1ZSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtlckdsb2JhbFNjb3Bl
VGFibGVWYWx1ZXMsIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CiB0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcmV0dXJuIEpTRXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFs
T2JqZWN0KTsKQEAgLTIwNSw2ICsyMTcsMjkgQEAgYm9vbCBzZXRKU1dvcmtlckdsb2JhbFNjb3Bl
RXhwb3NlZFRvV29yawogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNXb3JrZXJHbG9iYWxTY29w
ZT46OnNldDxzZXRKU1dvcmtlckdsb2JhbFNjb3BlRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29u
c3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIkV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyIpOwogfQogCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNXb3JrZXJHbG9iYWxTY29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWRDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNXb3JrZXJHbG9iYWxTY29wZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1dv
cmtlckdsb2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTV29y
a2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNXb3JrZXJHbG9iYWxTY29wZVRlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiKTsKK30KKwor
c3RhdGljIGlubGluZSBib29sIHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4g
dGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZCIpLCBzdHJsZW4oIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiKSksIHZh
bHVlKTsKK30KKworYm9vbCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTV29ya2VyR2xvYmFsU2NvcGU+Ojpz
ZXQ8c2V0SlNXb3JrZXJHbG9iYWxTY29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWRDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIpOworfQorCiBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrZXJHbG9iYWxTY29wZVRlc3ROb2RlQ29uc3RydWN0
b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTV29ya2VyR2xv
YmFsU2NvcGUmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxP
YmplY3QpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>