<?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>184168</bug_id>
          
          <creation_ts>2018-03-29 18:40:22 -0700</creation_ts>
          <short_desc>Remove WTF_EXPORT_STRING_API</short_desc>
          <delta_ts>2018-03-29 19:36:09 -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>Web Template Framework</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>
          
          <blocked>184164</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jfbastien</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1410479</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-03-29 18:40:22 -0700</bug_when>
    <thetext>Remove WTF_EXPORT_STRING_API as requested by a FIXME, and use WTF_EXPORT_PRIVATE instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410480</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-29 18:40:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/39023253&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410481</commentid>
    <comment_count>2</comment_count>
      <attachid>336830</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-03-29 18:42:19 -0700</bug_when>
    <thetext>Created attachment 336830
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410487</commentid>
    <comment_count>3</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-03-29 18:52:35 -0700</bug_when>
    <thetext>Forgot to say, I did this with:
  git grep WTF_EXPORT_STRING_API ./Source/ | grep -v Change | cut -d: -f1 | sort -u | xargs -n1 -I{} gsed -i &apos;s/WTF_EXPORT_STRING_API/WTF_EXPORT_PRIVATE/g&apos; {}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410489</commentid>
    <comment_count>4</comment_count>
      <attachid>336830</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-29 19:10:30 -0700</bug_when>
    <thetext>Comment on attachment 336830
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410492</commentid>
    <comment_count>5</comment_count>
      <attachid>336830</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-29 19:36:08 -0700</bug_when>
    <thetext>Comment on attachment 336830
patch

Clearing flags on attachment: 336830

Committed r230090: &lt;https://trac.webkit.org/changeset/230090&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410493</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-29 19:36:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336830</attachid>
            <date>2018-03-29 18:42:19 -0700</date>
            <delta_ts>2018-03-29 19:36:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Remove-WTF_EXPORT_STRING_API.patch</filename>
            <type>text/plain</type>
            <size>52985</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBjNzIyZmE5YjllNDg2ZDBjODVjMTFjNDUyMDE3MzlkMWNkOTczZDc2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDI5IE1hciAyMDE4IDE4OjQxOjUyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gUmVtb3Zl
