<?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>127488</bug_id>
          
          <creation_ts>2014-01-23 09:12:19 -0800</creation_ts>
          <short_desc>REGRESSION(r162612): broke the build (Requested by mhahnenberg on #webkit).</short_desc>
          <delta_ts>2014-01-23 09:14:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>127435</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>971160</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-23 09:12:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/162612 broke the build:
broke the build (Requested by mhahnenberg on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971163</commentid>
    <comment_count>1</comment_count>
      <attachid>221987</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-23 09:12:32 -0800</bug_when>
    <thetext>Created attachment 221987
ROLLOUT of r162612

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971166</commentid>
    <comment_count>2</comment_count>
      <attachid>221987</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-23 09:14:36 -0800</bug_when>
    <thetext>Comment on attachment 221987
ROLLOUT of r162612

Clearing flags on attachment: 221987

Committed r162613: &lt;http://trac.webkit.org/changeset/162613&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971167</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-23 09:14:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221987</attachid>
            <date>2014-01-23 09:12:32 -0800</date>
            <delta_ts>2014-01-23 09:14:36 -0800</delta_ts>
            <desc>ROLLOUT of r162612</desc>
            <filename>bug-127488-20140123091231.patch</filename>
            <type>text/plain</type>
            <size>58989</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyNjEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWRmN2UyNTYwMTE4NTdjMjU3NGNmNzU1ODllN2NmM2Vk
NTJhZjNhOC4uOTdiZjJiMDRlMWFjN2FjNDczNDgzMDUxZmRkM2Q5MGI1NTUzZGI4OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDE0LTAxLTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
KworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTYyNjEyLgorICAgICAgICBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNjI2MTIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQ4OAorCisgICAgICAgIGJyb2tlIHRoZSBi
dWlsZCAoUmVxdWVzdGVkIGJ5IG1oYWhuZW5iZXJnIG9uICN3ZWJraXQpLgorCisgICAgICAgICog
U2NyaXB0cy9idWlsZC1qc2M6CisgICAgICAgICoganNjLWNsaS9qc2MtY2xpLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IFJlbW92ZWQuCisgICAgICAgICoganNjLWNsaS9qc2MtY2xpL0NMSUlu
c3RhbmNlLmg6IFJlbW92ZWQuCisgICAgICAgICoganNjLWNsaS9qc2MtY2xpL0NMSUluc3RhbmNl
Lm06IFJlbW92ZWQuCisgICAgICAgICoganNjLWNsaS9qc2MtY2xpL0pTTW9kdWxlLmg6IFJlbW92
ZWQuCisgICAgICAgICoganNjLWNsaS9qc2MtY2xpL0pTTW9kdWxlLm06IFJlbW92ZWQuCisgICAg
ICAgICoganNjLWNsaS9qc2MtY2xpL0pTUnVuTG9vcFRocmVhZC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGpzYy1jbGkvanNjLWNsaS9KU1J1bkxvb3BUaHJlYWQubTogUmVtb3ZlZC4KKyAgICAgICAg
KiBqc2MtY2xpL2pzYy1jbGkvUmVhZEV2YWxQcmludExvb3AuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBqc2MtY2xpL2pzYy1jbGkvUmVhZEV2YWxQcmludExvb3AubTogUmVtb3ZlZC4KKyAgICAgICAg
KiBqc2MtY2xpL2pzYy1jbGkvUnVuTG9vcFRocmVhZC5oOiBSZW1vdmVkLgorICAgICAgICAqIGpz
Yy1jbGkvanNjLWNsaS9SdW5Mb29wVGhyZWFkLm06IFJlbW92ZWQuCisgICAgICAgICoganNjLWNs
aS9qc2MtY2xpL1NjcmlwdElucHV0U291cmNlLmg6IFJlbW92ZWQuCisgICAgICAgICoganNjLWNs
aS9qc2MtY2xpL1NjcmlwdElucHV0U291cmNlLm06IFJlbW92ZWQuCisgICAgICAgICoganNjLWNs
aS9qc2MtY2xpL21haW4ubTogUmVtb3ZlZC4KKwogMjAxNC0wMS0yMyAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEJhc2ljIGZyYW1ld29yayBmb3Ig
YSBtb2Rlcm4ganNjIENMSQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MgYi9U
b29scy9TY3JpcHRzL2J1aWxkLWpzYwppbmRleCBlYTJlNWUwMTgzNzdjNDEyYjQzZGRjM2VkYWQ5
MDdjMDBhNzY4MjA2Li4xODExODMwNDJhZjVhYzJiODBiM2I3MDg5ZjdkNGM3NjAxOTBlYzEyIDEw
MDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYworKysgYi9Ub29scy9TY3JpcHRzL2J1
aWxkLWpzYwpAQCAtMTE4LDQgKzExOCwzIEBAIHN1YiBidWlsZE15UHJvamVjdAogCiBidWlsZE15
UHJvamVjdCgiU291cmNlL1dURiIsICJXVEYiKTsKIGJ1aWxkTXlQcm9qZWN0KCJTb3VyY2UvSmF2
YVNjcmlwdENvcmUiLCAiSmF2YVNjcmlwdENvcmUiKTsKLWJ1aWxkTXlQcm9qZWN0KCJUb29scy9q
c2MtY2xpIiwgImpzYy1jbGkiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2pzYy1jbGkvanNjLWNsaS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvanNjLWNsaS9qc2MtY2xpLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3OGZhYzFl
YTE5ZTRhMWQxYzQzZGJhMzM2YmU1Y2VkNzJmZGNjYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvanNjLWNsaS9qc2MtY2xpLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwzMDggKzAsMCBAQAotLy8gISQqVVRG
OCokIQotewotCWFyY2hpdmVWZXJzaW9uID0gMTsKLQljbGFzc2VzID0gewotCX07Ci0Jb2JqZWN0
VmVyc2lvbiA9IDQ2OwotCW9iamVjdHMgPSB7Ci0KLS8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCi0JCUMyNDY1OTA1MTg5MDJBQ0UwMDI5MDkyRSAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1
OTA0MTg5MDJBQ0UwMDI5MDkyRSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKLQkJQzI0
NjU5MDgxODkwMkFDRTAwMjkwOTJFIC8qIG1haW4ubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1OTA3MTg5MDJBQ0UwMDI5MDkyRSAvKiBtYWluLm0g
Ki87IH07Ci0JCUMyNDY1OTE0MTg5MDJCOTEwMDI5MDkyRSAvKiBDTElJbnN0YW5jZS5tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0NjU5MTMxODkwMkI5
MTAwMjkwOTJFIC8qIENMSUluc3RhbmNlLm0gKi87IH07Ci0JCUMyNDY1OTE3MTg5MDJDNDIwMDI5
MDkyRSAvKiBKU01vZHVsZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzI0NjU5MTYxODkwMkM0MjAwMjkwOTJFIC8qIEpTTW9kdWxlLm0gKi87IH07Ci0J
CUMyNDY1OTFBMTg5MDJDQ0MwMDI5MDkyRSAvKiBKU1J1bkxvb3BUaHJlYWQubSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1OTE5MTg5MDJDQ0MwMDI5
MDkyRSAvKiBKU1J1bkxvb3BUaHJlYWQubSAqLzsgfTsKLQkJQzI0NjU5MUQxODkwMkQxMDAwMjkw
OTJFIC8qIFJ1bkxvb3BUaHJlYWQubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyNDY1OTFDMTg5MDJEMTAwMDI5MDkyRSAvKiBSdW5Mb29wVGhyZWFkLm0g
Ki87IH07Ci0JCUMyNDY1OTIwMTg5MDJFMTUwMDI5MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0NjU5MUYx
ODkwMkUxNTAwMjkwOTJFIC8qIFJlYWRFdmFsUHJpbnRMb29wLm0gKi87IH07Ci0JCUMyNDY1OTIz
MTg5MDJFQTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNvdXJjZS5tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0NjU5MjIxODkwMkVBNDAwMjkwOTJFIC8q
IFNjcmlwdElucHV0U291cmNlLm0gKi87IH07Ci0JCUMyNDY1OTJDMTg5MDVGQzEwMDI5MDkyRSAv
KiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ2NTkyQjE4OTA1RkMxMDAyOTA5MkUgLyogSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrICovOyB9OwotLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0K
LS8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQlDMjQ2NThGRjE4
OTAyQUNFMDAyOTA5MkUgLyogQ29weSBGaWxlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWENvcHlGaWxl
c0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZHN0UGF0
aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOwotCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7Ci0JCQlm
aWxlcyA9ICgKLQkJCSk7Ci0JCQluYW1lID0gIkNvcHkgRmlsZXMiOwotCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7Ci0JCX07Ci0vKiBFbmQgUEJYQ29weUZpbGVzQnVp
bGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwotCQlDMjQ2NTkwMTE4OTAyQUNFMDAyOTA5MkUgLyoganNjLWNsaSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gImpzYy1jbGkiOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlDMjQ2NTkwNDE4OTAyQUNFMDAyOTA5MkUgLyogRm91
bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3Jr
OyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsg
c291cmNlVHJlZSA9IFNES1JPT1Q7IH07Ci0JCUMyNDY1OTA3MTg5MDJBQ0UwMDI5MDkyRSAvKiBt
YWluLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IG1haW4ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQzI0NjU5MTIxODkwMkI5MTAwMjkwOTJFIC8qIENMSUluc3RhbmNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENMSUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUMyNDY1OTEzMTg5MDJCOTEwMDI5MDkyRSAvKiBDTElJbnN0YW5jZS5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBDTElJbnN0YW5jZS5tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlDMjQ2NTkxNTE4OTAyQzQyMDAyOTA5MkUgLyogSlNNb2R1
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI0NjU5MTYxODkwMkM0MjAwMjkwOTJFIC8qIEpTTW9k
dWxlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IEpTTW9kdWxlLm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyNDY1OTE4MTg5MDJDQ0MwMDI5MDkyRSAvKiBK
U1J1bkxvb3BUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSdW5M
b29wVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyNDY1OTE5MTg5MDJD
Q0MwMDI5MDkyRSAvKiBKU1J1bkxvb3BUaHJlYWQubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5v
YmpjOyBwYXRoID0gSlNSdW5Mb29wVGhyZWFkLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUMyNDY1OTFCMTg5MDJEMTAwMDI5MDkyRSAvKiBSdW5Mb29wVGhyZWFkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkxvb3BUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQzI0NjU5MUMxODkwMkQxMDAwMjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gUnVuTG9vcFRocmVhZC5tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjQ2NTkxRTE4OTAyRTE1MDAyOTA5MkUgLyog
UmVhZEV2YWxQcmludExvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVh
ZEV2YWxQcmludExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI0NjU5MUYx
ODkwMkUxNTAwMjkwOTJFIC8qIFJlYWRFdmFsUHJpbnRMb29wLm0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMub2JqYzsgcGF0aCA9IFJlYWRFdmFsUHJpbnRMb29wLm07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUMyNDY1OTIxMTg5MDJFQTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNvdXJj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRJbnB1dFNvdXJjZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjQ2NTkyMjE4OTAyRUE0MDAyOTA5MkUg
LyogU2NyaXB0SW5wdXRTb3VyY2UubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRo
ID0gU2NyaXB0SW5wdXRTb3VyY2UubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzI0
NjU5MkIxODkwNUZDMTAwMjkwOTJFIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3
b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwotLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCi0v
KiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCUMyNDY1OEZFMTg5
MDJBQ0UwMDI5MDkyRSAvKiBGcmFtZXdvcmtzICovID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMg
PSAoCi0JCQkJQzI0NjU5MkMxODkwNUZDMTAwMjkwOTJFIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJCUMyNDY1OTA1MTg5MDJBQ0UwMDI5MDkyRSAvKiBG
b3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLwot
CQlDMjQ2NThGODE4OTAyQUNFMDAyOTA5MkUgPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNo
aWxkcmVuID0gKAotCQkJCUMyNDY1OTA2MTg5MDJBQ0UwMDI5MDkyRSAvKiBqc2MtY2xpICovLAot
CQkJCUMyNDY1OTAzMTg5MDJBQ0UwMDI5MDkyRSAvKiBGcmFtZXdvcmtzICovLAotCQkJCUMyNDY1
OTAyMTg5MDJBQ0UwMDI5MDkyRSAvKiBQcm9kdWN0cyAqLywKLQkJCSk7Ci0JCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwotCQl9OwotCQlDMjQ2NTkwMjE4OTAyQUNFMDAyOTA5MkUgLyogUHJvZHVj
dHMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUMyNDY1
OTAxMTg5MDJBQ0UwMDI5MDkyRSAvKiBqc2MtY2xpICovLAotCQkJKTsKLQkJCW5hbWUgPSBQcm9k
dWN0czsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCUMyNDY1OTAzMTg5MDJB
Q0UwMDI5MDkyRSAvKiBGcmFtZXdvcmtzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQlj
aGlsZHJlbiA9ICgKLQkJCQlDMjQ2NTkyQjE4OTA1RkMxMDAyOTA5MkUgLyogSmF2YVNjcmlwdENv
cmUuZnJhbWV3b3JrICovLAotCQkJCUMyNDY1OTA0MTg5MDJBQ0UwMDI5MDkyRSAvKiBGb3VuZGF0
aW9uLmZyYW1ld29yayAqLywKLQkJCSk7Ci0JCQluYW1lID0gRnJhbWV3b3JrczsKLQkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCUMyNDY1OTA2MTg5MDJBQ0UwMDI5MDkyRSAvKiBq
c2MtY2xpICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlD
MjQ2NTkwNzE4OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tICovLAotCQkJCUMyNDY1OTEyMTg5MDJC
OTEwMDI5MDkyRSAvKiBDTElJbnN0YW5jZS5oICovLAotCQkJCUMyNDY1OTEzMTg5MDJCOTEwMDI5
MDkyRSAvKiBDTElJbnN0YW5jZS5tICovLAotCQkJCUMyNDY1OTE1MTg5MDJDNDIwMDI5MDkyRSAv
KiBKU01vZHVsZS5oICovLAotCQkJCUMyNDY1OTE2MTg5MDJDNDIwMDI5MDkyRSAvKiBKU01vZHVs
ZS5tICovLAotCQkJCUMyNDY1OTE4MTg5MDJDQ0MwMDI5MDkyRSAvKiBKU1J1bkxvb3BUaHJlYWQu
aCAqLywKLQkJCQlDMjQ2NTkxOTE4OTAyQ0NDMDAyOTA5MkUgLyogSlNSdW5Mb29wVGhyZWFkLm0g
Ki8sCi0JCQkJQzI0NjU5MUIxODkwMkQxMDAwMjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQuaCAqLywK
LQkJCQlDMjQ2NTkxQzE4OTAyRDEwMDAyOTA5MkUgLyogUnVuTG9vcFRocmVhZC5tICovLAotCQkJ
CUMyNDY1OTFFMTg5MDJFMTUwMDI5MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5oICovLAotCQkJ
CUMyNDY1OTFGMTg5MDJFMTUwMDI5MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5tICovLAotCQkJ
CUMyNDY1OTIxMTg5MDJFQTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNvdXJjZS5oICovLAotCQkJ
CUMyNDY1OTIyMTg5MDJFQTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNvdXJjZS5tICovLAotCQkJ
KTsKLQkJCXBhdGggPSAianNjLWNsaSI7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9
OwotLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0
IHNlY3Rpb24gKi8KLQkJQzI0NjU5MDAxODkwMkFDRTAwMjkwOTJFIC8qIGpzYy1jbGkgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
QzI0NjU5MEYxODkwMkFDRTAwMjkwOTJFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJqc2MtY2xpIiAqLzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCUMy
NDY1OEZEMTg5MDJBQ0UwMDI5MDkyRSAvKiBTb3VyY2VzICovLAotCQkJCUMyNDY1OEZFMTg5MDJB
Q0UwMDI5MDkyRSAvKiBGcmFtZXdvcmtzICovLAotCQkJCUMyNDY1OEZGMTg5MDJBQ0UwMDI5MDky
RSAvKiBDb3B5IEZpbGVzICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJ
ZGVwZW5kZW5jaWVzID0gKAotCQkJKTsKLQkJCW5hbWUgPSAianNjLWNsaSI7Ci0JCQlwcm9kdWN0
TmFtZSA9ICJqc2MtY2xpIjsKLQkJCXByb2R1Y3RSZWZlcmVuY2UgPSBDMjQ2NTkwMTE4OTAyQUNF
MDAyOTA5MkUgLyoganNjLWNsaSAqLzsKLQkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9k
dWN0LXR5cGUudG9vbCI7Ci0JCX07Ci0vKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8K
LQotLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCi0JCUMyNDY1OEY5MTg5MDJBQ0UwMDI5
MDkyRSAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKLQkJCWlzYSA9IFBCWFByb2plY3Q7Ci0JCQlh
dHRyaWJ1dGVzID0gewotCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAwNTAwOwotCQkJCU9SR0FOSVpB
VElPTk5BTUUgPSAiTWFyayBIYWhuZW5iZXJnIjsKLQkJCX07Ci0JCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gQzI0NjU4RkMxODkwMkFDRTAwMjkwOTJFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYUHJvamVjdCAianNjLWNsaSIgKi87Ci0JCQljb21wYXRpYmlsaXR5VmVyc2lv
biA9ICJYY29kZSAzLjIiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwotCQkJaGFz
U2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7Ci0JCQlrbm93blJlZ2lvbnMgPSAoCi0JCQkJZW4sCi0J
CQkpOwotCQkJbWFpbkdyb3VwID0gQzI0NjU4RjgxODkwMkFDRTAwMjkwOTJFOwotCQkJcHJvZHVj
dFJlZkdyb3VwID0gQzI0NjU5MDIxODkwMkFDRTAwMjkwOTJFIC8qIFByb2R1Y3RzICovOwotCQkJ
cHJvamVjdERpclBhdGggPSAiIjsKLQkJCXByb2plY3RSb290ID0gIiI7Ci0JCQl0YXJnZXRzID0g
KAotCQkJCUMyNDY1OTAwMTg5MDJBQ0UwMDI5MDkyRSAvKiBqc2MtY2xpICovLAotCQkJKTsKLQkJ
fTsKLS8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQlDMjQ2NThGRDE4OTAyQUNFMDAyOTA5MkUgLyogU291cmNl
cyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCUMyNDY1OTFBMTg5MDJDQ0MwMDI5
MDkyRSAvKiBKU1J1bkxvb3BUaHJlYWQubSBpbiBTb3VyY2VzICovLAotCQkJCUMyNDY1OTIwMTg5
MDJFMTUwMDI5MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QzI0NjU5MjMxODkwMkVBNDAwMjkwOTJFIC8qIFNjcmlwdElucHV0U291cmNlLm0gaW4gU291cmNl
cyAqLywKLQkJCQlDMjQ2NTkwODE4OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQzI0NjU5MTQxODkwMkI5MTAwMjkwOTJFIC8qIENMSUluc3RhbmNlLm0gaW4gU291
cmNlcyAqLywKLQkJCQlDMjQ2NTkxRDE4OTAyRDEwMDAyOTA5MkUgLyogUnVuTG9vcFRocmVhZC5t
IGluIFNvdXJjZXMgKi8sCi0JCQkJQzI0NjU5MTcxODkwMkM0MjAwMjkwOTJFIC8qIEpTTW9kdWxl
Lm0gaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICov
Ci0KLS8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KLQkJQzI0NjU5MEQx
ODkwMkFDRTAwMjkwOTJFIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRI
UyA9IE5POwotCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzB4IjsKLQkJ
CQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOwotCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FS
QyA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFO
R19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9ESVJFQ1Rf
T0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7Ci0JCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0g
WUVTOwotCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOwotCQkJCUNMQU5HX1dB
Uk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1Mg
PSBZRVNfRVJST1I7Ci0JCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlF
UzsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRB
UkQgPSBnbnU5OTsKLQkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKLQkJCQlHQ0NfRU5BQkxF
X09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKLQkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsK
LQkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAotCQkJCQkiREVCVUc9MSIsCi0J
CQkJCSIkKGluaGVyaXRlZCkiLAotCQkJCSk7Ci0JCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRF
Uk4gPSBOTzsKLQkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKLQkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKLQkJCQlHQ0NfV0FSTl9V
TkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwotCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVU
T1MgPSBZRVM7Ci0JCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOwotCQkJCUdDQ19X
QVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKLQkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQg
PSAxMC45OwotCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7Ci0JCQkJU0RLUk9PVCA9IG1hY29z
eDsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCUMyNDY1OTBFMTg5MDJBQ0UwMDI5
MDkyRSAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0J
CQlidWlsZFNldHRpbmdzID0gewotCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwot
CQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzB4IjsKLQkJCQlDTEFOR19D
WFhfTElCUkFSWSA9ICJsaWJjKysiOwotCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsK
LQkJCQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKLQkJCQlDTEFOR19XQVJOX0NP
TlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JKQ19JU0Ff
VVNBR0UgPSBZRVNfRVJST1I7Ci0JCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOwotCQkJ
CUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOwotCQkJCUNMQU5HX1dBUk5fSU5UX0NP
TlZFUlNJT04gPSBZRVM7Ci0JCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJS
T1I7Ci0JCQkJQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKLQkJCQlD
T1BZX1BIQVNFX1NUUklQID0gWUVTOwotCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJk
d2FyZi13aXRoLWRzeW0iOwotCQkJCUVOQUJMRV9OU19BU1NFUlRJT05TID0gTk87Ci0JCQkJR0ND
X0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKLQkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBU
SU9OUyA9IFlFUzsKLQkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsK
LQkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKLQkJCQlHQ0NfV0FS
Tl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwotCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURf
QVVUT1MgPSBZRVM7Ci0JCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOwotCQkJCUdD
Q19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKLQkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC45OwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVh
c2U7Ci0JCX07Ci0JCUMyNDY1OTEwMTg5MDJBQ0UwMDI5MDkyRSAvKiBEZWJ1ZyAqLyA9IHsKLQkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlB
TFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBZRVM7Ci0JCQkJREVCVUdfSU5GT1JNQVRJT05fRk9S
TUFUID0gImR3YXJmLXdpdGgtZHN5bSI7Ci0JCQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICIk
KGluaGVyaXRlZCkiOwotCQkJCUdDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7Ci0J
CQkJR0NDX1BSRUZJWF9IRUFERVIgPSAiIjsKLQkJCQlMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9
ICJcIkBsb2FkZXJfcGF0aC8uXCIiOwotCQkJCUxJTktFUl9ESVNQTEFZU19NQU5HTEVEX05BTUVT
ID0gWUVTOwotCQkJCU9USEVSX0NGTEFHUyA9ICgKLQkJCQkJIi1pZnJhbWV3b3JrIiwKLQkJCQkJ
IiQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy8iLAotCQkJCSk7Ci0J
CQkJT1RIRVJfTERGTEFHUyA9ICItbGVkaXQiOwotCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdF
VF9OQU1FKSI7Ci0JCQkJU0RLUk9PVCA9IG1hY29zeC5pbnRlcm5hbDsKLQkJCX07Ci0JCQluYW1l
ID0gRGVidWc7Ci0JCX07Ci0JCUMyNDY1OTExMTg5MDJBQ0UwMDI5MDkyRSAvKiBSZWxlYXNlICov
ID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0g
ewotCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IFlFUzsKLQkJCQlERUJVR19JTkZPUk1B
VElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKLQkJCQlGUkFNRVdPUktfU0VBUkNIX1BB
VEhTID0gIiQoaW5oZXJpdGVkKSI7Ci0JCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9
IFlFUzsKLQkJCQlHQ0NfUFJFRklYX0hFQURFUiA9ICIiOwotCQkJCUxEX1JVTlBBVEhfU0VBUkNI
X1BBVEhTID0gIlwiQGxvYWRlcl9wYXRoLy5cIiI7Ci0JCQkJTElOS0VSX0RJU1BMQVlTX01BTkdM
RURfTkFNRVMgPSBZRVM7Ci0JCQkJT1RIRVJfQ0ZMQUdTID0gKAotCQkJCQkiLWlmcmFtZXdvcmsi
LAotCQkJCQkiJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzLyIsCi0J
CQkJKTsKLQkJCQlPVEhFUl9MREZMQUdTID0gIi1sZWRpdCI7Ci0JCQkJUFJPRFVDVF9OQU1FID0g
IiQoVEFSR0VUX05BTUUpIjsKLQkJCQlTREtST09UID0gbWFjb3N4LmludGVybmFsOwotCQkJfTsK
LQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNl
Y3Rpb24gKi8KLQotLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCi0JCUMy
NDY1OEZDMTg5MDJBQ0UwMDI5MDkyRSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WFByb2plY3QgImpzYy1jbGkiICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsK
LQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJQzI0NjU5MEQxODkwMkFDRTAwMjkwOTJF
IC8qIERlYnVnICovLAotCQkJCUMyNDY1OTBFMTg5MDJBQ0UwMDI5MDkyRSAvKiBSZWxlYXNlICov
LAotCQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCUMyNDY1OTBGMTg5MDJBQ0Uw
MDI5MDkyRSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
anNjLWNsaSIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRD
b25maWd1cmF0aW9ucyA9ICgKLQkJCQlDMjQ2NTkxMDE4OTAyQUNFMDAyOTA5MkUgLyogRGVidWcg
Ki8sCi0JCQkJQzI0NjU5MTExODkwMkFDRTAwMjkwOTJFIC8qIFJlbGVhc2UgKi8sCi0JCQkpOwot
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25OYW1lID0gUmVsZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNl
Y3Rpb24gKi8KLQl9OwotCXJvb3RPYmplY3QgPSBDMjQ2NThGOTE4OTAyQUNFMDAyOTA5MkUgLyog
UHJvamVjdCBvYmplY3QgKi87Ci19CmRpZmYgLS1naXQgYS9Ub29scy9qc2MtY2xpL2pzYy1jbGkv
Q0xJSW5zdGFuY2UuaCBiL1Rvb2xzL2pzYy1jbGkvanNjLWNsaS9DTElJbnN0YW5jZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTMwZmE2Y2UwN2ZmZDA4OWM3ZGQ3MTM0ODcxOTBk
ZWJmYzljOTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1Rvb2xzL2pzYy1jbGkvanNjLWNsaS9DTElJbnN0YW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
MzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgotCi0jaWZuZGVmIENMSUluc3RhbmNlX2gKLSNkZWZpbmUgQ0xJSW5zdGFuY2VfaAotCi1AaW50
ZXJmYWNlIENMSUluc3RhbmNlIDogTlNPYmplY3QKLQotLSh2b2lkKWxvYWRGaWxlOihOU1N0cmlu
ZyAqKXBhdGg7Ci0tKHZvaWQpcnVuOwotCi1AZW5kCi0KLSNlbmRpZiAvLyBDTEluc3RhbmNlX2gK
ZGlmZiAtLWdpdCBhL1Rvb2xzL2pzYy1jbGkvanNjLWNsaS9DTElJbnN0YW5jZS5tIGIvVG9vbHMv
anNjLWNsaS9qc2MtY2xpL0NMSUluc3RhbmNlLm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJkNzdkMmJhZjMzN2M1MmQ5MGFmYzRiNDg5YmJiNmVlMTAzZWJkMGIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvanNjLWNsaS9qc2MtY2xp
L0NMSUluc3RhbmNlLm0KKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2ltcG9ydCAiQ0xJSW5zdGFuY2UuaCIKLQotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuaD4KLQotI2ltcG9ydCAiSlNNb2R1bGUuaCIKLSNpbXBvcnQgIkpTUnVuTG9v
cFRocmVhZC5oIgotI2ltcG9ydCAiQ0xJSW5zdGFuY2UuaCIKLSNpbXBvcnQgIlJlYWRFdmFsUHJp
bnRMb29wLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBDTElJbnN0YW5jZSB7Ci0gICAgSlNNb2R1bGUg
Kl9tb2R1bGVMb2FkZXI7Ci0gICAgTlNTdHJpbmcgKl9iYXNlRmlsZTsKLSAgICBKU0NvbnRleHQg
Kl9jb250ZXh0OwotICAgIAotICAgIEpTUnVuTG9vcFRocmVhZCAqX2pzVGhyZWFkOwotfQotCi0t
IChpZClpbml0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgX2Jhc2VGaWxlID0gbmlsOwotICAgIF9tb2R1
bGVMb2FkZXIgPSBbW0pTTW9kdWxlIGFsbG9jXSBpbml0XTsKLSAgICBfY29udGV4dCA9IFtbSlND
b250ZXh0IGFsbG9jXSBpbml0XTsKLSAgICAKLSAgICBfY29udGV4dFtAInJlcXVpcmUiXSA9IF4o
TlNTdHJpbmcgKmFyZykgewotICAgICAgICBKU01vZHVsZSAqbW9kdWxlID0gW0pTTW9kdWxlIHJl
cXVpcmU6YXJnIGF0UGF0aDpbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGN1cnJlbnRE
aXJlY3RvcnlQYXRoXV07Ci0gICAgICAgIGlmICghbW9kdWxlKSB7Ci0gICAgICAgICAgICBbW0pT
Q29udGV4dCBjdXJyZW50Q29udGV4dF0gZXZhbHVhdGVTY3JpcHQ6QCJ0aHJvdyAnbm90IGZvdW5k
JyJdOwotICAgICAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29u
dGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIG1vZHVsZS5leHBvcnRzOwotICAgIH07Ci0gICAgCi0gICAgX2pzVGhyZWFkID0gW1tKU1J1
bkxvb3BUaHJlYWQgYWxsb2NdIGluaXRXaXRoRmlsZXM6QFtdIGFuZENvbnRleHQ6X2NvbnRleHRd
OwotICAgIAotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWxvYWRGaWxlOihOU1N0cmlu
ZyAqKXBhdGgKLXsKLSAgICBfYmFzZUZpbGUgPSBwYXRoOwotfQotCi0tICh2b2lkKXJ1bgotewot
ICAgIFtfanNUaHJlYWQgc3RhcnRdOwotICAgIAotICAgIGlmICghX2Jhc2VGaWxlKSB7Ci0gICAg
ICAgIFJlYWRFdmFsUHJpbnRMb29wICpyZXBsID0gW1tSZWFkRXZhbFByaW50TG9vcCBhbGxvY10g
aW5pdFdpdGhKU1RocmVhZDpfanNUaHJlYWRdOwotICAgICAgICBbcmVwbCBydW5dOwotICAgIH0K
LQotICAgIFtfanNUaHJlYWQgam9pbl07Ci19Ci0KLUBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL2pz
Yy1jbGkvanNjLWNsaS9KU01vZHVsZS5oIGIvVG9vbHMvanNjLWNsaS9qc2MtY2xpL0pTTW9kdWxl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZGQwM2ExNTUyNDFjMjU0OTY1NDg2
YjgyYjA5NjUwMTMyZGRkYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvVG9vbHMvanNjLWNsaS9qc2MtY2xpL0pTTW9kdWxlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+Ci0KLSNpZm5kZWYgSlNNb2R1bGVfaAotI2RlZmluZSBKU01vZHVsZV9oCi0KLUBjbGFz
cyBKU0NvbnRleHQ7Ci1AY2xhc3MgSlNWYWx1ZTsKLQotQGludGVyZmFjZSBKU01vZHVsZSA6IE5T
T2JqZWN0Ci0KLUBwcm9wZXJ0eSAocmVhZG9ubHkpIEpTVmFsdWUgKmV4cG9ydHM7Ci0KLSsgKEpT
TW9kdWxlICopcmVxdWlyZTooTlNTdHJpbmcgKiltb2R1bGUgYXRQYXRoOihOU1N0cmluZyAqKXBh
dGggaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotKyAoSlNNb2R1bGUgKilyZXF1aXJl
OihOU1N0cmluZyAqKW1vZHVsZSBhdFBhdGg6KE5TU3RyaW5nICopcGF0aDsKLSsgKE5TU3RyaW5n
ICopcmVzb2x2ZTooTlNTdHJpbmcgKiltb2R1bGUgYXRQYXRoOihOU1N0cmluZyAqKXBhdGg7Ci0K
LS0gKEpTTW9kdWxlICopcmVxdWlyZTooTlNTdHJpbmcgKiltb2R1bGU7Ci0KLS0gKEpTVmFsdWUg
KilwbGF0Zm9ybU9iamVjdEluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dDsKLQotQGVuZAot
Ci0jZW5kaWYgLy8gSlNNb2R1bGVfaAotCmRpZmYgLS1naXQgYS9Ub29scy9qc2MtY2xpL2pzYy1j
bGkvSlNNb2R1bGUubSBiL1Rvb2xzL2pzYy1jbGkvanNjLWNsaS9KU01vZHVsZS5tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWQ3ZTRmNDhjMzBhMGFkOTljMTYzZmE2NTFlODFhZGZl
ZGQ1ZGU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL2pzYy1jbGkvanNjLWNsaS9KU01vZHVsZS5tCisrKyAvZGV2L251bGwKQEAgLTEsMjk3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJKU01vZHVsZS5oIgotI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KLQotQGltcGxlbWVudGF0aW9uIEpTTW9kdWxlIHsK
LSAgICBKU01hbmFnZWRWYWx1ZSAqX2V4cG9ydHM7Ci0gICAgTlNTdHJpbmcgKl9pZDsKLSAgICBO
U1N0cmluZyAqX2ZpbGVuYW1lOwotICAgIGJvb2wgX2xvYWRlZDsKLSAgICBfX3dlYWsgSlNNb2R1
bGUgKl9wYXJlbnQ7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKl9jaGlsZHJlbjsKLX0KLQotLy8gVE9E
TzogR2V0IGxpYiBpbiB0aGUgcmlnaHQgcGxhY2UuIFJpZ2h0IG5vdyB3ZSBjb3B5IGl0IHRvIHRo
ZSBidWlsZCByZXN1bHRzIGRpcmVjdG9yeS4KLXN0YXRpYyBOU0RpY3Rpb25hcnkgKmNvcmVNb2R1
bGVzKCkKLXsKLSAgICBzdGF0aWMgTlNEaWN0aW9uYXJ5ICptb2R1bGVzID0gMDsKLSAgICBpZiAo
IW1vZHVsZXMpIHsKLSAgICAgICAgLy8gUHV0IGxvY2F0aW9uIG9mIGJ1aWx0LWluIG1vZHVsZXMg
aGVyZS4KLSAgICAgICAgbW9kdWxlcyA9IEB7Ci0gICAgICAgICAgICAvL0AidXRpbCI6IFtsaWJE
aXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAidXRpbC5qcyJdLAotICAgICAgICB9
OwotICAgIH0KLSAgICByZXR1cm4gbW9kdWxlczsKLX0KLQotc3RhdGljIGJvb2wgaXNDb3JlTW9k
dWxlKE5TU3RyaW5nICptb2R1bGVOYW1lKQotewotICAgIHJldHVybiAhIVtjb3JlTW9kdWxlcygp
IG9iamVjdEZvcktleTptb2R1bGVOYW1lXTsKLX0KLQotc3RhdGljIENsYXNzIGNsYXNzRm9yTW9k
dWxlKE5TU3RyaW5nICptb2R1bGVOYW1lKQotewotICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm1v
ZHVsZUNsYXNzZXMgPSAwOwotICAgIGlmICghbW9kdWxlQ2xhc3NlcykgewotICAgICAgICAvLyBQ
dXQgY2xhc3NlcyBmb3IgYnVpbHQtaW4gbW9kdWxlcyBoZXJlLgotICAgICAgICBtb2R1bGVDbGFz
c2VzID0gQHsKLSAgICAgICAgICAgIC8vQCJ1dGlsIjogW0pTVXRpbE1vZHVsZSBjbGFzc10sCi0g
ICAgICAgIH07Ci0gICAgfQotICAgIAotICAgIGlmIChpc0NvcmVNb2R1bGUobW9kdWxlTmFtZSkp
Ci0gICAgICAgIHJldHVybiBbbW9kdWxlQ2xhc3NlcyBvYmplY3RGb3JLZXk6bW9kdWxlTmFtZV07
Ci0gICAgcmV0dXJuIFtKU01vZHVsZSBjbGFzc107Ci19Ci0KLXN0YXRpYyBOU1N0cmluZyAqY29y
ZU1vZHVsZUZ1bGxQYXRoKE5TU3RyaW5nICptb2R1bGVOYW1lKQotewotICAgIGFzc2VydChpc0Nv
cmVNb2R1bGUobW9kdWxlTmFtZSkpOwotICAgIHJldHVybiBbY29yZU1vZHVsZXMoKSBvYmplY3RG
b3JLZXk6bW9kdWxlTmFtZV07Ci19Ci0KLXN0YXRpYyBOU1N0cmluZyAqcmVzb2x2ZU1vZHVsZUFz
RmlsZShOU1N0cmluZyAqbW9kdWxlUGF0aCkKLXsKLSAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOm1vZHVsZVBhdGhdKQotICAgICAgICByZXR1
cm4gbW9kdWxlUGF0aDsKLSAgICAKLSAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOlttb2R1bGVQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4
dGVuc2lvbjpAImpzIl1dKQotICAgICAgICByZXR1cm4gW21vZHVsZVBhdGggc3RyaW5nQnlBcHBl
bmRpbmdQYXRoRXh0ZW5zaW9uOkAianMiXTsKLSAgICAKLSAgICByZXR1cm4gbmlsOwotfQotCi1z
dGF0aWMgTlNTdHJpbmcgKnJlc29sdmVNb2R1bGVBc0RpcmVjdG9yeShOU1N0cmluZyAqbW9kdWxl
UGF0aCkKLXsKLSAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOlttb2R1bGVQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInBh
Y2thZ2UuanNvbiJdXSkgewotICAgICAgICBOU1N0cmluZyAqcGF0aCA9IFttb2R1bGVQYXRoIHN0
cmluZ0J5QXBwZW5kaW5nU3RyaW5nOkAicGFja2FnZS5qc29uIl07Ci0gICAgICAgIE5TU3RyaW5n
ICpmaWxlQ29udGVudHMgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOnBhdGgg
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6bmlsXTsKLSAgICAgICAgSlNDb250
ZXh0ICp0ZW1wQ29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLSAgICAgICAgTlNT
dHJpbmcgKnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSlNPTi5wYXJzZSgl
QCkiLCBmaWxlQ29udGVudHNdOwotICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbdGVtcENvbnRl
eHQgZXZhbHVhdGVTY3JpcHQ6c2NyaXB0XTsKLSAgICAgICAgaWYgKCFbcmVzdWx0W0AibWFpbiJd
IGlzVW5kZWZpbmVkXSkKLSAgICAgICAgICAgIHJldHVybiByZXNvbHZlTW9kdWxlQXNGaWxlKFty
ZXN1bHRbQCJtYWluIl0gdG9TdHJpbmddKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpbbW9kdWxlUGF0aCBzdHJp
bmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJpbmRleC5qcyJdXSkKLSAgICAgICAgcmV0dXJu
IFttb2R1bGVQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImluZGV4LmpzIl07
Ci0gICAgCi0gICAgcmV0dXJuIG5pbDsKLX0KLQotc3RhdGljIE5TQXJyYXkgKm5vZGVNb2R1bGVQ
YXRocyhOU1N0cmluZyAqc3RhcnQpCi17Ci0gICAgTlNBcnJheSAqcGFydHMgPSBbc3RhcnQgcGF0
aENvbXBvbmVudHNdOwotICAgIE5TVUludGVnZXIgcm9vdCA9IFtwYXJ0cyBpbmRleE9mT2JqZWN0
OkAibm9kZV9tb2R1bGVzIl07Ci0gICAgaWYgKHJvb3QgPT0gTlNOb3RGb3VuZCkKLSAgICAgICAg
cm9vdCA9IDA7Ci0gICAgCi0gICAgTlNVSW50ZWdlciBpID0gW3BhcnRzIGNvdW50XSAtIDE7Ci0g
ICAgTlNNdXRhYmxlQXJyYXkgKmRpcnMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsK
LSAgICB3aGlsZSAoaSA+IHJvb3QpIHsKLSAgICAgICAgTlNTdHJpbmcgKmNvbXBvbmVudCA9IFtw
YXJ0cyBvYmplY3RBdEluZGV4OmldOwotICAgICAgICBpZiAoW2NvbXBvbmVudCBpc0VxdWFsVG9T
dHJpbmc6QCJub2RlX21vZHVsZXMiXSkgewotICAgICAgICAgICAgaSAtPSAxOwotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgW2RpcnMgYWRkT2JqZWN0OltOU1N0cmlu
ZyBwYXRoV2l0aENvbXBvbmVudHM6W3BhcnRzIHN1YmFycmF5V2l0aFJhbmdlOk5TTWFrZVJhbmdl
KDAsIGkpXV1dOwotICAgICAgICBpIC09IDE7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBkaXJz
OwotfQotCi1zdGF0aWMgTlNTdHJpbmcgKnJlc29sdmVBc05vZGVNb2R1bGUoTlNTdHJpbmcgKm1v
ZHVsZU5hbWUsIE5TU3RyaW5nKiBzdGFydCkKLXsKLSAgICBOU0FycmF5ICpkaXJzID0gbm9kZU1v
ZHVsZVBhdGhzKHN0YXJ0KTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbZGlycyBj
b3VudF07IGkrKykgewotICAgICAgICBOU1N0cmluZyAqZGlyID0gW2RpcnMgb2JqZWN0QXRJbmRl
eDppXTsKLSAgICAgICAgTlNTdHJpbmcgKnJlc3VsdCA9IHJlc29sdmVNb2R1bGVBc0ZpbGUoW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC8lQCIsIGRpciwgbW9kdWxlTmFtZV0pOwotICAg
ICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgCi0g
ICAgICAgIHJlc3VsdCA9IHJlc29sdmVNb2R1bGVBc0RpcmVjdG9yeShbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVALyVAIiwgZGlyLCBtb2R1bGVOYW1lXSk7Ci0gICAgICAgIGlmIChyZXN1
bHQpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICByZXR1cm4gbmlsOwot
fQotCi0rIChOU1N0cmluZyAqKXJlc29sdmU6KE5TU3RyaW5nICopbW9kdWxlIGF0UGF0aDooTlNT
dHJpbmcgKilwYXRoCi17Ci0gICAgaWYgKGlzQ29yZU1vZHVsZShtb2R1bGUpKQotICAgICAgICBy
ZXR1cm4gY29yZU1vZHVsZUZ1bGxQYXRoKG1vZHVsZSk7Ci0gICAgCi0gICAgTlNTdHJpbmcgKnJl
c3VsdDsKLSAgICBpZiAoW21vZHVsZSBoYXNQcmVmaXg6QCIuLyJdIHx8IFttb2R1bGUgaGFzUHJl
Zml4OkAiLyJdIHx8IFttb2R1bGUgaGFzUHJlZml4OkAiLi4vIl0pIHsKLSAgICAgICAgcmVzdWx0
ID0gcmVzb2x2ZU1vZHVsZUFzRmlsZShbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALyVA
IiwgcGF0aCwgbW9kdWxlXSk7Ci0gICAgICAgIAotICAgICAgICBpZiAocmVzdWx0KQotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgCi0gICAgICAgIHJlc3VsdCA9IHJlc29sdmVN
b2R1bGVBc0RpcmVjdG9yeShbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALyVAIiwgcGF0
aCwgbW9kdWxlXSk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVzb2x2ZUFzTm9kZU1vZHVsZShtb2R1bGUs
IFtwYXRoIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0pOwotfQotCi1zdGF0aWMg
TlNNYXBUYWJsZSAqZ2xvYmFsTW9kdWxlQ2FjaGUoKQotewotICAgIHN0YXRpYyBOU01hcFRhYmxl
ICptb2R1bGVDYWNoZSA9IG5pbDsKLSAgICBpZiAoIW1vZHVsZUNhY2hlKQotICAgICAgICBtb2R1
bGVDYWNoZSA9IFtOU01hcFRhYmxlIHN0cm9uZ1RvU3Ryb25nT2JqZWN0c01hcFRhYmxlXTsKLSAg
ICByZXR1cm4gbW9kdWxlQ2FjaGU7Ci19Ci0KLXN0YXRpYyBib29sIGlzQ2FjaGVkKE5TU3RyaW5n
ICpmdWxsTW9kdWxlUGF0aCkKLXsKLSAgICByZXR1cm4gISFbZ2xvYmFsTW9kdWxlQ2FjaGUoKSBv
YmplY3RGb3JLZXk6ZnVsbE1vZHVsZVBhdGhdOwotfQotCi1zdGF0aWMgSlNNb2R1bGUgKmNhY2hl
ZE1vZHVsZShOU1N0cmluZyAqZnVsbE1vZHVsZVBhdGgpCi17Ci0gICAgYXNzZXJ0KGlzQ2FjaGVk
KGZ1bGxNb2R1bGVQYXRoKSk7Ci0gICAgcmV0dXJuIFtnbG9iYWxNb2R1bGVDYWNoZSgpIG9iamVj
dEZvcktleTpmdWxsTW9kdWxlUGF0aF07Ci19Ci0KLXN0YXRpYyB2b2lkIGNhY2hlTW9kdWxlKE5T
U3RyaW5nICpmdWxsTW9kdWxlUGF0aCwgSlNNb2R1bGUgKm1vZHVsZSkKLXsKLSAgICBhc3NlcnQo
IWlzQ2FjaGVkKGZ1bGxNb2R1bGVQYXRoKSk7Ci0gICAgW2dsb2JhbE1vZHVsZUNhY2hlKCkgc2V0
T2JqZWN0Om1vZHVsZSBmb3JLZXk6ZnVsbE1vZHVsZVBhdGhdOwotfQotCi1zdGF0aWMgSlNNb2R1
bGUgKmN1cnJlbnRMb2FkaW5nTW9kdWxlID0gbmlsOwotCi0rIChKU01vZHVsZSAqKXJlcXVpcmU6
KE5TU3RyaW5nICopbW9kdWxlIGF0UGF0aDooTlNTdHJpbmcgKilwYXRoCi17Ci0gICAgcmV0dXJu
IFtKU01vZHVsZSByZXF1aXJlOm1vZHVsZSBhdFBhdGg6cGF0aCBpbkNvbnRleHQ6W0pTQ29udGV4
dCBjdXJyZW50Q29udGV4dF1dOwotfQotCi0rIChKU01vZHVsZSAqKXJlcXVpcmU6KE5TU3RyaW5n
ICopbW9kdWxlIGF0UGF0aDooTlNTdHJpbmcgKilwYXRoIGluQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dAotewotICAgIGFzc2VydChjb250ZXh0KTsKLSAgICBOU1N0cmluZyAqZnVsbE1vZHVs
ZVBhdGggPSBbSlNNb2R1bGUgcmVzb2x2ZTptb2R1bGUgYXRQYXRoOnBhdGhdOwotICAgIAotICAg
IGlmICghZnVsbE1vZHVsZVBhdGgpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYg
KGlzQ2FjaGVkKGZ1bGxNb2R1bGVQYXRoKSkKLSAgICAgICAgcmV0dXJuIGNhY2hlZE1vZHVsZShm
dWxsTW9kdWxlUGF0aCk7Ci0gICAgCi0gICAgQ2xhc3MgbW9kdWxlQ2xhc3MgPSBjbGFzc0Zvck1v
ZHVsZShtb2R1bGUpOwotICAgIEpTTW9kdWxlICpuZXdNb2R1bGUgPSBbW21vZHVsZUNsYXNzIGFs
bG9jXSBpbml0V2l0aElkOmZ1bGxNb2R1bGVQYXRoIGZpbGVuYW1lOmZ1bGxNb2R1bGVQYXRoIGNv
bnRleHQ6Y29udGV4dF07Ci0gICAgY2FjaGVNb2R1bGUoZnVsbE1vZHVsZVBhdGgsIG5ld01vZHVs
ZSk7Ci0gICAgCi0gICAgTlNTdHJpbmcgKnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29u
dGVudHNPZkZpbGU6ZnVsbE1vZHVsZVBhdGggZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmcg
ZXJyb3I6bmlsXTsKLSAgICAKLSAgICBbbmV3TW9kdWxlIGRpZFN0YXJ0TG9hZGluZ107Ci0gICAg
Ci0gICAgSlNWYWx1ZSAqc2F2ZWRFeHBvcnRzID0gY29udGV4dFtAImV4cG9ydHMiXTsKLSAgICBj
b250ZXh0W0AiZXhwb3J0cyJdID0gW25ld01vZHVsZSBleHBvcnRzXTsKLQotICAgIEpTVmFsdWUg
KnNhdmVkTW9kdWxlID0gY29udGV4dFtAIm1vZHVsZSJdOwotICAgIGNvbnRleHRbQCJtb2R1bGUi
XSA9IG5ld01vZHVsZTsKLSAgICBjb250ZXh0W0AibW9kdWxlIl1bQCJleHBvcnRzIl0gPSBbbmV3
TW9kdWxlIGV4cG9ydHNdOwotICAgIAotICAgIEpTVmFsdWUgKnNhdmVkUGxhdGZvcm1PYmplY3Qg
PSBjb250ZXh0W0AicGxhdGZvcm0iXTsKLSAgICBjb250ZXh0W0AicGxhdGZvcm0iXSA9IFtuZXdN
b2R1bGUgcGxhdGZvcm1PYmplY3RJbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgCi0gICAgLy8gTG9h
ZCB0aGUgbW9kdWxlLgotICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OnNjcmlwdF07Ci0gICAg
Ci0gICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTpuZXdN
b2R1bGUtPl9leHBvcnRzIHdpdGhPd25lcjpzZWxmXTsKLSAgICBuZXdNb2R1bGUtPl9leHBvcnRz
ID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpjb250ZXh0W0AibW9kdWxl
Il1bQCJleHBvcnRzIl1dOwotICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRS
ZWZlcmVuY2U6bmV3TW9kdWxlLT5fZXhwb3J0cyB3aXRoT3duZXI6c2VsZl07Ci0gICAgCi0gICAg
Y29udGV4dFtAInBsYXRmb3JtIl0gPSBzYXZlZFBsYXRmb3JtT2JqZWN0OwotICAgIGNvbnRleHRb
QCJtb2R1bGUiXSA9IHNhdmVkTW9kdWxlOwotICAgIGNvbnRleHRbQCJleHBvcnRzIl0gPSBzYXZl
ZEV4cG9ydHM7Ci0KLSAgICBbbmV3TW9kdWxlIGRpZEZpbmlzaExvYWRpbmddOwotCi0gICAgcmV0
dXJuIG5ld01vZHVsZTsKLX0KLQotLSAoSlNWYWx1ZSAqKXBsYXRmb3JtT2JqZWN0SW5Db250ZXh0
OihKU0NvbnRleHQgKiljb250ZXh0Ci17Ci0gICAgLy8gT3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4g
c3ViY2xhc3NlcyBvZiBKU01vZHVsZSB0byByZXR1cm4gYSBwbGF0Zm9ybSBvYmplY3QKLSAgICAv
LyB3aXRoIHdoYXRldmVyIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZWQgdG8gaW1wbGVtZW50IHRoYXQg
bW9kdWxlLgotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6
Y29udGV4dF07Ci19Ci0KLS0gKGlkKWluaXRXaXRoSWQ6KE5TU3RyaW5nICopbXlJZCBmaWxlbmFt
ZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0Ci17Ci0g
ICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgCi0gICAgX2V4cG9ydHMgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0
aFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XV07Ci0g
ICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpfZXhwb3J0cyB3
aXRoT3duZXI6c2VsZl07Ci0gICAgX2lkID0gbXlJZDsKLSAgICBfZmlsZW5hbWUgPSBmaWxlbmFt
ZTsKLSAgICBfbG9hZGVkID0gZmFsc2U7Ci0gICAgX3BhcmVudCA9IG5pbDsKLSAgICBfY2hpbGRy
ZW4gPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICAKLSAgICByZXR1cm4gc2Vs
ZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgSlNWYWx1ZSAqZXhwb3J0cyA9IFtfZXhw
b3J0cyB2YWx1ZV07Ci0gICAgaWYgKGV4cG9ydHMpCi0gICAgICAgIFtleHBvcnRzLmNvbnRleHQu
dmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTpfZXhwb3J0cyB3aXRoT3duZXI6
c2VsZl07Ci19Ci0KLS0gKHZvaWQpZGlkU3RhcnRMb2FkaW5nCi17Ci0gICAgX3BhcmVudCA9IGN1
cnJlbnRMb2FkaW5nTW9kdWxlOwotICAgIGlmIChjdXJyZW50TG9hZGluZ01vZHVsZSkKLSAgICAg
ICAgW2N1cnJlbnRMb2FkaW5nTW9kdWxlLT5fY2hpbGRyZW4gYWRkT2JqZWN0OnNlbGZdOwotICAg
IGN1cnJlbnRMb2FkaW5nTW9kdWxlID0gc2VsZjsKLX0KLQotLSAodm9pZClkaWRGaW5pc2hMb2Fk
aW5nCi17Ci0gICAgX2xvYWRlZCA9IHRydWU7Ci0gICAgY3VycmVudExvYWRpbmdNb2R1bGUgPSBf
cGFyZW50OwotfQotCi0tIChKU01vZHVsZSAqKXJlcXVpcmU6KE5TU3RyaW5nICopbW9kdWxlCi17
Ci0gICAgLy8gVE9ETwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKEpTVmFsdWUgKilleHBvcnRz
Ci17Ci0gICAgcmV0dXJuIFtfZXhwb3J0cyB2YWx1ZV07Ci19Ci0KLUBlbmQKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9qc2MtY2xpL2pzYy1jbGkvSlNSdW5M
b29wVGhyZWFkLmggYi9Ub29scy9qc2MtY2xpL2pzYy1jbGkvSlNSdW5Mb29wVGhyZWFkLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3ZmIxZTY4Zjc3ZDE5NDk4MWE0MzUxNDEyODdm
NzI3MDE1NTNkMWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvanNjLWNsaS9qc2MtY2xpL0pTUnVuTG9vcFRocmVhZC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgotI2ltcG9ydCAiUnVuTG9vcFRocmVhZC5oIgotCi0jaWZuZGVmIEpTUnVuTG9vcFRo
cmVhZF9oCi0jZGVmaW5lIEpTUnVuTG9vcFRocmVhZF9oCi0KLUBjbGFzcyBKU0NvbnRleHQ7Ci1A
Y2xhc3MgSlNWYWx1ZTsKLQotQGludGVyZmFjZSBKU1J1bkxvb3BUaHJlYWQgOiBSdW5Mb29wVGhy
ZWFkCi0KLSsgKFRocmVhZE1haW5UeXBlKXRocmVhZE1haW47Ci0KLUBwcm9wZXJ0eSBkaXNwYXRj
aF9xdWV1ZV90IGFzeW5jUXVldWU7Ci0KLS0gKGlkKWluaXRXaXRoRmlsZXM6KE5TQXJyYXkgKilm
aWxlcyBhbmRDb250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OwotLSAodm9pZClzdGFydDsKLS0g
KHZvaWQpam9pbjsKLS0gKEpTVmFsdWUgKilkaWRSZWNlaXZlSW5wdXQ6KE5TU3RyaW5nICopaW5w
dXQ7Ci0tICh2b2lkKXBlcmZvcm1DYWxsYmFjazooSlNWYWx1ZSAqKWNhbGxiYWNrIHdpdGhFcnJv
cjooTlNTdHJpbmcgKillcnJvck1lc3NhZ2U7Ci0tICh2b2lkKXBlcmZvcm1DYWxsYmFjazooSlNW
YWx1ZSAqKWNhbGxiYWNrIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1bWVudHM7Ci0tICh2
b2lkKWRpZEZpbmlzaFJ1bkxvb3BJbml0aWFsaXphdGlvbjsKLQotQGVuZAotCi0jZW5kaWYgLy8g
SlNSdW5Mb29wVGhyZWFkX2gKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvanNjLWNsaS9qc2MtY2xpL0pT
UnVuTG9vcFRocmVhZC5tIGIvVG9vbHMvanNjLWNsaS9qc2MtY2xpL0pTUnVuTG9vcFRocmVhZC5t
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTQ1M2E4NmQ4M2UzNzVmNTViMDBjOTYz
MmU3ODdkNzc3NzY3YzIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1Rvb2xzL2pzYy1jbGkvanNjLWNsaS9KU1J1bkxvb3BUaHJlYWQubQorKysgL2Rldi9u
dWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuaD4KLSNpbXBvcnQgIkpTUnVuTG9vcFRocmVhZC5oIgotI2ltcG9y
dCAiU2NyaXB0SW5wdXRTb3VyY2UuaCIKLSNpbXBvcnQgPHB0aHJlYWQuaD4KLQotQGltcGxlbWVu
dGF0aW9uIEpTUnVuTG9vcFRocmVhZCB7Ci0gICAgTlNBcnJheSAqbV9maWxlc1RvUnVuOwotICAg
IENGUnVuTG9vcFJlZiBtX3J1bkxvb3A7Ci0gICAgU2NyaXB0SW5wdXRTb3VyY2UgKm1fc2NyaXB0
U291cmNlOwotICAgIEpTQ29udGV4dCAqbV9jb250ZXh0OwotICAgIGRpc3BhdGNoX3F1ZXVlX3Qg
bV9hc3luY1F1ZXVlOwotfQotCi1zdGF0aWMgdm9pZCoganNUaHJlYWRNYWluKHZvaWQqIGNvbnRl
eHQpCi17Ci0gICAgSlNSdW5Mb29wVGhyZWFkICp0aHJlYWQgPSAoX19icmlkZ2UgSlNSdW5Mb29w
VGhyZWFkICopKGNvbnRleHQpOwotICAgIFt0aHJlYWQgc3RhcnRSdW5Mb29wXTsKLSAgICByZXR1
cm4gMDsKLX0KLQotKyAoVGhyZWFkTWFpblR5cGUpdGhyZWFkTWFpbgotewotICAgIHJldHVybiBq
c1RocmVhZE1haW47Ci19Ci0KLS0gKGlkKWluaXRXaXRoRmlsZXM6KE5TQXJyYXkgKilmaWxlcyBh
bmRDb250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgbV9maWxl
c1RvUnVuID0gZmlsZXM7Ci0gICAgbV9jb250ZXh0ID0gY29udGV4dDsKLSAgICBtX3NjcmlwdFNv
dXJjZSA9IFtbU2NyaXB0SW5wdXRTb3VyY2UgYWxsb2NdIGluaXRXaXRoQ29udGV4dDpjb250ZXh0
XTsKLSAgICBtX2FzeW5jUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIm5vZGUuanNjIGFz
eW5jIHF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCk7Ci0gICAgCi0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLS0gKHZvaWQpc3RhcnRSdW5Mb29wCi17Ci0gICAgbV9ydW5Mb29wID0gQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpOwotICAgIFttX3NjcmlwdFNvdXJjZSBhZGRUb0N1cnJlbnRSdW5M
b29wXTsKLSAgICAKLSAgICBbc2VsZiBkaWRGaW5pc2hSdW5Mb29wSW5pdGlhbGl6YXRpb25dOwot
ICAgIAotICAgIENGUnVuTG9vcFJ1bigpOwotfQotCi0tICh2b2lkKXN0YXJ0Ci17Ci0gICAgW3N1
cGVyIHN0YXJ0XTsKLSAgICAKLSAgICBpZiAoIVttX2ZpbGVzVG9SdW4gY291bnRdKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgZm9yIChOU1N0cmluZyAqZmlsZSBpbiBtX2ZpbGVzVG9SdW4p
IHsKLSAgICAgICAgTlNTdHJpbmcgKnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVu
dHNPZkZpbGU6ZmlsZSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdOwot
ICAgICAgICBbbV9zY3JpcHRTb3VyY2UgcnVuU2NyaXB0UmVtb3RlbHk6c2NyaXB0XTsKLSAgICB9
Ci19Ci0KLS0gKHZvaWQpam9pbgotewotICAgIFttX3NjcmlwdFNvdXJjZSByZW1vdmVGcm9tUmVt
b3RlUnVuTG9vcF07Ci0gICAgQ0ZSdW5Mb29wU3RvcChtX3J1bkxvb3ApOwotICAgIAotICAgIFtz
dXBlciBqb2luXTsKLX0KLQotLSAoSlNWYWx1ZSAqKWRpZFJlY2VpdmVJbnB1dDooTlNTdHJpbmcg
KilpbnB1dAotewotICAgIHJldHVybiBbbV9zY3JpcHRTb3VyY2UgcnVuU2NyaXB0UmVtb3RlbHk6
aW5wdXRdOwotfQotCi0tICh2b2lkKXBlcmZvcm1DYWxsYmFjazooSlNWYWx1ZSAqKWNhbGxiYWNr
IHdpdGhFcnJvcjooTlNTdHJpbmcgKillcnJvck1lc3NhZ2UKLXsKLX0KLQotLSAodm9pZClwZXJm
b3JtQ2FsbGJhY2s6KEpTVmFsdWUgKiljYWxsYmFjayB3aXRoQXJndW1lbnRzOihOU0FycmF5ICop
YXJndW1lbnRzCi17Ci19Ci0KLS0gKHZvaWQpZGlkRmluaXNoUnVuTG9vcEluaXRpYWxpemF0aW9u
Ci17Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqdGhyZWFkU3RvcmFnZSA9IFtbTlNUaHJlYWQg
Y3VycmVudFRocmVhZF0gdGhyZWFkRGljdGlvbmFyeV07Ci0gICAgW3RocmVhZFN0b3JhZ2Ugc2V0
T2JqZWN0OnNlbGYgZm9yS2V5OkAiY3VycmVudEpTVGhyZWFkIl07ICAgIAotICAgIFtzdXBlciBk
aWRGaW5pc2hSdW5Mb29wSW5pdGlhbGl6YXRpb25dOwotfQotCi1AZW5kClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvanNjLWNsaS9qc2MtY2xpL1JlYWRFdmFs
UHJpbnRMb29wLmggYi9Ub29scy9qc2MtY2xpL2pzYy1jbGkvUmVhZEV2YWxQcmludExvb3AuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY1NGRhYTg0YzRmYmZjNjhiZTU5MmM4M2Mw
ZjY0NGJlYmRmNGQ3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Ub29scy9qc2MtY2xpL2pzYy1jbGkvUmVhZEV2YWxQcmludExvb3AuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KLQotI2lmbmRlZiBSZWFkRXZhbFByaW50TG9vcF9oCi0jZGVmaW5lIFJlYWRF
dmFsUHJpbnRMb29wX2gKLQotQGNsYXNzIEpTUnVuTG9vcFRocmVhZDsKLQotQGludGVyZmFjZSBS
ZWFkRXZhbFByaW50TG9vcCA6IE5TT2JqZWN0Ci0KLS0gKGlkKWluaXRXaXRoSlNUaHJlYWQ6KEpT
UnVuTG9vcFRocmVhZCAqKWluc3RhbmNlOwotCi0tICh2b2lkKXJ1bjsKLQotQGVuZAotCi0jZW5k
aWYgLy8gUmVhZEV2YWxQcmludExvb3BfaAotCmRpZmYgLS1naXQgYS9Ub29scy9qc2MtY2xpL2pz
Yy1jbGkvUmVhZEV2YWxQcmludExvb3AubSBiL1Rvb2xzL2pzYy1jbGkvanNjLWNsaS9SZWFkRXZh
bFByaW50TG9vcC5tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWZjOTA1ZWM0YjNm
ODIzY2ViZWJlNGY5YzE0MGRiNWE0YWZiOTI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL2pzYy1jbGkvanNjLWNsaS9SZWFkRXZhbFByaW50TG9v
cC5tCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJSZWFkRXZhbFByaW50TG9vcC5oIgotCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5oPgotI2ltcG9ydCA8aGlzdGVkaXQuaD4KLQotI2ltcG9ydCAiSlNSdW5Mb29wVGhy
ZWFkLmgiCi0KLUBpbXBsZW1lbnRhdGlvbiBSZWFkRXZhbFByaW50TG9vcCB7Ci0gICAgSlNSdW5M
b29wVGhyZWFkKiBfanNUaHJlYWQ7Ci0gICAgRWRpdExpbmUqIF9lZGl0TGluZTsKLSAgICBIaXN0
b3J5KiBfaGlzdG9yeTsKLSAgICBIaXN0RXZlbnQgX2hpc3RFdmVudDsKLX0KLQotLSAoaWQpaW5p
dFdpdGhKU1RocmVhZDooSlNSdW5Mb29wVGhyZWFkICopanNUaHJlYWQKLXsKLSAgICBzZWxmID0g
W3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBfanNUaHJlYWQgPSBqc1RocmVhZDsKLSAgICAKLSAgICByZXR1cm4gc2VsZjsKLX0KLQot
c3RhdGljIGNvbnN0IGNoYXIqIHByb21wdChFZGl0TGluZSogZWRpdExpbmUpCi17Ci0gICAgcmV0
dXJuICI+PiAiOwotfQotCi1zdGF0aWMgTlNTdHJpbmcgKmVzY2FwZVN0cmluZ0Zvck91dHB1dChO
U1N0cmluZyAqaW5wdXQpCi17Ci0gICAgcmV0dXJuIFtpbnB1dCBzdHJpbmdCeVJlcGxhY2luZ09j
Y3VycmVuY2VzT2ZTdHJpbmc6QCJcbiIgd2l0aFN0cmluZzpAIlxcbiJdOwotfQotCi0tIChib29s
KXByb2Nlc3NOZXh0SW5wdXQKLXsKLSAgICBpbnQgY291bnQ7Ci0gICAgY2hhciogbGluZSA9IChj
aGFyICopZWxfZ2V0cyhfZWRpdExpbmUsICZjb3VudCk7Ci0gICAgaWYgKCFjb3VudCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICBsaW5lW2NvdW50IC0gMV0gPSAwOwotICAg
ICAgICAKLSAgICBOU1N0cmluZyAqaW5wdXRTdHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aENTdHJpbmc6bGluZSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAg
IAotICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtfanNUaHJlYWQgZGlkUmVjZWl2ZUlucHV0OmlucHV0
U3RyaW5nXTsKLSAgICBpZiAoW3Jlc3VsdCBpc1N0cmluZ10pIHsKLSAgICAgICAgcHJpbnRmKCI9
PiAnJXMnXG5cbiIsIFtlc2NhcGVTdHJpbmdGb3JPdXRwdXQoW3Jlc3VsdCB0b1N0cmluZ10pIFVU
RjhTdHJpbmddKTsKLSAgICB9IGVsc2UgewotICAgICAgICBwcmludGYoIj0+ICVzXG5cbiIsIFtb
cmVzdWx0IHRvU3RyaW5nXSBVVEY4U3RyaW5nXSk7Ci0gICAgfQotICAgICAgICAKLSAgICBpZiAo
Y291bnQpCi0gICAgICAgIGhpc3RvcnkoX2hpc3RvcnksICZfaGlzdEV2ZW50LCBIX0VOVEVSLCBs
aW5lKTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLSAodm9pZClydW4KLXsgICAgCi0g
ICAgX2VkaXRMaW5lID0gZWxfaW5pdCgibm9kZS5qc2MiLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIp
OwotICAgIGVsX3NldChfZWRpdExpbmUsIEVMX1BST01QVCwgJnByb21wdCk7Ci0gICAgCi0gICAg
X2hpc3RvcnkgPSBoaXN0b3J5X2luaXQoKTsKLSAgICBoaXN0b3J5KF9oaXN0b3J5LCAmX2hpc3RF
dmVudCwgSF9TRVRTSVpFLCAxMDAwKTsKLSAgICBlbF9zZXQoX2VkaXRMaW5lLCBFTF9ISVNULCBo
aXN0b3J5LCBfaGlzdG9yeSk7Ci0gICAgCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBpZiAoIVtzZWxmIHByb2Nlc3NOZXh0SW5wdXRd
KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgICAgICAKLSAg
ICBoaXN0b3J5X2VuZChfaGlzdG9yeSk7Ci0gICAgZWxfZW5kKF9lZGl0TGluZSk7Ci19Ci0KLUBl
bmQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9qc2MtY2xp
L2pzYy1jbGkvUnVuTG9vcFRocmVhZC5oIGIvVG9vbHMvanNjLWNsaS9qc2MtY2xpL1J1bkxvb3BU
aHJlYWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJmYmY1YTVlM2M3MDA4MmM4
NzQ2YmQyYmEzOGMyNGEyMDQ3YzE1NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9qc2MtY2xpL2pzYy1jbGkvUnVuTG9vcFRocmVhZC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgotCi0jaWZuZGVmIFJ1bkxvb3BUaHJlYWRfaAotI2RlZmluZSBSdW5M
b29wVGhyZWFkX2gKLQotQGludGVyZmFjZSBSdW5Mb29wVGhyZWFkIDogTlNPYmplY3QKLQotdHlw
ZWRlZiB2b2lkKiAoKlRocmVhZE1haW5UeXBlKSh2b2lkKik7Ci0rIChUaHJlYWRNYWluVHlwZSl0
aHJlYWRNYWluOwotCi0tICh2b2lkKWRpZEZpbmlzaFJ1bkxvb3BJbml0aWFsaXphdGlvbjsKLS0g
KHZvaWQpc3RhcnQ7Ci0tICh2b2lkKWpvaW47Ci0KLUBlbmQKLQotI2VuZGlmIC8vIFJ1bkxvb3BU
aHJlYWRfaAotCmRpZmYgLS1naXQgYS9Ub29scy9qc2MtY2xpL2pzYy1jbGkvUnVuTG9vcFRocmVh
ZC5tIGIvVG9vbHMvanNjLWNsaS9qc2MtY2xpL1J1bkxvb3BUaHJlYWQubQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNjMxMzc2NDc2NTc0NGNjMzhmZDNhOGUzMzY1OTE5MmRjMTViN2Uw
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9q
c2MtY2xpL2pzYy1jbGkvUnVuTG9vcFRocmVhZC5tCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIlJ1bkxvb3BUaHJlYWQuaCIKLSNpbXBvcnQgPHB0
aHJlYWQuaD4KLQotQGltcGxlbWVudGF0aW9uIFJ1bkxvb3BUaHJlYWQgewotICAgIHB0aHJlYWRf
dCBtX3RocmVhZDsKLSAgICBwdGhyZWFkX211dGV4X3QgbV9sb2NrOwotICAgIHB0aHJlYWRfY29u
ZF90IG1fY29uZGl0aW9uOwotICAgIGJvb2wgbV9sb29wSW5pdGlhbGl6ZWQ7Ci19Ci0KLSsgKFRo
cmVhZE1haW5UeXBlKXRocmVhZE1haW4KLXsKLSAgICByZXR1cm4gMDsKLX0KLQotLSAoaWQpaW5p
dAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIAotICAgIG1fbG9vcEluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgICAg
IAotICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbV9sb2NrLCBOVUxMKTsKLSAgICBwdGhyZWFkX2Nv
bmRfaW5pdCgmbV9jb25kaXRpb24sIE5VTEwpOwotICAgIAotICAgIHJldHVybiBzZWxmOwotfQot
Ci0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm1fbG9jayk7
Ci0gICAgcHRocmVhZF9jb25kX2Rlc3Ryb3koJm1fY29uZGl0aW9uKTsKLX0KLQotLSAodm9pZClk
aWRGaW5pc2hSdW5Mb29wSW5pdGlhbGl6YXRpb24KLXsKLSAgICBwdGhyZWFkX211dGV4X2xvY2so
Jm1fbG9jayk7Ci0gICAgbV9sb29wSW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIHB0aHJlYWRfY29u
ZF9zaWduYWwoJm1fY29uZGl0aW9uKTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbV9sb2Nr
KTsKLX0KLQotLSAodm9pZClzdGFydAotewotICAgIHB0aHJlYWRfY3JlYXRlKCZtX3RocmVhZCwg
TlVMTCwgW1tzZWxmIGNsYXNzXSB0aHJlYWRNYWluXSwgKF9fYnJpZGdlIHZvaWQgKikoc2VsZikp
OwotICAgIAotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbV9sb2NrKTsKLSAgICB3aGlsZSAoIW1f
bG9vcEluaXRpYWxpemVkKQotICAgICAgICBwdGhyZWFkX2NvbmRfd2FpdCgmbV9jb25kaXRpb24s
ICZtX2xvY2spOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtX2xvY2spOwotfQotCi0tICh2
b2lkKWpvaW4KLXsKLSAgICB2b2lkKiByZXN1bHQ7Ci0gICAgcHRocmVhZF9qb2luKG1fdGhyZWFk
LCAmcmVzdWx0KTsKLX0KLQotQGVuZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1Rvb2xzL2pzYy1jbGkvanNjLWNsaS9TY3JpcHRJbnB1dFNvdXJjZS5oIGIvVG9vbHMv
anNjLWNsaS9qc2MtY2xpL1NjcmlwdElucHV0U291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQ5YTI2ZDUxZWYxOWIxZmJlYTAzMmEyZTE2OWNiZGFhODE0YTYzODcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvanNjLWNsaS9q
c2MtY2xpL1NjcmlwdElucHV0U291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0KLSNpZm5k
ZWYgU2NyaXB0SW5wdXRTb3VyY2VfaAotI2RlZmluZSBTY3JpcHRJbnB1dFNvdXJjZV9oCi0KLUBj
bGFzcyBKU0NvbnRleHQ7Ci1AY2xhc3MgSlNWYWx1ZTsKLQotQGludGVyZmFjZSBTY3JpcHRJbnB1
dFNvdXJjZSA6IE5TT2JqZWN0Ci0KLS0gKGlkKWluaXRXaXRoQ29udGV4dDooSlNDb250ZXh0ICop
Y29udGV4dDsKLS0gKHZvaWQpYWRkVG9DdXJyZW50UnVuTG9vcDsKLS0gKHZvaWQpcmVtb3ZlRnJv
bVJlbW90ZVJ1bkxvb3A7Ci0tIChKU1ZhbHVlICopcnVuU2NyaXB0UmVtb3RlbHk6KE5TU3RyaW5n
ICopc2NyaXB0OwotLSAodm9pZClmaW5pc2hBc3luY0NhbGxiYWNrOihKU1ZhbHVlICopY2FsbGJh
Y2sgd2l0aFJlc3VsdDooaW50KXJlc3VsdDsKLS0gKHZvaWQpZGlkUmVjZWl2ZVNpZ25hbDsKLQot
QGVuZAotCi0jZW5kaWYgLy8gU2NyaXB0SW5wdXRTb3VyY2VfaAotCmRpZmYgLS1naXQgYS9Ub29s
cy9qc2MtY2xpL2pzYy1jbGkvU2NyaXB0SW5wdXRTb3VyY2UubSBiL1Rvb2xzL2pzYy1jbGkvanNj
LWNsaS9TY3JpcHRJbnB1dFNvdXJjZS5tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
MDk0MDFlMWUwYmUyZDhkMzVkNWI3OWRjNDM4NTFhOTc0NzJlYTgxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL2pzYy1jbGkvanNjLWNsaS9TY3Jp
cHRJbnB1dFNvdXJjZS5tCisrKyAvZGV2L251bGwKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW1wb3J0ICJTY3JpcHRJbnB1dFNvdXJjZS5oIgotCi0jaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgotI2ltcG9ydCA8cHRocmVhZC5oPgotCi12b2lkIHNjcmlw
dElucHV0U291cmNlU2NoZWR1bGVSb3V0aW5lICh2b2lkICppbmZvLCBDRlJ1bkxvb3BSZWYgcnVu
TG9vcCwgQ0ZTdHJpbmdSZWYgbW9kZSkKLXsKLX0KLQotdm9pZCBzY3JpcHRJbnB1dFNvdXJjZVBl
cmZvcm1Sb3V0aW5lICh2b2lkICppbmZvKQotewotICAgIFNjcmlwdElucHV0U291cmNlKiAgc291
cmNlID0gKF9fYnJpZGdlIFNjcmlwdElucHV0U291cmNlICopaW5mbzsKLSAgICBbc291cmNlIGRp
ZFJlY2VpdmVTaWduYWxdOwotfQotCi12b2lkIHNjcmlwdElucHV0U291cmNlQ2FuY2VsUm91dGlu
ZSAodm9pZCAqaW5mbywgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVmIG1vZGUpCi17
Ci19Ci0KLUBpbXBsZW1lbnRhdGlvbiBTY3JpcHRJbnB1dFNvdXJjZSB7Ci0gICAgQ0ZSdW5Mb29w
U291cmNlUmVmIG1fc291cmNlOwotICAgIENGUnVuTG9vcFJlZiBtX3J1bkxvb3A7Ci0gICAgTlNN
dXRhYmxlQXJyYXkgKm1faW5wdXRRdWV1ZTsKLSAgICBwdGhyZWFkX211dGV4X3QgbV9pbnB1dExv
Y2s7Ci0gICAgCi0gICAgTlNNdXRhYmxlQXJyYXkgKm1fb3V0cHV0UXVldWU7Ci0gICAgcHRocmVh
ZF9tdXRleF90IG1fb3V0cHV0TG9jazsKLSAgICBwdGhyZWFkX2NvbmRfdCBtX291dHB1dENvbmRp
dGlvbjsKLSAgICAKLSAgICBKU0NvbnRleHQgKm1fY29udGV4dDsKLX0KLQotLSAoaWQpaW5pdFdp
dGhDb250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgQ0ZSdW5M
b29wU291cmNlQ29udGV4dCBzb3VyY2VDb250ZXh0ID0gewotICAgICAgICAwLAotICAgICAgICAo
X19icmlkZ2Ugdm9pZCAqKShzZWxmKSwKLSAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwg
TlVMTCwKLSAgICAgICAgc2NyaXB0SW5wdXRTb3VyY2VTY2hlZHVsZVJvdXRpbmUsCi0gICAgICAg
IHNjcmlwdElucHV0U291cmNlQ2FuY2VsUm91dGluZSwKLSAgICAgICAgc2NyaXB0SW5wdXRTb3Vy
Y2VQZXJmb3JtUm91dGluZQotICAgIH07Ci0gICAgbV9zb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VD
cmVhdGUoTlVMTCwgMCwgJnNvdXJjZUNvbnRleHQpOwotICAgIAotICAgIG1faW5wdXRRdWV1ZSA9
IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgbV9vdXRwdXRRdWV1ZSA9IFtOU011dGFibGVB
cnJheSBhcnJheV07Ci0gICAgCi0gICAgbV9jb250ZXh0ID0gY29udGV4dDsKLSAgICBwdGhyZWFk
X211dGV4X2luaXQoJm1faW5wdXRMb2NrLCBOVUxMKTsKLSAgICBwdGhyZWFkX211dGV4X2luaXQo
Jm1fb3V0cHV0TG9jaywgTlVMTCk7Ci0gICAgcHRocmVhZF9jb25kX2luaXQoJm1fb3V0cHV0Q29u
ZGl0aW9uLCBOVUxMKTsKLSAgICAKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFs
bG9jCi17Ci0gICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZtX2lucHV0TG9jayk7Ci0gICAgcHRo
cmVhZF9tdXRleF9kZXN0cm95KCZtX291dHB1dExvY2spOwotICAgIHB0aHJlYWRfY29uZF9kZXN0
cm95KCZtX291dHB1dENvbmRpdGlvbik7Ci19Ci0KLS0gKHZvaWQpYWRkVG9DdXJyZW50UnVuTG9v
cAotewotICAgIG1fcnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLSAgICBDRlJ1bkxv
b3BBZGRTb3VyY2UobV9ydW5Mb29wLCBtX3NvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsK
LX0KLQotLSAodm9pZClyZW1vdmVGcm9tUmVtb3RlUnVuTG9vcAotewotICAgIENGUnVuTG9vcFJl
bW92ZVNvdXJjZShtX3J1bkxvb3AsIG1fc291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwot
fQotCi0tICh2b2lkKWRpZFJlY2VpdmVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0Ci17Ci0gICAg
SlNWYWx1ZSAqcmVzdWx0ID0gW21fY29udGV4dCBldmFsdWF0ZVNjcmlwdDpzY3JpcHRdOwotICAg
IAotICAgIGlmIChtX2NvbnRleHQuZXhjZXB0aW9uKSB7Ci0gICAgICAgIHJlc3VsdCA9IG1fY29u
dGV4dC5leGNlcHRpb247Ci0gICAgICAgIG1fY29udGV4dC5leGNlcHRpb24gPSBuaWw7Ci0gICAg
fQotICAgIAotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbV9vdXRwdXRMb2NrKTsKLSAgICBbbV9v
dXRwdXRRdWV1ZSBhZGRPYmplY3Q6cmVzdWx0XTsKLSAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZt
X291dHB1dENvbmRpdGlvbik7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJm1fb3V0cHV0TG9j
ayk7Ci19Ci0KLS0gKHZvaWQpZGlkUmVjZWl2ZVNpZ25hbAotewotICAgIHB0aHJlYWRfbXV0ZXhf
bG9jaygmbV9pbnB1dExvY2spOwotICAgIHdoaWxlIChbbV9pbnB1dFF1ZXVlIGNvdW50XSkgewot
ICAgICAgICBOU1N0cmluZyAqbmV4dFNjcmlwdCA9IFttX2lucHV0UXVldWUgb2JqZWN0QXRJbmRl
eDowXTsKLSAgICAgICAgW21faW5wdXRRdWV1ZSByZW1vdmVPYmplY3RBdEluZGV4OjBdOwotICAg
ICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbV9pbnB1dExvY2spOwotICAgICAgICAKLSAgICAg
ICAgW3NlbGYgZGlkUmVjZWl2ZVNjcmlwdDpuZXh0U2NyaXB0XTsKLSAgICAgICAgCi0gICAgICAg
IHB0aHJlYWRfbXV0ZXhfbG9jaygmbV9pbnB1dExvY2spOwotICAgIH0KLSAgICBwdGhyZWFkX211
dGV4X3VubG9jaygmbV9pbnB1dExvY2spOwotfQotCi0tIChKU1ZhbHVlICopcnVuU2NyaXB0UmVt
b3RlbHk6KE5TU3RyaW5nICopc2NyaXB0Ci17Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZtX2lu
cHV0TG9jayk7Ci0gICAgW21faW5wdXRRdWV1ZSBhZGRPYmplY3Q6c2NyaXB0XTsKLSAgICBwdGhy
ZWFkX211dGV4X3VubG9jaygmbV9pbnB1dExvY2spOwotICAgIAotICAgIENGUnVuTG9vcFNvdXJj
ZVNpZ25hbChtX3NvdXJjZSk7Ci0gICAgQ0ZSdW5Mb29wV2FrZVVwKG1fcnVuTG9vcCk7Ci0gICAg
Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZtX291dHB1dExvY2spOwotICAgIHdoaWxlICghW21f
b3V0cHV0UXVldWUgY291bnRdKQotICAgICAgICBwdGhyZWFkX2NvbmRfd2FpdCgmbV9vdXRwdXRD
b25kaXRpb24sICZtX291dHB1dExvY2spOwotICAgIEpTVmFsdWUgKnJlc3VsdCA9IFttX291dHB1
dFF1ZXVlIG9iamVjdEF0SW5kZXg6MF07Ci0gICAgW21fb3V0cHV0UXVldWUgcmVtb3ZlT2JqZWN0
QXRJbmRleDowXTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbV9vdXRwdXRMb2NrKTsKLSAg
ICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0tICh2b2lkKWZpbmlzaEFzeW5jQ2FsbGJhY2s6
KEpTVmFsdWUgKiljYWxsYmFjayB3aXRoUmVzdWx0OihpbnQpcmVzdWx0Ci17Ci0gICAgcHRocmVh
ZF9tdXRleF9sb2NrKCZtX2lucHV0TG9jayk7Ci0gICAgW21faW5wdXRRdWV1ZSBhZGRPYmplY3Q6
XnsKLSAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgW2NhbGxiYWNrIGNhbGxXaXRo
QXJndW1lbnRzOkBbXV07Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
W2NhbGxiYWNrIGNhbGxXaXRoQXJndW1lbnRzOkBbXV07Ci0gICAgfV07Ci0gICAgcHRocmVhZF9t
dXRleF91bmxvY2soJm1faW5wdXRMb2NrKTsKLSAgICAKLSAgICBDRlJ1bkxvb3BTb3VyY2VTaWdu
YWwobV9zb3VyY2UpOwotICAgIENGUnVuTG9vcFdha2VVcChtX3J1bkxvb3ApOwotfQotCi1AZW5k
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvanNjLWNsaS9q
c2MtY2xpL21haW4ubSBiL1Rvb2xzL2pzYy1jbGkvanNjLWNsaS9tYWluLm0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGEyYjU0NjQ2YTI4Yzk4MjUzYWQ5OWYxOTgzN2EyYTRkNTUxMGI1
NjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMv
anNjLWNsaS9qc2MtY2xpL21haW4ubQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLQotI2ltcG9ydCAi
Q0xJSW5zdGFuY2UuaCIKLQotaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10p
Ci17Ci0gICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIENMSUluc3RhbmNlICppbnN0YW5j
ZSA9IFtbQ0xJSW5zdGFuY2UgYWxsb2NdIGluaXRdOwotICAgICAgICAKLSAgICAgICAgLy8gVE9E
TzogQWRkIHJlYWwgYXJndW1lbnRzIGhhbmRsaW5nLgotICAgICAgICBpZiAoYXJnYyA+IDEpCi0g
ICAgICAgICAgICBbaW5zdGFuY2UgbG9hZEZpbGU6W05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5n
OmFyZ3ZbMV0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKLSAgICAgICAgICAgIAot
ICAgICAgICBbaW5zdGFuY2UgcnVuXTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0K
</data>

          </attachment>
      

    </bug>

</bugzilla>