<?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>114220</bug_id>
          
          <creation_ts>2013-04-08 15:20:00 -0700</creation_ts>
          <short_desc>Stop #include-ing all of JavaScriptCore in every DOM-related file</short_desc>
          <delta_ts>2013-10-19 00:07:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rego+ews</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>871203</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-08 15:20:00 -0700</bug_when>
    <thetext>Stop #include-ing all of JavaScriptCore in every DOM-related file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871229</commentid>
    <comment_count>1</comment_count>
      <attachid>196961</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-08 15:25:17 -0700</bug_when>
    <thetext>Created attachment 196961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871236</commentid>
    <comment_count>2</comment_count>
      <attachid>196963</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-08 15:40:52 -0700</bug_when>
    <thetext>Created attachment 196963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871244</commentid>
    <comment_count>3</comment_count>
      <attachid>196963</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-08 15:56:34 -0700</bug_when>
    <thetext>Comment on attachment 196963
Patch

Attachment 196963 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17627004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871246</commentid>
    <comment_count>4</comment_count>
      <attachid>196965</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-08 15:59:05 -0700</bug_when>
    <thetext>Created attachment 196965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871256</commentid>
    <comment_count>5</comment_count>
      <attachid>196965</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-08 16:13:58 -0700</bug_when>
    <thetext>Comment on attachment 196965
Patch

Attachment 196965 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17596014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871257</commentid>
    <comment_count>6</comment_count>
      <attachid>196967</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-08 16:15:11 -0700</bug_when>
    <thetext>Created attachment 196967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871265</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-08 16:39:26 -0700</bug_when>
    <thetext>Committed r147962: &lt;http://trac.webkit.org/changeset/147962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941462</commentid>
    <comment_count>8</comment_count>
      <attachid>196967</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-18 23:13:19 -0700</bug_when>
    <thetext>Comment on attachment 196967
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=196967&amp;action=review

&gt; Source/JavaScriptCore/runtime/WeakGCMap.h:30
&gt; -#include &quot;Weak.h&quot;
&gt; +#include &lt;heap/Weak.h&gt;
&gt; +#include &lt;heap/WeakInlines.h&gt;

Why are framework style includes necessary here? They are quite unusual in JSC.

I&apos;m interested because this prevents including JSArrayBufferView.h from DumpRenderTree somehow. &quot;Weak.h&quot; is fine, but &lt;heap/Weak.h&gt; is not.

This can probably be fixed from DumpRenderTree side, but I&apos;m curious what the policy is. Everywhere else in JSC, it&apos;s &quot;Weak.h&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941470</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-19 00:07:53 -0700</bug_when>
    <thetext>Filed bug 123057 for that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196961</attachid>
            <date>2013-04-08 15:25:17 -0700</date>
            <delta_ts>2013-04-08 15:40:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114220-20130408152501.patch</filename>
            <type>text/plain</type>
            <size>52090</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3OTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDEzLTA0LTA4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RvcCAjaW5jbHVkZS1pbmcgYWxsIG9mIEphdmFTY3JpcHRDb3JlIGluIGV2ZXJ5IERPTS1y
ZWxhdGVkIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDIyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEkgc2VwYXJhdGVkIFdlYWtJbmxpbmVzLmggZnJvbSBXZWFrLmggc28gV2ViQ29yZSBkYXRh
IHR5cGVzIHRoYXQgbmVlZAorICAgICAgICB0byBkZWNsYXJlIGEgV2VhazxUPiBkYXRhIG1lbWJl
ciBkb24ndCBoYXZlIHRvICNpbmNsdWRlIGFsbCBvZiB0aGUKKyAgICAgICAgaW5mcmFzdHJ1Y3R1
cmUgZm9yIGFjY2Vzc2luZyB0aGF0IGRhdGEgbWVtYmVyLgorCisgICAgICAgIFRoaXMgYWxzbyBy
ZXF1aXJlZCBzZXBhcmF0aW5nIFdlYWs8VD4gZnJvbSBQYXNzV2VhazxUPiBieSByZW1vdmluZyB0
aGUKKyAgICAgICAgV2Vha0ltcGxBY2Nlc3NvciBjbGFzcyB0ZW1wbGF0ZSBhbmQgcHVzaGluZyBj
b2RlIGRvd24gaW50byBpdHMgc3ViY2xhc3Nlcy4KKworICAgICAgICAqIEFQSS9KU1dlYWtPYmpl
Y3RNYXBSZWZQcml2YXRlLmNwcDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6
CisgICAgICAgICogaGVhcC9QYXNzV2Vhay5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFBh
c3NXZWFrKToKKyAgICAgICAgKEpTQzo6OjpQYXNzV2Vhayk6CisgICAgICAgIChKU0M6Ojo6b3Bl
cmF0b3IpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRv
cklubGluZXMuaDoKKyAgICAgICAgKiBoZWFwL1dlYWsuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChXZWFrKToKKyAgICAgICAgKiBoZWFwL1dlYWtJbmxpbmVzLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6Ojo6V2Vhayk6CisgICAgICAgIChKU0M6Ojo6b3BlcmF0b3IpOgorICAgICAgICAoSlND
Ojo6OmdldCk6CisgICAgICAgIChKU0M6Ojo6d2FzKToKKyAgICAgICAgKEpTQzo6d2Vha0NsZWFy
KToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBD
YWNoZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGlt
ZS9XZWFrR0NNYXAuaDoKKwogMjAxMy0wNC0wNSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IGZpeC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RN
YXBSZWZJbnRlcm5hbC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJXZWFr
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDc5
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDkxLDYgKzQ5MSw3IEBACiAJCTE0QkQ1
OUM1MEEzRThGOUYwMEJBRjU5QyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3
MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQkxNEJENUEzMDBB
M0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkQ1QTI5MEEzRTkxRjYwMEJBRjU5QyAvKiBKU0Nv
bnRleHRSZWYuY3BwICovOyB9OwogCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1
ZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgKi87IH07CisJCTE0QkU3
RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRTdEMzIxNzEzNUNGNDAwRDE4MDdBIC8qIFdl
YWtJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNFNjgxMENEQjFGQzAwMzY0
Q0NFIC8qIFdlYWtHQ01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBNjU4MUEwRjRFMzZG
NDAwMDE1MEZEIC8qIEpJVFN0dWJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMTRDQTk1OEIxNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Q0E5NThBMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNTMs
NiArMTM1NCw3IEBACiAJCTE0QkQ1QTJBMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29udGV4dFJlZi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNW
YWx1ZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1
ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QkQ1QTJEMEEzRTkxRjYw
MEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSB0
ZXN0YXBpLmM7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNEJFN0QzMjE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vha0lubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0lubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrR0NNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRDQTk1OEExNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlj
UHJvcGVydHlBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNENBOTU4
QzE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTMsNiArMjExNSw4IEBACiAJCQkJQzIxMTIyREUx
NUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAgKi8sCiAJCQkJQzIxMTIy
REYxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oICovLAogCQkJCTE0MkUz
MTJCMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCAqLywKKwkJCQlDMjgzMThGRjE2RkU0QjdE
MDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCAqLywKKwkJCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQyRTMxMkMxMzRGRjBBNjAwQUZB
REI1IC8qIEhhbmRsZVNldC5jcHAgKi8sCiAJCQkJMTQyRTMxMkQxMzRGRjBBNjAwQUZBREI1IC8q
IEhhbmRsZVNldC5oICovLAogCQkJCTE0MkUzMTJFMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVT
dGFjay5jcHAgKi8sCkBAIC0yMTQ2LDExICsyMTUwLDE0IEBACiAJCQkJMTQyRDZGMEYxMzUzOUE0
MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAogCQkJCUMyMTEyMkUwMTVERDlBQjMwMDc5MEUz
QSAvKiBNYXJrU3RhY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQ5NzIwOTAxNEVCODMxNTAwRkVCMUI3
IC8qIFBhc3NXZWFrLmggKi8sCisJCQkJQzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8qIFJlZ2lv
bi5oICovLAogCQkJCUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAg
Ki8sCiAJCQkJMTRCQTc4RjAxM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCiAJ
CQkJMEZDQjQwODUxNUMwQTNDMzAwNDg5MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovLAog
CQkJCTE0MkUzMTMyMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCAqLywKIAkJCQkxNDU3MjI4
NTE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovLAorCQkJCUMyREY0NDJEMTcw
N0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5jcHAgKi8sCisJCQkJQzJERjQ0MkUxNzA3QUMw
MTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmggKi8sCiAJCQkJMTQxNDQ4Q0MxM0ExNzgzNzAwRjVC
QTFBIC8qIFRpbnlCbG9vbUZpbHRlci5oICovLAogCQkJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi8sCiAJCQkJMEZDODE1MTIxNDA1MTE4NjAw
Q0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCAqLywKQEAgLTIxNjEsMTcgKzIxNjgsMTMgQEAK
IAkJCQkxNEY3MjU2MzE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmNwcCAqLywK
IAkJCQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmggKi8sCiAJ
CQkJMTRFODRGOUQxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJbXBsLmggKi8sCisJCQkJMTRCRTdE
MzIxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggKi8sCiAJCQkJMEYyNDJEQTUxM0Yz
QjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLywKIAkJCQkxNEU4NEY5
QjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgKi8sCiAJCQkJMTRFODRGOUMxNEVFMUFD
QzAwRDZENUQ0IC8qIFdlYWtTZXQuaCAqLywKIAkJCQkxNDE1MDEzMjE1NEJCMTNGMDA1RDhDOTgg
LyogV2Vha1NldElubGluZXMuaCAqLywKIAkJCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyog
V3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8sCiAJCQkJMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAz
IC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLywKLQkJCQlDMjgzMThGRjE2RkU0QjdEMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2suaCAqLywKLQkJCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdCRkQgLyog
SGFuZGxlQmxvY2tJbmxpbmVzLmggKi8sCi0JCQkJQzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8q
IFJlZ2lvbi5oICovLAotCQkJCUMyREY0NDJEMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lv
bi5jcHAgKi8sCi0JCQkJQzJERjQ0MkUxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMzMwOCw2ICszMzExLDcgQEAKIAkJCQkwRkY3MjlCQzE2NkFEMzYwMDAwRjVCQTMgLyogUHJv
ZmlsZXJDb21waWxlZEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRDE2NkFE
MzYwMDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
NzI5QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyRXhlY3V0aW9uQ291bnRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMTRCRTdEMzMxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRjE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJP
cmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQ
cm9maWxlck9yaWdpblN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4QzE2NzU0ODMz
MDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShy
ZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUg
IlJlZ0V4cC5oIgogI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9s
VGFibGUuaCIKLSNpbmNsdWRlICJXZWFrLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvUGFzc1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9QYXNzV2Vhay5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9QYXNzV2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwyOSArMzQsMTQgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWs7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzV2VhazsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFBhc3NX
ZWFrPFQ+IGFkb3B0V2VhayhXZWFrSW1wbCopOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0
eXBlbmFtZSBUPiBjbGFzcyBXZWFrSW1wbEFjY2Vzc29yIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNsYXNzIFBhc3NXZWFrIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIFQqIEdldFR5cGU7Ci0KLSAg
ICBUKiBvcGVyYXRvci0+KCkgY29uc3Q7Ci0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAg
R2V0VHlwZSBnZXQoKSBjb25zdDsKLQotICAgIGJvb2wgd2FzKEdldFR5cGUpIGNvbnN0OwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1dlYWsgOiBwdWJsaWMgV2Vha0ltcGxB
Y2Nlc3NvcjxQYXNzV2VhazxUPiwgVD4gewotcHVibGljOgotICAgIGZyaWVuZCBjbGFzcyBXZWFr
SW1wbEFjY2Vzc29yPFBhc3NXZWFrPFQ+LCBUPjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFdlYWtJ
bXBsQWNjZXNzb3I8UGFzc1dlYWs8VD4sIFQ+OjpHZXRUeXBlIEdldFR5cGU7Ci0KICAgICBQYXNz
V2VhaygpOwogICAgIFBhc3NXZWFrKHN0ZDo6bnVsbHB0cl90KTsKLSAgICBQYXNzV2VhayhHZXRU
eXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOworICAgIFBhc3NX
ZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOwogCiAgICAg
Ly8gSXQgc29tZXdoYXQgYnJlYWtzIHRoZSB0eXBlIHN5c3RlbSB0byBhbGxvdyB0cmFuc2ZlciBv
ZiBvd25lcnNoaXAgb3V0IG9mCiAgICAgLy8gYSBjb25zdCBQYXNzV2Vhay4gSG93ZXZlciwgaXQg
bWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NXZWFrCkBAIC02NiwxMCArNTEs
MTQgQEAgcHVibGljOgogCiAgICAgflBhc3NXZWFrKCk7CiAKKyAgICBUKiBvcGVyYXRvci0+KCkg
Y29uc3Q7CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgVCogZ2V0KCkgY29uc3Q7CisK
ICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9w
ZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhl
ciBpbnRlZ2VyIHR5cGVzLgotICAgIHR5cGVkZWYgSlNWYWx1ZSAoUGFzc1dlYWs6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKTsKKyAgICB0eXBlZGVmIHZvaWQqIChQYXNzV2Vhazo6KlVuc3BlY2lmaWVk
Qm9vbFR5cGUpOwogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7CiAK
ICAgICBXZWFrSW1wbCogbGVha0ltcGwoKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CkBAIC04
MSwzMCArNzAsNiBAQCBwcml2YXRlOgogICAgIFdlYWtJbXBsKiBtX2ltcGw7CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiBpbmxpbmUgVCogV2Vha0ltcGxBY2Nlc3Nv
cjxCYXNlLCBUPjo6b3BlcmF0b3ItPigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0
PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsICYmIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0
aGlzKS0+bV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKTsKLSAgICByZXR1cm4ganND
YXN0PFQqPihzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+anNWYWx1ZSgp
LmFzQ2VsbCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gaW5s
aW5lIFQmIFdlYWtJbXBsQWNjZXNzb3I8QmFzZSwgVD46Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsICYmIHN0YXRp
Y19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpM
aXZlKTsKLSAgICByZXR1cm4gKmpzQ2FzdDxUKj4oc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRo
aXMpLT5tX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IEJhc2UsIHR5cGVuYW1lIFQ+IGlubGluZSB0eXBlbmFtZSBXZWFrSW1wbEFjY2Vzc29yPEJhc2Us
IFQ+OjpHZXRUeXBlIFdlYWtJbXBsQWNjZXNzb3I8QmFzZSwgVD46OmdldCgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbCB8fCBzdGF0aWNf
Y2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2
ZSkKLSAgICAgICAgcmV0dXJuIEdldFR5cGUoKTsKLSAgICByZXR1cm4ganNDYXN0PFQqPihzdGF0
aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2Vh
a0ltcGxBY2Nlc3NvcjxCYXNlLCBUPjo6d2FzKHR5cGVuYW1lIFdlYWtJbXBsQWNjZXNzb3I8QmFz
ZSwgVD46OkdldFR5cGUgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGpzQ2FzdDxUKj4oc3Rh
dGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5tX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkg
PT0gb3RoZXI7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzV2VhazxUPjo6
UGFzc1dlYWsoKQogICAgIDogbV9pbXBsKDApCiB7CkBAIC0xMTUsOCArODAsOCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1dlYWs8VD46CiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBQYXNzV2VhazxUPjo6UGFzc1dlYWsodHlwZW5hbWUgUGFzc1dlYWs8VD46
OkdldFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFsbG9jYXRlKGdldFR5cGUsIHdl
YWtPd25lciwgY29udGV4dCkgOiAwKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NX
ZWFrPFQ+OjpQYXNzV2VhayhUKiBjZWxsLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtPd25lciwgdm9p
ZCogY29udGV4dCkKKyAgICA6IG1faW1wbChjZWxsID8gV2Vha1NldDo6YWxsb2NhdGUoY2VsbCwg
d2Vha093bmVyLCBjb250ZXh0KSA6IDApCiB7CiB9CiAKQEAgLTEzNyw2ICsxMDIsMjUgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+OgogICAgIFdlYWtTZXQ6OmRlYWxs
b2NhdGUobV9pbXBsKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFBhc3NX
ZWFrPFQ+OjpvcGVyYXRvci0+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1w
bC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxUKj4obV9p
bXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgVCYgUGFzc1dlYWs8VD46Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faW1w
bCAmJiBtX2ltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpOworICAgIHJldHVybiAqanND
YXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBUKiBQYXNzV2VhazxUPjo6Z2V0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
aW1wbCB8fCBtX2ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6OkxpdmUpCisgICAgICAgIHJldHVy
biAwOworICAgIHJldHVybiBqc0Nhc3Q8VCo+KG1faW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgUGFzc1dlYWs8VD46Om9wZXJh
dG9yISgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBsLT5zdGF0ZSgpICE9
IFdlYWtJbXBsOjpMaXZlIHx8ICFtX2ltcGwtPmpzVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCShyZXZpc2lvbiAxNDc5
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlICJXZWFr
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vhay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWsuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwyMiArMjYsMjEgQEAKICNpZm5k
ZWYgV2Vha19oCiAjZGVmaW5lIFdlYWtfaAogCi0jaW5jbHVkZSAiUGFzc1dlYWsuaCIKLSNpbmNs
dWRlICJXZWFrU2V0SW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvTnVsbFB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgV2VhayA6IHB1YmxpYyBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+IHsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NXZWFrOworY2xhc3MgV2Vha0ltcGw7Citj
bGFzcyBXZWFrSGFuZGxlT3duZXI7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWspOwogcHVibGljOgotICAgIGZyaWVuZCBj
bGFzcyBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+OwotICAgIHR5cGVkZWYgdHlwZW5hbWUg
V2Vha0ltcGxBY2Nlc3NvcjxXZWFrPFQ+LCBUPjo6R2V0VHlwZSBHZXRUeXBlOwotCiAgICAgV2Vh
aygpOwogICAgIGV4cGxpY2l0IFdlYWsoc3RkOjpudWxscHRyX3QpOwotICAgIGV4cGxpY2l0IFdl
YWsoR2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKyAg
ICBleHBsaWNpdCBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9
IDApOwogCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNoVGFibGVEZWxl
dGVkVmFsdWUgfTsKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CkBA
IC01NSw5ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgV2VhayYgb3BlcmF0b3I9KGNvbnN0IFBhc3NX
ZWFrPFQ+Jik7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBUKiBvcGVy
YXRvci0+KCkgY29uc3Q7CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgVCogZ2V0KCkg
Y29uc3Q7CisKKyAgICBib29sIHdhcyhUKikgY29uc3Q7CiAKICAgICAvLyBUaGlzIGNvbnZlcnNp
b24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRv
IG90aGVyIGludGVnZXIgdHlwZXMuCi0gICAgdHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVCYXNlOjoq
VW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgdHlwZWRlZiB2b2lkKiAoV2Vhazo6KlVuc3BlY2lm
aWVkQm9vbFR5cGUpOwogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7
CiAKICAgICBQYXNzV2VhazxUPiByZWxlYXNlKCk7CkBAIC02OSwxNDUgKzczLDYgQEAgcHJpdmF0
ZToKICAgICBXZWFrSW1wbCogbV9pbXBsOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIFdlYWs8VD46OldlYWsoKQotICAgIDogbV9pbXBsKDApCi17Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKHN0ZDo6bnVsbHB0cl90KQotICAgIDogbV9p
bXBsKDApCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFr
KHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFr
T3duZXIsIHZvaWQqIGNvbnRleHQpCi0gICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFs
bG9jYXRlKGdldFR5cGUsIHdlYWtPd25lciwgY29udGV4dCkgOiAwKQotewotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBXZWFrPFQ+Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlwZW5h
bWUgV2VhazxUPjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQotICAgIDogbV9pbXBsKGhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiAgaW5saW5lIFdlYWs8VD46OldlYWsoY29uc3QgUGFzc1dlYWs8VT4mIG90
aGVyKQotICAgIDogbV9pbXBsKG90aGVyLmxlYWtJbXBsKCkpCi17Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+Ojp+V2VhaygpCi17Ci0gICAgY2xlYXIoKTsKLX0KLQot
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChXZWFrPFQ+JiBhLCBXZWFrPFQ+JiBi
KQotewotICAgIGEuc3dhcChiKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZv
aWQgV2VhazxUPjo6c3dhcChXZWFrJiBvdGhlcikKLXsKLSAgICBzdGQ6OnN3YXAobV9pbXBsLCBv
dGhlci5tX2ltcGwpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPiYg
V2VhazxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NXZWFrPFQ+JiBvKQotewotICAgIGNsZWFyKCk7
Ci0gICAgbV9pbXBsID0gby5sZWFrSW1wbCgpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIW1faW1wbCB8fCAhbV9pbXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5z
dGF0ZSgpICE9IFdlYWtJbXBsOjpMaXZlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgV2VhazxUPjo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAotewotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPighISp0aGlzKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+IFdlYWs8VD46OnJl
bGVhc2UoKQotewotICAgIFBhc3NXZWFrPFQ+IHRtcCA9IGFkb3B0V2VhazxUPihtX2ltcGwpOwot
ICAgIG1faW1wbCA9IDA7Ci0gICAgcmV0dXJuIHRtcDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIHZvaWQgV2VhazxUPjo6Y2xlYXIoKQotewotICAgIGlmICghbV9pbXBsKQotICAg
ICAgICByZXR1cm47Ci0gICAgV2Vha1NldDo6ZGVhbGxvY2F0ZShtX2ltcGwpOwotICAgIG1faW1w
bCA9IDA7Ci19Ci0gICAgCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha0ltcGwqIFdl
YWs8VD46Omhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V2Vha0ltcGwqPigtMSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYWs8VD4mIGxocywgY29uc3QgV2VhazxUPiYgcmhzKQot
ewotICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOwotfQotCi0vLyBUaGlzIGZ1bmN0
aW9uIGhlbHBzIGF2b2lkIG1vZGlmeWluZyBhIHdlYWsgdGFibGUgd2hpbGUgaG9sZGluZyBhbiBp
dGVyYXRvciBpbnRvIGl0LiAoT2JqZWN0IGFsbG9jYXRpb24KLS8vIGNhbiBydW4gYSBmaW5hbGl6
ZXIgdGhhdCBtb2RpZmllcyB0aGUgdGFibGUuIFdlIGF2b2lkIHRoYXQgYnkgcmVxdWlyaW5nIGEg
cHJlLWNvbnN0cnVjdGVkIG9iamVjdCBhcyBvdXIgdmFsdWUuKQotdGVtcGxhdGU8dHlwZW5hbWUg
TWFwLCB0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrQWRkKE1h
cCYgbWFwLCBjb25zdCBLZXkmIGtleSwgVmFsdWUgdmFsdWUpCi17Ci0gICAgQVNTRVJUKCFtYXAu
Z2V0KGtleSkpOwotICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7IC8vIFRoZSB0YWJsZSBtYXkgc3Rp
bGwgaGF2ZSBhIHpvbWJpZSBmb3IgdmFsdWUuCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1hcCwg
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZT4gaW5saW5lIHZvaWQgd2Vha1JlbW92ZShNYXAm
IG1hcCwgY29uc3QgS2V5JiBrZXksIFZhbHVlIHZhbHVlKQotewotICAgIHR5cGVuYW1lIE1hcDo6
aXRlcmF0b3IgaXQgPSBtYXAuZmluZChrZXkpOwotICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsIHZh
bHVlKTsKLSAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKLSAgICBBU1NFUlQoaXQtPnZhbHVl
Lndhcyh2YWx1ZSkpOwotICAgIEFTU0VSVCghaXQtPnZhbHVlKTsKLSAgICBtYXAucmVtb3ZlKGl0
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8
VD4mIHdlYWssIHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgdmFsdWUpCi17Ci0gICAgQVNTRVJU
X1VOVVNFRCh2YWx1ZSwgdmFsdWUpOwotICAgIEFTU0VSVCh3ZWFrLndhcyh2YWx1ZSkpOwotICAg
IEFTU0VSVCghd2Vhayk7Ci0gICAgd2Vhay5jbGVhcigpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0
b3JUcmFpdHM8SlNDOjpXZWFrPFQ+ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKLX07Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IHsKLSAgICB0eXBlZGVmIEpTQzo6V2Vh
azxUPiBTdG9yYWdlVHlwZTsKLQotICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1
ZVR5cGU7Ci0gICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0KLSAgICB0eXBlZGVmIEpTQzo6UGFzc1dlYWs8VD4gUGFzc0luVHlwZTsKLSAg
ICBzdGF0aWMgdm9pZCBzdG9yZShQYXNzSW5UeXBlIHZhbHVlLCBTdG9yYWdlVHlwZSYgc3RvcmFn
ZSkgeyBzdG9yYWdlID0gdmFsdWU7IH0KLQotICAgIHR5cGVkZWYgSlNDOjpQYXNzV2VhazxUPiBQ
YXNzT3V0VHlwZTsKLSAgICBzdGF0aWMgUGFzc091dFR5cGUgcGFzc091dChTdG9yYWdlVHlwZSYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsgfQotICAgIHN0YXRpYyBQYXNzT3V0VHlw
ZSBwYXNzT3V0KEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQYXNzT3V0VHlwZSgpOyB9Ci0KLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIFN0b3JhZ2VUeXBlOjpHZXRUeXBlIFBlZWtUeXBlOwotICAgIHN0
YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyBy
ZXR1cm4gUGVla1R5cGUoKTsgfQotfTsKLQotfQotCiAjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHJldmlzaW9uIDE0NzkzOCkJ
KGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oOjE0NzkzOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYWtfaAorI2RlZmluZSBX
ZWFrX2gKKworI2luY2x1ZGUgIlBhc3NXZWFrLmgiCisjaW5jbHVkZSAiV2Vha1NldElubGluZXMu
aCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrIDog
cHVibGljIFdlYWtJbXBsQWNjZXNzb3I8V2VhazxUPiwgVD4geworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYWspOworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBXZWFrSW1wbEFjY2Vzc29y
PFdlYWs8VD4sIFQ+OworICAgIHR5cGVkZWYgdHlwZW5hbWUgV2Vha0ltcGxBY2Nlc3NvcjxXZWFr
PFQ+LCBUPjo6R2V0VHlwZSBHZXRUeXBlOworCisgICAgV2VhaygpOworICAgIGV4cGxpY2l0IFdl
YWsoc3RkOjpudWxscHRyX3QpOworICAgIGV4cGxpY2l0IFdlYWsoR2V0VHlwZSwgV2Vha0hhbmRs
ZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKworICAgIGVudW0gSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07CisgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0OworICAgIFdlYWsoSGFzaFRhYmxlRGVsZXRlZFZhbHVl
VGFnKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFdlYWsoY29uc3QgUGFzc1dlYWs8VT4m
KTsKKworICAgIH5XZWFrKCk7CisKKyAgICB2b2lkIHN3YXAoV2VhayYpOworICAgIFdlYWsmIG9w
ZXJhdG9yPShjb25zdCBQYXNzV2VhazxUPiYpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3Q7CisKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0
IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCisgICAg
dHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVCYXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAg
b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdDsKKworICAgIFBhc3NXZWFrPFQ+
IHJlbGVhc2UoKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgCitwcml2YXRlOgorICAgIHN0YXRp
YyBXZWFrSW1wbCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisKKyAgICBXZWFrSW1wbCogbV9p
bXBsOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsoKQor
ICAgIDogbV9pbXBsKDApCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFr
PFQ+OjpXZWFrKHN0ZDo6bnVsbHB0cl90KQorICAgIDogbV9pbXBsKDApCit7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKHR5cGVuYW1lIFdlYWs8VD46Okdl
dFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRleHQp
CisgICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFsbG9jYXRlKGdldFR5cGUsIHdlYWtP
d25lciwgY29udGV4dCkgOiAwKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
Ym9vbCBXZWFrPFQ+Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlwZW5hbWUgV2VhazxUPjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlVGFnKQorICAgIDogbV9pbXBsKGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKQor
eworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAgaW5saW5l
IFdlYWs8VD46OldlYWsoY29uc3QgUGFzc1dlYWs8VT4mIG90aGVyKQorICAgIDogbV9pbXBsKG90
aGVyLmxlYWtJbXBsKCkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFr
PFQ+Ojp+V2VhaygpCit7CisgICAgY2xlYXIoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4gaW5s
aW5lIHZvaWQgc3dhcChXZWFrPFQ+JiBhLCBXZWFrPFQ+JiBiKQoreworICAgIGEuc3dhcChiKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgV2VhazxUPjo6c3dhcChXZWFr
JiBvdGhlcikKK3sKKyAgICBzdGQ6OnN3YXAobV9pbXBsLCBvdGhlci5tX2ltcGwpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPiYgV2VhazxUPjo6b3BlcmF0b3I9KGNv
bnN0IFBhc3NXZWFrPFQ+JiBvKQoreworICAgIGNsZWFyKCk7CisgICAgbV9pbXBsID0gby5sZWFr
SW1wbCgpOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIGJvb2wgV2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faW1w
bCB8fCAhbV9pbXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5zdGF0ZSgpICE9IFdlYWtJbXBsOjpM
aXZlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6b3BlcmF0b3Ig
VW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPighISp0aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+IFdlYWs8VD46OnJlbGVhc2UoKQoreworICAgIFBhc3NX
ZWFrPFQ+IHRtcCA9IGFkb3B0V2VhazxUPihtX2ltcGwpOworICAgIG1faW1wbCA9IDA7CisgICAg
cmV0dXJuIHRtcDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgV2VhazxU
Pjo6Y2xlYXIoKQoreworICAgIGlmICghbV9pbXBsKQorICAgICAgICByZXR1cm47CisgICAgV2Vh
a1NldDo6ZGVhbGxvY2F0ZShtX2ltcGwpOworICAgIG1faW1wbCA9IDA7Cit9CisgICAgCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha0ltcGwqIFdlYWs8VD46Omhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0ltcGwqPigtMSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFdlYWs8VD4mIGxocywgY29uc3QgV2VhazxUPiYgcmhzKQoreworICAgIHJldHVybiBsaHMuZ2V0
KCkgPT0gcmhzLmdldCgpOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGhlbHBzIGF2b2lkIG1vZGlm
eWluZyBhIHdlYWsgdGFibGUgd2hpbGUgaG9sZGluZyBhbiBpdGVyYXRvciBpbnRvIGl0LiAoT2Jq
ZWN0IGFsbG9jYXRpb24KKy8vIGNhbiBydW4gYSBmaW5hbGl6ZXIgdGhhdCBtb2RpZmllcyB0aGUg
dGFibGUuIFdlIGF2b2lkIHRoYXQgYnkgcmVxdWlyaW5nIGEgcHJlLWNvbnN0cnVjdGVkIG9iamVj
dCBhcyBvdXIgdmFsdWUuKQordGVtcGxhdGU8dHlwZW5hbWUgTWFwLCB0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrQWRkKE1hcCYgbWFwLCBjb25zdCBLZXkmIGtl
eSwgVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKCFtYXAuZ2V0KGtleSkpOworICAgIG1hcC5z
ZXQoa2V5LCB2YWx1ZSk7IC8vIFRoZSB0YWJsZSBtYXkgc3RpbGwgaGF2ZSBhIHpvbWJpZSBmb3Ig
dmFsdWUuCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZT4gaW5saW5lIHZvaWQgd2Vha1JlbW92ZShNYXAmIG1hcCwgY29uc3QgS2V5JiBrZXks
IFZhbHVlIHZhbHVlKQoreworICAgIHR5cGVuYW1lIE1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmlu
ZChrZXkpOworICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsIHZhbHVlKTsKKyAgICBBU1NFUlQoaXQg
IT0gbWFwLmVuZCgpKTsKKyAgICBBU1NFUlQoaXQtPnZhbHVlLndhcyh2YWx1ZSkpOworICAgIEFT
U0VSVCghaXQtPnZhbHVlKTsKKyAgICBtYXAucmVtb3ZlKGl0KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VD4mIHdlYWssIHR5cGVuYW1lIFdl
YWs8VD46OkdldFR5cGUgdmFsdWUpCit7CisgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZSwgdmFsdWUp
OworICAgIEFTU0VSVCh3ZWFrLndhcyh2YWx1ZSkpOworICAgIEFTU0VSVCghd2Vhayk7CisgICAg
d2Vhay5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+
ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgY2Fu
Q29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpT
Qzo6V2VhazxUPiA+IHsKKyAgICB0eXBlZGVmIEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKKwor
ICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7CisgICAgc3RhdGljIEVt
cHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB0eXBl
ZGVmIEpTQzo6UGFzc1dlYWs8VD4gUGFzc0luVHlwZTsKKyAgICBzdGF0aWMgdm9pZCBzdG9yZShQ
YXNzSW5UeXBlIHZhbHVlLCBTdG9yYWdlVHlwZSYgc3RvcmFnZSkgeyBzdG9yYWdlID0gdmFsdWU7
IH0KKworICAgIHR5cGVkZWYgSlNDOjpQYXNzV2VhazxUPiBQYXNzT3V0VHlwZTsKKyAgICBzdGF0
aWMgUGFzc091dFR5cGUgcGFzc091dChTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
LnJlbGVhc2UoKTsgfQorICAgIHN0YXRpYyBQYXNzT3V0VHlwZSBwYXNzT3V0KEVtcHR5VmFsdWVU
eXBlKSB7IHJldHVybiBQYXNzT3V0VHlwZSgpOyB9CisKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFN0
b3JhZ2VUeXBlOjpHZXRUeXBlIFBlZWtUeXBlOworICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNv
bnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KKyAgICBzdGF0
aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5cGUoKTsgfQor
fTsKKworfQorCisjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDUyICsy
MywxNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgV2Vha19oCi0jZGVmaW5lIFdlYWtfaAorI2lmbmRlZiBXZWFrSW5saW5lc19oCisjZGVmaW5l
IFdlYWtJbmxpbmVzX2gKIAogI2luY2x1ZGUgIlBhc3NXZWFrLmgiCiAjaW5jbHVkZSAiV2Vha1Nl
dElubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsgOiBwdWJsaWMgV2Vha0ltcGxBY2Nl
c3NvcjxXZWFrPFQ+LCBUPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vhayk7Ci1wdWJs
aWM6Ci0gICAgZnJpZW5kIGNsYXNzIFdlYWtJbXBsQWNjZXNzb3I8V2VhazxUPiwgVD47Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+OjpHZXRUeXBlIEdl
dFR5cGU7Ci0KLSAgICBXZWFrKCk7Ci0gICAgZXhwbGljaXQgV2VhayhzdGQ6Om51bGxwdHJfdCk7
Ci0gICAgZXhwbGljaXQgV2VhayhHZXRUeXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCog
Y29udGV4dCA9IDApOwotCi0gICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNo
VGFibGVEZWxldGVkVmFsdWUgfTsKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3Q7Ci0gICAgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gV2Vhayhjb25zdCBQYXNzV2VhazxVPiYpOwotCi0gICAgfldlYWsoKTsK
LQotICAgIHZvaWQgc3dhcChXZWFrJik7Ci0gICAgV2VhayYgb3BlcmF0b3I9KGNvbnN0IFBhc3NX
ZWFrPFQ+Jik7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLQotICAgIC8vIFRo
aXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29s
IGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIEpTVmFsdWUgKEhh
bmRsZUJhc2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKLSAgICBvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKigpIGNvbnN0OwotCi0gICAgUGFzc1dlYWs8VD4gcmVsZWFzZSgpOwotICAgIHZv
aWQgY2xlYXIoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgc3RhdGljIFdlYWtJbXBsKiBoYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsKLQotICAgIFdlYWtJbXBsKiBtX2ltcGw7Ci19OwotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2VhaygpCiAgICAgOiBtX2ltcGwoMCkKIHsK
QEAgLTc5LDggKzQzLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46Oldl
YQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2Vhayh0eXBl
bmFtZSBXZWFrPFQ+OjpHZXRUeXBlIGdldFR5cGUsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVy
LCB2b2lkKiBjb250ZXh0KQotICAgIDogbV9pbXBsKGdldFR5cGUgPyBXZWFrU2V0OjphbGxvY2F0
ZShnZXRUeXBlLCB3ZWFrT3duZXIsIGNvbnRleHQpIDogMCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBXZWFrPFQ+OjpXZWFrKFQqIGNlbGwsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVy
LCB2b2lkKiBjb250ZXh0KQorICAgIDogbV9pbXBsKGNlbGwgPyBXZWFrU2V0OjphbGxvY2F0ZShj
ZWxsLCB3ZWFrT3duZXIsIGNvbnRleHQpIDogMCkKIHsKIH0KIApAQCAtMTIxLDYgKzg1LDMwIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+JiBXZWEKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBXZWFrPFQ+OjpvcGVyYXRv
ci0+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1wbC0+c3RhdGUoKSA9PSBX
ZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxUKj4obV9pbXBsLT5qc1ZhbHVlKCku
YXNDZWxsKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCYgV2VhazxUPjo6
b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1wbC0+c3RhdGUo
KSA9PSBXZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuICpqc0Nhc3Q8VCo+KG1faW1wbC0+anNW
YWx1ZSgpLmFzQ2VsbCgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFdl
YWs8VD46OmdldCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltcGwgfHwgbV9pbXBsLT5zdGF0ZSgp
ICE9IFdlYWtJbXBsOjpMaXZlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4ganNDYXN0
PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBib29sIFdlYWs8VD46OndhcyhUKiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1
cm4ganNDYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkgPT0gb3RoZXI7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46Om9wZXJhdG9yISgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+anNWYWx1ZSgpIHx8IG1faW1w
bC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2ZTsKQEAgLTE3NCwxMCArMTYyLDEwIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5LCB0eXAKICAgICBtYXAucmVtb3ZlKGl0KTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VD4m
IHdlYWssIHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xlYXIoV2VhazxUPiYgd2VhaywgVCogY2VsbCkKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKHZhbHVlLCB2YWx1ZSk7Ci0gICAgQVNTRVJUKHdlYWsud2FzKHZhbHVl
KSk7CisgICAgQVNTRVJUX1VOVVNFRChjZWxsLCBjZWxsKTsKKyAgICBBU1NFUlQod2Vhay53YXMo
Y2VsbCkpOwogICAgIEFTU0VSVCghd2Vhayk7CiAgICAgd2Vhay5jbGVhcigpOwogfQpAQCAtMjAz
LDExICsxOTEsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8Sgog
ICAgIHN0YXRpYyBQYXNzT3V0VHlwZSBwYXNzT3V0KFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUucmVsZWFzZSgpOyB9CiAgICAgc3RhdGljIFBhc3NPdXRUeXBlIHBhc3NPdXQoRW1w
dHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBhc3NPdXRUeXBlKCk7IH0KIAotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgU3RvcmFnZVR5cGU6OkdldFR5cGUgUGVla1R5cGU7CisgICAgdHlwZWRlZiBUKiBQZWVr
VHlwZTsKICAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBTdG9yYWdlVHlwZSYgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CiAgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoRW1wdHlW
YWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0KIH07CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdURgogCi0jZW5kaWYgLy8gV2Vha19oCisjZW5kaWYgLy8gV2Vha0lubGluZXNfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVk
ZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSAiV2Vha0lu
bGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
Rml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgog
I2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCi0jaW5jbHVk
ZSAiV2Vhay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkocmV2aXNpb24gMTQ3OTM4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDggQEAKICNpZm5kZWYgV2Vha0dDTWFwX2gKICNkZWZpbmUgV2Vha0dD
TWFwX2gKIAotI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNs
dWRlIDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDc5NTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NyBAQAorMjAxMy0w
NC0wOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN0b3Ag
I2luY2x1ZGUtaW5nIGFsbCBvZiBKYXZhU2NyaXB0Q29yZSBpbiBldmVyeSBET00tcmVsYXRlZCBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQy
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIHNl
cGFyYXRlZCBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggZnJvbSBTY3JpcHRXcmFwcGFibGUuaCBz
bworICAgICAgICBXZWJDb3JlIGRhdGEgdHlwZXMgdGhhdCBpbmhlcml0IGZyb20gU2NyaXB0V3Jh
cHBhYmxlIGRvbid0CisgICAgICAgIGhhdmUgdG8gI2luY2x1ZGUgYWxsIG9mIHRoZSBpbmZyYXN0
cnVjdHVyZSBmb3IgYWNjZXNzaW5nIHRoYXQgZGF0YSBtZW1iZXIuCisKKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy9oZWFwL1Bhc3NXZWFrLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL2hlYXAvV2Vha0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBw
ZXJXb3JsZC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRXcmFwcGFibGU6OndyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
V3JhcHBhYmxlOjpzZXRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJs
ZTo6Y2xlYXJXcmFwcGVyKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuaDoKKyAg
ICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X3Jvb3QuY3BwOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuaDoKKyAgICAgICAgKiBj
c3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3RCYXNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0
TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpy
ZXBvcnRNZW1vcnlVc2FnZSk6CisKIDIwMTMtMDQtMDggIEFydW5wcmFzYWQgUmFqa3VtYXIgIDxh
cnVucHJhc2FkckBuZHMuY29tPgogCiAgICAgICAgIENhbGwgTmV0c2NhcGUgUGx1Z2luJ3MgdG9T
dHJpbmcoKSBhbmQgdmFsdWVPZigpIGluc3RlYWQgb2YgcHJvdmlkaW5nIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvUGFz
c1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9o
ZWFwL1Bhc3NXZWFrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9oZWFwL1Bhc3NXZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX1Bhc3NXZWFrX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfUGFzc1dl
YWtfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Bhc3NXZWFrLmg+CisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvV2Vha0lubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9oZWFwL1dlYWtJbmxp
bmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9o
ZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVm
IFdlYkNvcmVfRldEX1dlYWtJbmxpbmVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfV2Vha0lubGlu
ZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtJbmxpbmVzLmg+CisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBACiAJCTEw
NTk0NTk5MTVCNDJBQTAwMDREMzdGRCAvKiBQcm9wZXJ0eU5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMDU5NDU5ODE1QjQyQUEwMDA0RDM3
RkQgLyogUHJvcGVydHlOb2RlTGlzdC5oICovOyB9OwogCQkxMDU5NDU5RjE1QjQyQjFBMDA0RDM3
RkQgLyogSlNQcm9wZXJ0eU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxMDU5NDU5RTE1QjQyQjFBMDA0RDM3RkQgLyogSlNQcm9wZXJ0eU5v
ZGVMaXN0LmggKi87IH07CiAJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
MEZCMDg0QTE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oICovOyB9OworCQkx
NDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwMEQ3QTcxNzEzNkVB
NzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAyNjQ1RTBBRkRDMTlCMDA1OTE5RTIg
LyogTG9nZ2luZ01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MDI2NDVEMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5nTWFjLm1tICovOyB9Owog
CQkxNDAzQjk5NzA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAzQjk5NTA5RUIxM0FGMDA3OTdDN0Yg
LyogRE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQwM0I5OTgwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAzQjk5NjA5RUIxM0FG
MDA3OTdDN0YgLyogRE9NV2luZG93LmNwcCAqLzsgfTsKQEAgLTY1MzAsNiArNjUzMSw3IEBACiAJ
CTEwNTk0NTlBMTVCNDJBQzAwMDREMzdGRCAvKiBQcm9wZXJ0eU5vZGVMaXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBQcm9wZXJ0eU5vZGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTA1OTQ1OUUxNUI0MkIxQTAwNEQzN0ZEIC8qIEpTUHJvcGVydHlOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5Tm9kZUxpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTBGQjA4NEExNEUxNUM3RTAwQTNEQjk4
IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHVibGljVVJMTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDAwRDdB
NzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDI2NDVEMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5n
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDNCOTBDMDlFQjEyNDUwMDc5
N0M3RiAvKiBET01XaW5kb3cuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVdpbmRvdy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDNCOTk1MDlFQjEzQUYwMDc5N0M3
RiAvKiBET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2lu
ZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODczMSw2ICsxODczMyw3IEBA
CiAJCQkJOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJ
CQk5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAqLywKIAkJCQkyMjhD
Mjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8sCisJCQkJMTQwMEQ3
QTcxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLywKIAkJCQlB
NzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywK
IAkJCQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
Ki8sCiAJCQkJQkM1M0Q5MTAxMTQzMTBDQzAwMEQ4MTdFIC8qIFdlYkNvcmVKU0NsaWVudERhdGEu
aCAqLywKQEAgLTIzOTAwLDYgKzIzOTAzLDcgQEAKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0
NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2NjExMEI3
OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGRkJG
M0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0
MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdM
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlENzEwNDJEMzJGMDAwOUQ0NDcgLyog
V2ViR0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNyArMjMsNiBAQAogI2RlZmluZSBET01XcmFwcGVyV29ybGRfaAogCiAjaW5jbHVkZSAiSlNE
T01HbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KICNpbmNsdWRlIDxydW50
aW1lL1dlYWtHQ01hcC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAxNDc5MzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsOCArMzAsMTAgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKICNpbmNsdWRlIDxoZWFwL1Nsb3RWaXNpdG9yLmg+
CiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CkBAIC00NCw5ICs0Niw3IEBA
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLQogY2xhc3MgSGFz
aEVudHJ5OwotCiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjIsOCArMjIsMTAgQEAKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgPGhlYXAvUGFzc1dlYWsuaD4KICNpbmNsdWRl
IDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNsdWRl
IDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCShy
ZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9u
Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
SlNNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWtJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRl
ckNvbmRpdGlvbi5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIs
NyBAQAogCiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPGhlYXAv
V2Vhay5oPgorI2luY2x1ZGUgPGhlYXAvV2Vha0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0V3JhcHBhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0V3JhcHBhYmxlLmgJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBA
QAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsMzYgKzMyLDIyIEBACiAjaWZuZGVmIFNjcmlw
dFdyYXBwYWJsZV9oCiAjZGVmaW5lIFNjcmlwdFdyYXBwYWJsZV9oCiAKLSNpbmNsdWRlICJKU0RP
TVdyYXBwZXIuaCIKLSNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSA8aGVhcC9XZWFrLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CisK
K25hbWVzcGFjZSBKU0MgeworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgV2Vha0hhbmRsZU93
bmVyOworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEpTRE9NV3JhcHBlcjsKKwog
Y2xhc3MgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBKU0RPTVdyYXBwZXIqIHdyYXBw
ZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0RPTVdyYXBwZXIq
IHdyYXBwZXIsIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fd3JhcHBlcik7Ci0gICAgICAgIG1fd3JhcHBl
ciA9IEpTQzo6UGFzc1dlYWs8SlNET01XcmFwcGVyPih3cmFwcGVyLCB3cmFwcGVyT3duZXIsIGNv
bnRleHQpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJXcmFwcGVyKEpTRE9NV3JhcHBlciogd3Jh
cHBlcikKLSAgICB7Ci0gICAgICAgIHdlYWtDbGVhcihtX3dyYXBwZXIsIHdyYXBwZXIpOwotICAg
IH0KLQotICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKLSAgICB7Ci0gICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICAgICAg
aW5mby5hZGRNZW1iZXIobV93cmFwcGVyLCAid3JhcHBlciIpOwotICAgIH0KKyAgICBKU0RPTVdy
YXBwZXIqIHdyYXBwZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2Jh
bERhdGEmLCBKU0RPTVdyYXBwZXIqLCBKU0M6OldlYWtIYW5kbGVPd25lciosIHZvaWQqKTsKKyAg
ICB2b2lkIGNsZWFyV3JhcHBlcihKU0RPTVdyYXBwZXIqKTsKIAogcHJpdmF0ZToKICAgICBKU0M6
OldlYWs8SlNET01XcmFwcGVyPiBtX3dyYXBwZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0V3JhcHBhYmxlSW5s
aW5lc19oCisjZGVmaW5lIFNjcmlwdFdyYXBwYWJsZUlubGluZXNfaAorCisjaW5jbHVkZSAiSlNE
T01XcmFwcGVyLmgiCisjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFr
SW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBKU0RPTVdyYXBwZXIq
IFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3JhcHBl
ci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQgU2NyaXB0V3JhcHBhYmxlOjpzZXRXcmFwcGVyKEpT
Qzo6SlNHbG9iYWxEYXRhJiwgSlNET01XcmFwcGVyKiB3cmFwcGVyLCBKU0M6OldlYWtIYW5kbGVP
d25lciogd3JhcHBlck93bmVyLCB2b2lkKiBjb250ZXh0KQoreworICAgIEFTU0VSVCghbV93cmFw
cGVyKTsKKyAgICBtX3dyYXBwZXIgPSBKU0M6OlBhc3NXZWFrPEpTRE9NV3JhcHBlcj4od3JhcHBl
ciwgd3JhcHBlck93bmVyLCBjb250ZXh0KTsKK30KKworaW5saW5lIHZvaWQgU2NyaXB0V3JhcHBh
YmxlOjpjbGVhcldyYXBwZXIoSlNET01XcmFwcGVyKiB3cmFwcGVyKQoreworICAgIHdlYWtDbGVh
cihtX3dyYXBwZXIsIHdyYXBwZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBTY3JpcHRXcmFwcGFibGVJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX3Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX3Jvb3QuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9yb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2lu
Y2x1ZGUgPGhlYXAvV2Vha0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAkocmV2aXNpb24gMTQ3OTM4
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRlICJK
U1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUg
IldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCiAjaW5jbHVkZSA8UVBv
aW50ZXI+CiAjaW5jbHVkZSA8cWhhc2guaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHQuaCIKICNpbmNsdWRlICJXZWFr
LmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlICJxdF9pbnN0YW5jZS5oIgog
I2luY2x1ZGUgInJ1bnRpbWVfbWV0aG9kLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnR5U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnR5U2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIlN0
eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIK
KyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3Rm
L0JpdEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9MaXZlTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTGl2ZU5vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNiBAQCB2b2lk
IExpdmVOb2RlTGlzdEJhc2U6OmludmFsaWRhdGVJZE5hbWVDCiB2b2lkIExpdmVOb2RlTGlzdEJh
c2U6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwotICAgIE5vZGVMaXN0OjpyZXBvcnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX293bmVyTm9kZSwg
Im93bmVyTm9kZSIpOwogICAgIGluZm8uYWRkV2Vha1BvaW50ZXIobV9jYWNoZWRJdGVtKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYyNyw3ICsyNjI3LDYgQEAgdm9pZCBO
b2RlOjpyZW1vdmVkTGFzdFJlZigpCiB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJ
bmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00p
OwotICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5m
byk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wYXJlbnRPclNoYWRvd0hvc3ROb2RlLCAicGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdHJlZVNjb3BlLCAidHJl
ZVNjb3BlIik7CiAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9uZXh0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAJKHJl
dmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUg
IlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgor
I2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgewpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCShy
ZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIwLDcgKzEzMjAsNiBAQCBFdmVudFRhcmdldERh
dGEqIFhNTEh0dHBSZXF1ZXN0OjplbnN1cmVFCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpyZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewog
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVN
ZW1vcnlUeXBlczo6RE9NKTsKLSAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOwogICAgIEFjdGl2ZURPTU9iamVjdDo6cmVwb3J0TWVtb3J5VXNh
Z2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV91cGxvYWQsICJ1cGxv
YWQiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3VybCwgInVybCIpOwpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTQ3OTU3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDQtMDggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wICNpbmNsdWRlLWluZyBhbGwgb2YgSmF2YVNjcmlw
dENvcmUgaW4gZXZlcnkgRE9NLXJlbGF0ZWQgZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0
TWFwLmg6CisKIDIwMTMtMDQtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYi9QbHVnaW4gcHJvY2VzcyBkZWFkbG9jayBpbml0aWFsaXppbmcgYXN5bmMg
cGx1Z2lucy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvVXNlclN0eWxlU2hlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1
bnRpbWVPYmplY3RNYXAuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNsdWRlIDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196963</attachid>
            <date>2013-04-08 15:40:52 -0700</date>
            <delta_ts>2013-04-08 15:59:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114220-20130408154035.patch</filename>
            <type>text/plain</type>
            <size>52517</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3OTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDEzLTA0LTA4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RvcCAjaW5jbHVkZS1pbmcgYWxsIG9mIEphdmFTY3JpcHRDb3JlIGluIGV2ZXJ5IERPTS1y
ZWxhdGVkIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDIyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEkgc2VwYXJhdGVkIFdlYWtJbmxpbmVzLmggZnJvbSBXZWFrLmggc28gV2ViQ29yZSBkYXRh
IHR5cGVzIHRoYXQgbmVlZAorICAgICAgICB0byBkZWNsYXJlIGEgV2VhazxUPiBkYXRhIG1lbWJl
ciBkb24ndCBoYXZlIHRvICNpbmNsdWRlIGFsbCBvZiB0aGUKKyAgICAgICAgaW5mcmFzdHJ1Y3R1
cmUgZm9yIGFjY2Vzc2luZyB0aGF0IGRhdGEgbWVtYmVyLgorCisgICAgICAgIFRoaXMgYWxzbyBy
ZXF1aXJlZCBzZXBhcmF0aW5nIFdlYWs8VD4gZnJvbSBQYXNzV2VhazxUPiBieSByZW1vdmluZyB0
aGUKKyAgICAgICAgV2Vha0ltcGxBY2Nlc3NvciBjbGFzcyB0ZW1wbGF0ZSBhbmQgcHVzaGluZyBj
b2RlIGRvd24gaW50byBpdHMgc3ViY2xhc3Nlcy4KKworICAgICAgICAqIEFQSS9KU1dlYWtPYmpl
Y3RNYXBSZWZQcml2YXRlLmNwcDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6
CisgICAgICAgICogaGVhcC9QYXNzV2Vhay5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFBh
c3NXZWFrKToKKyAgICAgICAgKEpTQzo6OjpQYXNzV2Vhayk6CisgICAgICAgIChKU0M6Ojo6b3Bl
cmF0b3IpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRv
cklubGluZXMuaDoKKyAgICAgICAgKiBoZWFwL1dlYWsuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChXZWFrKToKKyAgICAgICAgKiBoZWFwL1dlYWtJbmxpbmVzLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6Ojo6V2Vhayk6CisgICAgICAgIChKU0M6Ojo6b3BlcmF0b3IpOgorICAgICAgICAoSlND
Ojo6OmdldCk6CisgICAgICAgIChKU0M6Ojo6d2FzKToKKyAgICAgICAgKEpTQzo6d2Vha0NsZWFy
KToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBD
YWNoZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGlt
ZS9XZWFrR0NNYXAuaDoKKwogMjAxMy0wNC0wNSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IGZpeC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RN
YXBSZWZJbnRlcm5hbC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJXZWFr
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDc5
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDkxLDYgKzQ5MSw3IEBACiAJCTE0QkQ1
OUM1MEEzRThGOUYwMEJBRjU5QyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3
MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQkxNEJENUEzMDBB
M0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkQ1QTI5MEEzRTkxRjYwMEJBRjU5QyAvKiBKU0Nv
bnRleHRSZWYuY3BwICovOyB9OwogCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1
ZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgKi87IH07CisJCTE0QkU3
RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRTdEMzIxNzEzNUNGNDAwRDE4MDdBIC8qIFdl
YWtJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNFNjgxMENEQjFGQzAwMzY0
Q0NFIC8qIFdlYWtHQ01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBNjU4MUEwRjRFMzZG
NDAwMDE1MEZEIC8qIEpJVFN0dWJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMTRDQTk1OEIxNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Q0E5NThBMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNTMs
NiArMTM1NCw3IEBACiAJCTE0QkQ1QTJBMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29udGV4dFJlZi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNW
YWx1ZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1
ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QkQ1QTJEMEEzRTkxRjYw
MEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSB0
ZXN0YXBpLmM7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNEJFN0QzMjE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vha0lubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0lubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrR0NNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRDQTk1OEExNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlj
UHJvcGVydHlBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNENBOTU4
QzE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTMsNiArMjExNSw4IEBACiAJCQkJQzIxMTIyREUx
NUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAgKi8sCiAJCQkJQzIxMTIy
REYxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oICovLAogCQkJCTE0MkUz
MTJCMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCAqLywKKwkJCQlDMjgzMThGRjE2RkU0QjdE
MDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCAqLywKKwkJCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQyRTMxMkMxMzRGRjBBNjAwQUZB
REI1IC8qIEhhbmRsZVNldC5jcHAgKi8sCiAJCQkJMTQyRTMxMkQxMzRGRjBBNjAwQUZBREI1IC8q
IEhhbmRsZVNldC5oICovLAogCQkJCTE0MkUzMTJFMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVT
dGFjay5jcHAgKi8sCkBAIC0yMTQ2LDExICsyMTUwLDE0IEBACiAJCQkJMTQyRDZGMEYxMzUzOUE0
MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAogCQkJCUMyMTEyMkUwMTVERDlBQjMwMDc5MEUz
QSAvKiBNYXJrU3RhY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQ5NzIwOTAxNEVCODMxNTAwRkVCMUI3
IC8qIFBhc3NXZWFrLmggKi8sCisJCQkJQzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8qIFJlZ2lv
bi5oICovLAogCQkJCUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAg
Ki8sCiAJCQkJMTRCQTc4RjAxM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCiAJ
CQkJMEZDQjQwODUxNUMwQTNDMzAwNDg5MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovLAog
CQkJCTE0MkUzMTMyMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCAqLywKIAkJCQkxNDU3MjI4
NTE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovLAorCQkJCUMyREY0NDJEMTcw
N0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5jcHAgKi8sCisJCQkJQzJERjQ0MkUxNzA3QUMw
MTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmggKi8sCiAJCQkJMTQxNDQ4Q0MxM0ExNzgzNzAwRjVC
QTFBIC8qIFRpbnlCbG9vbUZpbHRlci5oICovLAogCQkJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi8sCiAJCQkJMEZDODE1MTIxNDA1MTE4NjAw
Q0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCAqLywKQEAgLTIxNjEsMTcgKzIxNjgsMTMgQEAK
IAkJCQkxNEY3MjU2MzE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmNwcCAqLywK
IAkJCQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmggKi8sCiAJ
CQkJMTRFODRGOUQxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJbXBsLmggKi8sCisJCQkJMTRCRTdE
MzIxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggKi8sCiAJCQkJMEYyNDJEQTUxM0Yz
QjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLywKIAkJCQkxNEU4NEY5
QjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgKi8sCiAJCQkJMTRFODRGOUMxNEVFMUFD
QzAwRDZENUQ0IC8qIFdlYWtTZXQuaCAqLywKIAkJCQkxNDE1MDEzMjE1NEJCMTNGMDA1RDhDOTgg
LyogV2Vha1NldElubGluZXMuaCAqLywKIAkJCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyog
V3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8sCiAJCQkJMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAz
IC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLywKLQkJCQlDMjgzMThGRjE2RkU0QjdEMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2suaCAqLywKLQkJCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdCRkQgLyog
SGFuZGxlQmxvY2tJbmxpbmVzLmggKi8sCi0JCQkJQzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8q
IFJlZ2lvbi5oICovLAotCQkJCUMyREY0NDJEMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lv
bi5jcHAgKi8sCi0JCQkJQzJERjQ0MkUxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMzMwOCw2ICszMzExLDcgQEAKIAkJCQkwRkY3MjlCQzE2NkFEMzYwMDAwRjVCQTMgLyogUHJv
ZmlsZXJDb21waWxlZEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRDE2NkFE
MzYwMDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
NzI5QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyRXhlY3V0aW9uQ291bnRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMTRCRTdEMzMxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRjE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJP
cmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQ
cm9maWxlck9yaWdpblN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4QzE2NzU0ODMz
MDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShy
ZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUg
IlJlZ0V4cC5oIgogI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9s
VGFibGUuaCIKLSNpbmNsdWRlICJXZWFrLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvUGFzc1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9QYXNzV2Vhay5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9QYXNzV2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwyOSArMzQsMTQgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWs7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzV2VhazsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFBhc3NX
ZWFrPFQ+IGFkb3B0V2VhayhXZWFrSW1wbCopOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0
eXBlbmFtZSBUPiBjbGFzcyBXZWFrSW1wbEFjY2Vzc29yIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNsYXNzIFBhc3NXZWFrIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIFQqIEdldFR5cGU7Ci0KLSAg
ICBUKiBvcGVyYXRvci0+KCkgY29uc3Q7Ci0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAg
R2V0VHlwZSBnZXQoKSBjb25zdDsKLQotICAgIGJvb2wgd2FzKEdldFR5cGUpIGNvbnN0OwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1dlYWsgOiBwdWJsaWMgV2Vha0ltcGxB
Y2Nlc3NvcjxQYXNzV2VhazxUPiwgVD4gewotcHVibGljOgotICAgIGZyaWVuZCBjbGFzcyBXZWFr
SW1wbEFjY2Vzc29yPFBhc3NXZWFrPFQ+LCBUPjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFdlYWtJ
bXBsQWNjZXNzb3I8UGFzc1dlYWs8VD4sIFQ+OjpHZXRUeXBlIEdldFR5cGU7Ci0KICAgICBQYXNz
V2VhaygpOwogICAgIFBhc3NXZWFrKHN0ZDo6bnVsbHB0cl90KTsKLSAgICBQYXNzV2VhayhHZXRU
eXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOworICAgIFBhc3NX
ZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOwogCiAgICAg
Ly8gSXQgc29tZXdoYXQgYnJlYWtzIHRoZSB0eXBlIHN5c3RlbSB0byBhbGxvdyB0cmFuc2ZlciBv
ZiBvd25lcnNoaXAgb3V0IG9mCiAgICAgLy8gYSBjb25zdCBQYXNzV2Vhay4gSG93ZXZlciwgaXQg
bWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NXZWFrCkBAIC02NiwxMCArNTEs
MTQgQEAgcHVibGljOgogCiAgICAgflBhc3NXZWFrKCk7CiAKKyAgICBUKiBvcGVyYXRvci0+KCkg
Y29uc3Q7CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgVCogZ2V0KCkgY29uc3Q7CisK
ICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9w
ZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhl
ciBpbnRlZ2VyIHR5cGVzLgotICAgIHR5cGVkZWYgSlNWYWx1ZSAoUGFzc1dlYWs6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKTsKKyAgICB0eXBlZGVmIHZvaWQqIChQYXNzV2Vhazo6KlVuc3BlY2lmaWVk
Qm9vbFR5cGUpOwogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7CiAK
ICAgICBXZWFrSW1wbCogbGVha0ltcGwoKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CkBAIC04
MSwzMCArNzAsNiBAQCBwcml2YXRlOgogICAgIFdlYWtJbXBsKiBtX2ltcGw7CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiBpbmxpbmUgVCogV2Vha0ltcGxBY2Nlc3Nv
cjxCYXNlLCBUPjo6b3BlcmF0b3ItPigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0
PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsICYmIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0
aGlzKS0+bV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKTsKLSAgICByZXR1cm4ganND
YXN0PFQqPihzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+anNWYWx1ZSgp
LmFzQ2VsbCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gaW5s
aW5lIFQmIFdlYWtJbXBsQWNjZXNzb3I8QmFzZSwgVD46Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsICYmIHN0YXRp
Y19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpM
aXZlKTsKLSAgICByZXR1cm4gKmpzQ2FzdDxUKj4oc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRo
aXMpLT5tX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IEJhc2UsIHR5cGVuYW1lIFQ+IGlubGluZSB0eXBlbmFtZSBXZWFrSW1wbEFjY2Vzc29yPEJhc2Us
IFQ+OjpHZXRUeXBlIFdlYWtJbXBsQWNjZXNzb3I8QmFzZSwgVD46OmdldCgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbCB8fCBzdGF0aWNf
Y2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2
ZSkKLSAgICAgICAgcmV0dXJuIEdldFR5cGUoKTsKLSAgICByZXR1cm4ganNDYXN0PFQqPihzdGF0
aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2Vh
a0ltcGxBY2Nlc3NvcjxCYXNlLCBUPjo6d2FzKHR5cGVuYW1lIFdlYWtJbXBsQWNjZXNzb3I8QmFz
ZSwgVD46OkdldFR5cGUgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGpzQ2FzdDxUKj4oc3Rh
dGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5tX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkg
PT0gb3RoZXI7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzV2VhazxUPjo6
UGFzc1dlYWsoKQogICAgIDogbV9pbXBsKDApCiB7CkBAIC0xMTUsOCArODAsOCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1dlYWs8VD46CiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBQYXNzV2VhazxUPjo6UGFzc1dlYWsodHlwZW5hbWUgUGFzc1dlYWs8VD46
OkdldFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFsbG9jYXRlKGdldFR5cGUsIHdl
YWtPd25lciwgY29udGV4dCkgOiAwKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NX
ZWFrPFQ+OjpQYXNzV2VhayhUKiBjZWxsLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtPd25lciwgdm9p
ZCogY29udGV4dCkKKyAgICA6IG1faW1wbChjZWxsID8gV2Vha1NldDo6YWxsb2NhdGUoY2VsbCwg
d2Vha093bmVyLCBjb250ZXh0KSA6IDApCiB7CiB9CiAKQEAgLTEzNyw2ICsxMDIsMjUgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+OgogICAgIFdlYWtTZXQ6OmRlYWxs
b2NhdGUobV9pbXBsKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFBhc3NX
ZWFrPFQ+OjpvcGVyYXRvci0+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1w
bC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxUKj4obV9p
bXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgVCYgUGFzc1dlYWs8VD46Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faW1w
bCAmJiBtX2ltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpOworICAgIHJldHVybiAqanND
YXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBUKiBQYXNzV2VhazxUPjo6Z2V0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
aW1wbCB8fCBtX2ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6OkxpdmUpCisgICAgICAgIHJldHVy
biAwOworICAgIHJldHVybiBqc0Nhc3Q8VCo+KG1faW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgUGFzc1dlYWs8VD46Om9wZXJh
dG9yISgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBsLT5zdGF0ZSgpICE9
IFdlYWtJbXBsOjpMaXZlIHx8ICFtX2ltcGwtPmpzVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCShyZXZpc2lvbiAxNDc5
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlICJXZWFr
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vhay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWsuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwyMiArMjYsMjEgQEAKICNpZm5k
ZWYgV2Vha19oCiAjZGVmaW5lIFdlYWtfaAogCi0jaW5jbHVkZSAiUGFzc1dlYWsuaCIKLSNpbmNs
dWRlICJXZWFrU2V0SW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvTnVsbFB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgV2VhayA6IHB1YmxpYyBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+IHsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NXZWFrOworY2xhc3MgV2Vha0ltcGw7Citj
bGFzcyBXZWFrSGFuZGxlT3duZXI7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWspOwogcHVibGljOgotICAgIGZyaWVuZCBj
bGFzcyBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+OwotICAgIHR5cGVkZWYgdHlwZW5hbWUg
V2Vha0ltcGxBY2Nlc3NvcjxXZWFrPFQ+LCBUPjo6R2V0VHlwZSBHZXRUeXBlOwotCiAgICAgV2Vh
aygpOwogICAgIGV4cGxpY2l0IFdlYWsoc3RkOjpudWxscHRyX3QpOwotICAgIGV4cGxpY2l0IFdl
YWsoR2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKyAg
ICBleHBsaWNpdCBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9
IDApOwogCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNoVGFibGVEZWxl
dGVkVmFsdWUgfTsKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CkBA
IC01NSw5ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgV2VhayYgb3BlcmF0b3I9KGNvbnN0IFBhc3NX
ZWFrPFQ+Jik7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBUKiBvcGVy
YXRvci0+KCkgY29uc3Q7CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgVCogZ2V0KCkg
Y29uc3Q7CisKKyAgICBib29sIHdhcyhUKikgY29uc3Q7CiAKICAgICAvLyBUaGlzIGNvbnZlcnNp
b24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRv
IG90aGVyIGludGVnZXIgdHlwZXMuCi0gICAgdHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVCYXNlOjoq
VW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgdHlwZWRlZiB2b2lkKiAoV2Vhazo6KlVuc3BlY2lm
aWVkQm9vbFR5cGUpOwogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7
CiAKICAgICBQYXNzV2VhazxUPiByZWxlYXNlKCk7CkBAIC02OSwxNDUgKzczLDYgQEAgcHJpdmF0
ZToKICAgICBXZWFrSW1wbCogbV9pbXBsOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIFdlYWs8VD46OldlYWsoKQotICAgIDogbV9pbXBsKDApCi17Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKHN0ZDo6bnVsbHB0cl90KQotICAgIDogbV9p
bXBsKDApCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFr
KHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFr
T3duZXIsIHZvaWQqIGNvbnRleHQpCi0gICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFs
bG9jYXRlKGdldFR5cGUsIHdlYWtPd25lciwgY29udGV4dCkgOiAwKQotewotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBXZWFrPFQ+Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlwZW5h
bWUgV2VhazxUPjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQotICAgIDogbV9pbXBsKGhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiAgaW5saW5lIFdlYWs8VD46OldlYWsoY29uc3QgUGFzc1dlYWs8VT4mIG90
aGVyKQotICAgIDogbV9pbXBsKG90aGVyLmxlYWtJbXBsKCkpCi17Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+Ojp+V2VhaygpCi17Ci0gICAgY2xlYXIoKTsKLX0KLQot
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChXZWFrPFQ+JiBhLCBXZWFrPFQ+JiBi
KQotewotICAgIGEuc3dhcChiKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZv
aWQgV2VhazxUPjo6c3dhcChXZWFrJiBvdGhlcikKLXsKLSAgICBzdGQ6OnN3YXAobV9pbXBsLCBv
dGhlci5tX2ltcGwpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPiYg
V2VhazxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NXZWFrPFQ+JiBvKQotewotICAgIGNsZWFyKCk7
Ci0gICAgbV9pbXBsID0gby5sZWFrSW1wbCgpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIW1faW1wbCB8fCAhbV9pbXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5z
dGF0ZSgpICE9IFdlYWtJbXBsOjpMaXZlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgV2VhazxUPjo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAotewotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPighISp0aGlzKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+IFdlYWs8VD46OnJl
bGVhc2UoKQotewotICAgIFBhc3NXZWFrPFQ+IHRtcCA9IGFkb3B0V2VhazxUPihtX2ltcGwpOwot
ICAgIG1faW1wbCA9IDA7Ci0gICAgcmV0dXJuIHRtcDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIHZvaWQgV2VhazxUPjo6Y2xlYXIoKQotewotICAgIGlmICghbV9pbXBsKQotICAg
ICAgICByZXR1cm47Ci0gICAgV2Vha1NldDo6ZGVhbGxvY2F0ZShtX2ltcGwpOwotICAgIG1faW1w
bCA9IDA7Ci19Ci0gICAgCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha0ltcGwqIFdl
YWs8VD46Omhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V2Vha0ltcGwqPigtMSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYWs8VD4mIGxocywgY29uc3QgV2VhazxUPiYgcmhzKQot
ewotICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOwotfQotCi0vLyBUaGlzIGZ1bmN0
aW9uIGhlbHBzIGF2b2lkIG1vZGlmeWluZyBhIHdlYWsgdGFibGUgd2hpbGUgaG9sZGluZyBhbiBp
dGVyYXRvciBpbnRvIGl0LiAoT2JqZWN0IGFsbG9jYXRpb24KLS8vIGNhbiBydW4gYSBmaW5hbGl6
ZXIgdGhhdCBtb2RpZmllcyB0aGUgdGFibGUuIFdlIGF2b2lkIHRoYXQgYnkgcmVxdWlyaW5nIGEg
cHJlLWNvbnN0cnVjdGVkIG9iamVjdCBhcyBvdXIgdmFsdWUuKQotdGVtcGxhdGU8dHlwZW5hbWUg
TWFwLCB0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrQWRkKE1h
cCYgbWFwLCBjb25zdCBLZXkmIGtleSwgVmFsdWUgdmFsdWUpCi17Ci0gICAgQVNTRVJUKCFtYXAu
Z2V0KGtleSkpOwotICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7IC8vIFRoZSB0YWJsZSBtYXkgc3Rp
bGwgaGF2ZSBhIHpvbWJpZSBmb3IgdmFsdWUuCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1hcCwg
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZT4gaW5saW5lIHZvaWQgd2Vha1JlbW92ZShNYXAm
IG1hcCwgY29uc3QgS2V5JiBrZXksIFZhbHVlIHZhbHVlKQotewotICAgIHR5cGVuYW1lIE1hcDo6
aXRlcmF0b3IgaXQgPSBtYXAuZmluZChrZXkpOwotICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsIHZh
bHVlKTsKLSAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKLSAgICBBU1NFUlQoaXQtPnZhbHVl
Lndhcyh2YWx1ZSkpOwotICAgIEFTU0VSVCghaXQtPnZhbHVlKTsKLSAgICBtYXAucmVtb3ZlKGl0
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8
VD4mIHdlYWssIHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgdmFsdWUpCi17Ci0gICAgQVNTRVJU
X1VOVVNFRCh2YWx1ZSwgdmFsdWUpOwotICAgIEFTU0VSVCh3ZWFrLndhcyh2YWx1ZSkpOwotICAg
IEFTU0VSVCghd2Vhayk7Ci0gICAgd2Vhay5jbGVhcigpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0
b3JUcmFpdHM8SlNDOjpXZWFrPFQ+ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKLX07Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IHsKLSAgICB0eXBlZGVmIEpTQzo6V2Vh
azxUPiBTdG9yYWdlVHlwZTsKLQotICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1
ZVR5cGU7Ci0gICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0KLSAgICB0eXBlZGVmIEpTQzo6UGFzc1dlYWs8VD4gUGFzc0luVHlwZTsKLSAg
ICBzdGF0aWMgdm9pZCBzdG9yZShQYXNzSW5UeXBlIHZhbHVlLCBTdG9yYWdlVHlwZSYgc3RvcmFn
ZSkgeyBzdG9yYWdlID0gdmFsdWU7IH0KLQotICAgIHR5cGVkZWYgSlNDOjpQYXNzV2VhazxUPiBQ
YXNzT3V0VHlwZTsKLSAgICBzdGF0aWMgUGFzc091dFR5cGUgcGFzc091dChTdG9yYWdlVHlwZSYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsgfQotICAgIHN0YXRpYyBQYXNzT3V0VHlw
ZSBwYXNzT3V0KEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQYXNzT3V0VHlwZSgpOyB9Ci0KLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIFN0b3JhZ2VUeXBlOjpHZXRUeXBlIFBlZWtUeXBlOwotICAgIHN0
YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyBy
ZXR1cm4gUGVla1R5cGUoKTsgfQotfTsKLQotfQotCiAjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHJldmlzaW9uIDE0NzkzOCkJ
KGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oOjE0NzkzOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYWtfaAorI2RlZmluZSBX
ZWFrX2gKKworI2luY2x1ZGUgIlBhc3NXZWFrLmgiCisjaW5jbHVkZSAiV2Vha1NldElubGluZXMu
aCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrIDog
cHVibGljIFdlYWtJbXBsQWNjZXNzb3I8V2VhazxUPiwgVD4geworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYWspOworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBXZWFrSW1wbEFjY2Vzc29y
PFdlYWs8VD4sIFQ+OworICAgIHR5cGVkZWYgdHlwZW5hbWUgV2Vha0ltcGxBY2Nlc3NvcjxXZWFr
PFQ+LCBUPjo6R2V0VHlwZSBHZXRUeXBlOworCisgICAgV2VhaygpOworICAgIGV4cGxpY2l0IFdl
YWsoc3RkOjpudWxscHRyX3QpOworICAgIGV4cGxpY2l0IFdlYWsoR2V0VHlwZSwgV2Vha0hhbmRs
ZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKworICAgIGVudW0gSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07CisgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0OworICAgIFdlYWsoSGFzaFRhYmxlRGVsZXRlZFZhbHVl
VGFnKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFdlYWsoY29uc3QgUGFzc1dlYWs8VT4m
KTsKKworICAgIH5XZWFrKCk7CisKKyAgICB2b2lkIHN3YXAoV2VhayYpOworICAgIFdlYWsmIG9w
ZXJhdG9yPShjb25zdCBQYXNzV2VhazxUPiYpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3Q7CisKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0
IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCisgICAg
dHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVCYXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAg
b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdDsKKworICAgIFBhc3NXZWFrPFQ+
IHJlbGVhc2UoKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgCitwcml2YXRlOgorICAgIHN0YXRp
YyBXZWFrSW1wbCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisKKyAgICBXZWFrSW1wbCogbV9p
bXBsOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsoKQor
ICAgIDogbV9pbXBsKDApCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFr
PFQ+OjpXZWFrKHN0ZDo6bnVsbHB0cl90KQorICAgIDogbV9pbXBsKDApCit7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKHR5cGVuYW1lIFdlYWs8VD46Okdl
dFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRleHQp
CisgICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFsbG9jYXRlKGdldFR5cGUsIHdlYWtP
d25lciwgY29udGV4dCkgOiAwKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
Ym9vbCBXZWFrPFQ+Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlwZW5hbWUgV2VhazxUPjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlVGFnKQorICAgIDogbV9pbXBsKGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKQor
eworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAgaW5saW5l
IFdlYWs8VD46OldlYWsoY29uc3QgUGFzc1dlYWs8VT4mIG90aGVyKQorICAgIDogbV9pbXBsKG90
aGVyLmxlYWtJbXBsKCkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFr
PFQ+Ojp+V2VhaygpCit7CisgICAgY2xlYXIoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4gaW5s
aW5lIHZvaWQgc3dhcChXZWFrPFQ+JiBhLCBXZWFrPFQ+JiBiKQoreworICAgIGEuc3dhcChiKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgV2VhazxUPjo6c3dhcChXZWFr
JiBvdGhlcikKK3sKKyAgICBzdGQ6OnN3YXAobV9pbXBsLCBvdGhlci5tX2ltcGwpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPiYgV2VhazxUPjo6b3BlcmF0b3I9KGNv
bnN0IFBhc3NXZWFrPFQ+JiBvKQoreworICAgIGNsZWFyKCk7CisgICAgbV9pbXBsID0gby5sZWFr
SW1wbCgpOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIGJvb2wgV2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faW1w
bCB8fCAhbV9pbXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5zdGF0ZSgpICE9IFdlYWtJbXBsOjpM
aXZlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6b3BlcmF0b3Ig
VW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPighISp0aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+IFdlYWs8VD46OnJlbGVhc2UoKQoreworICAgIFBhc3NX
ZWFrPFQ+IHRtcCA9IGFkb3B0V2VhazxUPihtX2ltcGwpOworICAgIG1faW1wbCA9IDA7CisgICAg
cmV0dXJuIHRtcDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgV2VhazxU
Pjo6Y2xlYXIoKQoreworICAgIGlmICghbV9pbXBsKQorICAgICAgICByZXR1cm47CisgICAgV2Vh
a1NldDo6ZGVhbGxvY2F0ZShtX2ltcGwpOworICAgIG1faW1wbCA9IDA7Cit9CisgICAgCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha0ltcGwqIFdlYWs8VD46Omhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0ltcGwqPigtMSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFdlYWs8VD4mIGxocywgY29uc3QgV2VhazxUPiYgcmhzKQoreworICAgIHJldHVybiBsaHMuZ2V0
KCkgPT0gcmhzLmdldCgpOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGhlbHBzIGF2b2lkIG1vZGlm
eWluZyBhIHdlYWsgdGFibGUgd2hpbGUgaG9sZGluZyBhbiBpdGVyYXRvciBpbnRvIGl0LiAoT2Jq
ZWN0IGFsbG9jYXRpb24KKy8vIGNhbiBydW4gYSBmaW5hbGl6ZXIgdGhhdCBtb2RpZmllcyB0aGUg
dGFibGUuIFdlIGF2b2lkIHRoYXQgYnkgcmVxdWlyaW5nIGEgcHJlLWNvbnN0cnVjdGVkIG9iamVj
dCBhcyBvdXIgdmFsdWUuKQordGVtcGxhdGU8dHlwZW5hbWUgTWFwLCB0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrQWRkKE1hcCYgbWFwLCBjb25zdCBLZXkmIGtl
eSwgVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKCFtYXAuZ2V0KGtleSkpOworICAgIG1hcC5z
ZXQoa2V5LCB2YWx1ZSk7IC8vIFRoZSB0YWJsZSBtYXkgc3RpbGwgaGF2ZSBhIHpvbWJpZSBmb3Ig
dmFsdWUuCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZT4gaW5saW5lIHZvaWQgd2Vha1JlbW92ZShNYXAmIG1hcCwgY29uc3QgS2V5JiBrZXks
IFZhbHVlIHZhbHVlKQoreworICAgIHR5cGVuYW1lIE1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmlu
ZChrZXkpOworICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsIHZhbHVlKTsKKyAgICBBU1NFUlQoaXQg
IT0gbWFwLmVuZCgpKTsKKyAgICBBU1NFUlQoaXQtPnZhbHVlLndhcyh2YWx1ZSkpOworICAgIEFT
U0VSVCghaXQtPnZhbHVlKTsKKyAgICBtYXAucmVtb3ZlKGl0KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VD4mIHdlYWssIHR5cGVuYW1lIFdl
YWs8VD46OkdldFR5cGUgdmFsdWUpCit7CisgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZSwgdmFsdWUp
OworICAgIEFTU0VSVCh3ZWFrLndhcyh2YWx1ZSkpOworICAgIEFTU0VSVCghd2Vhayk7CisgICAg
d2Vhay5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+
ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgY2Fu
Q29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpT
Qzo6V2VhazxUPiA+IHsKKyAgICB0eXBlZGVmIEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKKwor
ICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7CisgICAgc3RhdGljIEVt
cHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB0eXBl
ZGVmIEpTQzo6UGFzc1dlYWs8VD4gUGFzc0luVHlwZTsKKyAgICBzdGF0aWMgdm9pZCBzdG9yZShQ
YXNzSW5UeXBlIHZhbHVlLCBTdG9yYWdlVHlwZSYgc3RvcmFnZSkgeyBzdG9yYWdlID0gdmFsdWU7
IH0KKworICAgIHR5cGVkZWYgSlNDOjpQYXNzV2VhazxUPiBQYXNzT3V0VHlwZTsKKyAgICBzdGF0
aWMgUGFzc091dFR5cGUgcGFzc091dChTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
LnJlbGVhc2UoKTsgfQorICAgIHN0YXRpYyBQYXNzT3V0VHlwZSBwYXNzT3V0KEVtcHR5VmFsdWVU
eXBlKSB7IHJldHVybiBQYXNzT3V0VHlwZSgpOyB9CisKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFN0
b3JhZ2VUeXBlOjpHZXRUeXBlIFBlZWtUeXBlOworICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNv
bnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KKyAgICBzdGF0
aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5cGUoKTsgfQor
fTsKKworfQorCisjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDUyICsy
MywxNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgV2Vha19oCi0jZGVmaW5lIFdlYWtfaAorI2lmbmRlZiBXZWFrSW5saW5lc19oCisjZGVmaW5l
IFdlYWtJbmxpbmVzX2gKIAogI2luY2x1ZGUgIlBhc3NXZWFrLmgiCiAjaW5jbHVkZSAiV2Vha1Nl
dElubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsgOiBwdWJsaWMgV2Vha0ltcGxBY2Nl
c3NvcjxXZWFrPFQ+LCBUPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vhayk7Ci1wdWJs
aWM6Ci0gICAgZnJpZW5kIGNsYXNzIFdlYWtJbXBsQWNjZXNzb3I8V2VhazxUPiwgVD47Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+OjpHZXRUeXBlIEdl
dFR5cGU7Ci0KLSAgICBXZWFrKCk7Ci0gICAgZXhwbGljaXQgV2VhayhzdGQ6Om51bGxwdHJfdCk7
Ci0gICAgZXhwbGljaXQgV2VhayhHZXRUeXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCog
Y29udGV4dCA9IDApOwotCi0gICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNo
VGFibGVEZWxldGVkVmFsdWUgfTsKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3Q7Ci0gICAgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gV2Vhayhjb25zdCBQYXNzV2VhazxVPiYpOwotCi0gICAgfldlYWsoKTsK
LQotICAgIHZvaWQgc3dhcChXZWFrJik7Ci0gICAgV2VhayYgb3BlcmF0b3I9KGNvbnN0IFBhc3NX
ZWFrPFQ+Jik7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLQotICAgIC8vIFRo
aXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29s
IGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIEpTVmFsdWUgKEhh
bmRsZUJhc2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKLSAgICBvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKigpIGNvbnN0OwotCi0gICAgUGFzc1dlYWs8VD4gcmVsZWFzZSgpOwotICAgIHZv
aWQgY2xlYXIoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgc3RhdGljIFdlYWtJbXBsKiBoYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsKLQotICAgIFdlYWtJbXBsKiBtX2ltcGw7Ci19OwotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2VhaygpCiAgICAgOiBtX2ltcGwoMCkKIHsK
QEAgLTc5LDggKzQzLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46Oldl
YQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2Vhayh0eXBl
bmFtZSBXZWFrPFQ+OjpHZXRUeXBlIGdldFR5cGUsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVy
LCB2b2lkKiBjb250ZXh0KQotICAgIDogbV9pbXBsKGdldFR5cGUgPyBXZWFrU2V0OjphbGxvY2F0
ZShnZXRUeXBlLCB3ZWFrT3duZXIsIGNvbnRleHQpIDogMCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBXZWFrPFQ+OjpXZWFrKFQqIGNlbGwsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVy
LCB2b2lkKiBjb250ZXh0KQorICAgIDogbV9pbXBsKGNlbGwgPyBXZWFrU2V0OjphbGxvY2F0ZShj
ZWxsLCB3ZWFrT3duZXIsIGNvbnRleHQpIDogMCkKIHsKIH0KIApAQCAtMTIxLDYgKzg1LDMwIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+JiBXZWEKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBXZWFrPFQ+OjpvcGVyYXRv
ci0+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1wbC0+c3RhdGUoKSA9PSBX
ZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxUKj4obV9pbXBsLT5qc1ZhbHVlKCku
YXNDZWxsKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCYgV2VhazxUPjo6
b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1wbC0+c3RhdGUo
KSA9PSBXZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuICpqc0Nhc3Q8VCo+KG1faW1wbC0+anNW
YWx1ZSgpLmFzQ2VsbCgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFdl
YWs8VD46OmdldCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltcGwgfHwgbV9pbXBsLT5zdGF0ZSgp
ICE9IFdlYWtJbXBsOjpMaXZlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4ganNDYXN0
PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBib29sIFdlYWs8VD46OndhcyhUKiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1
cm4ganNDYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkgPT0gb3RoZXI7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46Om9wZXJhdG9yISgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+anNWYWx1ZSgpIHx8IG1faW1w
bC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2ZTsKQEAgLTE3NCwxMCArMTYyLDEwIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5LCB0eXAKICAgICBtYXAucmVtb3ZlKGl0KTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VD4m
IHdlYWssIHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xlYXIoV2VhazxUPiYgd2VhaywgVCogY2VsbCkKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKHZhbHVlLCB2YWx1ZSk7Ci0gICAgQVNTRVJUKHdlYWsud2FzKHZhbHVl
KSk7CisgICAgQVNTRVJUX1VOVVNFRChjZWxsLCBjZWxsKTsKKyAgICBBU1NFUlQod2Vhay53YXMo
Y2VsbCkpOwogICAgIEFTU0VSVCghd2Vhayk7CiAgICAgd2Vhay5jbGVhcigpOwogfQpAQCAtMjAz
LDExICsxOTEsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8Sgog
ICAgIHN0YXRpYyBQYXNzT3V0VHlwZSBwYXNzT3V0KFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUucmVsZWFzZSgpOyB9CiAgICAgc3RhdGljIFBhc3NPdXRUeXBlIHBhc3NPdXQoRW1w
dHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBhc3NPdXRUeXBlKCk7IH0KIAotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgU3RvcmFnZVR5cGU6OkdldFR5cGUgUGVla1R5cGU7CisgICAgdHlwZWRlZiBUKiBQZWVr
VHlwZTsKICAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBTdG9yYWdlVHlwZSYgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CiAgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoRW1wdHlW
YWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0KIH07CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdURgogCi0jZW5kaWYgLy8gV2Vha19oCisjZW5kaWYgLy8gV2Vha0lubGluZXNfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVk
ZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSAiV2Vha0lu
bGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
Rml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgog
I2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCi0jaW5jbHVk
ZSAiV2Vhay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkocmV2aXNpb24gMTQ3OTM4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDggQEAKICNpZm5kZWYgV2Vha0dDTWFwX2gKICNkZWZpbmUgV2Vha0dD
TWFwX2gKIAotI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNs
dWRlIDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDc5NTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NyBAQAorMjAxMy0w
NC0wOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN0b3Ag
I2luY2x1ZGUtaW5nIGFsbCBvZiBKYXZhU2NyaXB0Q29yZSBpbiBldmVyeSBET00tcmVsYXRlZCBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQy
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIHNl
cGFyYXRlZCBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggZnJvbSBTY3JpcHRXcmFwcGFibGUuaCBz
bworICAgICAgICBXZWJDb3JlIGRhdGEgdHlwZXMgdGhhdCBpbmhlcml0IGZyb20gU2NyaXB0V3Jh
cHBhYmxlIGRvbid0CisgICAgICAgIGhhdmUgdG8gI2luY2x1ZGUgYWxsIG9mIHRoZSBpbmZyYXN0
cnVjdHVyZSBmb3IgYWNjZXNzaW5nIHRoYXQgZGF0YSBtZW1iZXIuCisKKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy9oZWFwL1Bhc3NXZWFrLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL2hlYXAvV2Vha0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBw
ZXJXb3JsZC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRXcmFwcGFibGU6OndyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
V3JhcHBhYmxlOjpzZXRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJs
ZTo6Y2xlYXJXcmFwcGVyKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuaDoKKyAg
ICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X3Jvb3QuY3BwOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuaDoKKyAgICAgICAgKiBj
c3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3RCYXNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0
TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpy
ZXBvcnRNZW1vcnlVc2FnZSk6CisKIDIwMTMtMDQtMDggIEFydW5wcmFzYWQgUmFqa3VtYXIgIDxh
cnVucHJhc2FkckBuZHMuY29tPgogCiAgICAgICAgIENhbGwgTmV0c2NhcGUgUGx1Z2luJ3MgdG9T
dHJpbmcoKSBhbmQgdmFsdWVPZigpIGluc3RlYWQgb2YgcHJvdmlkaW5nIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvUGFz
c1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9o
ZWFwL1Bhc3NXZWFrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9oZWFwL1Bhc3NXZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX1Bhc3NXZWFrX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfUGFzc1dl
YWtfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Bhc3NXZWFrLmg+CisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvV2Vha0lubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9oZWFwL1dlYWtJbmxp
bmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9o
ZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVm
IFdlYkNvcmVfRldEX1dlYWtJbmxpbmVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfV2Vha0lubGlu
ZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtJbmxpbmVzLmg+CisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBACiAJCTEw
NTk0NTk5MTVCNDJBQTAwMDREMzdGRCAvKiBQcm9wZXJ0eU5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMDU5NDU5ODE1QjQyQUEwMDA0RDM3
RkQgLyogUHJvcGVydHlOb2RlTGlzdC5oICovOyB9OwogCQkxMDU5NDU5RjE1QjQyQjFBMDA0RDM3
RkQgLyogSlNQcm9wZXJ0eU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxMDU5NDU5RTE1QjQyQjFBMDA0RDM3RkQgLyogSlNQcm9wZXJ0eU5v
ZGVMaXN0LmggKi87IH07CiAJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
MEZCMDg0QTE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oICovOyB9OworCQkx
NDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwMEQ3QTcxNzEzNkVB
NzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAyNjQ1RTBBRkRDMTlCMDA1OTE5RTIg
LyogTG9nZ2luZ01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MDI2NDVEMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5nTWFjLm1tICovOyB9Owog
CQkxNDAzQjk5NzA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAzQjk5NTA5RUIxM0FGMDA3OTdDN0Yg
LyogRE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQwM0I5OTgwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAzQjk5NjA5RUIxM0FG
MDA3OTdDN0YgLyogRE9NV2luZG93LmNwcCAqLzsgfTsKQEAgLTY1MzAsNiArNjUzMSw3IEBACiAJ
CTEwNTk0NTlBMTVCNDJBQzAwMDREMzdGRCAvKiBQcm9wZXJ0eU5vZGVMaXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBQcm9wZXJ0eU5vZGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTA1OTQ1OUUxNUI0MkIxQTAwNEQzN0ZEIC8qIEpTUHJvcGVydHlOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5Tm9kZUxpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTBGQjA4NEExNEUxNUM3RTAwQTNEQjk4
IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHVibGljVVJMTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDAwRDdB
NzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDI2NDVEMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5n
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDNCOTBDMDlFQjEyNDUwMDc5
N0M3RiAvKiBET01XaW5kb3cuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVdpbmRvdy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDNCOTk1MDlFQjEzQUYwMDc5N0M3
RiAvKiBET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2lu
ZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODczMSw2ICsxODczMyw3IEBA
CiAJCQkJOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJ
CQk5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAqLywKIAkJCQkyMjhD
Mjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8sCisJCQkJMTQwMEQ3
QTcxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLywKIAkJCQlB
NzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywK
IAkJCQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
Ki8sCiAJCQkJQkM1M0Q5MTAxMTQzMTBDQzAwMEQ4MTdFIC8qIFdlYkNvcmVKU0NsaWVudERhdGEu
aCAqLywKQEAgLTIzOTAwLDYgKzIzOTAzLDcgQEAKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0
NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2NjExMEI3
OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGRkJG
M0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0
MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdM
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlENzEwNDJEMzJGMDAwOUQ0NDcgLyog
V2ViR0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNyArMjMsNiBAQAogI2RlZmluZSBET01XcmFwcGVyV29ybGRfaAogCiAjaW5jbHVkZSAiSlNE
T01HbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KICNpbmNsdWRlIDxydW50
aW1lL1dlYWtHQ01hcC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAxNDc5MzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsOCArMzAsMTAgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKICNpbmNsdWRlIDxoZWFwL1Nsb3RWaXNpdG9yLmg+
CiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CkBAIC00NCw5ICs0Niw3IEBA
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLQogY2xhc3MgSGFz
aEVudHJ5OwotCiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjIsOCArMjIsMTAgQEAKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgPGhlYXAvUGFzc1dlYWsuaD4KICNpbmNsdWRl
IDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNsdWRl
IDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCShy
ZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9u
Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
SlNNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWtJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRl
ckNvbmRpdGlvbi5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIs
NyBAQAogCiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPGhlYXAv
V2Vhay5oPgorI2luY2x1ZGUgPGhlYXAvV2Vha0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0V3JhcHBhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0V3JhcHBhYmxlLmgJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBA
QAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsMzYgKzMyLDIyIEBACiAjaWZuZGVmIFNjcmlw
dFdyYXBwYWJsZV9oCiAjZGVmaW5lIFNjcmlwdFdyYXBwYWJsZV9oCiAKLSNpbmNsdWRlICJKU0RP
TVdyYXBwZXIuaCIKLSNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSA8aGVhcC9XZWFrLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CisK
K25hbWVzcGFjZSBKU0MgeworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgV2Vha0hhbmRsZU93
bmVyOworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEpTRE9NV3JhcHBlcjsKKwog
Y2xhc3MgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBKU0RPTVdyYXBwZXIqIHdyYXBw
ZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0RPTVdyYXBwZXIq
IHdyYXBwZXIsIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fd3JhcHBlcik7Ci0gICAgICAgIG1fd3JhcHBl
ciA9IEpTQzo6UGFzc1dlYWs8SlNET01XcmFwcGVyPih3cmFwcGVyLCB3cmFwcGVyT3duZXIsIGNv
bnRleHQpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJXcmFwcGVyKEpTRE9NV3JhcHBlciogd3Jh
cHBlcikKLSAgICB7Ci0gICAgICAgIHdlYWtDbGVhcihtX3dyYXBwZXIsIHdyYXBwZXIpOwotICAg
IH0KLQotICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKLSAgICB7Ci0gICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICAgICAg
aW5mby5hZGRNZW1iZXIobV93cmFwcGVyLCAid3JhcHBlciIpOwotICAgIH0KKyAgICBKU0RPTVdy
YXBwZXIqIHdyYXBwZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2Jh
bERhdGEmLCBKU0RPTVdyYXBwZXIqLCBKU0M6OldlYWtIYW5kbGVPd25lciosIHZvaWQqKTsKKyAg
ICB2b2lkIGNsZWFyV3JhcHBlcihKU0RPTVdyYXBwZXIqKTsKIAogcHJpdmF0ZToKICAgICBKU0M6
OldlYWs8SlNET01XcmFwcGVyPiBtX3dyYXBwZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0V3JhcHBhYmxlSW5s
aW5lc19oCisjZGVmaW5lIFNjcmlwdFdyYXBwYWJsZUlubGluZXNfaAorCisjaW5jbHVkZSAiSlNE
T01XcmFwcGVyLmgiCisjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFr
SW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBKU0RPTVdyYXBwZXIq
IFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3JhcHBl
ci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQgU2NyaXB0V3JhcHBhYmxlOjpzZXRXcmFwcGVyKEpT
Qzo6SlNHbG9iYWxEYXRhJiwgSlNET01XcmFwcGVyKiB3cmFwcGVyLCBKU0M6OldlYWtIYW5kbGVP
d25lciogd3JhcHBlck93bmVyLCB2b2lkKiBjb250ZXh0KQoreworICAgIEFTU0VSVCghbV93cmFw
cGVyKTsKKyAgICBtX3dyYXBwZXIgPSBKU0M6OlBhc3NXZWFrPEpTRE9NV3JhcHBlcj4od3JhcHBl
ciwgd3JhcHBlck93bmVyLCBjb250ZXh0KTsKK30KKworaW5saW5lIHZvaWQgU2NyaXB0V3JhcHBh
YmxlOjpjbGVhcldyYXBwZXIoSlNET01XcmFwcGVyKiB3cmFwcGVyKQoreworICAgIHdlYWtDbGVh
cihtX3dyYXBwZXIsIHdyYXBwZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBTY3JpcHRXcmFwcGFibGVJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX3Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX3Jvb3QuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9yb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2lu
Y2x1ZGUgPGhlYXAvV2Vha0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAkocmV2aXNpb24gMTQ3OTM4
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRlICJK
U1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUg
IldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCiAjaW5jbHVkZSA8UVBv
aW50ZXI+CiAjaW5jbHVkZSA8cWhhc2guaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHQuaCIKICNpbmNsdWRlICJXZWFr
LmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlICJxdF9pbnN0YW5jZS5oIgog
I2luY2x1ZGUgInJ1bnRpbWVfbWV0aG9kLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDE0Nzkz
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCShyZXZpc2lvbiAx
NDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5j
bHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCisjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9CaXRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcAkocmV2aXNpb24g
MTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTkzLDcgKzkzLDYgQEAgdm9pZCBMaXZlTm9kZUxpc3RCYXNlOjppbnZhbGlkYXRl
SWROYW1lQwogdm9pZCBMaXZlTm9kZUxpc3RCYXNlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5m
byBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsK
LSAgICBOb2RlTGlzdDo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAg
aW5mby5hZGRNZW1iZXIobV9vd25lck5vZGUsICJvd25lck5vZGUiKTsKICAgICBpbmZvLmFkZFdl
YWtQb2ludGVyKG1fY2FjaGVkSXRlbSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lv
biAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2MjcsNyArMjYyNyw2IEBAIHZvaWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQogdm9pZCBO
b2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9y
dE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcGFy
ZW50T3JTaGFkb3dIb3N0Tm9kZSwgInBhcmVudE9yU2hhZG93SG9zdE5vZGUiKTsKICAgICBpbmZv
LmFkZE1lbWJlcihtX3RyZWVTY29wZSwgInRyZWVTY29wZSIpOwogICAgIGluZm8uaWdub3JlTWVt
YmVyKG1fbmV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1
ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5j
bHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1l
bnRhdGlvblZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRleDog
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAu
aD4KIAogbmFtZXNwYWNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5o
IgorI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMy
MCw3ICsxMzIwLDYgQEAgRXZlbnRUYXJnZXREYXRhKiBYTUxIdHRwUmVxdWVzdDo6ZW5zdXJlRQog
dm9pZCBYTUxIdHRwUmVxdWVzdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci0gICAgU2NyaXB0
V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBBY3Rp
dmVET01PYmplY3Q6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fdXBsb2FkLCAidXBsb2FkIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV91
cmwsICJ1cmwiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Nzk1NykKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA0
LTA4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCAj
aW5jbHVkZS1pbmcgYWxsIG9mIEphdmFTY3JpcHRDb3JlIGluIGV2ZXJ5IERPTS1yZWxhdGVkIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDIy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oOgorCiAyMDEzLTA0LTA4ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIvUGx1Z2luIHByb2Nlc3Mg
ZGVhZGxvY2sgaW5pdGlhbGl6aW5nIGFzeW5jIHBsdWdpbnMuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTQ3OTM4
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHls
ZVNoZWV0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgJKHJldmlzaW9uIDE0
NzkzOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1
bnRpbWVPYmplY3RNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5j
bHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVk
ZSA8aGVhcC9XZWFrSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196965</attachid>
            <date>2013-04-08 15:59:05 -0700</date>
            <delta_ts>2013-04-08 16:15:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114220-20130408155848.patch</filename>
            <type>text/plain</type>
            <size>55404</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3OTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDEzLTA0LTA4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RvcCAjaW5jbHVkZS1pbmcgYWxsIG9mIEphdmFTY3JpcHRDb3JlIGluIGV2ZXJ5IERPTS1y
ZWxhdGVkIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDIyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEkgc2VwYXJhdGVkIFdlYWtJbmxpbmVzLmggZnJvbSBXZWFrLmggc28gV2ViQ29yZSBkYXRh
IHR5cGVzIHRoYXQgbmVlZAorICAgICAgICB0byBkZWNsYXJlIGEgV2VhazxUPiBkYXRhIG1lbWJl
ciBkb24ndCBoYXZlIHRvICNpbmNsdWRlIGFsbCBvZiB0aGUKKyAgICAgICAgaW5mcmFzdHJ1Y3R1
cmUgZm9yIGFjY2Vzc2luZyB0aGF0IGRhdGEgbWVtYmVyLgorCisgICAgICAgIFRoaXMgYWxzbyBy
ZXF1aXJlZCBzZXBhcmF0aW5nIFdlYWs8VD4gZnJvbSBQYXNzV2VhazxUPiBieSByZW1vdmluZyB0
aGUKKyAgICAgICAgV2Vha0ltcGxBY2Nlc3NvciBjbGFzcyB0ZW1wbGF0ZSBhbmQgcHVzaGluZyBj
b2RlIGRvd24gaW50byBpdHMgc3ViY2xhc3Nlcy4KKworICAgICAgICAqIEFQSS9KU1dlYWtPYmpl
Y3RNYXBSZWZQcml2YXRlLmNwcDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6
CisgICAgICAgICogaGVhcC9QYXNzV2Vhay5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFBh
c3NXZWFrKToKKyAgICAgICAgKEpTQzo6OjpQYXNzV2Vhayk6CisgICAgICAgIChKU0M6Ojo6b3Bl
cmF0b3IpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRv
cklubGluZXMuaDoKKyAgICAgICAgKiBoZWFwL1dlYWsuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChXZWFrKToKKyAgICAgICAgKiBoZWFwL1dlYWtJbmxpbmVzLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6Ojo6V2Vhayk6CisgICAgICAgIChKU0M6Ojo6b3BlcmF0b3IpOgorICAgICAgICAoSlND
Ojo6OmdldCk6CisgICAgICAgIChKU0M6Ojo6d2FzKToKKyAgICAgICAgKEpTQzo6d2Vha0NsZWFy
KToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBD
YWNoZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGlt
ZS9XZWFrR0NNYXAuaDoKKwogMjAxMy0wNC0wNSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IGZpeC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RN
YXBSZWZJbnRlcm5hbC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJXZWFr
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDc5
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDkxLDYgKzQ5MSw3IEBACiAJCTE0QkQ1
OUM1MEEzRThGOUYwMEJBRjU5QyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3
MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQkxNEJENUEzMDBB
M0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkQ1QTI5MEEzRTkxRjYwMEJBRjU5QyAvKiBKU0Nv
bnRleHRSZWYuY3BwICovOyB9OwogCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1
ZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgKi87IH07CisJCTE0QkU3
RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRTdEMzIxNzEzNUNGNDAwRDE4MDdBIC8qIFdl
YWtJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNFNjgxMENEQjFGQzAwMzY0
Q0NFIC8qIFdlYWtHQ01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBNjU4MUEwRjRFMzZG
NDAwMDE1MEZEIC8qIEpJVFN0dWJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMTRDQTk1OEIxNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Q0E5NThBMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNTMs
NiArMTM1NCw3IEBACiAJCTE0QkQ1QTJBMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29udGV4dFJlZi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNW
YWx1ZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1
ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QkQ1QTJEMEEzRTkxRjYw
MEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSB0
ZXN0YXBpLmM7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNEJFN0QzMjE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vha0lubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0lubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrR0NNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRDQTk1OEExNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlj
UHJvcGVydHlBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNENBOTU4
QzE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTMsNiArMjExNSw4IEBACiAJCQkJQzIxMTIyREUx
NUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAgKi8sCiAJCQkJQzIxMTIy
REYxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oICovLAogCQkJCTE0MkUz
MTJCMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCAqLywKKwkJCQlDMjgzMThGRjE2RkU0QjdE
MDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCAqLywKKwkJCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQyRTMxMkMxMzRGRjBBNjAwQUZB
REI1IC8qIEhhbmRsZVNldC5jcHAgKi8sCiAJCQkJMTQyRTMxMkQxMzRGRjBBNjAwQUZBREI1IC8q
IEhhbmRsZVNldC5oICovLAogCQkJCTE0MkUzMTJFMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVT
dGFjay5jcHAgKi8sCkBAIC0yMTQ2LDExICsyMTUwLDE0IEBACiAJCQkJMTQyRDZGMEYxMzUzOUE0
MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAogCQkJCUMyMTEyMkUwMTVERDlBQjMwMDc5MEUz
QSAvKiBNYXJrU3RhY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQ5NzIwOTAxNEVCODMxNTAwRkVCMUI3
IC8qIFBhc3NXZWFrLmggKi8sCisJCQkJQzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8qIFJlZ2lv
bi5oICovLAogCQkJCUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAg
Ki8sCiAJCQkJMTRCQTc4RjAxM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCiAJ
CQkJMEZDQjQwODUxNUMwQTNDMzAwNDg5MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovLAog
CQkJCTE0MkUzMTMyMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCAqLywKIAkJCQkxNDU3MjI4
NTE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovLAorCQkJCUMyREY0NDJEMTcw
N0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5jcHAgKi8sCisJCQkJQzJERjQ0MkUxNzA3QUMw
MTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmggKi8sCiAJCQkJMTQxNDQ4Q0MxM0ExNzgzNzAwRjVC
QTFBIC8qIFRpbnlCbG9vbUZpbHRlci5oICovLAogCQkJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi8sCiAJCQkJMEZDODE1MTIxNDA1MTE4NjAw
Q0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCAqLywKQEAgLTIxNjEsMTcgKzIxNjgsMTMgQEAK
IAkJCQkxNEY3MjU2MzE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmNwcCAqLywK
IAkJCQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmggKi8sCiAJ
CQkJMTRFODRGOUQxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJbXBsLmggKi8sCisJCQkJMTRCRTdE
MzIxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggKi8sCiAJCQkJMEYyNDJEQTUxM0Yz
QjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLywKIAkJCQkxNEU4NEY5
QjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgKi8sCiAJCQkJMTRFODRGOUMxNEVFMUFD
QzAwRDZENUQ0IC8qIFdlYWtTZXQuaCAqLywKIAkJCQkxNDE1MDEzMjE1NEJCMTNGMDA1RDhDOTgg
LyogV2Vha1NldElubGluZXMuaCAqLywKIAkJCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyog
V3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8sCiAJCQkJMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAz
IC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLywKLQkJCQlDMjgzMThGRjE2RkU0QjdEMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2suaCAqLywKLQkJCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdCRkQgLyog
SGFuZGxlQmxvY2tJbmxpbmVzLmggKi8sCi0JCQkJQzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8q
IFJlZ2lvbi5oICovLAotCQkJCUMyREY0NDJEMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lv
bi5jcHAgKi8sCi0JCQkJQzJERjQ0MkUxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMzMwOCw2ICszMzExLDcgQEAKIAkJCQkwRkY3MjlCQzE2NkFEMzYwMDAwRjVCQTMgLyogUHJv
ZmlsZXJDb21waWxlZEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRDE2NkFE
MzYwMDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
NzI5QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyRXhlY3V0aW9uQ291bnRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMTRCRTdEMzMxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRjE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJP
cmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQ
cm9maWxlck9yaWdpblN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4QzE2NzU0ODMz
MDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShy
ZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUg
IlJlZ0V4cC5oIgogI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9s
VGFibGUuaCIKLSNpbmNsdWRlICJXZWFrLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvUGFzc1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9QYXNzV2Vhay5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9QYXNzV2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwyOSArMzQsMTQgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWs7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzV2VhazsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFBhc3NX
ZWFrPFQ+IGFkb3B0V2VhayhXZWFrSW1wbCopOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0
eXBlbmFtZSBUPiBjbGFzcyBXZWFrSW1wbEFjY2Vzc29yIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNsYXNzIFBhc3NXZWFrIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIFQqIEdldFR5cGU7Ci0KLSAg
ICBUKiBvcGVyYXRvci0+KCkgY29uc3Q7Ci0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAg
R2V0VHlwZSBnZXQoKSBjb25zdDsKLQotICAgIGJvb2wgd2FzKEdldFR5cGUpIGNvbnN0OwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1dlYWsgOiBwdWJsaWMgV2Vha0ltcGxB
Y2Nlc3NvcjxQYXNzV2VhazxUPiwgVD4gewotcHVibGljOgotICAgIGZyaWVuZCBjbGFzcyBXZWFr
SW1wbEFjY2Vzc29yPFBhc3NXZWFrPFQ+LCBUPjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFdlYWtJ
bXBsQWNjZXNzb3I8UGFzc1dlYWs8VD4sIFQ+OjpHZXRUeXBlIEdldFR5cGU7Ci0KICAgICBQYXNz
V2VhaygpOwogICAgIFBhc3NXZWFrKHN0ZDo6bnVsbHB0cl90KTsKLSAgICBQYXNzV2VhayhHZXRU
eXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOworICAgIFBhc3NX
ZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOwogCiAgICAg
Ly8gSXQgc29tZXdoYXQgYnJlYWtzIHRoZSB0eXBlIHN5c3RlbSB0byBhbGxvdyB0cmFuc2ZlciBv
ZiBvd25lcnNoaXAgb3V0IG9mCiAgICAgLy8gYSBjb25zdCBQYXNzV2Vhay4gSG93ZXZlciwgaXQg
bWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NXZWFrCkBAIC02NiwxMCArNTEs
MTQgQEAgcHVibGljOgogCiAgICAgflBhc3NXZWFrKCk7CiAKKyAgICBUKiBvcGVyYXRvci0+KCkg
Y29uc3Q7CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgVCogZ2V0KCkgY29uc3Q7CisK
ICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9w
ZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhl
ciBpbnRlZ2VyIHR5cGVzLgotICAgIHR5cGVkZWYgSlNWYWx1ZSAoUGFzc1dlYWs6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKTsKKyAgICB0eXBlZGVmIHZvaWQqIChQYXNzV2Vhazo6KlVuc3BlY2lmaWVk
Qm9vbFR5cGUpOwogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7CiAK
ICAgICBXZWFrSW1wbCogbGVha0ltcGwoKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CkBAIC04
MSwzMCArNzAsNiBAQCBwcml2YXRlOgogICAgIFdlYWtJbXBsKiBtX2ltcGw7CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiBpbmxpbmUgVCogV2Vha0ltcGxBY2Nlc3Nv
cjxCYXNlLCBUPjo6b3BlcmF0b3ItPigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0
PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsICYmIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0
aGlzKS0+bV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKTsKLSAgICByZXR1cm4ganND
YXN0PFQqPihzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+anNWYWx1ZSgp
LmFzQ2VsbCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gaW5s
aW5lIFQmIFdlYWtJbXBsQWNjZXNzb3I8QmFzZSwgVD46Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsICYmIHN0YXRp
Y19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpM
aXZlKTsKLSAgICByZXR1cm4gKmpzQ2FzdDxUKj4oc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRo
aXMpLT5tX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IEJhc2UsIHR5cGVuYW1lIFQ+IGlubGluZSB0eXBlbmFtZSBXZWFrSW1wbEFjY2Vzc29yPEJhc2Us
IFQ+OjpHZXRUeXBlIFdlYWtJbXBsQWNjZXNzb3I8QmFzZSwgVD46OmdldCgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbCB8fCBzdGF0aWNf
Y2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2
ZSkKLSAgICAgICAgcmV0dXJuIEdldFR5cGUoKTsKLSAgICByZXR1cm4ganNDYXN0PFQqPihzdGF0
aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2Vh
a0ltcGxBY2Nlc3NvcjxCYXNlLCBUPjo6d2FzKHR5cGVuYW1lIFdlYWtJbXBsQWNjZXNzb3I8QmFz
ZSwgVD46OkdldFR5cGUgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGpzQ2FzdDxUKj4oc3Rh
dGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5tX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkg
PT0gb3RoZXI7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzV2VhazxUPjo6
UGFzc1dlYWsoKQogICAgIDogbV9pbXBsKDApCiB7CkBAIC0xMTUsOCArODAsOCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1dlYWs8VD46CiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBQYXNzV2VhazxUPjo6UGFzc1dlYWsodHlwZW5hbWUgUGFzc1dlYWs8VD46
OkdldFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFsbG9jYXRlKGdldFR5cGUsIHdl
YWtPd25lciwgY29udGV4dCkgOiAwKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NX
ZWFrPFQ+OjpQYXNzV2VhayhUKiBjZWxsLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtPd25lciwgdm9p
ZCogY29udGV4dCkKKyAgICA6IG1faW1wbChjZWxsID8gV2Vha1NldDo6YWxsb2NhdGUoY2VsbCwg
d2Vha093bmVyLCBjb250ZXh0KSA6IDApCiB7CiB9CiAKQEAgLTEzNyw2ICsxMDIsMjUgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+OgogICAgIFdlYWtTZXQ6OmRlYWxs
b2NhdGUobV9pbXBsKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFBhc3NX
ZWFrPFQ+OjpvcGVyYXRvci0+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1w
bC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxUKj4obV9p
bXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgVCYgUGFzc1dlYWs8VD46Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faW1w
bCAmJiBtX2ltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpOworICAgIHJldHVybiAqanND
YXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBUKiBQYXNzV2VhazxUPjo6Z2V0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
aW1wbCB8fCBtX2ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6OkxpdmUpCisgICAgICAgIHJldHVy
biAwOworICAgIHJldHVybiBqc0Nhc3Q8VCo+KG1faW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgUGFzc1dlYWs8VD46Om9wZXJh
dG9yISgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBsLT5zdGF0ZSgpICE9
IFdlYWtJbXBsOjpMaXZlIHx8ICFtX2ltcGwtPmpzVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCShyZXZpc2lvbiAxNDc5
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlICJXZWFr
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vhay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWsuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwyMiArMjYsMjEgQEAKICNpZm5k
ZWYgV2Vha19oCiAjZGVmaW5lIFdlYWtfaAogCi0jaW5jbHVkZSAiUGFzc1dlYWsuaCIKLSNpbmNs
dWRlICJXZWFrU2V0SW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvTnVsbFB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgV2VhayA6IHB1YmxpYyBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+IHsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NXZWFrOworY2xhc3MgV2Vha0ltcGw7Citj
bGFzcyBXZWFrSGFuZGxlT3duZXI7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWspOwogcHVibGljOgotICAgIGZyaWVuZCBj
bGFzcyBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+OwotICAgIHR5cGVkZWYgdHlwZW5hbWUg
V2Vha0ltcGxBY2Nlc3NvcjxXZWFrPFQ+LCBUPjo6R2V0VHlwZSBHZXRUeXBlOwotCiAgICAgV2Vh
aygpOwogICAgIGV4cGxpY2l0IFdlYWsoc3RkOjpudWxscHRyX3QpOwotICAgIGV4cGxpY2l0IFdl
YWsoR2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKyAg
ICBleHBsaWNpdCBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9
IDApOwogCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNoVGFibGVEZWxl
dGVkVmFsdWUgfTsKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CkBA
IC01NSw5ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgV2VhayYgb3BlcmF0b3I9KGNvbnN0IFBhc3NX
ZWFrPFQ+Jik7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBUKiBvcGVy
YXRvci0+KCkgY29uc3Q7CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgVCogZ2V0KCkg
Y29uc3Q7CisKKyAgICBib29sIHdhcyhUKikgY29uc3Q7CiAKICAgICAvLyBUaGlzIGNvbnZlcnNp
b24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRv
IG90aGVyIGludGVnZXIgdHlwZXMuCi0gICAgdHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVCYXNlOjoq
VW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgdHlwZWRlZiB2b2lkKiAoV2Vhazo6KlVuc3BlY2lm
aWVkQm9vbFR5cGUpOwogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7
CiAKICAgICBQYXNzV2VhazxUPiByZWxlYXNlKCk7CkBAIC02OSwxNDUgKzczLDYgQEAgcHJpdmF0
ZToKICAgICBXZWFrSW1wbCogbV9pbXBsOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIFdlYWs8VD46OldlYWsoKQotICAgIDogbV9pbXBsKDApCi17Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKHN0ZDo6bnVsbHB0cl90KQotICAgIDogbV9p
bXBsKDApCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFr
KHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFr
T3duZXIsIHZvaWQqIGNvbnRleHQpCi0gICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFs
bG9jYXRlKGdldFR5cGUsIHdlYWtPd25lciwgY29udGV4dCkgOiAwKQotewotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBXZWFrPFQ+Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlwZW5h
bWUgV2VhazxUPjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQotICAgIDogbV9pbXBsKGhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiAgaW5saW5lIFdlYWs8VD46OldlYWsoY29uc3QgUGFzc1dlYWs8VT4mIG90
aGVyKQotICAgIDogbV9pbXBsKG90aGVyLmxlYWtJbXBsKCkpCi17Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+Ojp+V2VhaygpCi17Ci0gICAgY2xlYXIoKTsKLX0KLQot
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChXZWFrPFQ+JiBhLCBXZWFrPFQ+JiBi
KQotewotICAgIGEuc3dhcChiKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZv
aWQgV2VhazxUPjo6c3dhcChXZWFrJiBvdGhlcikKLXsKLSAgICBzdGQ6OnN3YXAobV9pbXBsLCBv
dGhlci5tX2ltcGwpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPiYg
V2VhazxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NXZWFrPFQ+JiBvKQotewotICAgIGNsZWFyKCk7
Ci0gICAgbV9pbXBsID0gby5sZWFrSW1wbCgpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIW1faW1wbCB8fCAhbV9pbXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5z
dGF0ZSgpICE9IFdlYWtJbXBsOjpMaXZlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgV2VhazxUPjo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAotewotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPighISp0aGlzKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+IFdlYWs8VD46OnJl
bGVhc2UoKQotewotICAgIFBhc3NXZWFrPFQ+IHRtcCA9IGFkb3B0V2VhazxUPihtX2ltcGwpOwot
ICAgIG1faW1wbCA9IDA7Ci0gICAgcmV0dXJuIHRtcDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIHZvaWQgV2VhazxUPjo6Y2xlYXIoKQotewotICAgIGlmICghbV9pbXBsKQotICAg
ICAgICByZXR1cm47Ci0gICAgV2Vha1NldDo6ZGVhbGxvY2F0ZShtX2ltcGwpOwotICAgIG1faW1w
bCA9IDA7Ci19Ci0gICAgCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha0ltcGwqIFdl
YWs8VD46Omhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V2Vha0ltcGwqPigtMSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYWs8VD4mIGxocywgY29uc3QgV2VhazxUPiYgcmhzKQot
ewotICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOwotfQotCi0vLyBUaGlzIGZ1bmN0
aW9uIGhlbHBzIGF2b2lkIG1vZGlmeWluZyBhIHdlYWsgdGFibGUgd2hpbGUgaG9sZGluZyBhbiBp
dGVyYXRvciBpbnRvIGl0LiAoT2JqZWN0IGFsbG9jYXRpb24KLS8vIGNhbiBydW4gYSBmaW5hbGl6
ZXIgdGhhdCBtb2RpZmllcyB0aGUgdGFibGUuIFdlIGF2b2lkIHRoYXQgYnkgcmVxdWlyaW5nIGEg
cHJlLWNvbnN0cnVjdGVkIG9iamVjdCBhcyBvdXIgdmFsdWUuKQotdGVtcGxhdGU8dHlwZW5hbWUg
TWFwLCB0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrQWRkKE1h
cCYgbWFwLCBjb25zdCBLZXkmIGtleSwgVmFsdWUgdmFsdWUpCi17Ci0gICAgQVNTRVJUKCFtYXAu
Z2V0KGtleSkpOwotICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7IC8vIFRoZSB0YWJsZSBtYXkgc3Rp
bGwgaGF2ZSBhIHpvbWJpZSBmb3IgdmFsdWUuCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1hcCwg
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZT4gaW5saW5lIHZvaWQgd2Vha1JlbW92ZShNYXAm
IG1hcCwgY29uc3QgS2V5JiBrZXksIFZhbHVlIHZhbHVlKQotewotICAgIHR5cGVuYW1lIE1hcDo6
aXRlcmF0b3IgaXQgPSBtYXAuZmluZChrZXkpOwotICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsIHZh
bHVlKTsKLSAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKLSAgICBBU1NFUlQoaXQtPnZhbHVl
Lndhcyh2YWx1ZSkpOwotICAgIEFTU0VSVCghaXQtPnZhbHVlKTsKLSAgICBtYXAucmVtb3ZlKGl0
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8
VD4mIHdlYWssIHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgdmFsdWUpCi17Ci0gICAgQVNTRVJU
X1VOVVNFRCh2YWx1ZSwgdmFsdWUpOwotICAgIEFTU0VSVCh3ZWFrLndhcyh2YWx1ZSkpOwotICAg
IEFTU0VSVCghd2Vhayk7Ci0gICAgd2Vhay5jbGVhcigpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0
b3JUcmFpdHM8SlNDOjpXZWFrPFQ+ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKLX07Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IHsKLSAgICB0eXBlZGVmIEpTQzo6V2Vh
azxUPiBTdG9yYWdlVHlwZTsKLQotICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1
ZVR5cGU7Ci0gICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0KLSAgICB0eXBlZGVmIEpTQzo6UGFzc1dlYWs8VD4gUGFzc0luVHlwZTsKLSAg
ICBzdGF0aWMgdm9pZCBzdG9yZShQYXNzSW5UeXBlIHZhbHVlLCBTdG9yYWdlVHlwZSYgc3RvcmFn
ZSkgeyBzdG9yYWdlID0gdmFsdWU7IH0KLQotICAgIHR5cGVkZWYgSlNDOjpQYXNzV2VhazxUPiBQ
YXNzT3V0VHlwZTsKLSAgICBzdGF0aWMgUGFzc091dFR5cGUgcGFzc091dChTdG9yYWdlVHlwZSYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsgfQotICAgIHN0YXRpYyBQYXNzT3V0VHlw
ZSBwYXNzT3V0KEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQYXNzT3V0VHlwZSgpOyB9Ci0KLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIFN0b3JhZ2VUeXBlOjpHZXRUeXBlIFBlZWtUeXBlOwotICAgIHN0
YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyBy
ZXR1cm4gUGVla1R5cGUoKTsgfQotfTsKLQotfQotCiAjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHJldmlzaW9uIDE0NzkzOCkJ
KGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oOjE0NzkzOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYWtfaAorI2RlZmluZSBX
ZWFrX2gKKworI2luY2x1ZGUgIlBhc3NXZWFrLmgiCisjaW5jbHVkZSAiV2Vha1NldElubGluZXMu
aCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrIDog
cHVibGljIFdlYWtJbXBsQWNjZXNzb3I8V2VhazxUPiwgVD4geworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYWspOworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBXZWFrSW1wbEFjY2Vzc29y
PFdlYWs8VD4sIFQ+OworICAgIHR5cGVkZWYgdHlwZW5hbWUgV2Vha0ltcGxBY2Nlc3NvcjxXZWFr
PFQ+LCBUPjo6R2V0VHlwZSBHZXRUeXBlOworCisgICAgV2VhaygpOworICAgIGV4cGxpY2l0IFdl
YWsoc3RkOjpudWxscHRyX3QpOworICAgIGV4cGxpY2l0IFdlYWsoR2V0VHlwZSwgV2Vha0hhbmRs
ZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKworICAgIGVudW0gSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07CisgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0OworICAgIFdlYWsoSGFzaFRhYmxlRGVsZXRlZFZhbHVl
VGFnKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFdlYWsoY29uc3QgUGFzc1dlYWs8VT4m
KTsKKworICAgIH5XZWFrKCk7CisKKyAgICB2b2lkIHN3YXAoV2VhayYpOworICAgIFdlYWsmIG9w
ZXJhdG9yPShjb25zdCBQYXNzV2VhazxUPiYpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3Q7CisKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0
IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCisgICAg
dHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVCYXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAg
b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdDsKKworICAgIFBhc3NXZWFrPFQ+
IHJlbGVhc2UoKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgCitwcml2YXRlOgorICAgIHN0YXRp
YyBXZWFrSW1wbCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisKKyAgICBXZWFrSW1wbCogbV9p
bXBsOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsoKQor
ICAgIDogbV9pbXBsKDApCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFr
PFQ+OjpXZWFrKHN0ZDo6bnVsbHB0cl90KQorICAgIDogbV9pbXBsKDApCit7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKHR5cGVuYW1lIFdlYWs8VD46Okdl
dFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRleHQp
CisgICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFsbG9jYXRlKGdldFR5cGUsIHdlYWtP
d25lciwgY29udGV4dCkgOiAwKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
Ym9vbCBXZWFrPFQ+Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlwZW5hbWUgV2VhazxUPjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlVGFnKQorICAgIDogbV9pbXBsKGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKQor
eworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAgaW5saW5l
IFdlYWs8VD46OldlYWsoY29uc3QgUGFzc1dlYWs8VT4mIG90aGVyKQorICAgIDogbV9pbXBsKG90
aGVyLmxlYWtJbXBsKCkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFr
PFQ+Ojp+V2VhaygpCit7CisgICAgY2xlYXIoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4gaW5s
aW5lIHZvaWQgc3dhcChXZWFrPFQ+JiBhLCBXZWFrPFQ+JiBiKQoreworICAgIGEuc3dhcChiKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgV2VhazxUPjo6c3dhcChXZWFr
JiBvdGhlcikKK3sKKyAgICBzdGQ6OnN3YXAobV9pbXBsLCBvdGhlci5tX2ltcGwpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPiYgV2VhazxUPjo6b3BlcmF0b3I9KGNv
bnN0IFBhc3NXZWFrPFQ+JiBvKQoreworICAgIGNsZWFyKCk7CisgICAgbV9pbXBsID0gby5sZWFr
SW1wbCgpOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIGJvb2wgV2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faW1w
bCB8fCAhbV9pbXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5zdGF0ZSgpICE9IFdlYWtJbXBsOjpM
aXZlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6b3BlcmF0b3Ig
VW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPighISp0aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+IFdlYWs8VD46OnJlbGVhc2UoKQoreworICAgIFBhc3NX
ZWFrPFQ+IHRtcCA9IGFkb3B0V2VhazxUPihtX2ltcGwpOworICAgIG1faW1wbCA9IDA7CisgICAg
cmV0dXJuIHRtcDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgV2VhazxU
Pjo6Y2xlYXIoKQoreworICAgIGlmICghbV9pbXBsKQorICAgICAgICByZXR1cm47CisgICAgV2Vh
a1NldDo6ZGVhbGxvY2F0ZShtX2ltcGwpOworICAgIG1faW1wbCA9IDA7Cit9CisgICAgCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha0ltcGwqIFdlYWs8VD46Omhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0ltcGwqPigtMSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFdlYWs8VD4mIGxocywgY29uc3QgV2VhazxUPiYgcmhzKQoreworICAgIHJldHVybiBsaHMuZ2V0
KCkgPT0gcmhzLmdldCgpOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGhlbHBzIGF2b2lkIG1vZGlm
eWluZyBhIHdlYWsgdGFibGUgd2hpbGUgaG9sZGluZyBhbiBpdGVyYXRvciBpbnRvIGl0LiAoT2Jq
ZWN0IGFsbG9jYXRpb24KKy8vIGNhbiBydW4gYSBmaW5hbGl6ZXIgdGhhdCBtb2RpZmllcyB0aGUg
dGFibGUuIFdlIGF2b2lkIHRoYXQgYnkgcmVxdWlyaW5nIGEgcHJlLWNvbnN0cnVjdGVkIG9iamVj
dCBhcyBvdXIgdmFsdWUuKQordGVtcGxhdGU8dHlwZW5hbWUgTWFwLCB0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrQWRkKE1hcCYgbWFwLCBjb25zdCBLZXkmIGtl
eSwgVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKCFtYXAuZ2V0KGtleSkpOworICAgIG1hcC5z
ZXQoa2V5LCB2YWx1ZSk7IC8vIFRoZSB0YWJsZSBtYXkgc3RpbGwgaGF2ZSBhIHpvbWJpZSBmb3Ig
dmFsdWUuCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZT4gaW5saW5lIHZvaWQgd2Vha1JlbW92ZShNYXAmIG1hcCwgY29uc3QgS2V5JiBrZXks
IFZhbHVlIHZhbHVlKQoreworICAgIHR5cGVuYW1lIE1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmlu
ZChrZXkpOworICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsIHZhbHVlKTsKKyAgICBBU1NFUlQoaXQg
IT0gbWFwLmVuZCgpKTsKKyAgICBBU1NFUlQoaXQtPnZhbHVlLndhcyh2YWx1ZSkpOworICAgIEFT
U0VSVCghaXQtPnZhbHVlKTsKKyAgICBtYXAucmVtb3ZlKGl0KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VD4mIHdlYWssIHR5cGVuYW1lIFdl
YWs8VD46OkdldFR5cGUgdmFsdWUpCit7CisgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZSwgdmFsdWUp
OworICAgIEFTU0VSVCh3ZWFrLndhcyh2YWx1ZSkpOworICAgIEFTU0VSVCghd2Vhayk7CisgICAg
d2Vhay5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+
ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgY2Fu
Q29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpT
Qzo6V2VhazxUPiA+IHsKKyAgICB0eXBlZGVmIEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKKwor
ICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7CisgICAgc3RhdGljIEVt
cHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB0eXBl
ZGVmIEpTQzo6UGFzc1dlYWs8VD4gUGFzc0luVHlwZTsKKyAgICBzdGF0aWMgdm9pZCBzdG9yZShQ
YXNzSW5UeXBlIHZhbHVlLCBTdG9yYWdlVHlwZSYgc3RvcmFnZSkgeyBzdG9yYWdlID0gdmFsdWU7
IH0KKworICAgIHR5cGVkZWYgSlNDOjpQYXNzV2VhazxUPiBQYXNzT3V0VHlwZTsKKyAgICBzdGF0
aWMgUGFzc091dFR5cGUgcGFzc091dChTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
LnJlbGVhc2UoKTsgfQorICAgIHN0YXRpYyBQYXNzT3V0VHlwZSBwYXNzT3V0KEVtcHR5VmFsdWVU
eXBlKSB7IHJldHVybiBQYXNzT3V0VHlwZSgpOyB9CisKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFN0
b3JhZ2VUeXBlOjpHZXRUeXBlIFBlZWtUeXBlOworICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNv
bnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KKyAgICBzdGF0
aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5cGUoKTsgfQor
fTsKKworfQorCisjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDUyICsy
MywxNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgV2Vha19oCi0jZGVmaW5lIFdlYWtfaAorI2lmbmRlZiBXZWFrSW5saW5lc19oCisjZGVmaW5l
IFdlYWtJbmxpbmVzX2gKIAogI2luY2x1ZGUgIlBhc3NXZWFrLmgiCiAjaW5jbHVkZSAiV2Vha1Nl
dElubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsgOiBwdWJsaWMgV2Vha0ltcGxBY2Nl
c3NvcjxXZWFrPFQ+LCBUPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vhayk7Ci1wdWJs
aWM6Ci0gICAgZnJpZW5kIGNsYXNzIFdlYWtJbXBsQWNjZXNzb3I8V2VhazxUPiwgVD47Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+OjpHZXRUeXBlIEdl
dFR5cGU7Ci0KLSAgICBXZWFrKCk7Ci0gICAgZXhwbGljaXQgV2VhayhzdGQ6Om51bGxwdHJfdCk7
Ci0gICAgZXhwbGljaXQgV2VhayhHZXRUeXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCog
Y29udGV4dCA9IDApOwotCi0gICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNo
VGFibGVEZWxldGVkVmFsdWUgfTsKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3Q7Ci0gICAgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gV2Vhayhjb25zdCBQYXNzV2VhazxVPiYpOwotCi0gICAgfldlYWsoKTsK
LQotICAgIHZvaWQgc3dhcChXZWFrJik7Ci0gICAgV2VhayYgb3BlcmF0b3I9KGNvbnN0IFBhc3NX
ZWFrPFQ+Jik7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLQotICAgIC8vIFRo
aXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29s
IGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIEpTVmFsdWUgKEhh
bmRsZUJhc2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKLSAgICBvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKigpIGNvbnN0OwotCi0gICAgUGFzc1dlYWs8VD4gcmVsZWFzZSgpOwotICAgIHZv
aWQgY2xlYXIoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgc3RhdGljIFdlYWtJbXBsKiBoYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsKLQotICAgIFdlYWtJbXBsKiBtX2ltcGw7Ci19OwotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2VhaygpCiAgICAgOiBtX2ltcGwoMCkKIHsK
QEAgLTc5LDggKzQzLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46Oldl
YQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2Vhayh0eXBl
bmFtZSBXZWFrPFQ+OjpHZXRUeXBlIGdldFR5cGUsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVy
LCB2b2lkKiBjb250ZXh0KQotICAgIDogbV9pbXBsKGdldFR5cGUgPyBXZWFrU2V0OjphbGxvY2F0
ZShnZXRUeXBlLCB3ZWFrT3duZXIsIGNvbnRleHQpIDogMCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBXZWFrPFQ+OjpXZWFrKFQqIGNlbGwsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVy
LCB2b2lkKiBjb250ZXh0KQorICAgIDogbV9pbXBsKGNlbGwgPyBXZWFrU2V0OjphbGxvY2F0ZShj
ZWxsLCB3ZWFrT3duZXIsIGNvbnRleHQpIDogMCkKIHsKIH0KIApAQCAtMTIxLDYgKzg1LDMwIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+JiBXZWEKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBXZWFrPFQ+OjpvcGVyYXRv
ci0+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1wbC0+c3RhdGUoKSA9PSBX
ZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxUKj4obV9pbXBsLT5qc1ZhbHVlKCku
YXNDZWxsKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCYgV2VhazxUPjo6
b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1wbC0+c3RhdGUo
KSA9PSBXZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuICpqc0Nhc3Q8VCo+KG1faW1wbC0+anNW
YWx1ZSgpLmFzQ2VsbCgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFdl
YWs8VD46OmdldCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltcGwgfHwgbV9pbXBsLT5zdGF0ZSgp
ICE9IFdlYWtJbXBsOjpMaXZlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4ganNDYXN0
PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBib29sIFdlYWs8VD46OndhcyhUKiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1
cm4ganNDYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkgPT0gb3RoZXI7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46Om9wZXJhdG9yISgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+anNWYWx1ZSgpIHx8IG1faW1w
bC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2ZTsKQEAgLTE3NCwxMCArMTYyLDEwIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5LCB0eXAKICAgICBtYXAucmVtb3ZlKGl0KTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VD4m
IHdlYWssIHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xlYXIoV2VhazxUPiYgd2VhaywgVCogY2VsbCkKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKHZhbHVlLCB2YWx1ZSk7Ci0gICAgQVNTRVJUKHdlYWsud2FzKHZhbHVl
KSk7CisgICAgQVNTRVJUX1VOVVNFRChjZWxsLCBjZWxsKTsKKyAgICBBU1NFUlQod2Vhay53YXMo
Y2VsbCkpOwogICAgIEFTU0VSVCghd2Vhayk7CiAgICAgd2Vhay5jbGVhcigpOwogfQpAQCAtMjAz
LDExICsxOTEsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8Sgog
ICAgIHN0YXRpYyBQYXNzT3V0VHlwZSBwYXNzT3V0KFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUucmVsZWFzZSgpOyB9CiAgICAgc3RhdGljIFBhc3NPdXRUeXBlIHBhc3NPdXQoRW1w
dHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBhc3NPdXRUeXBlKCk7IH0KIAotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgU3RvcmFnZVR5cGU6OkdldFR5cGUgUGVla1R5cGU7CisgICAgdHlwZWRlZiBUKiBQZWVr
VHlwZTsKICAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBTdG9yYWdlVHlwZSYgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CiAgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoRW1wdHlW
YWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0KIH07CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdURgogCi0jZW5kaWYgLy8gV2Vha19oCisjZW5kaWYgLy8gV2Vha0lubGluZXNfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVk
ZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSAiV2Vha0lu
bGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
Rml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgog
I2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCi0jaW5jbHVk
ZSAiV2Vhay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkocmV2aXNpb24gMTQ3OTM4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDggQEAKICNpZm5kZWYgV2Vha0dDTWFwX2gKICNkZWZpbmUgV2Vha0dD
TWFwX2gKIAotI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNs
dWRlIDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDc5NTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NyBAQAorMjAxMy0w
NC0wOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN0b3Ag
I2luY2x1ZGUtaW5nIGFsbCBvZiBKYXZhU2NyaXB0Q29yZSBpbiBldmVyeSBET00tcmVsYXRlZCBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQy
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIHNl
cGFyYXRlZCBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggZnJvbSBTY3JpcHRXcmFwcGFibGUuaCBz
bworICAgICAgICBXZWJDb3JlIGRhdGEgdHlwZXMgdGhhdCBpbmhlcml0IGZyb20gU2NyaXB0V3Jh
cHBhYmxlIGRvbid0CisgICAgICAgIGhhdmUgdG8gI2luY2x1ZGUgYWxsIG9mIHRoZSBpbmZyYXN0
cnVjdHVyZSBmb3IgYWNjZXNzaW5nIHRoYXQgZGF0YSBtZW1iZXIuCisKKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy9oZWFwL1Bhc3NXZWFrLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL2hlYXAvV2Vha0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBw
ZXJXb3JsZC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRXcmFwcGFibGU6OndyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
V3JhcHBhYmxlOjpzZXRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJs
ZTo6Y2xlYXJXcmFwcGVyKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuaDoKKyAg
ICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X3Jvb3QuY3BwOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuaDoKKyAgICAgICAgKiBj
c3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3RCYXNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0
TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpy
ZXBvcnRNZW1vcnlVc2FnZSk6CisKIDIwMTMtMDQtMDggIEFydW5wcmFzYWQgUmFqa3VtYXIgIDxh
cnVucHJhc2FkckBuZHMuY29tPgogCiAgICAgICAgIENhbGwgTmV0c2NhcGUgUGx1Z2luJ3MgdG9T
dHJpbmcoKSBhbmQgdmFsdWVPZigpIGluc3RlYWQgb2YgcHJvdmlkaW5nIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvUGFz
c1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9o
ZWFwL1Bhc3NXZWFrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9oZWFwL1Bhc3NXZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX1Bhc3NXZWFrX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfUGFzc1dl
YWtfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Bhc3NXZWFrLmg+CisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvV2Vha0lubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9oZWFwL1dlYWtJbmxp
bmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9o
ZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVm
IFdlYkNvcmVfRldEX1dlYWtJbmxpbmVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfV2Vha0lubGlu
ZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtJbmxpbmVzLmg+CisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBACiAJCTEw
NTk0NTk5MTVCNDJBQTAwMDREMzdGRCAvKiBQcm9wZXJ0eU5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMDU5NDU5ODE1QjQyQUEwMDA0RDM3
RkQgLyogUHJvcGVydHlOb2RlTGlzdC5oICovOyB9OwogCQkxMDU5NDU5RjE1QjQyQjFBMDA0RDM3
RkQgLyogSlNQcm9wZXJ0eU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxMDU5NDU5RTE1QjQyQjFBMDA0RDM3RkQgLyogSlNQcm9wZXJ0eU5v
ZGVMaXN0LmggKi87IH07CiAJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
MEZCMDg0QTE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oICovOyB9OworCQkx
NDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwMEQ3QTcxNzEzNkVB
NzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAyNjQ1RTBBRkRDMTlCMDA1OTE5RTIg
LyogTG9nZ2luZ01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MDI2NDVEMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5nTWFjLm1tICovOyB9Owog
CQkxNDAzQjk5NzA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAzQjk5NTA5RUIxM0FGMDA3OTdDN0Yg
LyogRE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQwM0I5OTgwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAzQjk5NjA5RUIxM0FG
MDA3OTdDN0YgLyogRE9NV2luZG93LmNwcCAqLzsgfTsKQEAgLTY1MzAsNiArNjUzMSw3IEBACiAJ
CTEwNTk0NTlBMTVCNDJBQzAwMDREMzdGRCAvKiBQcm9wZXJ0eU5vZGVMaXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBQcm9wZXJ0eU5vZGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTA1OTQ1OUUxNUI0MkIxQTAwNEQzN0ZEIC8qIEpTUHJvcGVydHlOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5Tm9kZUxpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTBGQjA4NEExNEUxNUM3RTAwQTNEQjk4
IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHVibGljVVJMTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDAwRDdB
NzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDI2NDVEMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5n
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDNCOTBDMDlFQjEyNDUwMDc5
N0M3RiAvKiBET01XaW5kb3cuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVdpbmRvdy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDNCOTk1MDlFQjEzQUYwMDc5N0M3
RiAvKiBET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2lu
ZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODczMSw2ICsxODczMyw3IEBA
CiAJCQkJOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJ
CQk5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAqLywKIAkJCQkyMjhD
Mjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8sCisJCQkJMTQwMEQ3
QTcxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLywKIAkJCQlB
NzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywK
IAkJCQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
Ki8sCiAJCQkJQkM1M0Q5MTAxMTQzMTBDQzAwMEQ4MTdFIC8qIFdlYkNvcmVKU0NsaWVudERhdGEu
aCAqLywKQEAgLTIzOTAwLDYgKzIzOTAzLDcgQEAKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0
NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2NjExMEI3
OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGRkJG
M0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0
MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdM
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlENzEwNDJEMzJGMDAwOUQ0NDcgLyog
V2ViR0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNyArMjMsNiBAQAogI2RlZmluZSBET01XcmFwcGVyV29ybGRfaAogCiAjaW5jbHVkZSAiSlNE
T01HbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KICNpbmNsdWRlIDxydW50
aW1lL1dlYWtHQ01hcC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAxNDc5MzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsOCArMzAsMTAgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKICNpbmNsdWRlIDxoZWFwL1Nsb3RWaXNpdG9yLmg+
CiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CkBAIC00NCw5ICs0Niw3IEBA
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLQogY2xhc3MgSGFz
aEVudHJ5OwotCiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjIsOCArMjIsMTAgQEAKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgPGhlYXAvUGFzc1dlYWsuaD4KICNpbmNsdWRl
IDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNsdWRl
IDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCShy
ZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9u
Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
SlNNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWtJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRl
ckNvbmRpdGlvbi5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIs
NyBAQAogCiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPGhlYXAv
V2Vhay5oPgorI2luY2x1ZGUgPGhlYXAvV2Vha0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0V3JhcHBhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0V3JhcHBhYmxlLmgJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBA
QAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsMzYgKzMyLDIyIEBACiAjaWZuZGVmIFNjcmlw
dFdyYXBwYWJsZV9oCiAjZGVmaW5lIFNjcmlwdFdyYXBwYWJsZV9oCiAKLSNpbmNsdWRlICJKU0RP
TVdyYXBwZXIuaCIKLSNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSA8aGVhcC9XZWFrLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CisK
K25hbWVzcGFjZSBKU0MgeworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgV2Vha0hhbmRsZU93
bmVyOworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEpTRE9NV3JhcHBlcjsKKwog
Y2xhc3MgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBKU0RPTVdyYXBwZXIqIHdyYXBw
ZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0RPTVdyYXBwZXIq
IHdyYXBwZXIsIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fd3JhcHBlcik7Ci0gICAgICAgIG1fd3JhcHBl
ciA9IEpTQzo6UGFzc1dlYWs8SlNET01XcmFwcGVyPih3cmFwcGVyLCB3cmFwcGVyT3duZXIsIGNv
bnRleHQpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJXcmFwcGVyKEpTRE9NV3JhcHBlciogd3Jh
cHBlcikKLSAgICB7Ci0gICAgICAgIHdlYWtDbGVhcihtX3dyYXBwZXIsIHdyYXBwZXIpOwotICAg
IH0KLQotICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKLSAgICB7Ci0gICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICAgICAg
aW5mby5hZGRNZW1iZXIobV93cmFwcGVyLCAid3JhcHBlciIpOwotICAgIH0KKyAgICBKU0RPTVdy
YXBwZXIqIHdyYXBwZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2Jh
bERhdGEmLCBKU0RPTVdyYXBwZXIqLCBKU0M6OldlYWtIYW5kbGVPd25lciosIHZvaWQqKTsKKyAg
ICB2b2lkIGNsZWFyV3JhcHBlcihKU0RPTVdyYXBwZXIqKTsKIAogcHJpdmF0ZToKICAgICBKU0M6
OldlYWs8SlNET01XcmFwcGVyPiBtX3dyYXBwZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0V3JhcHBhYmxlSW5s
aW5lc19oCisjZGVmaW5lIFNjcmlwdFdyYXBwYWJsZUlubGluZXNfaAorCisjaW5jbHVkZSAiSlNE
T01XcmFwcGVyLmgiCisjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFr
SW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBKU0RPTVdyYXBwZXIq
IFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3JhcHBl
ci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQgU2NyaXB0V3JhcHBhYmxlOjpzZXRXcmFwcGVyKEpT
Qzo6SlNHbG9iYWxEYXRhJiwgSlNET01XcmFwcGVyKiB3cmFwcGVyLCBKU0M6OldlYWtIYW5kbGVP
d25lciogd3JhcHBlck93bmVyLCB2b2lkKiBjb250ZXh0KQoreworICAgIEFTU0VSVCghbV93cmFw
cGVyKTsKKyAgICBtX3dyYXBwZXIgPSBKU0M6OlBhc3NXZWFrPEpTRE9NV3JhcHBlcj4od3JhcHBl
ciwgd3JhcHBlck93bmVyLCBjb250ZXh0KTsKK30KKworaW5saW5lIHZvaWQgU2NyaXB0V3JhcHBh
YmxlOjpjbGVhcldyYXBwZXIoSlNET01XcmFwcGVyKiB3cmFwcGVyKQoreworICAgIHdlYWtDbGVh
cihtX3dyYXBwZXIsIHdyYXBwZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBTY3JpcHRXcmFwcGFibGVJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX3Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX3Jvb3QuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9yb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2lu
Y2x1ZGUgPGhlYXAvV2Vha0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAkocmV2aXNpb24gMTQ3OTM4
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRlICJK
U1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUg
IldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCiAjaW5jbHVkZSA8UVBv
aW50ZXI+CiAjaW5jbHVkZSA8cWhhc2guaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHQuaCIKICNpbmNsdWRlICJXZWFr
LmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlICJxdF9pbnN0YW5jZS5oIgog
I2luY2x1ZGUgInJ1bnRpbWVfbWV0aG9kLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDE0Nzkz
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCShyZXZpc2lvbiAx
NDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5j
bHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCisjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9CaXRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAkocmV2
aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcAkocmV2
aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ2xpZW50UmVjdC5oIgogCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENsaWVudFJlY3Q6OkNsaWVudFJlY3QoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
NiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ01hcC5oIgog
CisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK0RPTVN0cmluZ01hcDo6RE9NU3RyaW5nTWFwKCkKK3sKK30KKwogRE9NU3RyaW5nTWFw
Ojp+RE9NU3RyaW5nTWFwKCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJp
bmdNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmgJ
KHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuaAko
d29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFbGVt
ZW50KiBlbGVtZW50KCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRE9NU3RyaW5nTWFwKCkKLSAg
ICB7Ci0gICAgfQorICAgIERPTVN0cmluZ01hcCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1l
bW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3
ICs5Myw2IEBAIHZvaWQgTGl2ZU5vZGVMaXN0QmFzZTo6aW52YWxpZGF0ZUlkTmFtZUMKIHZvaWQg
TGl2ZU5vZGVMaXN0QmFzZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci0gICAgTm9kZUxpc3Q6
OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fb3duZXJOb2RlLCAib3duZXJOb2RlIik7CiAgICAgaW5mby5hZGRXZWFrUG9pbnRlcihtX2Nh
Y2hlZEl0ZW0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCShy
ZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjI3LDcgKzI2MjcsNiBAQCB2b2lk
IE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRP
TSk7Ci0gICAgU2NyaXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJ
bmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3BhcmVudE9yU2hhZG93SG9zdE5vZGUsICJwYXJl
bnRPclNoYWRvd0hvc3ROb2RlIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV90cmVlU2NvcGUsICJ0
cmVlU2NvcGUiKTsKICAgICBpbmZvLmlnbm9yZU1lbWJlcihtX25leHQpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlTGlzdC5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKIAogI2luY2x1ZGUgIkZpbGUuaCIKKyNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAj
aW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZl
ci5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAkocmV2aXNpb24gMTQ3OTM4KQor
KysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2Uu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjAsNyArMTMyMCw2IEBAIEV2ZW50
VGFyZ2V0RGF0YSogWE1MSHR0cFJlcXVlc3Q6OmVuc3VyZUUKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywg
V2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwotICAgIFNjcmlwdFdyYXBwYWJsZTo6cmVwb3J0TWVt
b3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgQWN0aXZlRE9NT2JqZWN0OjpyZXBvcnRN
ZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3VwbG9h
ZCwgInVwbG9hZCIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdXJsLCAidXJsIik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDc5NTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wNC0wOCAgR2VvZmZyZXkgR2FyZW4g
IDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgI2luY2x1ZGUtaW5nIGFsbCBvZiBK
YXZhU2NyaXB0Q29yZSBpbiBldmVyeSBET00tcmVsYXRlZCBmaWxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQyMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRp
bWVPYmplY3RNYXAuaDoKKwogMjAxMy0wNC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViL1BsdWdpbiBwcm9jZXNzIGRlYWRsb2NrIGluaXRpYWxpemlu
ZyBhc3luYyBwbHVnaW5zLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2
ICs1MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU3R5bGVTaGVldC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0Zl
YXR1cmVzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QUnVudGltZU9iamVjdE1hcC5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9v
cC5oPgogI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2luY2x1ZGUgPGhlYXAvV2Vha0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196967</attachid>
            <date>2013-04-08 16:15:11 -0700</date>
            <delta_ts>2013-10-18 23:13:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114220-20130408161455.patch</filename>
            <type>text/plain</type>
            <size>56168</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3OTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDEzLTA0LTA4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RvcCAjaW5jbHVkZS1pbmcgYWxsIG9mIEphdmFTY3JpcHRDb3JlIGluIGV2ZXJ5IERPTS1y
ZWxhdGVkIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDIyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEkgc2VwYXJhdGVkIFdlYWtJbmxpbmVzLmggZnJvbSBXZWFrLmggc28gV2ViQ29yZSBkYXRh
IHR5cGVzIHRoYXQgbmVlZAorICAgICAgICB0byBkZWNsYXJlIGEgV2VhazxUPiBkYXRhIG1lbWJl
ciBkb24ndCBoYXZlIHRvICNpbmNsdWRlIGFsbCBvZiB0aGUKKyAgICAgICAgaW5mcmFzdHJ1Y3R1
cmUgZm9yIGFjY2Vzc2luZyB0aGF0IGRhdGEgbWVtYmVyLgorCisgICAgICAgIFRoaXMgYWxzbyBy
ZXF1aXJlZCBzZXBhcmF0aW5nIFdlYWs8VD4gZnJvbSBQYXNzV2VhazxUPiBieSByZW1vdmluZyB0
aGUKKyAgICAgICAgV2Vha0ltcGxBY2Nlc3NvciBjbGFzcyB0ZW1wbGF0ZSBhbmQgcHVzaGluZyBj
b2RlIGRvd24gaW50byBpdHMgc3ViY2xhc3Nlcy4KKworICAgICAgICAqIEFQSS9KU1dlYWtPYmpl
Y3RNYXBSZWZQcml2YXRlLmNwcDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6
CisgICAgICAgICogaGVhcC9QYXNzV2Vhay5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFBh
c3NXZWFrKToKKyAgICAgICAgKEpTQzo6OjpQYXNzV2Vhayk6CisgICAgICAgIChKU0M6Ojo6b3Bl
cmF0b3IpOgorICAgICAgICAoSlNDOjo6OmdldCk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRv
cklubGluZXMuaDoKKyAgICAgICAgKiBoZWFwL1dlYWsuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChXZWFrKToKKyAgICAgICAgKiBoZWFwL1dlYWtJbmxpbmVzLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6Ojo6V2Vhayk6CisgICAgICAgIChKU0M6Ojo6b3BlcmF0b3IpOgorICAgICAgICAoSlND
Ojo6OmdldCk6CisgICAgICAgIChKU0M6Ojo6d2FzKToKKyAgICAgICAgKEpTQzo6d2Vha0NsZWFy
KToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBD
YWNoZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGlt
ZS9XZWFrR0NNYXAuaDoKKwogMjAxMy0wNC0wNSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IGZpeC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKICNpbmNsdWRlICJKU1dlYWtPYmplY3RN
YXBSZWZJbnRlcm5hbC5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJXZWFr
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDc5
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDkxLDYgKzQ5MSw3IEBACiAJCTE0QkQ1
OUM1MEEzRThGOUYwMEJBRjU5QyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3
MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQkxNEJENUEzMDBB
M0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkQ1QTI5MEEzRTkxRjYwMEJBRjU5QyAvKiBKU0Nv
bnRleHRSZWYuY3BwICovOyB9OwogCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1
ZVJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgKi87IH07CisJCTE0QkU3
RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRTdEMzIxNzEzNUNGNDAwRDE4MDdBIC8qIFdl
YWtJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTRCRkNFNjkxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRkNFNjgxMENEQjFGQzAwMzY0
Q0NFIC8qIFdlYWtHQ01hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0QzUyNDJCMEY1MzU1RTkwMEJBM0QwNCAvKiBKSVRTdHVicy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRBNjU4MUEwRjRFMzZG
NDAwMDE1MEZEIC8qIEpJVFN0dWJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMTRDQTk1OEIxNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1Byb3Bl
cnR5QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Q0E5NThBMTZBQjUwREUwMDkzOEEwNiAvKiBTdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzNTMs
NiArMTM1NCw3IEBACiAJCTE0QkQ1QTJBMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29udGV4dFJlZi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEJENUEyQjBBM0U5MUY2MDBCQUY1OUMgLyogSlNW
YWx1ZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNWYWx1
ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QkQ1QTJEMEEzRTkxRjYw
MEJBRjU5QyAvKiB0ZXN0YXBpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSB0
ZXN0YXBpLmM7IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5jOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNEJFN0QzMjE3MTM1Q0Y0MDBEMTgwN0EgLyogV2Vha0lubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha0lubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTRCRkNFNjgxMENEQjFGQzAwMzY0Q0NFIC8qIFdlYWtHQ01hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrR0NNYXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRDQTk1OEExNkFCNTBERTAwOTM4QTA2IC8qIFN0YXRpY1By
b3BlcnR5QW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlj
UHJvcGVydHlBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNENBOTU4
QzE2QUI1MEZBMDA5MzhBMDYgLyogT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTMsNiArMjExNSw4IEBACiAJCQkJQzIxMTIyREUx
NUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAgKi8sCiAJCQkJQzIxMTIy
REYxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oICovLAogCQkJCTE0MkUz
MTJCMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGUuaCAqLywKKwkJCQlDMjgzMThGRjE2RkU0QjdE
MDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCAqLywKKwkJCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQyRTMxMkMxMzRGRjBBNjAwQUZB
REI1IC8qIEhhbmRsZVNldC5jcHAgKi8sCiAJCQkJMTQyRTMxMkQxMzRGRjBBNjAwQUZBREI1IC8q
IEhhbmRsZVNldC5oICovLAogCQkJCTE0MkUzMTJFMTM0RkYwQTYwMEFGQURCNSAvKiBIYW5kbGVT
dGFjay5jcHAgKi8sCkBAIC0yMTQ2LDExICsyMTUwLDE0IEBACiAJCQkJMTQyRDZGMEYxMzUzOUE0
MTAwQjAyRTg2IC8qIE1hcmtTdGFjay5oICovLAogCQkJCUMyMTEyMkUwMTVERDlBQjMwMDc5MEUz
QSAvKiBNYXJrU3RhY2tJbmxpbmVzLmggKi8sCiAJCQkJMTQ5NzIwOTAxNEVCODMxNTAwRkVCMUI3
IC8qIFBhc3NXZWFrLmggKi8sCisJCQkJQzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8qIFJlZ2lv
bi5oICovLAogCQkJCUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAg
Ki8sCiAJCQkJMTRCQTc4RjAxM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RWaXNpdG9yLmggKi8sCiAJ
CQkJMEZDQjQwODUxNUMwQTNDMzAwNDg5MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovLAog
CQkJCTE0MkUzMTMyMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCAqLywKIAkJCQkxNDU3MjI4
NTE0MzdFMTQwMDA1RkRFMjYgLyogU3Ryb25nSW5saW5lcy5oICovLAorCQkJCUMyREY0NDJEMTcw
N0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5jcHAgKi8sCisJCQkJQzJERjQ0MkUxNzA3QUMw
MTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmggKi8sCiAJCQkJMTQxNDQ4Q0MxM0ExNzgzNzAwRjVC
QTFBIC8qIFRpbnlCbG9vbUZpbHRlci5oICovLAogCQkJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi8sCiAJCQkJMEZDODE1MTIxNDA1MTE4NjAw
Q0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNwcCAqLywKQEAgLTIxNjEsMTcgKzIxNjgsMTMgQEAK
IAkJCQkxNEY3MjU2MzE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmNwcCAqLywK
IAkJCQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmggKi8sCiAJ
CQkJMTRFODRGOUQxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtJbXBsLmggKi8sCisJCQkJMTRCRTdE
MzIxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmggKi8sCiAJCQkJMEYyNDJEQTUxM0Yz
QjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLywKIAkJCQkxNEU4NEY5
QjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha1NldC5jcHAgKi8sCiAJCQkJMTRFODRGOUMxNEVFMUFD
QzAwRDZENUQ0IC8qIFdlYWtTZXQuaCAqLywKIAkJCQkxNDE1MDEzMjE1NEJCMTNGMDA1RDhDOTgg
LyogV2Vha1NldElubGluZXMuaCAqLywKIAkJCQkwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyog
V3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi8sCiAJCQkJMEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAz
IC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLywKLQkJCQlDMjgzMThGRjE2RkU0QjdEMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2suaCAqLywKLQkJCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdCRkQgLyog
SGFuZGxlQmxvY2tJbmxpbmVzLmggKi8sCi0JCQkJQzIwQjI1OTgxNzA2NTM2MjAwQzIxRjRFIC8q
IFJlZ2lvbi5oICovLAotCQkJCUMyREY0NDJEMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lv
bi5jcHAgKi8sCi0JCQkJQzJERjQ0MkUxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMzMwOCw2ICszMzExLDcgQEAKIAkJCQkwRkY3MjlCQzE2NkFEMzYwMDAwRjVCQTMgLyogUHJv
ZmlsZXJDb21waWxlZEJ5dGVjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRDE2NkFE
MzYwMDAwRjVCQTMgLyogUHJvZmlsZXJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
NzI5QkUxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyRXhlY3V0aW9uQ291bnRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMTRCRTdEMzMxNzEzNUNGNDAwRDE4MDdBIC8qIFdlYWtJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkY3MjlCRjE2NkFEMzYwMDAwRjVCQTMgLyogUHJvZmlsZXJP
cmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUMwMTY2QUQzNjAwMDBGNUJBMyAvKiBQ
cm9maWxlck9yaWdpblN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4QzE2NzU0ODMz
MDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShy
ZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUg
IlJlZ0V4cC5oIgogI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9s
VGFibGUuaCIKLSNpbmNsdWRlICJXZWFrLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvUGFzc1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9QYXNzV2Vhay5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9QYXNzV2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCwyOSArMzQsMTQgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWs7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzV2VhazsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFBhc3NX
ZWFrPFQ+IGFkb3B0V2VhayhXZWFrSW1wbCopOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0
eXBlbmFtZSBUPiBjbGFzcyBXZWFrSW1wbEFjY2Vzc29yIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNsYXNzIFBhc3NXZWFrIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIFQqIEdldFR5cGU7Ci0KLSAg
ICBUKiBvcGVyYXRvci0+KCkgY29uc3Q7Ci0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7Ci0gICAg
R2V0VHlwZSBnZXQoKSBjb25zdDsKLQotICAgIGJvb2wgd2FzKEdldFR5cGUpIGNvbnN0OwotfTsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1dlYWsgOiBwdWJsaWMgV2Vha0ltcGxB
Y2Nlc3NvcjxQYXNzV2VhazxUPiwgVD4gewotcHVibGljOgotICAgIGZyaWVuZCBjbGFzcyBXZWFr
SW1wbEFjY2Vzc29yPFBhc3NXZWFrPFQ+LCBUPjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFdlYWtJ
bXBsQWNjZXNzb3I8UGFzc1dlYWs8VD4sIFQ+OjpHZXRUeXBlIEdldFR5cGU7Ci0KICAgICBQYXNz
V2VhaygpOwogICAgIFBhc3NXZWFrKHN0ZDo6bnVsbHB0cl90KTsKLSAgICBQYXNzV2VhayhHZXRU
eXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOworICAgIFBhc3NX
ZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9IDApOwogCiAgICAg
Ly8gSXQgc29tZXdoYXQgYnJlYWtzIHRoZSB0eXBlIHN5c3RlbSB0byBhbGxvdyB0cmFuc2ZlciBv
ZiBvd25lcnNoaXAgb3V0IG9mCiAgICAgLy8gYSBjb25zdCBQYXNzV2Vhay4gSG93ZXZlciwgaXQg
bWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NXZWFrCkBAIC02NiwxMCArNTEs
MTQgQEAgcHVibGljOgogCiAgICAgflBhc3NXZWFrKCk7CiAKKyAgICBUKiBvcGVyYXRvci0+KCkg
Y29uc3Q7CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgVCogZ2V0KCkgY29uc3Q7CisK
ICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBjb252ZXJzaW9uIG9w
ZXJhdG9yIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGJvb2wgYnV0IG5vdCB0byBvdGhl
ciBpbnRlZ2VyIHR5cGVzLgotICAgIHR5cGVkZWYgSlNWYWx1ZSAoUGFzc1dlYWs6OipVbnNwZWNp
ZmllZEJvb2xUeXBlKTsKKyAgICB0eXBlZGVmIHZvaWQqIChQYXNzV2Vhazo6KlVuc3BlY2lmaWVk
Qm9vbFR5cGUpOwogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7CiAK
ICAgICBXZWFrSW1wbCogbGVha0ltcGwoKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CkBAIC04
MSwzMCArNzAsNiBAQCBwcml2YXRlOgogICAgIFdlYWtJbXBsKiBtX2ltcGw7CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiBpbmxpbmUgVCogV2Vha0ltcGxBY2Nlc3Nv
cjxCYXNlLCBUPjo6b3BlcmF0b3ItPigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0
PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsICYmIHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0
aGlzKS0+bV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKTsKLSAgICByZXR1cm4ganND
YXN0PFQqPihzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+anNWYWx1ZSgp
LmFzQ2VsbCgpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gaW5s
aW5lIFQmIFdlYWtJbXBsQWNjZXNzb3I8QmFzZSwgVD46Om9wZXJhdG9yKigpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKHN0YXRpY19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsICYmIHN0YXRp
Y19jYXN0PGNvbnN0IEJhc2UqPih0aGlzKS0+bV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpM
aXZlKTsKLSAgICByZXR1cm4gKmpzQ2FzdDxUKj4oc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRo
aXMpLT5tX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IEJhc2UsIHR5cGVuYW1lIFQ+IGlubGluZSB0eXBlbmFtZSBXZWFrSW1wbEFjY2Vzc29yPEJhc2Us
IFQ+OjpHZXRUeXBlIFdlYWtJbXBsQWNjZXNzb3I8QmFzZSwgVD46OmdldCgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFzdGF0aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbCB8fCBzdGF0aWNf
Y2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2
ZSkKLSAgICAgICAgcmV0dXJuIEdldFR5cGUoKTsKLSAgICByZXR1cm4ganNDYXN0PFQqPihzdGF0
aWNfY2FzdDxjb25zdCBCYXNlKj4odGhpcyktPm1faW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQmFzZSwgdHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2Vh
a0ltcGxBY2Nlc3NvcjxCYXNlLCBUPjo6d2FzKHR5cGVuYW1lIFdlYWtJbXBsQWNjZXNzb3I8QmFz
ZSwgVD46OkdldFR5cGUgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGpzQ2FzdDxUKj4oc3Rh
dGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRoaXMpLT5tX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkg
PT0gb3RoZXI7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzV2VhazxUPjo6
UGFzc1dlYWsoKQogICAgIDogbV9pbXBsKDApCiB7CkBAIC0xMTUsOCArODAsOCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1dlYWs8VD46CiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBQYXNzV2VhazxUPjo6UGFzc1dlYWsodHlwZW5hbWUgUGFzc1dlYWs8VD46
OkdldFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFsbG9jYXRlKGdldFR5cGUsIHdl
YWtPd25lciwgY29udGV4dCkgOiAwKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NX
ZWFrPFQ+OjpQYXNzV2VhayhUKiBjZWxsLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtPd25lciwgdm9p
ZCogY29udGV4dCkKKyAgICA6IG1faW1wbChjZWxsID8gV2Vha1NldDo6YWxsb2NhdGUoY2VsbCwg
d2Vha093bmVyLCBjb250ZXh0KSA6IDApCiB7CiB9CiAKQEAgLTEzNyw2ICsxMDIsMjUgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+OgogICAgIFdlYWtTZXQ6OmRlYWxs
b2NhdGUobV9pbXBsKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFBhc3NX
ZWFrPFQ+OjpvcGVyYXRvci0+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1w
bC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxUKj4obV9p
bXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgVCYgUGFzc1dlYWs8VD46Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faW1w
bCAmJiBtX2ltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpOworICAgIHJldHVybiAqanND
YXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBUKiBQYXNzV2VhazxUPjo6Z2V0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
aW1wbCB8fCBtX2ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6OkxpdmUpCisgICAgICAgIHJldHVy
biAwOworICAgIHJldHVybiBqc0Nhc3Q8VCo+KG1faW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgUGFzc1dlYWs8VD46Om9wZXJh
dG9yISgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX2ltcGwgfHwgbV9pbXBsLT5zdGF0ZSgpICE9
IFdlYWtJbXBsOjpMaXZlIHx8ICFtX2ltcGwtPmpzVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCShyZXZpc2lvbiAxNDc5
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlICJXZWFr
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vhay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWsuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwyMiArMjYsMjEgQEAKICNpZm5k
ZWYgV2Vha19oCiAjZGVmaW5lIFdlYWtfaAogCi0jaW5jbHVkZSAiUGFzc1dlYWsuaCIKLSNpbmNs
dWRlICJXZWFrU2V0SW5saW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvTnVsbFB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgV2VhayA6IHB1YmxpYyBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+IHsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NXZWFrOworY2xhc3MgV2Vha0ltcGw7Citj
bGFzcyBXZWFrSGFuZGxlT3duZXI7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWspOwogcHVibGljOgotICAgIGZyaWVuZCBj
bGFzcyBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+OwotICAgIHR5cGVkZWYgdHlwZW5hbWUg
V2Vha0ltcGxBY2Nlc3NvcjxXZWFrPFQ+LCBUPjo6R2V0VHlwZSBHZXRUeXBlOwotCiAgICAgV2Vh
aygpOwogICAgIGV4cGxpY2l0IFdlYWsoc3RkOjpudWxscHRyX3QpOwotICAgIGV4cGxpY2l0IFdl
YWsoR2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKyAg
ICBleHBsaWNpdCBXZWFrKFQqLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCogY29udGV4dCA9
IDApOwogCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNoVGFibGVEZWxl
dGVkVmFsdWUgfTsKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7CkBA
IC01NSw5ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgV2VhayYgb3BlcmF0b3I9KGNvbnN0IFBhc3NX
ZWFrPFQ+Jik7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKyAgICBUKiBvcGVy
YXRvci0+KCkgY29uc3Q7CisgICAgVCYgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgVCogZ2V0KCkg
Y29uc3Q7CisKKyAgICBib29sIHdhcyhUKikgY29uc3Q7CiAKICAgICAvLyBUaGlzIGNvbnZlcnNp
b24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRv
IG90aGVyIGludGVnZXIgdHlwZXMuCi0gICAgdHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVCYXNlOjoq
VW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgdHlwZWRlZiB2b2lkKiAoV2Vhazo6KlVuc3BlY2lm
aWVkQm9vbFR5cGUpOwogICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUqKCkgY29uc3Q7
CiAKICAgICBQYXNzV2VhazxUPiByZWxlYXNlKCk7CkBAIC02OSwxNDUgKzczLDYgQEAgcHJpdmF0
ZToKICAgICBXZWFrSW1wbCogbV9pbXBsOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIFdlYWs8VD46OldlYWsoKQotICAgIDogbV9pbXBsKDApCi17Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKHN0ZDo6bnVsbHB0cl90KQotICAgIDogbV9p
bXBsKDApCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFr
KHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFr
T3duZXIsIHZvaWQqIGNvbnRleHQpCi0gICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFs
bG9jYXRlKGdldFR5cGUsIHdlYWtPd25lciwgY29udGV4dCkgOiAwKQotewotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBXZWFrPFQ+Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlwZW5h
bWUgV2VhazxUPjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKQotICAgIDogbV9pbXBsKGhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiAgaW5saW5lIFdlYWs8VD46OldlYWsoY29uc3QgUGFzc1dlYWs8VT4mIG90
aGVyKQotICAgIDogbV9pbXBsKG90aGVyLmxlYWtJbXBsKCkpCi17Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+Ojp+V2VhaygpCi17Ci0gICAgY2xlYXIoKTsKLX0KLQot
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChXZWFrPFQ+JiBhLCBXZWFrPFQ+JiBi
KQotewotICAgIGEuc3dhcChiKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZv
aWQgV2VhazxUPjo6c3dhcChXZWFrJiBvdGhlcikKLXsKLSAgICBzdGQ6OnN3YXAobV9pbXBsLCBv
dGhlci5tX2ltcGwpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPiYg
V2VhazxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NXZWFrPFQ+JiBvKQotewotICAgIGNsZWFyKCk7
Ci0gICAgbV9pbXBsID0gby5sZWFrSW1wbCgpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIW1faW1wbCB8fCAhbV9pbXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5z
dGF0ZSgpICE9IFdlYWtJbXBsOjpMaXZlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgV2VhazxUPjo6b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAotewotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPighISp0aGlzKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+IFdlYWs8VD46OnJl
bGVhc2UoKQotewotICAgIFBhc3NXZWFrPFQ+IHRtcCA9IGFkb3B0V2VhazxUPihtX2ltcGwpOwot
ICAgIG1faW1wbCA9IDA7Ci0gICAgcmV0dXJuIHRtcDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIHZvaWQgV2VhazxUPjo6Y2xlYXIoKQotewotICAgIGlmICghbV9pbXBsKQotICAg
ICAgICByZXR1cm47Ci0gICAgV2Vha1NldDo6ZGVhbGxvY2F0ZShtX2ltcGwpOwotICAgIG1faW1w
bCA9IDA7Ci19Ci0gICAgCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha0ltcGwqIFdl
YWs8VD46Omhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V2Vha0ltcGwqPigtMSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYWs8VD4mIGxocywgY29uc3QgV2VhazxUPiYgcmhzKQot
ewotICAgIHJldHVybiBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOwotfQotCi0vLyBUaGlzIGZ1bmN0
aW9uIGhlbHBzIGF2b2lkIG1vZGlmeWluZyBhIHdlYWsgdGFibGUgd2hpbGUgaG9sZGluZyBhbiBp
dGVyYXRvciBpbnRvIGl0LiAoT2JqZWN0IGFsbG9jYXRpb24KLS8vIGNhbiBydW4gYSBmaW5hbGl6
ZXIgdGhhdCBtb2RpZmllcyB0aGUgdGFibGUuIFdlIGF2b2lkIHRoYXQgYnkgcmVxdWlyaW5nIGEg
cHJlLWNvbnN0cnVjdGVkIG9iamVjdCBhcyBvdXIgdmFsdWUuKQotdGVtcGxhdGU8dHlwZW5hbWUg
TWFwLCB0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrQWRkKE1h
cCYgbWFwLCBjb25zdCBLZXkmIGtleSwgVmFsdWUgdmFsdWUpCi17Ci0gICAgQVNTRVJUKCFtYXAu
Z2V0KGtleSkpOwotICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7IC8vIFRoZSB0YWJsZSBtYXkgc3Rp
bGwgaGF2ZSBhIHpvbWJpZSBmb3IgdmFsdWUuCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1hcCwg
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZT4gaW5saW5lIHZvaWQgd2Vha1JlbW92ZShNYXAm
IG1hcCwgY29uc3QgS2V5JiBrZXksIFZhbHVlIHZhbHVlKQotewotICAgIHR5cGVuYW1lIE1hcDo6
aXRlcmF0b3IgaXQgPSBtYXAuZmluZChrZXkpOwotICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsIHZh
bHVlKTsKLSAgICBBU1NFUlQoaXQgIT0gbWFwLmVuZCgpKTsKLSAgICBBU1NFUlQoaXQtPnZhbHVl
Lndhcyh2YWx1ZSkpOwotICAgIEFTU0VSVCghaXQtPnZhbHVlKTsKLSAgICBtYXAucmVtb3ZlKGl0
KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8
VD4mIHdlYWssIHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgdmFsdWUpCi17Ci0gICAgQVNTRVJU
X1VOVVNFRCh2YWx1ZSwgdmFsdWUpOwotICAgIEFTU0VSVCh3ZWFrLndhcyh2YWx1ZSkpOwotICAg
IEFTU0VSVCghd2Vhayk7Ci0gICAgd2Vhay5jbGVhcigpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0
b3JUcmFpdHM8SlNDOjpXZWFrPFQ+ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgY2FuQ29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKLX07Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IHsKLSAgICB0eXBlZGVmIEpTQzo6V2Vh
azxUPiBTdG9yYWdlVHlwZTsKLQotICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1
ZVR5cGU7Ci0gICAgc3RhdGljIEVtcHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBu
dWxscHRyOyB9Ci0KLSAgICB0eXBlZGVmIEpTQzo6UGFzc1dlYWs8VD4gUGFzc0luVHlwZTsKLSAg
ICBzdGF0aWMgdm9pZCBzdG9yZShQYXNzSW5UeXBlIHZhbHVlLCBTdG9yYWdlVHlwZSYgc3RvcmFn
ZSkgeyBzdG9yYWdlID0gdmFsdWU7IH0KLQotICAgIHR5cGVkZWYgSlNDOjpQYXNzV2VhazxUPiBQ
YXNzT3V0VHlwZTsKLSAgICBzdGF0aWMgUGFzc091dFR5cGUgcGFzc091dChTdG9yYWdlVHlwZSYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsgfQotICAgIHN0YXRpYyBQYXNzT3V0VHlw
ZSBwYXNzT3V0KEVtcHR5VmFsdWVUeXBlKSB7IHJldHVybiBQYXNzT3V0VHlwZSgpOyB9Ci0KLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIFN0b3JhZ2VUeXBlOjpHZXRUeXBlIFBlZWtUeXBlOwotICAgIHN0
YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUuZ2V0KCk7IH0KLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyBy
ZXR1cm4gUGVla1R5cGUoKTsgfQotfTsKLQotfQotCiAjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHJldmlzaW9uIDE0NzkzOCkJ
KGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oOjE0NzkzOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYWtfaAorI2RlZmluZSBX
ZWFrX2gKKworI2luY2x1ZGUgIlBhc3NXZWFrLmgiCisjaW5jbHVkZSAiV2Vha1NldElubGluZXMu
aCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrIDog
cHVibGljIFdlYWtJbXBsQWNjZXNzb3I8V2VhazxUPiwgVD4geworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYWspOworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBXZWFrSW1wbEFjY2Vzc29y
PFdlYWs8VD4sIFQ+OworICAgIHR5cGVkZWYgdHlwZW5hbWUgV2Vha0ltcGxBY2Nlc3NvcjxXZWFr
PFQ+LCBUPjo6R2V0VHlwZSBHZXRUeXBlOworCisgICAgV2VhaygpOworICAgIGV4cGxpY2l0IFdl
YWsoc3RkOjpudWxscHRyX3QpOworICAgIGV4cGxpY2l0IFdlYWsoR2V0VHlwZSwgV2Vha0hhbmRs
ZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKworICAgIGVudW0gSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH07CisgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0OworICAgIFdlYWsoSGFzaFRhYmxlRGVsZXRlZFZhbHVl
VGFnKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFdlYWsoY29uc3QgUGFzc1dlYWs8VT4m
KTsKKworICAgIH5XZWFrKCk7CisKKyAgICB2b2lkIHN3YXAoV2VhayYpOworICAgIFdlYWsmIG9w
ZXJhdG9yPShjb25zdCBQYXNzV2VhazxUPiYpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3Q7CisKKyAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0
IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCisgICAg
dHlwZWRlZiBKU1ZhbHVlIChIYW5kbGVCYXNlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAg
b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdDsKKworICAgIFBhc3NXZWFrPFQ+
IHJlbGVhc2UoKTsKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgCitwcml2YXRlOgorICAgIHN0YXRp
YyBXZWFrSW1wbCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisKKyAgICBXZWFrSW1wbCogbV9p
bXBsOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsoKQor
ICAgIDogbV9pbXBsKDApCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFr
PFQ+OjpXZWFrKHN0ZDo6bnVsbHB0cl90KQorICAgIDogbV9pbXBsKDApCit7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKHR5cGVuYW1lIFdlYWs8VD46Okdl
dFR5cGUgZ2V0VHlwZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRleHQp
CisgICAgOiBtX2ltcGwoZ2V0VHlwZSA/IFdlYWtTZXQ6OmFsbG9jYXRlKGdldFR5cGUsIHdlYWtP
d25lciwgY29udGV4dCkgOiAwKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
Ym9vbCBXZWFrPFQ+Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWsodHlwZW5hbWUgV2VhazxUPjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlVGFnKQorICAgIDogbV9pbXBsKGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKQor
eworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAgaW5saW5l
IFdlYWs8VD46OldlYWsoY29uc3QgUGFzc1dlYWs8VT4mIG90aGVyKQorICAgIDogbV9pbXBsKG90
aGVyLmxlYWtJbXBsKCkpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFr
PFQ+Ojp+V2VhaygpCit7CisgICAgY2xlYXIoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4gaW5s
aW5lIHZvaWQgc3dhcChXZWFrPFQ+JiBhLCBXZWFrPFQ+JiBiKQoreworICAgIGEuc3dhcChiKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgV2VhazxUPjo6c3dhcChXZWFr
JiBvdGhlcikKK3sKKyAgICBzdGQ6OnN3YXAobV9pbXBsLCBvdGhlci5tX2ltcGwpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPiYgV2VhazxUPjo6b3BlcmF0b3I9KGNv
bnN0IFBhc3NXZWFrPFQ+JiBvKQoreworICAgIGNsZWFyKCk7CisgICAgbV9pbXBsID0gby5sZWFr
SW1wbCgpOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIGJvb2wgV2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faW1w
bCB8fCAhbV9pbXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5zdGF0ZSgpICE9IFdlYWtJbXBsOjpM
aXZlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6b3BlcmF0b3Ig
VW5zcGVjaWZpZWRCb29sVHlwZSooKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFVuc3BlY2lmaWVkQm9vbFR5cGUqPighISp0aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFBhc3NXZWFrPFQ+IFdlYWs8VD46OnJlbGVhc2UoKQoreworICAgIFBhc3NX
ZWFrPFQ+IHRtcCA9IGFkb3B0V2VhazxUPihtX2ltcGwpOworICAgIG1faW1wbCA9IDA7CisgICAg
cmV0dXJuIHRtcDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgV2VhazxU
Pjo6Y2xlYXIoKQoreworICAgIGlmICghbV9pbXBsKQorICAgICAgICByZXR1cm47CisgICAgV2Vh
a1NldDo6ZGVhbGxvY2F0ZShtX2ltcGwpOworICAgIG1faW1wbCA9IDA7Cit9CisgICAgCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha0ltcGwqIFdlYWs8VD46Omhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0ltcGwqPigtMSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFdlYWs8VD4mIGxocywgY29uc3QgV2VhazxUPiYgcmhzKQoreworICAgIHJldHVybiBsaHMuZ2V0
KCkgPT0gcmhzLmdldCgpOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIGhlbHBzIGF2b2lkIG1vZGlm
eWluZyBhIHdlYWsgdGFibGUgd2hpbGUgaG9sZGluZyBhbiBpdGVyYXRvciBpbnRvIGl0LiAoT2Jq
ZWN0IGFsbG9jYXRpb24KKy8vIGNhbiBydW4gYSBmaW5hbGl6ZXIgdGhhdCBtb2RpZmllcyB0aGUg
dGFibGUuIFdlIGF2b2lkIHRoYXQgYnkgcmVxdWlyaW5nIGEgcHJlLWNvbnN0cnVjdGVkIG9iamVj
dCBhcyBvdXIgdmFsdWUuKQordGVtcGxhdGU8dHlwZW5hbWUgTWFwLCB0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlPiBpbmxpbmUgdm9pZCB3ZWFrQWRkKE1hcCYgbWFwLCBjb25zdCBLZXkmIGtl
eSwgVmFsdWUgdmFsdWUpCit7CisgICAgQVNTRVJUKCFtYXAuZ2V0KGtleSkpOworICAgIG1hcC5z
ZXQoa2V5LCB2YWx1ZSk7IC8vIFRoZSB0YWJsZSBtYXkgc3RpbGwgaGF2ZSBhIHpvbWJpZSBmb3Ig
dmFsdWUuCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZT4gaW5saW5lIHZvaWQgd2Vha1JlbW92ZShNYXAmIG1hcCwgY29uc3QgS2V5JiBrZXks
IFZhbHVlIHZhbHVlKQoreworICAgIHR5cGVuYW1lIE1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmlu
ZChrZXkpOworICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsIHZhbHVlKTsKKyAgICBBU1NFUlQoaXQg
IT0gbWFwLmVuZCgpKTsKKyAgICBBU1NFUlQoaXQtPnZhbHVlLndhcyh2YWx1ZSkpOworICAgIEFT
U0VSVCghaXQtPnZhbHVlKTsKKyAgICBtYXAucmVtb3ZlKGl0KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VD4mIHdlYWssIHR5cGVuYW1lIFdl
YWs8VD46OkdldFR5cGUgdmFsdWUpCit7CisgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZSwgdmFsdWUp
OworICAgIEFTU0VSVCh3ZWFrLndhcyh2YWx1ZSkpOworICAgIEFTU0VSVCghd2Vhayk7CisgICAg
d2Vhay5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpXZWFrPFQ+
ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgY2Fu
Q29tcGFyZVdpdGhNZW1jbXAgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBIYXNoVHJhaXRzPEpTQzo6V2VhazxUPiA+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpT
Qzo6V2VhazxUPiA+IHsKKyAgICB0eXBlZGVmIEpTQzo6V2VhazxUPiBTdG9yYWdlVHlwZTsKKwor
ICAgIHR5cGVkZWYgc3RkOjpudWxscHRyX3QgRW1wdHlWYWx1ZVR5cGU7CisgICAgc3RhdGljIEVt
cHR5VmFsdWVUeXBlIGVtcHR5VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB0eXBl
ZGVmIEpTQzo6UGFzc1dlYWs8VD4gUGFzc0luVHlwZTsKKyAgICBzdGF0aWMgdm9pZCBzdG9yZShQ
YXNzSW5UeXBlIHZhbHVlLCBTdG9yYWdlVHlwZSYgc3RvcmFnZSkgeyBzdG9yYWdlID0gdmFsdWU7
IH0KKworICAgIHR5cGVkZWYgSlNDOjpQYXNzV2VhazxUPiBQYXNzT3V0VHlwZTsKKyAgICBzdGF0
aWMgUGFzc091dFR5cGUgcGFzc091dChTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
LnJlbGVhc2UoKTsgfQorICAgIHN0YXRpYyBQYXNzT3V0VHlwZSBwYXNzT3V0KEVtcHR5VmFsdWVU
eXBlKSB7IHJldHVybiBQYXNzT3V0VHlwZSgpOyB9CisKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFN0
b3JhZ2VUeXBlOjpHZXRUeXBlIFBlZWtUeXBlOworICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNv
bnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KKyAgICBzdGF0
aWMgUGVla1R5cGUgcGVlayhFbXB0eVZhbHVlVHlwZSkgeyByZXR1cm4gUGVla1R5cGUoKTsgfQor
fTsKKworfQorCisjZW5kaWYgLy8gV2Vha19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDUyICsy
MywxNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgV2Vha19oCi0jZGVmaW5lIFdlYWtfaAorI2lmbmRlZiBXZWFrSW5saW5lc19oCisjZGVmaW5l
IFdlYWtJbmxpbmVzX2gKIAogI2luY2x1ZGUgIlBhc3NXZWFrLmgiCiAjaW5jbHVkZSAiV2Vha1Nl
dElubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWsgOiBwdWJsaWMgV2Vha0ltcGxBY2Nl
c3NvcjxXZWFrPFQ+LCBUPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vhayk7Ci1wdWJs
aWM6Ci0gICAgZnJpZW5kIGNsYXNzIFdlYWtJbXBsQWNjZXNzb3I8V2VhazxUPiwgVD47Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBXZWFrSW1wbEFjY2Vzc29yPFdlYWs8VD4sIFQ+OjpHZXRUeXBlIEdl
dFR5cGU7Ci0KLSAgICBXZWFrKCk7Ci0gICAgZXhwbGljaXQgV2VhayhzdGQ6Om51bGxwdHJfdCk7
Ci0gICAgZXhwbGljaXQgV2VhayhHZXRUeXBlLCBXZWFrSGFuZGxlT3duZXIqID0gMCwgdm9pZCog
Y29udGV4dCA9IDApOwotCi0gICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcgeyBIYXNo
VGFibGVEZWxldGVkVmFsdWUgfTsKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3Q7Ci0gICAgV2VhayhIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gV2Vhayhjb25zdCBQYXNzV2VhazxVPiYpOwotCi0gICAgfldlYWsoKTsK
LQotICAgIHZvaWQgc3dhcChXZWFrJik7Ci0gICAgV2VhayYgb3BlcmF0b3I9KGNvbnN0IFBhc3NX
ZWFrPFQ+Jik7Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKLQotICAgIC8vIFRo
aXMgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29s
IGJ1dCBub3QgdG8gb3RoZXIgaW50ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIEpTVmFsdWUgKEhh
bmRsZUJhc2U6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKLSAgICBvcGVyYXRvciBVbnNwZWNpZmll
ZEJvb2xUeXBlKigpIGNvbnN0OwotCi0gICAgUGFzc1dlYWs8VD4gcmVsZWFzZSgpOwotICAgIHZv
aWQgY2xlYXIoKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgc3RhdGljIFdlYWtJbXBsKiBoYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsKLQotICAgIFdlYWtJbXBsKiBtX2ltcGw7Ci19OwotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2VhaygpCiAgICAgOiBtX2ltcGwoMCkKIHsK
QEAgLTc5LDggKzQzLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46Oldl
YQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2Vhayh0eXBl
bmFtZSBXZWFrPFQ+OjpHZXRUeXBlIGdldFR5cGUsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVy
LCB2b2lkKiBjb250ZXh0KQotICAgIDogbV9pbXBsKGdldFR5cGUgPyBXZWFrU2V0OjphbGxvY2F0
ZShnZXRUeXBlLCB3ZWFrT3duZXIsIGNvbnRleHQpIDogMCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBXZWFrPFQ+OjpXZWFrKFQqIGNlbGwsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVy
LCB2b2lkKiBjb250ZXh0KQorICAgIDogbV9pbXBsKGNlbGwgPyBXZWFrU2V0OjphbGxvY2F0ZShj
ZWxsLCB3ZWFrT3duZXIsIGNvbnRleHQpIDogMCkKIHsKIH0KIApAQCAtMTIxLDYgKzg1LDMwIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+JiBXZWEKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBXZWFrPFQ+OjpvcGVyYXRv
ci0+KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1wbC0+c3RhdGUoKSA9PSBX
ZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuIGpzQ2FzdDxUKj4obV9pbXBsLT5qc1ZhbHVlKCku
YXNDZWxsKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCYgV2VhazxUPjo6
b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pbXBsICYmIG1faW1wbC0+c3RhdGUo
KSA9PSBXZWFrSW1wbDo6TGl2ZSk7CisgICAgcmV0dXJuICpqc0Nhc3Q8VCo+KG1faW1wbC0+anNW
YWx1ZSgpLmFzQ2VsbCgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFdl
YWs8VD46OmdldCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltcGwgfHwgbV9pbXBsLT5zdGF0ZSgp
ICE9IFdlYWtJbXBsOjpMaXZlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4ganNDYXN0
PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBib29sIFdlYWs8VD46OndhcyhUKiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1
cm4ganNDYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkgPT0gb3RoZXI7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46Om9wZXJhdG9yISgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuICFtX2ltcGwgfHwgIW1faW1wbC0+anNWYWx1ZSgpIHx8IG1faW1w
bC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2ZTsKQEAgLTE3NCwxMCArMTYyLDEwIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIE1hcCwgdHlwZW5hbWUgS2V5LCB0eXAKICAgICBtYXAucmVtb3ZlKGl0KTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgd2Vha0NsZWFyKFdlYWs8VD4m
IHdlYWssIHR5cGVuYW1lIFdlYWs8VD46OkdldFR5cGUgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgdm9pZCB3ZWFrQ2xlYXIoV2VhazxUPiYgd2VhaywgVCogY2VsbCkKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKHZhbHVlLCB2YWx1ZSk7Ci0gICAgQVNTRVJUKHdlYWsud2FzKHZhbHVl
KSk7CisgICAgQVNTRVJUX1VOVVNFRChjZWxsLCBjZWxsKTsKKyAgICBBU1NFUlQod2Vhay53YXMo
Y2VsbCkpOwogICAgIEFTU0VSVCghd2Vhayk7CiAgICAgd2Vhay5jbGVhcigpOwogfQpAQCAtMjAz
LDExICsxOTEsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM8Sgog
ICAgIHN0YXRpYyBQYXNzT3V0VHlwZSBwYXNzT3V0KFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUucmVsZWFzZSgpOyB9CiAgICAgc3RhdGljIFBhc3NPdXRUeXBlIHBhc3NPdXQoRW1w
dHlWYWx1ZVR5cGUpIHsgcmV0dXJuIFBhc3NPdXRUeXBlKCk7IH0KIAotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgU3RvcmFnZVR5cGU6OkdldFR5cGUgUGVla1R5cGU7CisgICAgdHlwZWRlZiBUKiBQZWVr
VHlwZTsKICAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBTdG9yYWdlVHlwZSYgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CiAgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoRW1wdHlW
YWx1ZVR5cGUpIHsgcmV0dXJuIFBlZWtUeXBlKCk7IH0KIH07CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdURgogCi0jZW5kaWYgLy8gV2Vha19oCisjZW5kaWYgLy8gV2Vha0lubGluZXNfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVk
ZSAiVGh1bmtHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSAiV2Vha0lu
bGluZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJSZWdFeHBLZXkuaCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNp
bmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYv
Rml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgog
I2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCi0jaW5jbHVk
ZSAiV2Vhay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAkocmV2aXNpb24gMTQ3OTM4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha0dDTWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDggQEAKICNpZm5kZWYgV2Vha0dDTWFwX2gKICNkZWZpbmUgV2Vha0dD
TWFwX2gKIAotI2luY2x1ZGUgIldlYWsuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNs
dWRlIDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDc5NTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NyBAQAorMjAxMy0w
NC0wOCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFN0b3Ag
I2luY2x1ZGUtaW5nIGFsbCBvZiBKYXZhU2NyaXB0Q29yZSBpbiBldmVyeSBET00tcmVsYXRlZCBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQy
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIHNl
cGFyYXRlZCBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggZnJvbSBTY3JpcHRXcmFwcGFibGUuaCBz
bworICAgICAgICBXZWJDb3JlIGRhdGEgdHlwZXMgdGhhdCBpbmhlcml0IGZyb20gU2NyaXB0V3Jh
cHBhYmxlIGRvbid0CisgICAgICAgIGhhdmUgdG8gI2luY2x1ZGUgYWxsIG9mIHRoZSBpbmZyYXN0
cnVjdHVyZSBmb3IgYWNjZXNzaW5nIHRoYXQgZGF0YSBtZW1iZXIuCisKKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy9oZWFwL1Bhc3NXZWFrLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL2hlYXAvV2Vha0lubGluZXMuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBw
ZXJXb3JsZC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoU2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGVJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRXcmFwcGFibGU6OndyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
V3JhcHBhYmxlOjpzZXRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJs
ZTo6Y2xlYXJXcmFwcGVyKToKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfaW5zdGFuY2UuaDoKKyAg
ICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X3Jvb3QuY3BwOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuaDoKKyAgICAgICAgKiBj
c3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3RCYXNlOjpyZXBvcnRNZW1vcnlVc2FnZSk6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0
TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpy
ZXBvcnRNZW1vcnlVc2FnZSk6CisKIDIwMTMtMDQtMDggIEFydW5wcmFzYWQgUmFqa3VtYXIgIDxh
cnVucHJhc2FkckBuZHMuY29tPgogCiAgICAgICAgIENhbGwgTmV0c2NhcGUgUGx1Z2luJ3MgdG9T
dHJpbmcoKSBhbmQgdmFsdWVPZigpIGluc3RlYWQgb2YgcHJvdmlkaW5nIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvUGFz
c1dlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9o
ZWFwL1Bhc3NXZWFrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9oZWFwL1Bhc3NXZWFrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX1Bhc3NXZWFrX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfUGFzc1dl
YWtfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Bhc3NXZWFrLmg+CisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvV2Vha0lubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9oZWFwL1dlYWtJbmxp
bmVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9o
ZWFwL1dlYWtJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVm
IFdlYkNvcmVfRldEX1dlYWtJbmxpbmVzX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfV2Vha0lubGlu
ZXNfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtJbmxpbmVzLmg+CisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBACiAJCTEw
NTk0NTk5MTVCNDJBQTAwMDREMzdGRCAvKiBQcm9wZXJ0eU5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMDU5NDU5ODE1QjQyQUEwMDA0RDM3
RkQgLyogUHJvcGVydHlOb2RlTGlzdC5oICovOyB9OwogCQkxMDU5NDU5RjE1QjQyQjFBMDA0RDM3
RkQgLyogSlNQcm9wZXJ0eU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxMDU5NDU5RTE1QjQyQjFBMDA0RDM3RkQgLyogSlNQcm9wZXJ0eU5v
ZGVMaXN0LmggKi87IH07CiAJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNVUkxN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
MEZCMDg0QTE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oICovOyB9OworCQkx
NDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwMEQ3QTcxNzEzNkVB
NzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAyNjQ1RTBBRkRDMTlCMDA1OTE5RTIg
LyogTG9nZ2luZ01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MDI2NDVEMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5nTWFjLm1tICovOyB9Owog
CQkxNDAzQjk5NzA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAzQjk5NTA5RUIxM0FGMDA3OTdDN0Yg
LyogRE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQwM0I5OTgwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAzQjk5NjA5RUIxM0FG
MDA3OTdDN0YgLyogRE9NV2luZG93LmNwcCAqLzsgfTsKQEAgLTY1MzAsNiArNjUzMSw3IEBACiAJ
CTEwNTk0NTlBMTVCNDJBQzAwMDREMzdGRCAvKiBQcm9wZXJ0eU5vZGVMaXN0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBQcm9wZXJ0eU5vZGVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTA1OTQ1OUUxNUI0MkIxQTAwNEQzN0ZEIC8qIEpTUHJvcGVydHlOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5Tm9kZUxpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTBGQjA4NEExNEUxNUM3RTAwQTNEQjk4
IC8qIFB1YmxpY1VSTE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHVibGljVVJMTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDAwRDdB
NzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDI2NDVEMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5n
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmdN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDNCOTBDMDlFQjEyNDUwMDc5
N0M3RiAvKiBET01XaW5kb3cuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVdpbmRvdy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDNCOTk1MDlFQjEzQUYwMDc5N0M3
RiAvKiBET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2lu
ZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODczMSw2ICsxODczMyw3IEBA
CiAJCQkJOTM0Q0MwREYwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJ
CQk5MzRDQzBFMDBFRDM5RDZGMDBBNjU4RjIgLyogU2NyaXB0VmFsdWUuaCAqLywKIAkJCQkyMjhD
Mjg0NDEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggKi8sCisJCQkJMTQwMEQ3
QTcxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLywKIAkJCQlB
NzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywK
IAkJCQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgg
Ki8sCiAJCQkJQkM1M0Q5MTAxMTQzMTBDQzAwMEQ4MTdFIC8qIFdlYkNvcmVKU0NsaWVudERhdGEu
aCAqLywKQEAgLTIzOTAwLDYgKzIzOTAzLDcgQEAKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0
NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0N0U2NjExMEI3
OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGRkJG
M0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0
MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0YxRDVCQjEyRDUzMkM0MDA4MzJCRUMgLyogV2ViR0xMb3NlQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdM
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlENzEwNDJEMzJGMDAwOUQ0NDcgLyog
V2ViR0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNyArMjMsNiBAQAogI2RlZmluZSBET01XcmFwcGVyV29ybGRfaAogCiAjaW5jbHVkZSAiSlNE
T01HbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KICNpbmNsdWRlIDxydW50
aW1lL1dlYWtHQ01hcC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAxNDc5MzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsOCArMzAsMTAgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKICNpbmNsdWRlIDxoZWFwL1Nsb3RWaXNpdG9yLmg+
CiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CkBAIC00NCw5ICs0Niw3IEBA
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLQogY2xhc3MgSGFz
aEVudHJ5OwotCiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjIsOCArMjIsMTAgQEAKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgPGhlYXAvUGFzc1dlYWsuaD4KICNpbmNsdWRl
IDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNsdWRl
IDxoZWFwL1dlYWtJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCShy
ZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9u
Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
SlNNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWtJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRl
ckNvbmRpdGlvbi5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIs
NyBAQAogCiAjaW5jbHVkZSAiTm9kZUZpbHRlckNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPGhlYXAv
V2Vhay5oPgorI2luY2x1ZGUgPGhlYXAvV2Vha0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxydW50aW1lL09wZXJhdGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0V3JhcHBhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0V3JhcHBhYmxlLmgJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBA
QAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiAKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsMzYgKzMyLDIyIEBACiAjaWZuZGVmIFNjcmlw
dFdyYXBwYWJsZV9oCiAjZGVmaW5lIFNjcmlwdFdyYXBwYWJsZV9oCiAKLSNpbmNsdWRlICJKU0RP
TVdyYXBwZXIuaCIKLSNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSA8aGVhcC9XZWFrLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9PcGVyYXRpb25zLmg+CisK
K25hbWVzcGFjZSBKU0MgeworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgV2Vha0hhbmRsZU93
bmVyOworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEpTRE9NV3JhcHBlcjsKKwog
Y2xhc3MgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAgICBKU0RPTVdyYXBwZXIqIHdyYXBw
ZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2JhbERhdGEmLCBKU0RPTVdyYXBwZXIq
IHdyYXBwZXIsIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIsIHZvaWQqIGNvbnRl
eHQpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fd3JhcHBlcik7Ci0gICAgICAgIG1fd3JhcHBl
ciA9IEpTQzo6UGFzc1dlYWs8SlNET01XcmFwcGVyPih3cmFwcGVyLCB3cmFwcGVyT3duZXIsIGNv
bnRleHQpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJXcmFwcGVyKEpTRE9NV3JhcHBlciogd3Jh
cHBlcikKLSAgICB7Ci0gICAgICAgIHdlYWtDbGVhcihtX3dyYXBwZXIsIHdyYXBwZXIpOwotICAg
IH0KLQotICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKLSAgICB7Ci0gICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICAgICAg
aW5mby5hZGRNZW1iZXIobV93cmFwcGVyLCAid3JhcHBlciIpOwotICAgIH0KKyAgICBKU0RPTVdy
YXBwZXIqIHdyYXBwZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2Jh
bERhdGEmLCBKU0RPTVdyYXBwZXIqLCBKU0M6OldlYWtIYW5kbGVPd25lciosIHZvaWQqKTsKKyAg
ICB2b2lkIGNsZWFyV3JhcHBlcihKU0RPTVdyYXBwZXIqKTsKIAogcHJpdmF0ZToKICAgICBKU0M6
OldlYWs8SlNET01XcmFwcGVyPiBtX3dyYXBwZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0V3JhcHBhYmxlSW5s
aW5lc19oCisjZGVmaW5lIFNjcmlwdFdyYXBwYWJsZUlubGluZXNfaAorCisjaW5jbHVkZSAiSlNE
T01XcmFwcGVyLmgiCisjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFr
SW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBKU0RPTVdyYXBwZXIq
IFNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3JhcHBl
ci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQgU2NyaXB0V3JhcHBhYmxlOjpzZXRXcmFwcGVyKEpT
Qzo6SlNHbG9iYWxEYXRhJiwgSlNET01XcmFwcGVyKiB3cmFwcGVyLCBKU0M6OldlYWtIYW5kbGVP
d25lciogd3JhcHBlck93bmVyLCB2b2lkKiBjb250ZXh0KQoreworICAgIEFTU0VSVCghbV93cmFw
cGVyKTsKKyAgICBtX3dyYXBwZXIgPSBKU0M6OlBhc3NXZWFrPEpTRE9NV3JhcHBlcj4od3JhcHBl
ciwgd3JhcHBlck93bmVyLCBjb250ZXh0KTsKK30KKworaW5saW5lIHZvaWQgU2NyaXB0V3JhcHBh
YmxlOjpjbGVhcldyYXBwZXIoSlNET01XcmFwcGVyKiB3cmFwcGVyKQoreworICAgIHdlYWtDbGVh
cihtX3dyYXBwZXIsIHdyYXBwZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBTY3JpcHRXcmFwcGFibGVJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX3Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX3Jvb3QuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9yb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgInJ1bnRpbWVfb2JqZWN0LmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8aGVhcC9XZWFrSW5saW5lcy5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX3Jvb3QuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2lu
Y2x1ZGUgPGhlYXAvV2Vha0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuaAkocmV2aXNpb24gMTQ3OTM4
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKICNpbmNsdWRlICJK
U1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUg
IldlYWtJbmxpbmVzLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCiAjaW5jbHVkZSA8UVBv
aW50ZXI+CiAjaW5jbHVkZSA8cWhhc2guaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0
X3J1bnRpbWUuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHQuaCIKICNpbmNsdWRlICJXZWFr
LmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMuaCIKICNpbmNsdWRlICJxdF9pbnN0YW5jZS5oIgog
I2luY2x1ZGUgInJ1bnRpbWVfbWV0aG9kLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDE0Nzkz
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCShyZXZpc2lvbiAx
NDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5j
bHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCisjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9CaXRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAkocmV2
aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
U3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0LmNwcAkocmV2
aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ2xpZW50UmVjdC5oIgogCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENsaWVudFJlY3Q6OkNsaWVudFJlY3QoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiQ2xp
ZW50UmVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTWFwLmNwcAkocmV2
aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRE9NU3RyaW5nTWFwLmgiCiAKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRE9NU3RyaW5nTWFwOjpET01TdHJpbmdNYXAo
KQoreworfQorCiBET01TdHJpbmdNYXA6On5ET01TdHJpbmdNYXAoKQogewogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9ET01TdHJpbmdNYXAuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RPTVN0cmluZ01hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQoKSA9IDA7CiAKIHByb3RlY3RlZDoK
LSAgICBET01TdHJpbmdNYXAoKQotICAgIHsKLSAgICB9CisgICAgRE9NU3RyaW5nTWFwKCk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAJKHJldmlz
aW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmNwcAko
cmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDYgQEAgdm9pZCBMaXZlTm9kZUxpc3RCYXNlOjpp
bnZhbGlkYXRlSWROYW1lQwogdm9pZCBMaXZlTm9kZUxpc3RCYXNlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9y
eUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBl
czo6RE9NKTsKLSAgICBOb2RlTGlzdDo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5m
byk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9vd25lck5vZGUsICJvd25lck5vZGUiKTsKICAgICBp
bmZvLmFkZFdlYWtQb2ludGVyKG1fY2FjaGVkSXRlbSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblJlY29yZC5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvblJlY29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJRdWFs
aWZpZWROYW1lLmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAx
NDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2MjcsNyArMjYyNyw2IEBAIHZvaWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQogdm9pZCBOb2Rl
OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICBTY3JpcHRXcmFwcGFibGU6OnJlcG9ydE1l
bW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcGFyZW50
T3JTaGFkb3dIb3N0Tm9kZSwgInBhcmVudE9yU2hhZG93SG9zdE5vZGUiKTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX3RyZWVTY29wZSwgInRyZWVTY29wZSIpOwogICAgIGluZm8uaWdub3JlTWVtYmVy
KG1fbmV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVMaXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVMaXN0LmNwcAkocmV2aXNpb24g
MTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogCiAjaW5jbHVk
ZSAiRmlsZS5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2lu
Y2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisj
aW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvblZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hN
YXAuaD4KIAogbmFtZXNwYWNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZl
ci5oIgorI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0NyeXB0by5jcHAJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ3J5cHRvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkNyeXB0by5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlNj
cmlwdFdyYXBwYWJsZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+
CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysg
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMyMCw3ICsxMzIwLDYgQEAgRXZlbnRUYXJnZXREYXRhKiBYTUxIdHRwUmVxdWVzdDo6ZW5zdXJl
RQogdm9pZCBYTUxIdHRwUmVxdWVzdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci0gICAgU2Ny
aXB0V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBB
Y3RpdmVET01PYmplY3Q6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwogICAg
IGluZm8uYWRkTWVtYmVyKG1fdXBsb2FkLCAidXBsb2FkIik7CiAgICAgaW5mby5hZGRNZW1iZXIo
bV91cmwsICJ1cmwiKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Nzk1NykKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEz
LTA0LTA4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3Rv
cCAjaW5jbHVkZS1pbmcgYWxsIG9mIEphdmFTY3JpcHRDb3JlIGluIGV2ZXJ5IERPTS1yZWxhdGVk
IGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NDIyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oOgorCiAyMDEzLTA0LTA4ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIvUGx1Z2luIHByb2Nl
c3MgZGVhZGxvY2sgaW5pdGlhbGl6aW5nIGFzeW5jIHBsdWdpbnMuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTQ3
OTM4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJT
dHlsZVNoZWV0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgJKHJldmlzaW9u
IDE0NzkzOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
UFJ1bnRpbWVPYmplY3RNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5j
bHVkZSA8aGVhcC9XZWFrSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIAo=
</data>
<flag name="review"
          id="219107"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>