IFdURl9FWFBPUlRfU1RSSU5HX0FQSQoKLS0tCiBTb3VyY2UvV1RGL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICB8ICAxOSArKysrCiBTb3VyY2UvV1RGL3d0Zi9FeHBvcnRNYWNyb3MuaCAgICAg
ICAgICB8ICAgMyArLQogU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaCAgICAgfCAg
MTYgKy0tCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaCB8ICAzMCArKyst
LS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oICAgICAgIHwgMTQ2ICsrKysrKysr
KysrKystLS0tLS0tLS0tLS0tCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCAgICAg
ICB8ICAzMiArKystLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oICAgICAgIHwg
ICA4ICstCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oICAgICAgICB8IDE4NiArKysr
KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDggZmlsZXMgY2hhbmdlZCwgMjI5IGluc2Vy
dGlvbnMoKyksIDIxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIwZTNkZjguLmYxY2UwNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTgtMDMtMjkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSBXVEZfRVhQT1JUX1NUUklOR19BUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDE2OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzkwMjMyNTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBhcyByZXF1ZXN0ZWQg
YnkgYSBGSVhNRSwgYW5kIHVzZQorICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW5zdGVhZC4K
KworICAgICAgICAqIHd0Zi9FeHBvcnRNYWNyb3MuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmg6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TeW1ib2xJbXBsLmg6CisgICAgICAgICogd3RmL3Rl
eHQvV1RGU3RyaW5nLmg6CisKIDIwMTgtMDMtMjkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzAwNjIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FeHBvcnRNYWNyb3MuaCBiL1NvdXJjZS9XVEYv
d3RmL0V4cG9ydE1hY3Jvcy5oCmluZGV4IGU0ODk1YTQuLmRlNjM1OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0V4cG9ydE1hY3Jvcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0V4cG9ydE1h
Y3Jvcy5oCkBAIC04OCw2ICs4OCw1IEBACiAKICNlbmRpZiAvLyBVU0UoRVhQT1JUX01BQ1JPUykK
IAotLy8gRklYTUU6IFdlIHNob3VsZCByZXBsYWNlIFdURl9FWFBPUlREQVRBIGFuZCBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgd2l0aCBXVEZfRVhQT1JUX1BSSVZBVEUuCisvLyBGSVhNRTogV2Ugc2hv
dWxkIHJlcGxhY2UgV1RGX0VYUE9SVERBVEEgYW5kIHdpdGggV1RGX0VYUE9SVF9QUklWQVRFLgog
I2RlZmluZSBXVEZfRVhQT1JUREFUQSBXVEZfRVhQT1JUX1BSSVZBVEUKLSNkZWZpbmUgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIFdURl9FWFBPUlRfUFJJVkFURQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmgKaW5kZXggYzkwYjFmZi4uNTAxOTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oCkBAIC0xMDQsMTEgKzEwNCwxMSBAQCBwdWJsaWM6CiAKICAgICBVQ2hhciBvcGVyYXRvcltd
KHVuc2lnbmVkIGludCBpKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ1tpXTsgfQogCi0gICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNTdHJpbmcgbnVtYmVyKGludCk7Ci0gICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNTdHJpbmcgbnVtYmVyKHVuc2lnbmVk
KTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIEF0b21pY1N0cmluZyBudW1iZXIo
dW5zaWduZWQgbG9uZyk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBBdG9taWNT
dHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBBdG9taWNTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgbnVtYmVyKGludCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIEF0b21pY1N0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgbnVtYmVyKHVuc2lnbmVk
IGxvbmcgbG9uZyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcg
bnVtYmVyKGRvdWJsZSk7CiAgICAgLy8gSWYgd2UgbmVlZCBtb3JlIG92ZXJsb2FkcyBvZiB0aGUg
bnVtYmVyIGZ1bmN0aW9uLCB3ZSBjYW4gYWRkIGFsbCB0aGUgb3RoZXJzIHRoYXQgU3RyaW5nIGhh
cywgYnV0IHRoZXNlIHNlZW0gdG8gZG8gZm9yIG5vdy4KIAogICAgIGJvb2wgY29udGFpbnMoVUNo
YXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jb250YWlucyhjaGFyYWN0ZXIp
OyB9CkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgogICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIg
Y2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9
CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3Qg
Y2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRz
V2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KTsgfQogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IEF0b21pY1N0cmluZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0OwotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBBdG9taWNTdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nIGNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyBj
b252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0OwogCiAgICAgaW50IHRvSW50KGJvb2wqIG9r
ID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9JbnQob2spOyB9CiAgICAgZG91YmxlIHRv
RG91YmxlKGJvb2wqIG9rID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9Eb3VibGUob2sp
OyB9CkBAIC0xNjgsNyArMTY4LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIENhc2VDb252
ZXJ0VHlwZSB7IFVwcGVyLCBMb3dlciB9OwogICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZT4g
QXRvbWljU3RyaW5nIGNvbnZlcnRBU0NJSUNhc2UoKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hh
ciosIGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEF0b21pY1N0
cmluZyBmcm9tVVRGOEludGVybmFsKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7CiAKICAgICBT
dHJpbmcgbV9zdHJpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaApp
bmRleCA0MGRhNzNiLi41MmM2OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0
b21pY1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0lt
cGwuaApAQCAtMjksOCArMjksOCBAQCBjbGFzcyBBdG9taWNTdHJpbmdUYWJsZTsKIAogY2xhc3Mg
QXRvbWljU3RyaW5nSW1wbCA6IHB1YmxpYyBVbmlxdWVkU3RyaW5nSW1wbCB7CiBwdWJsaWM6Ci0g
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4g
bG9va1VwKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBsb29rVXAoY29uc3QgVUNo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
UHRyPEF0b21pY1N0cmluZ0ltcGw+IGxvb2tVcChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1w
bD4gbG9va1VwKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgUmVm
UHRyPEF0b21pY1N0cmluZ0ltcGw+IGxvb2tVcChTdHJpbmdJbXBsKiBzdHJpbmcpCiAgICAgewog
ICAgICAgICBpZiAoIXN0cmluZyB8fCBzdHJpbmctPmlzQXRvbWljKCkpCkBAIC00MCwyNiArNDAs
MjYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKEF0b21pY1N0cmluZ0ltcGwq
KTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmUHRyPEF0b21pY1N0cmlu
Z0ltcGw+IGFkZChjb25zdCBMQ2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGFkZChjb25zdCBMQ2hhciopOwogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciogcykg
eyByZXR1cm4gYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH07Ci0gICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gYWRk
KGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEF0b21p
Y1N0cmluZ0ltcGw+IGFkZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gYWRkKGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWZQ
dHI8QXRvbWljU3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkg
eyByZXR1cm4gYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoKTsg
fTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJ
bXBsPiBhZGQoY29uc3QgVUNoYXIqKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0
cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoU3RyaW5nSW1wbCosIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gYWRkKFN0cmluZ0ltcGwqIHN0cmluZykKICAgICB7
CiAgICAgICAgIGlmICghc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF0
b21pY1N0cmluZ0ltcGwqPihzdHJpbmcpOwogICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmcpOwog
ICAgIH0KLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJp
bmdJbXBsPiBhZGQoY29uc3QgU3RhdGljU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBzdGF0aWMgUmVmPEF0b21pY1N0cmluZ0ltcGw+IGFkZExpdGVyYWwoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoY29uc3QgU3RhdGljU3RyaW5nSW1w
bCopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEF0b21pY1N0cmluZ0ltcGw+
IGFkZExpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKIAog
ICAgIC8vIFJldHVybnMgbnVsbCBpZiB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBhbiBpbnZhbGlk
IFVURi04IHNlcXVlbmNlLgotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmUHRy
PEF0b21pY1N0cmluZ0ltcGw+IGFkZFVURjgoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIq
IGVuZCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5n
SW1wbD4gYWRkVVRGOChjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKTsKICNpZiBV
U0UoQ0YpCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWZQdHI8QXRvbWljU3Ry
aW5nSW1wbD4gYWRkKENGU3RyaW5nUmVmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBhZGQoQ0ZTdHJpbmdSZWYpOwogI2VuZGlmCiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUYWJsZVByb3ZpZGVyPgpAQCAtNzEsNyArNzEsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgYm9vbCBpc0luQXRvbWljU3RyaW5nVGFibGUoU3RyaW5nSW1wbCop
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc0luQXRvbWljU3RyaW5nVGFi
bGUoU3RyaW5nSW1wbCopOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC05NSwxMCArOTUsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHN0cmluZ1RhYmxlLCBzdHJpbmcp
OwogICAgIH0KIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPEF0b21pY1N0
cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwmKTsKLSAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFJlZjxBdG9taWNTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShBdG9taWNTdHJp
bmdUYWJsZSYsIFN0cmluZ0ltcGwmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJl
ZjxBdG9taWNTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsJik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXRvbWljU3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoQXRv
bWljU3RyaW5nVGFibGUmLCBTdHJpbmdJbXBsJik7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBsb29rVXBTbG93Q2FzZShTdHJpbmdJ
bXBsJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5n
SW1wbD4gbG9va1VwU2xvd0Nhc2UoU3RyaW5nSW1wbCYpOwogfTsKIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggNzAyOWYxOS4uMGE1Njg3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTIxOCwxNiArMjE4LDE2IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nSW1wbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0lt
cGw+JiYpOwogCiBwdWJsaWM6Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyB2b2lk
IGRlc3Ryb3koU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBkZXN0cm95KFN0cmluZ0ltcGwqKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0
aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRl
KGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxp
bmVDYXBhY2l0eT4mKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiBjcmVhdGU4Qml0SWZQb3NzaWJsZShjb25zdCBVQ2hhciopOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNv
bnN0IFVDaGFyKik7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
Y3JlYXRlKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4g
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3Ro
KTsgfQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNy
ZWF0ZShjb25zdCBMQ2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0
cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBMQ2hhciopOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciogc3RyaW5nKSB7IHJldHVybiBjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHN0cmluZykpOyB9CiAKICAgICBzdGF0
aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKFN0cmluZ0ltcGwm
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CkBAIC0yMzUsMTMgKzIzNSwxMyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciAoJilbY2hhcmFjdGVy
Q291bnRdKTsKIAogICAgIC8vIEZJWE1FOiBSZXBsYWNlIGNhbGxzIHRvIHRoZXNlIG92ZXJsb2Fk
cyBvZiBjcmVhdGVGcm9tTGl0ZXJhbCB0byBjcmVhdGVXaXRob3V0Q29weWluZyBpbnN0ZWFkLgot
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZy
b21MaXRlcmFsKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0
IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBj
cmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChj
b25zdCBjaGFyKik7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJp
bmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlV2l0aG91dENvcHlpbmcoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxl
bmd0aCwgVUNoYXIqJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVdp
dGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCwgTENoYXIqJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWY8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFy
KiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBSZWZQdHI8
U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIENoYXJh
Y3RlclR5cGUqJik7CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBTdHJpbmdJbXBsLiBUaGUgb3Jp
Z2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBSZWYsCkBAIC0yNjEsOCArMjYx
LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2Fw
YWNpdHk+CiAgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdWZWN0b3I8Q2hh
cmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
JiYpOwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4g
YWRvcHQoU3RyaW5nQnVmZmVyPFVDaGFyPiYmKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFJlZjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiYpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1
ZmZlcjxVQ2hhcj4mJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVyPExDaGFyPiYmKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgdW5zaWduZWQgbWFzaygpIGNvbnN0
IHsgcmV0dXJuIG1fbWFzazsgfQpAQCAtMjc4LDcgKzI3OCw3IEBAIHB1YmxpYzoKICAgICBzaXpl
X3QgY29zdCgpIGNvbnN0OwogICAgIHNpemVfdCBjb3N0RHVyaW5nR0MoKTsKIAotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Q7CiAKICAgICBib29sIGlzU3lt
Ym9sKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnU3RyaW5nS2lu
ZElzU3ltYm9sOyB9CiAgICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFu
ZEZsYWdzICYgc19oYXNoRmxhZ1N0cmluZ0tpbmRJc0F0b21pYzsgfQpAQCAtMjg4LDEzICsyODgs
MTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNTdWJTdHJpbmcoKSBjb25zdCB7IHJldHVybiBidWZm
ZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmc7IH0KICNlbmRpZgogCi0gICAgc3RhdGlj
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5nIHV0ZjhGb3JDaGFyYWN0ZXJzKGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBXVEZfRVhQT1JU
X1NUUklOR19BUEkgQ1N0cmluZyB1dGY4Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb252ZXJzaW9uTW9kZSA9IExlbmllbnRDb252ZXJzaW9u
KTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQ1N0cmluZyB1dGY4Rm9yUmFuZ2UodW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvbnZlcnNpb25Nb2RlID0gTGVuaWVudENvbnZl
cnNpb24pIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5nIHV0ZjgoQ29u
dmVyc2lvbk1vZGUgPSBMZW5pZW50Q29udmVyc2lvbikgY29uc3Q7CisgICAgc3RhdGljIFdURl9F
WFBPUlRfUFJJVkFURSBDU3RyaW5nIHV0ZjhGb3JDaGFyYWN0ZXJzKGNvbnN0IExDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBXVEZfRVhQT1JUX1BSSVZBVEUg
Q1N0cmluZyB1dGY4Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoLCBDb252ZXJzaW9uTW9kZSA9IExlbmllbnRDb252ZXJzaW9uKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgQ1N0cmluZyB1dGY4Rm9yUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgsIENvbnZlcnNpb25Nb2RlID0gTGVuaWVudENvbnZlcnNpb24pIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIHV0ZjgoQ29udmVyc2lvbk1vZGUgPSBMZW5p
ZW50Q29udmVyc2lvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBib29sIHV0ZjhJbXBsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIGNoYXIqJiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBDb252ZXJzaW9uTW9k
ZSk7CisgICAgc3RhdGljIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHV0ZjhJbXBsKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGNoYXIqJiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBDb252ZXJzaW9uTW9kZSk7CiAgICAgCiAgICAgLy8gVGhlIGhpZ2ggYml0cyBv
ZiAnaGFzaCcgYXJlIGFsd2F5cyBlbXB0eSwgYnV0IHdlIHByZWZlciB0byBzdG9yZSBvdXIgZmxh
Z3MKICAgICAvLyBpbiB0aGUgbG93IGJpdHMgYmVjYXVzZSBpdCBtYWtlcyB0aGVtIHNsaWdodGx5
IG1vcmUgZWZmaWNpZW50IHRvIGFjY2Vzcy4KQEAgLTM3MCwxMSArMzcwLDExIEBAIHB1YmxpYzoK
ICAgICAvLyBpdHMgb3duIGNvcHkgb2YgdGhlIHN0cmluZy4KICAgICBSZWY8U3RyaW5nSW1wbD4g
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0
cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgUmVmPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKIAogICAg
IFVDaGFyIGF0KHVuc2lnbmVkKSBjb25zdDsKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVk
IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFVD
aGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CiAKICAgICBpbnQgdG9J
bnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICB1bnNpZ25lZCB0b1VJ
bnRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKQEAgLTM4Miw3ICszODIsNyBA
QCBwdWJsaWM6CiAgICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQg
YmFzZSA9IDEwKTsKICAgICBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApOwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGludCB0b0ludChib29s
KiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFn
ZQogICAgIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5n
IGdhcmJhZ2UKICAgICBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0
cmFpbGluZyBnYXJiYWdlCiAgICAgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSAwKTsgLy8g
aWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCkBAIC0zOTQsMTggKzM5NCwxOCBAQCBwdWJsaWM6CiAg
ICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCk7CiAgICAgZmxvYXQgdG9GbG9hdChib29s
KiBvayA9IDApOwogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBj
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8
U3RyaW5nSW1wbD4gY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKLSAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUo
KTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRUb0xv
d2VyY2FzZVdpdGhvdXRMb2NhbGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdCh1bnNpZ25lZCk7
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0VG9VcHBl
cmNhc2VXaXRob3V0TG9jYWxlKCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJp
bmdJbXBsPiBjb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlSWRlbnRpZmllcik7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJlZjxTdHJpbmdJ
bXBsPiBjb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxlSWRlbnRpZmllcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiBj
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3Ry
aW5nSW1wbD4gY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IGNvbnZlcnRUb0xvd2VyY2FzZVdp
dGhvdXRMb2NhbGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdCh1bnNpZ25lZCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0
TG9jYWxlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0
VG9Mb3dlcmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmll
cik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBsPiBjb252ZXJ0VG9VcHBl
cmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7CiAK
ICAgICBSZWY8U3RyaW5nSW1wbD4gZm9sZENhc2UoKTsKIAogICAgIFJlZjxTdHJpbmdJbXBsPiBz
dHJpcFdoaXRlU3BhY2UoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0lt
cGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3Ry
aW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAgICAgUmVmPFN0cmluZ0ltcGw+IHNpbXBs
aWZ5V2hpdGVTcGFjZShDb2RlVW5pdE1hdGNoRnVuY3Rpb24pOwogCiAgICAgUmVmPFN0cmluZ0lt
cGw+IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nQ2hhcmFjdGVycyhDb2RlVW5pdE1hdGNoRnVuY3Rp
b24pOwpAQCAtNDE4LDUzICs0MTgsNTMgQEAgcHVibGljOgogICAgIHNpemVfdCBmaW5kKExDaGFy
IGNoYXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBzaXplX3QgZmluZChjaGFyIGNo
YXJhY3RlciwgdW5zaWduZWQgc3RhcnQgPSAwKTsKICAgICBzaXplX3QgZmluZChVQ2hhciBjaGFy
YWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNp
emVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1
bnNpZ25lZCBpbmRleCA9IDApOwogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWdu
ZWQgaW5kZXggPSAwKTsKICAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIq
IHN0cmluZywgdW5zaWduZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihzdHJpbmcpLCBpbmRleCk7IH0KLSAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBzaXplX3QgZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXgpOwotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0lt
cGwmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0
OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNl
KGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6
ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQpIGNvbnN0OwotCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCByZXZl
cnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgcmV2ZXJzZUZp
bmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKTsKLQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dp
dGgoY29uc3QgU3RyaW5nSW1wbCopIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCYpIGNvbnN0OwotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJ
bXBsKikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgc3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgYm9vbCBzdGFydHNXaXRoKFVDaGFyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExl
bmd0aCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ0lt
cGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVu
c2lnbmVkIGluZGV4KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1w
bCosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KSBjb25zdDsKKworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90
IHJldmVyc2VGaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5n
SW1wbCopIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc3RhcnRzV2l0aChVQ2hhcikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0Y2hMZW5ndGgpIGNv
bnN0OwogICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0YXJ0c1dpdGgo
Y29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBzdGFydHNX
aXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxKTsgfQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQpIGNvbnN0OwotCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dp
dGgoU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVuZHNXaXRo
KFN0cmluZ0ltcGwmKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0lt
cGwmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aChVQ2hh
cikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZW5kc1dpdGgoY29uc3Qg
Y2hhciosIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0KSBjb25zdDsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRo
KFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJp
bmdJbXBsJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBt
YXRjaExlbmd0aCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJv
b2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJl
dHVybiBlbmRzV2l0aChwcmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgYm9vbCBoYXNJbmZpeEVuZGluZ0F0KGNvbnN0IFN0cmluZ0ltcGwmLCB1bnNp
Z25lZCBlbmRPZmZzZXQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhhc0lu
Zml4RW5kaW5nQXQoY29uc3QgU3RyaW5nSW1wbCYsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29uc3Q7
CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNo
YXIsIFVDaGFyKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmluZ0ltcGw+IHJl
cGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0
cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
UmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKICAgICBBTFdBWVNf
SU5MSU5FIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyIHBhdHRlcm4sIGNvbnN0IGNoYXIq
IHJlcGxhY2VtZW50LCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCkgeyByZXR1cm4gcmVwbGFj
ZShwYXR0ZXJuLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocmVwbGFjZW1lbnQpLCBy
ZXBsYWNlbWVudExlbmd0aCk7IH0KLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmPFN0cmlu
Z0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IExDaGFyKiwgdW5zaWduZWQgcmVwbGFjZW1lbnRM
ZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShV
Q2hhciwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgUmVm
PFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgcmVwbGFj
ZW1lbnRMZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4g
cmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVu
Z3RoLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxTdHJpbmdJbXBs
PiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW5n
dGgsIFN0cmluZ0ltcGwqKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhckRpcmVj
dGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IG51bGxwdHIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVQ2hhckRpcmVjdGlvbiBkZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IG51bGxw
dHIpOwogCiAjaWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZT
dHJpbmcoKTsKICNlbmRpZgogCiAjaWZkZWYgX19PQkpDX18KLSAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgb3BlcmF0b3IgTlNTdHJpbmcgKigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBvcGVy
YXRvciBOU1N0cmluZyAqKCk7CiAjZW5kaWYKIAogI2lmIFNUUklOR19TVEFUUwpAQCAtNTM3LDI1
ICs1MzcsMjUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmFsdWVDaGVjazxTdHJpbmdJbXBsKj4gewog
CiAjZW5kaWYKIAotV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5n
SW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKLVdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVx
dWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciop
OwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgY2hhciogYikg
eyByZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfQot
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IExDaGFyKiwgdW5zaWduZWQpOwotV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwoY29u
c3QgU3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKiwgdW5zaWduZWQp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQpOwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCog
YSwgY29uc3QgY2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbChhLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYiksIGxlbmd0aCk7IH0KIGlubGluZSBib29sIGVx
dWFsKGNvbnN0IExDaGFyKiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbChiLCBhKTsg
fQogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1
cm4gZXF1YWwoYiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpKTsgfQotV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCYgYSwgY29uc3QgU3Ry
aW5nSW1wbCYgYik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJ
bXBsJiBhLCBjb25zdCBTdHJpbmdJbXBsJiBiKTsKIAotV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJv
b2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKLVdURl9F
WFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFVDaGFyKiwg
c2l6ZV90IGxlbmd0aCwgU3RyaW5nSW1wbCopOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1
YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KGNvbnN0IFVDaGFyKiwgc2l6ZV90IGxl
bmd0aCwgU3RyaW5nSW1wbCopOwogCiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nSW1wbCYsIGNvbnN0IFN0cmluZ0ltcGwmKTsKLVdURl9FWFBPUlRfU1RSSU5HX0FQSSBi
b29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmlu
Z0ltcGwqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKIGJvb2wgZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiwgY29uc3QgY2hhciopOwogYm9vbCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBjaGFyKik7CiAKLVdURl9F
WFBPUlRfU1RSSU5HX0FQSSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VOb25OdWxsKGNvbnN0
IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlTm9uTnVsbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3Qg
U3RyaW5nSW1wbCopOwogCiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYsIGNvbnN0IGNoYXIgKCZsb3dl
cmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgY2hh
ciAoJmxvd2VyY2FzZUxldHRlcnMpW2xlbmd0aF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApp
bmRleCBkMzgyY2UzLi5mMjYwMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtOTcs
MTYgKzk3LDE2IEBAIHB1YmxpYzoKIAogI2lmIFVTRShDRikKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGNvbnZlcnRzIG51bGwgc3RyaW5ncyB0byBlbXB0eSBzdHJpbmdzLgotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3RyaW5nV2l0aG91dENv
cHlpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBjcmVhdGVDRlN0cmluZ1dpdGhvdXRDb3B5aW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lm
ZGVmIF9fT0JKQ19fCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNvbnZlcnQgbnVsbCBzdHJpbmdz
IHRvIGVtcHR5IHN0cmluZ3MuCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJldGFpblB0cjxO
U1N0cmluZz4gY3JlYXRlTlNTdHJpbmcoKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgUmV0YWluUHRyPE5TU3RyaW5nPiBjcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJldGFpblB0cjxOU1N0cmluZz4gY3JlYXRlTlNT
dHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPE5TU3RyaW5n
PiBjcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5nIHV0ZjgoQ29udmVyc2lvbk1vZGUgPSBMZW5pZW50
Q29udmVyc2lvbikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgdXRmOChD
b252ZXJzaW9uTW9kZSA9IExlbmllbnRDb252ZXJzaW9uKSBjb25zdDsKIAogICAgIGNsYXNzIFVw
Y29udmVydGVkQ2hhcmFjdGVyczsKICAgICBVcGNvbnZlcnRlZENoYXJhY3RlcnMgdXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzKCkgY29uc3Q7CkBAIC0xMjcsMjIgKzEyNywyMiBAQCBwdWJsaWM6CiAgICAg
c2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAgICAgc2l6ZV90
IGZpbmQoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0Owog
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kKFN0cmluZ1ZpZXcsIHVuc2ln
bmVkIHN0YXJ0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3Ry
aW5nVmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0OwogCiAgICAgc2l6ZV90IHJldmVyc2VGaW5k
KFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKSBjb25zdDsKIAotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1Zp
ZXcmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IGZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQpIGNvbnN0OwogCiAgICAgYm9vbCBjb250YWlucyhVQ2hhcikgY29uc3Q7Ci0gICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIGJvb2wgY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmdWaWV3JikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgY29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQp
IGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zSWdub3JpbmdBU0NJ
SUNhc2UoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nVmlldyYsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0KSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0
YXJ0c1dpdGgoY29uc3QgU3RyaW5nVmlldyYpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3Jikg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJp
bmdWaWV3JikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKIAotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKLSAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZ1ZpZXcmKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRz
V2l0aChjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdWaWV3JikgY29uc3Q7CiAK
ICAgICBpbnQgdG9JbnQoKSBjb25zdDsKICAgICBpbnQgdG9JbnQoYm9vbCYgaXNWYWxpZCkgY29u
c3Q7CkBAIC0xNjYsOSArMTY2LDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmdWaWV3IHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nTWF0Y2hlZENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSosIGNv
bnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmKTsKIAogI2lmIENIRUNLX1NUUklOR1ZJRVdf
TElGRVRJTUUKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCB1bmRlcmx5aW5nU3RyaW5n
SXNWYWxpZCgpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHNldFVuZGVy
bHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nSW1wbCopOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSB2b2lkIHNldFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIHVuZGVybHlpbmdTdHJpbmdJc1ZhbGlkKCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VW5kZXJseWluZ1N0cmluZyhjb25zdCBTdHJpbmdJ
bXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VW5kZXJseWluZ1N0cmluZyhj
b25zdCBTdHJpbmdWaWV3Jik7CiAjZWxzZQogICAgIGJvb2wgdW5kZXJseWluZ1N0cmluZ0lzVmFs
aWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBzZXRVbmRlcmx5aW5nU3RyaW5n
KGNvbnN0IFN0cmluZ0ltcGwqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKaW5kZXggZDRj
M2Y2Ni4uMjU0NTVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBs
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKQEAgLTUwLDggKzUwLDgg
QEAgcHVibGljOgogCiAgICAgUmVnaXN0ZXJlZFN5bWJvbEltcGwqIGFzUmVnaXN0ZXJlZFN5bWJv
bEltcGwoKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN5bWJvbElt
cGw+IGNyZWF0ZU51bGxTeW1ib2woKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFJlZjxTeW1ib2xJbXBsPiBjcmVhdGUoU3RyaW5nSW1wbCYgcmVwKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFJlZjxTeW1ib2xJbXBsPiBjcmVhdGVOdWxsU3ltYm9sKCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3ltYm9sSW1wbD4gY3JlYXRlKFN0cmluZ0lt
cGwmIHJlcCk7CiAKICAgICBjbGFzcyBTdGF0aWNTeW1ib2xJbXBsIDogcHJpdmF0ZSBTdHJpbmdJ
bXBsU2hhcGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdGF0aWNTeW1ib2xJbXBs
KTsKQEAgLTEyNiw4ICsxMjYsOCBAQCBzdGF0aWNfYXNzZXJ0KHNpemVvZihTeW1ib2xJbXBsKSA9
PSBzaXplb2YoU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCksICIiKTsKIAogY2xhc3MgUHJp
dmF0ZVN5bWJvbEltcGwgOiBwdWJsaWMgU3ltYm9sSW1wbCB7CiBwdWJsaWM6Ci0gICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8UHJpdmF0ZVN5bWJvbEltcGw+IGNyZWF0ZU51bGxT
eW1ib2woKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxQcml2YXRlU3lt
Ym9sSW1wbD4gY3JlYXRlKFN0cmluZ0ltcGwmIHJlcCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8UHJpdmF0ZVN5bWJvbEltcGw+IGNyZWF0ZU51bGxTeW1ib2woKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxQcml2YXRlU3ltYm9sSW1wbD4gY3JlYXRlKFN0
cmluZ0ltcGwmIHJlcCk7CiAKIHByaXZhdGU6CiAgICAgUHJpdmF0ZVN5bWJvbEltcGwoY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGE1YWYwYWEuLmI0ODdkMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaApAQCAtNDAsMzcgKzQwLDM3IEBAIGNsYXNzIEFTQ0lJTGl0ZXJhbDsK
IAogLy8gRGVjbGFyYXRpb25zIG9mIHN0cmluZyBvcGVyYXRpb25zCiAKLVdURl9FWFBPUlRfU1RS
SU5HX0FQSSBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1NUUklOR19BUEkgdW5zaWdu
ZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sg
PSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLVdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25l
ZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IG51bGxwdHIsIGludCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0
ZXJzVG9JbnRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwg
aW50IGJhc2UgPSAxMCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludFN0
cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9
IDEwKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0
KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTAp
OworV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29u
c3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBp
bnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2
NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKLVdURl9FWFBPUlRfU1RSSU5HX0FQSSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50
NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJh
c2UgPSAxMCk7Ci1XVEZfRVhQT1JUX1NUUklOR19BUEkgdWludDY0X3QgY2hhcmFjdGVyc1RvVUlu
dDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBi
YXNlID0gMTApOworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2
NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRT
dHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2Ug
PSAxMCk7CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgTENoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBpbnRwdHJfdCBjaGFy
YWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVs
bHB0ciwgaW50IGJhc2UgPSAxMCk7CiAKLVdURl9FWFBPUlRfU1RSSU5HX0FQSSBpbnQgY2hhcmFj
dGVyc1RvSW50KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBp
Z25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLVdURl9FWFBPUlRfU1RSSU5HX0FQSSBpbnQgY2hhcmFj
dGVyc1RvSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBp
Z25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVy
c1RvSW50KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25v
cmVzIHRyYWlsaW5nIGdhcmJhZ2UKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1Rv
SW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVz
IHRyYWlsaW5nIGdhcmJhZ2UKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgTENoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFn
ZQogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCog
b2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiBpbnQ2NF90IGNoYXJh
Y3RlcnNUb0ludDY0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAv
LyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29u
c3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxp
bmcgZ2FyYmFnZQogdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0KGNvbnN0IExDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLVdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjQoY29uc3QgVUNo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2Fy
YmFnZQorV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NChjb25z
dCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsgLy8gaWdub3JlcyB0cmFpbGlu
ZyBnYXJiYWdlCiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgTENoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gbnVsbHB0cik7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50
cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IG51bGxwdHIpOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIAogLy8gRklYTUU6IExpa2Ug
dGhlIHN0cmljdCBmdW5jdGlvbnMgYWJvdmUsIHRoZXNlIGdpdmUgZmFsc2UgZm9yICJvayIgd2hl
biB0aGVyZSBpcyB0cmFpbGluZyBnYXJiYWdlLgogLy8gTGlrZSB0aGUgbm9uLXN0cmljdCBmdW5j
dGlvbnMgYWJvdmUsIHRoZXNlIHJldHVybiB0aGUgdmFsdWUgd2hlbiB0aGVyZSBpcyB0cmFpbGlu
ZyBnYXJiYWdlLgogLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBjb25z
aXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgotV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gbnVsbHB0cik7Ci1XVEZfRVhQT1JUX1NUUklOR19BUEkgZG91YmxlIGNoYXJhY3Rl
cnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsKLVdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBMQ2hhcios
IHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsKLVdURl9FWFBPUlRfU1RSSU5HX0FQSSBmbG9h
dCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxs
cHRyKTsKLVdURl9FWFBPUlRfU1RSSU5HX0FQSSBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25z
dCBMQ2hhciosIHNpemVfdCwgc2l6ZV90JiBwYXJzZWRMZW5ndGgpOwotV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBzaXpl
X3QmIHBhcnNlZExlbmd0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNoYXJhY3RlcnNU
b0RvdWJsZShjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IG51bGxwdHIpOworV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IGNoYXJh
Y3RlcnNUb0Zsb2F0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOwor
V1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIpOworV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IGNo
YXJhY3RlcnNUb0Zsb2F0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBzaXplX3QmIHBhcnNlZExlbmd0
aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNo
YXIqLCBzaXplX3QsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKIAogdGVtcGxhdGU8Ym9vbCBpc1Nw
ZWNpYWxDaGFyYWN0ZXIoVUNoYXIpLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQWxs
U3BlY2lhbENoYXJhY3RlcnMoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHNpemVfdCk7CiAKQEAgLTgy
LDcgKzgyLDcgQEAgcHVibGljOgogICAgIFN0cmluZygpID0gZGVmYXVsdDsKIAogICAgIC8vIENv
bnN0cnVjdCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLgotICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBieSBjb3B5aW5nIHRo
ZSBjb250ZW50cyBvZiBhIHZlY3Rvci4gIFRvIGF2b2lkCiAgICAgLy8gY29weWluZywgY29uc2lk
ZXIgdXNpbmcgU3RyaW5nOjphZG9wdCBpbnN0ZWFkLgpAQCAtOTYsMTUgKzk2LDE1IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyPiYpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGgg
VVRGLTE2IGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBTdHJpbmcoY29uc3QgVUNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nKGNvbnN0IFVDaGFyKik7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0
aCBsYXRpbjEgZGF0YS4KLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nKGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgY2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmlu
ZyB3aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KLSAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CiAK
ICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU3RyaW5n
SW1wbC4KICAgICBTdHJpbmcoU3RyaW5nSW1wbCYpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCopOwogCiAgICAgLy8gQ29uc3RydWN0IGEg
c3RyaW5nIGZyb20gYSBjb25zdGFudCBzdHJpbmcgbGl0ZXJhbC4KLSAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhBU0NJSUxpdGVyYWwpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZyb20gYSBj
b25zdGFudCBzdHJpbmcgbGl0ZXJhbC4KICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGlzIHRoZSAi
YmlnIiB2ZXJzaW9uLCBhcyBpdCBwdXQgdGhlIGxlbmd0aCBpbiB0aGUgZnVuY3Rpb24gY2FsbCBh
bmQgZ2VuZXJhdGUgYmlnZ2VyIGNvZGUuCkBAIC0xNjAsMjcgKzE2MCwyNyBAQCBwdWJsaWM6CiAK
ICAgICB1bnNpZ25lZCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1w
bC0+bGVuZ3RoKCkgKiAoaXM4Qml0KCkgPyBzaXplb2YoTENoYXIpIDogc2l6ZW9mKFVDaGFyKSkg
OiAwOyB9CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgQ1N0cmluZyBhc2NpaSgpIGNvbnN0
OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5nIGxhdGluMSgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgQ1N0cmluZyB1dGY4KENvbnZlcnNpb25Nb2RlKSBjb25zdDsKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgQ1N0cmluZyB1dGY4KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IENTdHJpbmcgdXRmOChDb252ZXJzaW9uTW9kZSkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIENTdHJpbmcgdXRmOCgpIGNvbnN0OwogCiAgICAgVUNoYXIgY2hhcmFjdGVyQXQodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0OwogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIGNoYXJhY3RlckF0KGluZGV4KTsgfQogCi0gICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKLSAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcpOwotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nIGxvbmcpOwotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsK
IAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihkb3VibGUs
IHVuc2lnbmVkIHByZWNpc2lvbiA9IDYsIFRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID0g
VHJ1bmNhdGVUcmFpbGluZ1plcm9zKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cmluZyBudW1iZXIoZG91YmxlLCB1bnNpZ25lZCBwcmVjaXNpb24gPSA2LCBUcmFpbGluZ1plcm9z
VHJ1bmNhdGluZ1BvbGljeSA9IFRydW5jYXRlVHJhaWxpbmdaZXJvcyk7CiAKICAgICAvLyBOdW1i
ZXIgdG8gU3RyaW5nIGNvbnZlcnNpb24gZm9sbG93aW5nIHRoZSBFQ01BU2NyaXB0IGRlZmluaXRp
b24uCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyVG9TdHJp
bmdFQ01BU2NyaXB0KGRvdWJsZSk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBT
dHJpbmcgbnVtYmVyVG9TdHJpbmdGaXhlZFdpZHRoKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBs
YWNlcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgbnVtYmVyVG9TdHJp
bmdFQ01BU2NyaXB0KGRvdWJsZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJp
bmcgbnVtYmVyVG9TdHJpbmdGaXhlZFdpZHRoKGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNl
cyk7CiAKICAgICAvLyBGaW5kIGEgc2luZ2xlIGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28gd2l0
aCBtYXRjaCBmdW5jdGlvbiAmIGxhdGluMSBmb3Jtcy4KICAgICBzaXplX3QgZmluZChVQ2hhciBj
aGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5maW5kKGNoYXJhY3Rlciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KQEAgLTE5Nyw5ICsxOTcs
OSBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3RlciwgdW5z
aWduZWQgc3RhcnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoY2hhcmFjdGVyLCBzdGFydCkg
OiBub3RGb3VuZDsgfQogICAgIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0cmlu
ZywgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyaW5nLmltcGwo
KSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBWZWN0
b3I8VUNoYXI+IGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKSBjb25zdDsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGNoYXJhY3Rl
clN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVQ2hh
cjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OwogCiAgICAgYm9vbCBjb250
YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBu
b3RGb3VuZDsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTENoYXIqIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gZmluZChzdHJpbmcpICE9IG5vdEZvdW5kOyB9CkBAIC0yMjAsMTMgKzIyMCwxMyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dp
dGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX2lt
cGwgPyBtX2ltcGwtPmVuZHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgpIDogIW1hdGNoTGVuZ3Ro
OyB9CiAgICAgYm9vbCBoYXNJbmZpeEVuZGluZ0F0KGNvbnN0IFN0cmluZyYgc3VmZml4LCB1bnNp
Z25lZCBlbmRPZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBzdWZmaXguaW1wbCgpICYm
IG1faW1wbC0+aGFzSW5maXhFbmRpbmdBdCgqc3VmZml4LmltcGwoKSwgZW5kT2Zmc2V0KTsgfQog
Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwot
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIGFwcGVuZChMQ2hhcik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGFwcGVuZChMQ2hhcik7CiAgICAgdm9pZCBhcHBlbmQoY2hhciBjaGFyYWN0
ZXIpIHsgYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpKTsgfTsKLSAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgdm9pZCBhcHBlbmQoVUNoYXIpOwotICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSB2b2lkIGFwcGVuZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBpbnNlcnQoY29uc3QgU3Ry
aW5nJiwgdW5zaWduZWQgcG9zaXRpb24pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFw
cGVuZChVQ2hhcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IExD
aGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBl
bmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGluc2VydChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKICAgICBT
dHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCk7CiAgICAgU3Ry
aW5nJiByZXBsYWNlKFVDaGFyIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCk7CkBA
IC0yMzQsNzkgKzIzNCw3OSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpOwogICAg
IHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmcmIHJlcGxhY2VXaXRoTGl0
ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0IGNoYXIgKCZyZXBsYWNlbWVudClbY2hhcmFjdGVyQ291
bnRdKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHRydW5jYXRlKHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgcmVtb3ZlKHVuc2lnbmVk
IHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGggPSAxKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gMSk7CiAKLSAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlv
biwgdW5zaWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHN1YnN0cmluZ1NoYXJp
bmdJbXBsKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGggPSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGggPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zaXRpb24sIHVu
c2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29u
c3Q7CiAgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBzdWJz
dHJpbmcoMCwgbGVuZ3RoKTsgfQogICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0IHsgcmV0dXJuIHN1YnN0cmluZyh0aGlzLT5sZW5ndGgoKSAtIGxlbmd0aCwgbGVuZ3RoKTsg
fQogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBjb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZSgpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgY29udmVydFRv
QVNDSUlVcHBlcmNhc2UoKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5n
IGNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKSBjb25zdDsKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgU3RyaW5nIGNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGVTdGFydGlu
Z0F0RmFpbGluZ0luZGV4OEJpdCh1bnNpZ25lZCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIFN0cmluZyBjb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCkgY29uc3Q7Ci0g
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBjb252ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9j
YWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBjb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRM
b2NhbGUoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNvbnZlcnRUb0xv
d2VyY2FzZVdpdGhvdXRMb2NhbGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdCh1bnNpZ25lZCkg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjb252ZXJ0VG9VcHBlcmNhc2VX
aXRob3V0TG9jYWxlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjb252
ZXJ0VG9Mb3dlcmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRp
ZmllcikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjb252ZXJ0VG9VcHBl
cmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikgY29u
c3Q7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHN0cmlwV2hpdGVTcGFjZSgp
IGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNw
YWNlKCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzaW1wbGlmeVdo
aXRlU3BhY2UoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIHN0cmlwV2hpdGVTcGFjZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uKSBj
b25zdDsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdDaGFyYWN0ZXJzKENvZGVVbml0TWF0Y2hGdW5jdGlvbikgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyByZW1vdmVDaGFyYWN0ZXJzKENvZGVVbml0TWF0Y2hG
dW5jdGlvbikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0NoYXJhY3RlcnMoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ29kZVVuaXRNYXRj
aEZ1bmN0aW9uKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhlIHN0cmluZyB3aXRoIGNhc2Ug
Zm9sZGVkIGZvciBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24uCiAgICAgLy8gVXNlIGNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlIGluc3RlYWQgaWYgQVNDSUkgY2FzZSBpbnNlbnNpdGl2ZSBjb21w
YXJpc29uIGlzIGRlc2lyZWQuCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBmb2xk
Q2FzZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZm9sZENhc2UoKSBj
b25zdDsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIGZvcm1hdChj
b25zdCBjaGFyICosIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7Ci0gICAgV1RGX0VY
UE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgZm9ybWF0V2l0aEFyZ3VtZW50cyhjb25zdCBj
aGFyICosIHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDApOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nIGZvcm1hdChjb25zdCBjaGFyICosIC4uLikgV1RGX0FU
VFJJQlVURV9QUklOVEYoMSwgMik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJp
bmcgZm9ybWF0V2l0aEFyZ3VtZW50cyhjb25zdCBjaGFyICosIHZhX2xpc3QpIFdURl9BVFRSSUJV
VEVfUFJJTlRGKDEsIDApOwogCiAgICAgLy8gUmV0dXJucyBhbiB1bmluaXRpYWxpemVkIHN0cmlu
Zy4gVGhlIGNoYXJhY3RlcnMgbmVlZHMgdG8gYmUgd3JpdHRlbgogICAgIC8vIGludG8gdGhlIGJ1
ZmZlciByZXR1cm5lZCBpbiBkYXRhIGJlZm9yZSB0aGUgcmV0dXJuZWQgc3RyaW5nIGlzIHVzZWQu
CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwg
VUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxl
bmd0aCwgZGF0YSk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVu
aW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRy
aWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKICAgICB2b2lkIHNwbGl0KGNvbnN0
IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0
KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7IH0KIAogICAgIHVzaW5nIFNwbGl0RnVuY3RvciA9
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmdWaWV3Jik+OwotICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50
cmllcywgY29uc3QgU3BsaXRGdW5jdG9yJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBW
ZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIGNvbnN0IFNw
bGl0RnVuY3RvciYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KFVD
aGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJl
c3VsdCkgY29uc3Q7CiAgICAgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJp
bmc+JiByZXN1bHQpIGNvbnN0IHsgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsgfQog
ICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0KFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CiAgICAgVmVj
dG9yPFN0cmluZz4gc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0OwogCi0gICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApIGNvbnN0OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25l
ZCB0b1VJbnRTdHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9r
ID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2Ug
PSAxMCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGludHB0cl90IHRvSW50UHRy
U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBi
YXNlID0gMTApIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnRT
dHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwg
aW50IGJhc2UgPSAxMCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQ2NF90IHRv
VUludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgaW50IHRvSW50KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwotICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSBudWxscHRy
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdWludDY0X3QgdG9VSW50NjQoYm9v
bCogb2sgPSBudWxscHRyKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgaW50cHRy
X3QgdG9JbnRQdHIoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgaW50IHRvSW50KGJvb2wqIG9rID0gbnVsbHB0cikgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHVuc2lnbmVkIHRvVUludChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBpbnQ2NF90IHRvSW50NjQoYm9vbCogb2sgPSBudWxscHRyKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3QgdG9VSW50NjQoYm9vbCogb2sg
PSBudWxscHRyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50cHRyX3QgdG9JbnRQ
dHIoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBMaWtlIHRoZSBz
dHJpY3QgZnVuY3Rpb25zIGFib3ZlLCB0aGVzZSBnaXZlIGZhbHNlIGZvciAib2siIHdoZW4gdGhl
cmUgaXMgdHJhaWxpbmcgZ2FyYmFnZS4KICAgICAvLyBMaWtlIHRoZSBub24tc3RyaWN0IGZ1bmN0
aW9ucyBhYm92ZSwgdGhlc2UgcmV0dXJuIHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGlzIHRyYWlsaW5n
IGdhcmJhZ2UuCiAgICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoZXNlIHdlcmUgbW9yZSBj
b25zaXN0ZW50IHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9ucyBpbnN0ZWFkLgotICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSBudWxscHRyKSBjb25zdDsK
LSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IG51bGxw
dHIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9Eb3VibGUoYm9vbCog
b2sgPSBudWxscHRyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgdG9GbG9h
dChib29sKiBvayA9IG51bGxwdHIpIGNvbnN0OwogCiAgICAgYm9vbCBwZXJjZW50YWdlKGludCYg
cGVyY2VudGFnZSkgY29uc3Q7CiAKICNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhfUkVGRVJFTkNF
X1FVQUxJRklFRF9GVU5DVElPTlMpCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBp
c29sYXRlZENvcHkoKSBjb25zdCAmOwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcg
aXNvbGF0ZWRDb3B5KCkgJiY7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBpc29sYXRl
ZENvcHkoKSBjb25zdCAmOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgaXNvbGF0ZWRD
b3B5KCkgJiY7CiAjZWxzZQotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBpc29sYXRlZENv
cHkoKSBjb25zdDsKICNlbmRpZgogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgaXNT
YWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKICAgICAvLyBQcmV2
ZW50IFN0cmluZ3MgZnJvbSBiZWluZyBpbXBsaWNpdGx5IGNvbnZlcnRhYmxlIHRvIGJvb2wgYXMg
aXQgd2lsbCBiZSBhbWJpZ3VvdXMgb24gYW55IHBsYXRmb3JtIHRoYXQKICAgICAvLyBhbGxvd3Mg
aW1wbGljaXQgY29udmVyc2lvbiB0byBhbm90aGVyIHBvaW50ZXIgdHlwZSAoZS5nLiwgTWFjIGFs
bG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIE5TU3RyaW5nICopLgpAQCAtMzE2LDEyICszMTYs
MTIgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGVCKCkgY29uc3Q7
CiAKICNpZiBVU0UoQ0YpCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyhDRlN0cmlu
Z1JlZik7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKENG
U3RyaW5nUmVmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBjcmVhdGVDRlN0cmluZygpIGNvbnN0OwogI2VuZGlmCiAKICNpZmRlZiBfX09CSkNfXwotICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcoTlNTdHJpbmcgKik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyhOU1N0cmluZyAqKTsKIAogICAgIC8vIFRoaXMgY29udmVyc2lvbiBj
b252ZXJ0cyB0aGUgbnVsbCBzdHJpbmcgdG8gYW4gZW1wdHkgTlNTdHJpbmcgcmF0aGVyIHRoYW4g
dG8gbmlsLgogICAgIC8vIEdpdmVuIENvY29hIGlkaW9tcywgdGhpcyBpcyBhIG1vcmUgdXNlZnVs
IGRlZmF1bHQuIENsaWVudHMgdGhhdCBuZWVkIHRvIHByZXNlcnZlIHRoZQpAQCAtMzI5LDIyICsz
MjksMjIgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdDsKICNlbmRp
ZgogCi0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbWFrZThCaXRGcm9t
MTZCaXRTb3VyY2UoY29uc3QgVUNoYXIqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgU3RyaW5nIG1ha2U4Qml0RnJvbTE2Qml0U291cmNlKGNvbnN0IFVDaGFyKiwgc2l6
ZV90KTsKICAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0YXRpYyBTdHJpbmcg
bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0
eT4mKTsKIAotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG1ha2UxNkJp
dEZyb204Qml0U291cmNlKGNvbnN0IExDaGFyKiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIFN0cmluZyBtYWtlMTZCaXRGcm9tOEJpdFNvdXJjZShjb25zdCBMQ2hhcios
IHNpemVfdCk7CiAKICAgICAvLyBTdHJpbmc6OmZyb21VVEY4IHdpbGwgcmV0dXJuIGEgbnVsbCBz
dHJpbmcgaWYKICAgICAvLyB0aGUgaW5wdXQgZGF0YSBjb250YWlucyBpbnZhbGlkIFVURi04IHNl
cXVlbmNlcy4KLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRG
OChjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRp
YyBTdHJpbmcgZnJvbVVURjgoY29uc3QgTENoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBMQ2hhciosIHNpemVfdCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgoY29uc3QgTENoYXIqKTsKICAgICBz
dGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5n
dGgpIHsgcmV0dXJuIGZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFy
YWN0ZXJzKSwgbGVuZ3RoKTsgfTsKICAgICBzdGF0aWMgU3RyaW5nIGZyb21VVEY4KGNvbnN0IGNo
YXIqIHN0cmluZykgeyByZXR1cm4gZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KHN0cmluZykpOyB9OwotICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5n
IGZyb21VVEY4KGNvbnN0IENTdHJpbmcmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFN0cmluZyBmcm9tVVRGOChjb25zdCBDU3RyaW5nJik7CiAgICAgc3RhdGljIFN0cmluZyBmcm9t
VVRGOChjb25zdCBWZWN0b3I8TENoYXI+JiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIFRyaWVzIHRv
IGNvbnZlcnQgdGhlIHBhc3NlZCBpbiBzdHJpbmcgdG8gVVRGLTgsIGJ1dCB3aWxsIGZhbGwgYmFj
ayB0byBMYXRpbi0xIGlmIHRoZSBzdHJpbmcgaXMgbm90IHZhbGlkIFVURi04LgotICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIGZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNr
KGNvbnN0IExDaGFyKiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBMQ2hhciosIHNpemVfdCk7CiAg
ICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiBj
aGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBmcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFjayhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7
IH07CiAKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0aW5nIGRpcmVjdGlvbiB1c2luZyB0aGUg
VW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQgUDMuCkBAIC0zNjIsNyArMzYyLDcg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCgpIGNvbnN0IHsgcmV0dXJuIGlz
TnVsbCgpID8gMCA6IGltcGwoKS0+ZXhpc3RpbmdIYXNoKCk7IH0KIAogI2lmbmRlZiBOREVCVUcK
LSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgdm9pZCBzaG93KCkgY29uc3Q7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgc2hvdygpIGNvbnN0OwogI2VuZGlmCiAKICAgICAvLyBUdXJucyB0
aGlzIFN0cmluZyBlbXB0eSBpZiB0aGUgU3RyaW5nSW1wbCBpcyBub3QgcmVmZXJlbmNlZCBieSBh
bnlvbmUgZWxzZS4KQEAgLTQxNywxMyArNDE3LDEzIEBAIE5TU3RyaW5nICogbnNTdHJpbmdOaWxJ
ZkVtcHR5KGNvbnN0IFN0cmluZyYpOwogCiAjZW5kaWYKIAotV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworV1RG
X0VYUE9SVF9QUklWQVRFIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpOwogYm9vbCBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQg
YXBwZW5kTnVtYmVyKFZlY3RvcjxDaGFyYWN0ZXJUeXBlPiYsIHVuc2lnbmVkIGNoYXIgbnVtYmVy
KTsKIAogLy8gU2hhcmVkIGdsb2JhbCBlbXB0eSBzdHJpbmcuCi1XVEZfRVhQT1JUX1NUUklOR19B
UEkgY29uc3QgU3RyaW5nJiBlbXB0eVN0cmluZygpOworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0
IFN0cmluZyYgZW1wdHlTdHJpbmcoKTsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEZWZh
dWx0SGFzaDsKIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFN0cmluZz4geyB1c2luZyBI
YXNoID0gU3RyaW5nSGFzaDsgfTsKLS0gCjIuOS4zCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>