<?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>180561</bug_id>
          
          <creation_ts>2017-12-07 17:31:58 -0800</creation_ts>
          <short_desc>Move Logger from PAL to WTF so it can be used outside of WebCore</short_desc>
          <delta_ts>2017-12-20 16:40:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1379397</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-12-07 17:31:58 -0800</bug_when>
    <thetext>Move Logger from PAL to WTF so it can be used outside of WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379398</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-07 17:33:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/35924554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379402</commentid>
    <comment_count>2</comment_count>
      <attachid>328763</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-12-07 17:40:44 -0800</bug_when>
    <thetext>Created attachment 328763
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379403</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-07 17:42:02 -0800</bug_when>
    <thetext>Attachment 328763 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379417</commentid>
    <comment_count>4</comment_count>
      <attachid>328768</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-12-07 18:14:45 -0800</bug_when>
    <thetext>Created attachment 328768
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379442</commentid>
    <comment_count>5</comment_count>
      <attachid>328768</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-07 19:02:55 -0800</bug_when>
    <thetext>Comment on attachment 328768
Updated patch.

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

r=me with comments

&gt; Source/WTF/wtf/Logger.h:224
&gt; +} // namespace PAL

This should be namespace WTF

&gt; Source/WebCore/html/track/TrackBase.cpp:38
&gt; +using namespace WTF;

Many WTF header files end with using WTF::Something;
Let&apos;s do that instead of this.
Then we can also replace the WTF::Logger with Logger</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379611</commentid>
    <comment_count>6</comment_count>
      <attachid>328768</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-12-08 10:10:28 -0800</bug_when>
    <thetext>Comment on attachment 328768
Updated patch.

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

&gt;&gt; Source/WTF/wtf/Logger.h:224
&gt;&gt; +} // namespace WTF
&gt; 
&gt; This should be namespace WTF

It is :-)

&gt;&gt; Source/WebCore/html/track/TrackBase.cpp:38
&gt;&gt; +using namespace WTF;
&gt; 
&gt; Many WTF header files end with using WTF::Something;
&gt; Let&apos;s do that instead of this.
&gt; Then we can also replace the WTF::Logger with Logger

Good idea, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379613</commentid>
    <comment_count>7</comment_count>
      <attachid>328827</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-12-08 10:11:43 -0800</bug_when>
    <thetext>Created attachment 328827
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379729</commentid>
    <comment_count>8</comment_count>
      <attachid>328827</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-08 12:33:57 -0800</bug_when>
    <thetext>Comment on attachment 328827
Patch for landing

Clearing flags on attachment: 328827

Committed r225696: &lt;https://trac.webkit.org/changeset/225696&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328763</attachid>
            <date>2017-12-07 17:40:44 -0800</date>
            <delta_ts>2017-12-07 18:14:45 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>move_to_wtf_patch_1.txt</filename>
            <type>text/plain</type>
            <size>64532</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEyLTA3ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgTG9nZ2VyIGZyb20gUEFMIHRvIFdU
RiBzbyBpdCBjYW4gYmUgdXNlZCBvdXRzaWRlIG9mIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU2MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0xvZ2dlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL0xvZ2dlci5oLgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDo6dG9TdHJpbmcp
OiBEZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dnZXI6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChQQUw6OkxvZ2dlcjo6bG9nQWx3YXlzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFBB
TDo6TG9nZ2VyOjplcnJvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6
d2FybmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6aW5mbyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6ZGVidWcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoUEFMOjpMb2dnZXI6OndpbGxMb2cgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoUEFMOjpMb2dnZXI6OmVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpM
b2dnZXI6OnNldEVuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dnZXI6OkxvZ1Np
dGVJZGVudGlmaWVyOjpMb2dTaXRlSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChQQUw6
OkxvZ2dlcjo6YWRkT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dnZXI6OnJl
bW92ZU9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFBBTDo6TG9nZ2VyOjpMb2dnZXIpOiBE
ZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dnZXI6OmxvZyk6IERlbGV0ZWQuCisgICAgICAgIChQ
QUw6OkxvZ2dlcjo6b2JzZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFBBTDo6TG9nQXJndW1l
bnQ8TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcj46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvTG9nZ2VySGVscGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvTG9nZ2VySGVscGVyLmguCisKIDIwMTctMTItMDYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yaW5nOiBSZW5hbWUgU2NyYW1ibGVkUHRyIHRvIFBv
aXNvbmVkLgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDggQEAKIC8qIEVuZCBQQlhDb250YWlu
ZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KKwkJMDc3Q0Q4NkExRkQ5Q0ZEMjAwODI4NTg3IC8qIExvZ2dlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDc3Q0Q4NkIxRkQ5Q0ZEMzAwODI4NTg3IC8qIExvZ2dlckhlbHBlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnZXJIZWxwZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwRDg1QjMxNzIzNENCMTAwMzM4MjEwIC8qIE5vTG9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOb0xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwRjUy
NjkxRjQyMUZGODAwNEE0NTJDIC8qIFN0cmluZ01hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJpbmdNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBGNTI2
QTFGNDIxRkY4MDA0QTQ1MkMgLyogU3RyaW5nTWFsbG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmlu
Z01hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTA4LDYgKzkxMCw4IEBA
CiAJCQkJMEY2MEYzMkUxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmggKi8s
CiAJCQkJQThBNDcyQzMxNTFBODI1QTAwNDEyM0ZGIC8qIExvY2tlci5oICovLAogCQkJCTUzMTFC
RDU1MUVBN0UxNUEwMDUyNTI4MSAvKiBMb2NrbGVzc0JhZy5oICovLAorCQkJCTA3N0NEODZBMUZE
OUNGRDIwMDgyODU4NyAvKiBMb2dnZXIuaCAqLywKKwkJCQkwNzdDRDg2QjFGRDlDRkQzMDA4Mjg1
ODcgLyogTG9nZ2VySGVscGVyLmggKi8sCiAJCQkJNTEzRTE3MEExQ0Q3RDVCRjAwRTM2NTBCIC8q
IExvZ2dpbmdBY2N1bXVsYXRvci5oICovLAogCQkJCTBGMzBCQThDMUU3ODcwOEUwMDJDQTg0NyAv
KiBMb2dnaW5nSGFzaElELmggKi8sCiAJCQkJMEYzMEJBOEQxRTc4NzA4RTAwMkNBODQ3IC8qIExv
Z2dpbmdIYXNoTWFwLmggKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaAkocmV2aXNpb24gMjI1NjI4KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dlci5oOjIyNTYyOCkKKysrIFNvdXJjZS9XVEYvd3Rm
L0xvZ2dlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBQQUwgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IExvZ0FyZ3VtZW50IHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxV
LCBib29sPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoYm9vbCBhcmd1bWVudCkgeyBy
ZXR1cm4gYXJndW1lbnQgPyBBU0NJSUxpdGVyYWwoInRydWUiKSA6IEFTQ0lJTGl0ZXJhbCgiZmFs
c2UiKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGludD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRv
U3RyaW5nKGludCBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3NhbWU8VSwgdW5zaWduZWQ+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0
cmluZyh1bnNpZ25lZCBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQp
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgdW5zaWduZWQgbG9uZz46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKHVuc2lnbmVkIGxvbmcgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVt
YmVyKGFyZ3VtZW50KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGxvbmc+Ojp2YWx1ZSwgU3RyaW5n
Pjo6dHlwZSB0b1N0cmluZyhsb25nIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihh
cmd1bWVudCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBmbG9hdD46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKGZsb2F0IGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1
bWVudCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBkb3VibGU+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlw
ZSB0b1N0cmluZyhkb3VibGUgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3Vt
ZW50KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxV
Pjo6dHlwZSwgQXRvbWljU3RyaW5nPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoQXRv
bWljU3RyaW5nIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC5zdHJpbmcoKTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSwgU3RyaW5n
Pjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoU3RyaW5nIGFyZ3VtZW50KSB7IHJldHVy
biBhcmd1bWVudDsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxVPjo6dHlwZSwgU3RyaW5nQnVpbGRlcio+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0
cmluZyhTdHJpbmdCdWlsZGVyKiBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQtPnRvU3RyaW5n
KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBjb25zdCBjaGFyKj46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKGNvbnN0IGNoYXIqIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmcoYXJndW1l
bnQpOyB9CisgICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBjaGFyICgmYXJndW1lbnQpW2xlbmd0aF0pIHsgcmV0dXJuIFN0cmluZyhhcmd1bWVu
dCk7IH0KK307CisKK2NsYXNzIExvZ2dlciA6IHB1YmxpYyBSZWZDb3VudGVkPExvZ2dlcj4gewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvZ2dlcik7CitwdWJsaWM6CisKKyAgICBjbGFzcyBP
YnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVm
YXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hh
bm5lbCYsIFdURkxvZ0xldmVsLCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgfTsKKworICAgIHN0
YXRpYyBSZWY8TG9nZ2VyPiBjcmVhdGUoY29uc3Qgdm9pZCogb3duZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2dnZXIob3duZXIpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgaW5saW5lIHZvaWQgbG9nQWx3YXlzKFdU
RkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFVOVVNFRF9GVU5DVElPTiBjb25zdCBBcmd1bWVudHMmLi4u
IGFyZ3VtZW50cykgY29uc3QKKyAgICB7CisjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAg
ICAgLy8gIlN0YW5kYXJkIiBXZWJDb3JlIGxvZ2dpbmcgZ29lcyB0byBzdGRlcnIsIHdoaWNoIGlz
IGNhcHR1cmVkIGluIGxheW91dCB0ZXN0IG91dHB1dCBhbmQgY2FuIGdlbmVyYWxseSBiZSBhIHBy
b2JsZW0KKyAgICAgICAgLy8gIG9uIHNvbWUgc3lzdGVtcywgc28gZG9uJ3QgYWxsb3cgaXQuCisg
ICAgICAgIFVOVVNFRF9QQVJBTShjaGFubmVsKTsKKyNlbHNlCisgICAgICAgIGlmICghd2lsbExv
ZyhjaGFubmVsLCBXVEZMb2dMZXZlbEFsd2F5cykpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgbG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsQWx3YXlzLCBhcmd1bWVudHMuLi4pOworI2Vu
ZGlmCisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIGlu
bGluZSB2b2lkIGVycm9yKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYu
Li4gYXJndW1lbnRzKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCF3aWxsTG9nKGNoYW5uZWws
IFdURkxvZ0xldmVsRXJyb3IpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxvZyhj
aGFubmVsLCBXVEZMb2dMZXZlbEVycm9yLCBhcmd1bWVudHMuLi4pOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9pZCB3YXJuaW5nKFdU
RkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYuLi4gYXJndW1lbnRzKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKCF3aWxsTG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsV2Fybmlu
ZykpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbG9nKGNoYW5uZWwsIFdURkxvZ0xl
dmVsV2FybmluZywgYXJndW1lbnRzLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CisgICAgaW5saW5lIHZvaWQgaW5mbyhXVEZMb2dDaGFubmVsJiBjaGFu
bmVsLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghd2lsbExvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEluZm8pKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGxvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEluZm8sIGFyZ3VtZW50cy4u
Lik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIGlu
bGluZSB2b2lkIGRlYnVnKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYu
Li4gYXJndW1lbnRzKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCF3aWxsTG9nKGNoYW5uZWws
IFdURkxvZ0xldmVsRGVidWcpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxvZyhj
aGFubmVsLCBXVEZMb2dMZXZlbERlYnVnLCBhcmd1bWVudHMuLi4pOworICAgIH0KKworICAgIGlu
bGluZSBib29sIHdpbGxMb2coY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2
ZWwgbGV2ZWwpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAobGV2ZWwgPD0gV1RGTG9nTGV2ZWxFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGlmIChjaGFubmVsLnN0YXRl
ID09IFdURkxvZ0NoYW5uZWxPZmYgfHwgbGV2ZWwgPiBjaGFubmVsLmxldmVsKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgfQorCisg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisgICAgdm9pZCBz
ZXRFbmFibGVkKGNvbnN0IHZvaWQqIG93bmVyLCBib29sIGVuYWJsZWQpCisgICAgeworICAgICAg
ICBBU1NFUlQob3duZXIgPT0gbV9vd25lcik7CisgICAgICAgIGlmIChvd25lciA9PSBtX293bmVy
KQorICAgICAgICAgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKyAgICB9CisKKyAgICBzdHJ1Y3Qg
TG9nU2l0ZUlkZW50aWZpZXIgeworICAgICAgICBMb2dTaXRlSWRlbnRpZmllcihjb25zdCBjaGFy
KiBtZXRob2ROYW1lLCBjb25zdCB2b2lkKiBvYmplY3RQdHIpCisgICAgICAgICAgICA6IG1ldGhv
ZE5hbWUgeyBtZXRob2ROYW1lIH0KKyAgICAgICAgICAgICwgb2JqZWN0UHRyIHsgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KG9iamVjdFB0cikgfQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICBMb2dTaXRlSWRlbnRpZmllcihjb25zdCBjaGFyKiBjbGFzc05hbWUsIGNvbnN0IGNo
YXIqIG1ldGhvZE5hbWUsIGNvbnN0IHZvaWQqIG9iamVjdFB0cikKKyAgICAgICAgICAgIDogY2xh
c3NOYW1lIHsgY2xhc3NOYW1lIH0KKyAgICAgICAgICAgICwgbWV0aG9kTmFtZSB7IG1ldGhvZE5h
bWUgfQorICAgICAgICAgICAgLCBvYmplY3RQdHIgeyByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4ob2JqZWN0UHRyKSB9CisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGNo
YXIqIGNsYXNzTmFtZSB7IG51bGxwdHIgfTsKKyAgICAgICAgY29uc3QgY2hhciogbWV0aG9kTmFt
ZSB7IG51bGxwdHIgfTsKKyAgICAgICAgY29uc3QgdWludHB0cl90IG9iamVjdFB0ciB7IDAgfTsK
KyAgICB9OworCisgICAgc3RhdGljIGlubGluZSB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyJiBv
YnNlcnZlcikKKyAgICB7CisgICAgICAgIG9ic2VydmVycygpLmFwcGVuZChvYnNlcnZlcik7Cisg
ICAgfQorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYgb2Jz
ZXJ2ZXIpCisgICAgeworICAgICAgICBvYnNlcnZlcnMoKS5yZW1vdmVGaXJzdE1hdGNoaW5nKFsm
b2JzZXJ2ZXJdKGF1dG8gYW5PYnNlcnZlcikgeworICAgICAgICAgICAgcmV0dXJuICZhbk9ic2Vy
dmVyLmdldCgpID09ICZvYnNlcnZlcjsKKyAgICAgICAgfSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIExvZ2dlcihjb25zdCB2b2lkKiBvd25lcikKKyAgICAgICAgOiBtX293bmVyIHsgb3duZXIg
fQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudD4KKyAg
ICBzdGF0aWMgaW5saW5lIHZvaWQgbG9nKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xl
dmVsIGxldmVsLCBjb25zdCBBcmd1bWVudCYuLi4gYXJndW1lbnRzKQorICAgIHsKKyAgICAgICAg
U3RyaW5nIGxvZ01lc3NhZ2UgPSBtYWtlU3RyaW5nKExvZ0FyZ3VtZW50PEFyZ3VtZW50Pjo6dG9T
dHJpbmcoYXJndW1lbnRzKS4uLik7CisKKyNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICAg
ICBXVEZMb2coJmNoYW5uZWwsICIlcyIsIGxvZ01lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisjZWxz
ZQorICAgICAgICBvc19sb2coY2hhbm5lbC5vc0xvZ0NoYW5uZWwsICIle3B1YmxpY31zIiwgbG9n
TWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorCisgICAgICAgIGlmIChjaGFubmVsLnN0
YXRlID09IFdURkxvZ0NoYW5uZWxPZmYgfHwgbGV2ZWwgPiBjaGFubmVsLmxldmVsKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogb2JzZXJ2
ZXJzKCkpCisgICAgICAgICAgICBvYnNlcnZlci5kaWRMb2dNZXNzYWdlKGNoYW5uZWwsIGxldmVs
LCBsb2dNZXNzYWdlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8T2JzZXJ2ZXI+PiYgb2JzZXJ2ZXJzKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxPYnNlcnZlcj4+PiBv
YnNlcnZlcnM7CisgICAgICAgIHJldHVybiBvYnNlcnZlcnM7CisgICAgfQorCisgICAgY29uc3Qg
dm9pZCogbV9vd25lcjsKKyAgICBib29sIG1fZW5hYmxlZCB7IHRydWUgfTsKK307CisKK3RlbXBs
YXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcj4gewor
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmll
ciYgdmFsdWUpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICAg
ICAgaWYgKHZhbHVlLmNsYXNzTmFtZSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodmFs
dWUuY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjoiKTsK
KyAgICAgICAgfQorICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZS5tZXRob2ROYW1lKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoIik7CisgICAgICAgIGFwcGVuZFVuc2lnbmVk
NjRBc0hleCh2YWx1ZS5vYmplY3RQdHIsIGJ1aWxkZXIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIikgIik7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgUEFMCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaAkocmV2aXNpb24gMjI1NjI4
KQorKysgU291cmNlL1dURi93dGYvTG9nZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgTG9nQXJndW1lbnQgewpAQCAtMjIxLDQgKzIy
MSw0IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxMb2dnZXI6OkxvZ1NpdGVJZGVudGkKICAgICB9CiB9
OwogCi19IC8vIG5hbWVzcGFjZSBQQUwKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNl
L1dURi93dGYvTG9nZ2VySGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTG9n
Z2VySGVscGVyLmgJKHJldmlzaW9uIDIyNTYyOCkJKGZyb20gU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9Mb2dnZXJIZWxwZXIuaDoyMjU2MjgpCisrKyBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXJIZWxwZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBQQUwgewor
CitjbGFzcyBMb2dnZXI7CisKK2NsYXNzIExvZ2dlckhlbHBlciB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+TG9nZ2VySGVscGVyKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBjb25zdCBMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxvZ0NsYXNz
TmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29u
c3QgPSAwOworCisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKworI2RlZmluZSBMT0dJREVO
VElGSUVSIFBBTDo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihsb2dDbGFzc05hbWUoKSwgX19m
dW5jX18sIGxvZ0lkZW50aWZpZXIoKSkKKworI2RlZmluZSBBTFdBWVNfTE9HKC4uLikgICAgIGxv
Z2dlcigpLmxvZ0Fsd2F5cyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBFUlJP
Ul9MT0coLi4uKSAgICAgIGxvZ2dlcigpLmVycm9yKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18p
CisjZGVmaW5lIFdBUk5JTkdfTE9HKC4uLikgICAgbG9nZ2VyKCkud2FybmluZyhsb2dDaGFubmVs
KCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBOT1RJQ0VfTE9HKC4uLikgICAgIGxvZ2dlcigpLm5v
dGljZShsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBJTkZPX0xPRyguLi4pICAg
ICAgIGxvZ2dlcigpLmluZm8obG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgREVC
VUdfTE9HKC4uLikgICAgICBsb2dnZXIoKS5kZWJ1Zyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19f
KQorI2RlZmluZSBXSUxMX0xPRyhfbGV2ZWxfKSAgIGxvZ2dlcigpLndpbGxMb2cobG9nQ2hhbm5l
bCgpLCBfbGV2ZWxfKQorCisjZWxzZQorCisjZGVmaW5lIExPR0lERU5USUZJRVIgKCh2b2lkKTAp
CisKKyNkZWZpbmUgQUxXQVlTX0xPRyguLi4pICAgICAoKHZvaWQpMCkKKyNkZWZpbmUgRVJST1Jf
TE9HKC4uLikgICAgICAoKHZvaWQpMCkKKyNkZWZpbmUgRVJST1JfTE9HKC4uLikgICAgICAoKHZv
aWQpMCkKKyNkZWZpbmUgV0FSTklOR19MT0coLi4uKSAgICAoKHZvaWQpMCkKKyNkZWZpbmUgTk9U
SUNFX0xPRyguLi4pICAgICAoKHZvaWQpMCkKKyNkZWZpbmUgSU5GT19MT0coLi4uKSAgICAgICAo
KHZvaWQpMCkKKyNkZWZpbmUgREVCVUdfTE9HKC4uLikgICAgICAoKHZvaWQpMCkKKyNkZWZpbmUg
V0lMTF9MT0coX2xldmVsXykgICBmYWxzZQorCisjZW5kaWYKKyAgICAKK307CisKK30gLy8gbmFt
ZXNwYWNlIFBBTApJbmRleDogU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgJKHJldmlzaW9uIDIyNTYyOCkKKysr
IFNvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsy
NSw5IEBACiAKICNwcmFnbWEgb25jZQogCi1uYW1lc3BhY2UgUEFMIHsKKyNpbmNsdWRlIDx3dGYv
TG9nZ2VyLmg+CiAKLWNsYXNzIExvZ2dlcjsKK25hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBMb2dn
ZXJIZWxwZXIgewogcHVibGljOgpAQCAtMzgsMTAgKzM4LDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNv
bnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKLQogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogCi0jZGVmaW5lIExPR0lERU5USUZJRVIgUEFMOjpMb2dnZXI6OkxvZ1NpdGVJ
ZGVudGlmaWVyKGxvZ0NsYXNzTmFtZSgpLCBfX2Z1bmNfXywgbG9nSWRlbnRpZmllcigpKQorI2Rl
ZmluZSBMT0dJREVOVElGSUVSIFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihsb2dDbGFz
c05hbWUoKSwgX19mdW5jX18sIGxvZ0lkZW50aWZpZXIoKSkKIAogI2RlZmluZSBBTFdBWVNfTE9H
KC4uLikgICAgIGxvZ2dlcigpLmxvZ0Fsd2F5cyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQog
I2RlZmluZSBFUlJPUl9MT0coLi4uKSAgICAgIGxvZ2dlcigpLmVycm9yKGxvZ0NoYW5uZWwoKSwg
X19WQV9BUkdTX18pCkBAIC02OCw0ICs2Nyw0IEBAIHB1YmxpYzoKICAgICAKIH07CiAKLX0gLy8g
bmFtZXNwYWNlIFBBTAorfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw2OSBAQAorMjAxNy0xMi0wNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIExvZ2dlciBmcm9tIFBBTCB0byBXVEYgc28gaXQgY2Fu
IGJlIHVzZWQgb3V0c2lkZSBvZiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDoKKyAgICAgICAg
KFBBTDo6TG9nQXJndW1lbnQ8d2VicnRjOjpSVENTdGF0cz46OnRvU3RyaW5nKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChQQUw6OkxvZ0Fy
Z3VtZW50PFdlYkNvcmU6OlVSTD46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnRFbnVt
cy5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlJlYWR5U3RhdGU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6Okxv
Z0FyZ3VtZW50PFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6TmV0d29ya1N0YXRlPjo6
dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpsb2dnZXIgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oOgorICAgICAgICAqIGh0bWwv
dHJhY2svRGF0YUN1ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpEYXRh
Q3VlPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OlRleHRUcmFja0N1ZT46
OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUdl
bmVyaWMuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
R2VuZXJpYz46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNr
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNrQmFzZTo6VHJhY2tCYXNlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrQmFz
ZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmg6CisgICAgICAgIChQQUw6OkxvZ0Fy
Z3VtZW50PFdlYkNvcmU6OlZUVEN1ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAo
UEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YT46OnRvU3RyaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjptZWRpYVBsYXllckxvZ2dlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8TWVkaWFUaW1lPjo6dG9TdHJpbmcp
OgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXVEY6Ok1lZGlhVGltZT46OnRvU3RyaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmg6
CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJl
YWR5U3RhdGU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50
PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZT46OnRvU3RyaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2U6OnNldExvZ2dlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5oOgorICAgICAgICAoUEFMOjpM
b2dBcmd1bWVudDxXZWJDb3JlOjpSVENJY2VDb25uZWN0aW9uU3RhdGU+Ojp0b1N0cmluZyk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlR2F0aGVyaW5nU3Rh
dGUuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6UlRDSWNlR2F0aGVyaW5n
U3RhdGU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxX
ZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvblN0YXRlPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1NpZ25hbGluZ1N0YXRlLmg6CisgICAgICAg
IChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OlJUQ1NpZ25hbGluZ1N0YXRlPjo6dG9TdHJpbmcp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgorCiAyMDE3LTEyLTA3ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIEZyZWV6
ZSBXZWJLaXQgdmVyc2lvbiBpbiB1c2VyIGFnZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgJ
KHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDcgQEAK
ICNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uLmgiCiAjaW5jbHVkZSAiUlRDU2lnbmFsaW5nU3RhdGUuaCIKLSNpbmNsdWRlIDxwYWwv
TG9nZ2VyLmg+Ci0jaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9M
b2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Nyw3ICs2Niw3IEBA
IHVzaW5nIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCA9IHN0ZDoKIAogY2xhc3MgUGVlckNv
bm5lY3Rpb25CYWNrZW5kCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgOiBwdWJsaWMg
UEFMOjpMb2dnZXJIZWxwZXIKKyAgICA6IHByaXZhdGUgV1RGOjpMb2dnZXJIZWxwZXIKICNlbmRp
ZgogewogcHVibGljOgpAQCAtMTIwLDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgYXBwbHlSb3RhdGlvbkZvck91dGdvaW5nVmlkZW9Tb3VyY2VzKCkgeyB9CiAKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBXVEY6OkxvZ2dlciYg
bG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25z
dCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlm
aWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlBlZXJDb25uZWN0aW9uQmFja2VuZCI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dD
aGFubmVsKCkgY29uc3QgZmluYWw7CkBAIC0xNzYsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UGVuZGluZ0lDRUNhbmRpZGF0ZT4gbV9wZW5kaW5nSUNFQ2FuZGlkYXRlczsKIAogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIFJlZjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dn
ZXI7CisgICAgUmVmPGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lk
KiBtX2xvZ0lkZW50aWZpZXI7CiAjZW5kaWYKICAgICBib29sIG1fbmVnb3RpYXRpb25OZWVkZWQg
eyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25TdGF0
ZS5oIgogI2luY2x1ZGUgIlJUQ1J0cFRyYW5zY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDU2lnbmFs
aW5nU3RhdGUuaCIKLSNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3Rm
L0xvZ2dlckhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcwLDcgKzcwLDcg
QEAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwKICAgICAsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhCiAgICAgLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECi0gICAgLCBwdWJsaWMgUEFMOjpMb2dnZXJIZWxwZXIKKyAgICAsIHBy
aXZhdGUgV1RGOjpMb2dnZXJIZWxwZXIKICNlbmRpZgogewogcHVibGljOgpAQCAtMTYwLDcgKzE2
MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFs
OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgUEFMOjpMb2dnZXImIGxv
Z2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qg
V1RGOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgp
OyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICJSVENQZWVyQ29ubmVjdGlvbiI7IH0KICAgICBXVEZMb2dDaGFubmVs
JiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToK
ICAgICBSVENQZWVyQ29ubmVjdGlvblN0YXRlIG1fY29ubmVjdGlvblN0YXRlIHsgUlRDUGVlckNv
bm5lY3Rpb25TdGF0ZTo6TmV3IH07CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBS
ZWY8Y29uc3QgUEFMOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZjxjb25zdCBXVEY6OkxvZ2dl
cj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgJKHJldmlzaW9u
IDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNyBA
QAogI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oIgogI2luY2x1ZGUgIlJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oIgogI2luY2x1ZGUgPFRpbWVyLmg+Ci0jaW5jbHVk
ZSA8cGFsL0xvZ2dlci5oPgotI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRl
IDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d2VicnRjL2FwaS9qc2VwLmg+CiAjaW5j
bHVkZSA8d2VicnRjL2FwaS9wZWVyY29ubmVjdGlvbmludGVyZmFjZS5oPgogI2luY2x1ZGUgPHdl
YnJ0Yy9wYy9wZWVyY29ubmVjdGlvbmZhY3RvcnkuaD4KQEAgLTYyLDcgKzYxLDcgQEAgY2xhc3Mg
TGliV2ViUlRDTWVkaWFFbmRwb2ludAogICAgICwgcHJpdmF0ZSB3ZWJydGM6OlBlZXJDb25uZWN0
aW9uT2JzZXJ2ZXIKICAgICAsIHByaXZhdGUgd2VicnRjOjpSVENTdGF0c0NvbGxlY3RvckNhbGxi
YWNrCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwdWJsaWMgUEFMOjpMb2dnZXJI
ZWxwZXIKKyAgICAsIHByaXZhdGUgV1RGOjpMb2dnZXJIZWxwZXIKICNlbmRpZgogewogcHVibGlj
OgpAQCAtMTM0LDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRPZmZlckFsbG93
VG9SZWNlaXZlVmlkZW8oKSBjb25zdDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAg
IGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dl
ci5nZXQoKTsgfQorICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFy
KiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTGliV2ViUlRDTWVkaWFFbmRw
b2ludCI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CkBA
IC0yMTMsMTQgKzIxMiwxNCBAQCBwcml2YXRlOgogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgaW50NjRfdCBtX3N0YXRzRmlyc3REZWxpdmVyZWRUaW1lc3RhbXAgeyAwIH07Ci0gICAg
UmVmPGNvbnN0IFBBTDo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWY8Y29uc3QgV1RGOjpMb2dn
ZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFj
ZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IExvZ0FyZ3VtZW50OwpA
QCAtMjMzLDYgKzIzMiw2IEBAIHN0cnVjdCBMb2dBcmd1bWVudDx3ZWJydGM6OlJUQ1N0YXRzPiB7
CiAgICAgfQogfTsKIAotfTsgLy8gbmFtZXNwYWNlIFBBTAorfTsgLy8gbmFtZXNwYWNlIFdURgog
CiAjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNp
b24gMjI1NjYyKQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDE3LTEyLTA3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgTG9nZ2VyIGZyb20gUEFMIHRvIFdURiBzbyBp
dCBjYW4gYmUgdXNlZCBvdXRzaWRlIG9mIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGFsL0xvZ2dlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBhbC9Mb2dnZXJI
ZWxwZXIuaDogUmVtb3ZlZC4KKwogMjAxNy0xMi0wNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRkIFNQSSB0byBkaXNhbGxvdyB1
c2VyLWluc3RhbGxlZCBmb250cwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dl
YkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw4ICsyMSw2IEBACiAvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KLQkJMDcwOEFDMzMxRjRDODc0QjAwMUY3
ODhGIC8qIExvZ2dlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwOEFDMzIxRjRDODc0QTAwMUY3ODhGIC8qIExvZ2dlci5oICovOyB9OwotCQkwNzM3
N0FEQzFGNTc3N0Q5MDAyN0YxNkQgLyogTG9nZ2VySGVscGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM3N0FEQjFGNTc3N0Q3MDAyN0YxNkQgLyog
TG9nZ2VySGVscGVyLmggKi87IH07CiAJCTBDMDBDRkQ0MUY2OENFNDYwMEFBQzI2RCAvKiBNZWRp
YVRpbWVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBDMDBDRkQyMUY2OENFNDYwMEFBQzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRp
b24uaCAqLzsgfTsKIAkJMEMyRDlFNzMxRUVGNUFGNjAwREJDMzE3IC8qIEV4cG9ydE1hY3Jvcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEMyRDlFNzIx
RUVGNUFGNjAwREJDMzE3IC8qIEV4cG9ydE1hY3Jvcy5oICovOyB9OwogCQkwQzJEQTA2RDFGMzND
QTg0MDBEQkMzMTcgLyogQ0ZMb2NhbGVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBDMkRBMDY3MUYzM0NBODQwMERCQzMxNyAvKiBDRkxvY2FsZVNQ
SS5oICovOyB9OwpAQCAtMTU5LDggKzE1Nyw2IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVBy
b3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCi0J
CTA3MDhBQzMyMUY0Qzg3NEEwMDFGNzg4RiAvKiBMb2dnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTG9nZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3
Mzc3QURCMUY1Nzc3RDcwMDI3RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9nZ2VySGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBDMDBDRkQxMUY2OENFNDYwMEFBQzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmNwcDsgcGF0aCA9IGF2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzAwQ0ZEMjFGNjhDRTQ2MDBBQUMyNkQg
LyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE1lZGlhVGltZUFWRm91bmRhdGlvbi5oOyBwYXRoID0gYXZmb3VuZGF0aW9uL01lZGlhVGlt
ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzJEOUU3MjFF
RUY1QUY2MDBEQkMzMTcgLyogRXhwb3J0TWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV4cG9ydE1hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDg3LDggKzQ4Myw2IEBACiAJCQkJRjQ0MjkxNjIxRkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVTaXpl
Rm9ybWF0dGVyLmNwcCAqLywKIAkJCQlGNDQyOTE1RjFGQTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNp
emVGb3JtYXR0ZXIuaCAqLywKIAkJCQlBMzlERTc0RDFGN0M0NDNDMDA3QkNCMDAgLyogSHlzdGVy
ZXNpc0FjdGl2aXR5LmggKi8sCi0JCQkJMDcwOEFDMzIxRjRDODc0QTAwMUY3ODhGIC8qIExvZ2dl
ci5oICovLAotCQkJCTA3Mzc3QURCMUY1Nzc3RDcwMDI3RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCAq
LywKIAkJCQkxQzQ4NzZENjFGOEQ3RjRFMDBDQ0VFQkQgLyogTG9nZ2luZy5jcHAgKi8sCiAJCQkJ
MUM0ODc2RDcxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuaCAqLywKIAkJCQkxQzQ4NzZERDFG
OEQ4MTJCMDBDQ0VFQkQgLyogTG9nSW5pdGlhbGl6YXRpb24uaCAqLywKQEAgLTY0NCw4ICs2Mzgs
NiBAQAogCQkJCUEzMEQ0MTIxMUYwREQwRUEwMEI3MTk1NCAvKiBLaWxsUmluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEM1QUY5MUMxRjQzQTRDNzAwMkVBQzAyIC8qIExhdW5jaFNlcnZpY2VzU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0NzFGM0JFQjQ5MDBEQkMzMTcgLyogTGlua1By
ZXNlbnRhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcwOEFDMzMxRjRDODc0QjAwMUY3
ODhGIC8qIExvZ2dlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDczNzdBREMxRjU3NzdEOTAwMjdG
MTZEIC8qIExvZ2dlckhlbHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM0ODc2RDkxRjhEN0Y0
RTAwQ0NFRUJEIC8qIExvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNzc4NThCMUY0NTEz
MEYwMEY0RUJCNiAvKiBMb29rdXBTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTQ4MUYz
QkVCNDkwMERCQzMxNyAvKiBNYWNoVk1TUEkuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvUEFML3BhbC9Mb2dnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL0xvZ2dlci5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL0xvZ2dlci5oCShub25leGlzdGVudCkKQEAgLTEsMjI0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFBBTCB7Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQgewotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PFUsIGJvb2w+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhib29sIGFyZ3VtZW50KSB7
IHJldHVybiBhcmd1bWVudCA/IEFTQ0lJTGl0ZXJhbCgidHJ1ZSIpIDogQVNDSUlMaXRlcmFsKCJm
YWxzZSIpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgaW50Pjo6dmFsdWUsIFN0cmluZz46OnR5cGUg
dG9TdHJpbmcoaW50IGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7
IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCB1bnNpZ25lZD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRv
U3RyaW5nKHVuc2lnbmVkIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVu
dCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCB1bnNpZ25lZCBsb25nPjo6dmFsdWUsIFN0cmluZz46
OnR5cGUgdG9TdHJpbmcodW5zaWduZWQgbG9uZyBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpu
dW1iZXIoYXJndW1lbnQpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgbG9uZz46OnZhbHVlLCBTdHJp
bmc+Ojp0eXBlIHRvU3RyaW5nKGxvbmcgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KGFyZ3VtZW50KTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGZsb2F0Pjo6dmFsdWUsIFN0cmluZz46
OnR5cGUgdG9TdHJpbmcoZmxvYXQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFy
Z3VtZW50KTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGRvdWJsZT46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKGRvdWJsZSBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJn
dW1lbnQpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNl
PFU+Ojp0eXBlLCBBdG9taWNTdHJpbmc+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhB
dG9taWNTdHJpbmcgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50LnN0cmluZygpOyB9Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBTdHJp
bmc+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhTdHJpbmcgYXJndW1lbnQpIHsgcmV0
dXJuIGFyZ3VtZW50OyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVm
ZXJlbmNlPFU+Ojp0eXBlLCBTdHJpbmdCdWlsZGVyKj46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRv
U3RyaW5nKFN0cmluZ0J1aWxkZXIqIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC0+dG9TdHJp
bmcoKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGNvbnN0IGNoYXIqPjo6dmFsdWUsIFN0cmluZz46
OnR5cGUgdG9TdHJpbmcoY29uc3QgY2hhciogYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZyhhcmd1
bWVudCk7IH0KLSAgICB0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPiBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKGNvbnN0IGNoYXIgKCZhcmd1bWVudClbbGVuZ3RoXSkgeyByZXR1cm4gU3RyaW5nKGFyZ3Vt
ZW50KTsgfQotfTsKLQotY2xhc3MgTG9nZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8TG9nZ2VyPiB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9nZ2VyKTsKLXB1YmxpYzoKLQotICAgIGNsYXNz
IE9ic2VydmVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBk
ZWZhdWx0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9nTWVzc2FnZShjb25zdCBXVEZMb2dD
aGFubmVsJiwgV1RGTG9nTGV2ZWwsIGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB9OwotCi0gICAg
c3RhdGljIFJlZjxMb2dnZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBvd25lcikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvZ2dlcihvd25lcikpOwotICAgIH0KLQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMo
V1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgVU5VU0VEX0ZVTkNUSU9OIGNvbnN0IEFyZ3VtZW50cyYu
Li4gYXJndW1lbnRzKSBjb25zdAotICAgIHsKLSNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAotICAg
ICAgICAvLyAiU3RhbmRhcmQiIFdlYkNvcmUgbG9nZ2luZyBnb2VzIHRvIHN0ZGVyciwgd2hpY2gg
aXMgY2FwdHVyZWQgaW4gbGF5b3V0IHRlc3Qgb3V0cHV0IGFuZCBjYW4gZ2VuZXJhbGx5IGJlIGEg
cHJvYmxlbQotICAgICAgICAvLyAgb24gc29tZSBzeXN0ZW1zLCBzbyBkb24ndCBhbGxvdyBpdC4K
LSAgICAgICAgVU5VU0VEX1BBUkFNKGNoYW5uZWwpOwotI2Vsc2UKLSAgICAgICAgaWYgKCF3aWxs
TG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsQWx3YXlzKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBsb2coY2hhbm5lbCwgV1RGTG9nTGV2ZWxBbHdheXMsIGFyZ3VtZW50cy4uLik7Ci0j
ZW5kaWYKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAg
aW5saW5lIHZvaWQgZXJyb3IoV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgY29uc3QgQXJndW1lbnRz
Ji4uLiBhcmd1bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXdpbGxMb2coY2hhbm5l
bCwgV1RGTG9nTGV2ZWxFcnJvcikpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbG9n
KGNoYW5uZWwsIFdURkxvZ0xldmVsRXJyb3IsIGFyZ3VtZW50cy4uLik7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIGlubGluZSB2b2lkIHdhcm5pbmco
V1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpIGNv
bnN0Ci0gICAgewotICAgICAgICBpZiAoIXdpbGxMb2coY2hhbm5lbCwgV1RGTG9nTGV2ZWxXYXJu
aW5nKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsb2coY2hhbm5lbCwgV1RGTG9n
TGV2ZWxXYXJuaW5nLCBhcmd1bWVudHMuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9pZCBpbmZvKFdURkxvZ0NoYW5uZWwmIGNo
YW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYuLi4gYXJndW1lbnRzKSBjb25zdAotICAgIHsKLSAgICAg
ICAgaWYgKCF3aWxsTG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsSW5mbykpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgbG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsSW5mbywgYXJndW1lbnRz
Li4uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAg
aW5saW5lIHZvaWQgZGVidWcoV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgY29uc3QgQXJndW1lbnRz
Ji4uLiBhcmd1bWVudHMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXdpbGxMb2coY2hhbm5l
bCwgV1RGTG9nTGV2ZWxEZWJ1ZykpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbG9n
KGNoYW5uZWwsIFdURkxvZ0xldmVsRGVidWcsIGFyZ3VtZW50cy4uLik7Ci0gICAgfQotCi0gICAg
aW5saW5lIGJvb2wgd2lsbExvZyhjb25zdCBXVEZMb2dDaGFubmVsJiBjaGFubmVsLCBXVEZMb2dM
ZXZlbCBsZXZlbCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9lbmFibGVkKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChsZXZlbCA8PSBXVEZMb2dMZXZlbEVy
cm9yKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKGNoYW5uZWwuc3Rh
dGUgPT0gV1RGTG9nQ2hhbm5lbE9mZiB8fCBsZXZlbCA+IGNoYW5uZWwubGV2ZWwpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsKLSAgICB9Ci0K
LSAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2b2lk
IHNldEVuYWJsZWQoY29uc3Qgdm9pZCogb3duZXIsIGJvb2wgZW5hYmxlZCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChvd25lciA9PSBtX293bmVyKTsKLSAgICAgICAgaWYgKG93bmVyID09IG1fb3du
ZXIpCi0gICAgICAgICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwotICAgIH0KLQotICAgIHN0cnVj
dCBMb2dTaXRlSWRlbnRpZmllciB7Ci0gICAgICAgIExvZ1NpdGVJZGVudGlmaWVyKGNvbnN0IGNo
YXIqIG1ldGhvZE5hbWUsIGNvbnN0IHZvaWQqIG9iamVjdFB0cikKLSAgICAgICAgICAgIDogbWV0
aG9kTmFtZSB7IG1ldGhvZE5hbWUgfQotICAgICAgICAgICAgLCBvYmplY3RQdHIgeyByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4ob2JqZWN0UHRyKSB9Ci0gICAgICAgIHsKLSAgICAgICAgfQot
Ci0gICAgICAgIExvZ1NpdGVJZGVudGlmaWVyKGNvbnN0IGNoYXIqIGNsYXNzTmFtZSwgY29uc3Qg
Y2hhciogbWV0aG9kTmFtZSwgY29uc3Qgdm9pZCogb2JqZWN0UHRyKQotICAgICAgICAgICAgOiBj
bGFzc05hbWUgeyBjbGFzc05hbWUgfQotICAgICAgICAgICAgLCBtZXRob2ROYW1lIHsgbWV0aG9k
TmFtZSB9Ci0gICAgICAgICAgICAsIG9iamVjdFB0ciB7IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihvYmplY3RQdHIpIH0KLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3Qg
Y2hhciogY2xhc3NOYW1lIHsgbnVsbHB0ciB9OwotICAgICAgICBjb25zdCBjaGFyKiBtZXRob2RO
YW1lIHsgbnVsbHB0ciB9OwotICAgICAgICBjb25zdCB1aW50cHRyX3Qgb2JqZWN0UHRyIHsgMCB9
OwotICAgIH07Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIm
IG9ic2VydmVyKQotICAgIHsKLSAgICAgICAgb2JzZXJ2ZXJzKCkuYXBwZW5kKG9ic2VydmVyKTsK
LSAgICB9Ci0gICAgc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJiBv
YnNlcnZlcikKLSAgICB7Ci0gICAgICAgIG9ic2VydmVycygpLnJlbW92ZUZpcnN0TWF0Y2hpbmco
WyZvYnNlcnZlcl0oYXV0byBhbk9ic2VydmVyKSB7Ci0gICAgICAgICAgICByZXR1cm4gJmFuT2Jz
ZXJ2ZXIuZ2V0KCkgPT0gJm9ic2VydmVyOwotICAgICAgICB9KTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgTG9nZ2VyKGNvbnN0IHZvaWQqIG93bmVyKQotICAgICAgICA6IG1fb3duZXIgeyBvd25l
ciB9Ci0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50Pgot
ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2coV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9n
TGV2ZWwgbGV2ZWwsIGNvbnN0IEFyZ3VtZW50Ji4uLiBhcmd1bWVudHMpCi0gICAgewotICAgICAg
ICBTdHJpbmcgbG9nTWVzc2FnZSA9IG1ha2VTdHJpbmcoTG9nQXJndW1lbnQ8QXJndW1lbnQ+Ojp0
b1N0cmluZyhhcmd1bWVudHMpLi4uKTsKLQotI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAg
ICAgIFdURkxvZygmY2hhbm5lbCwgIiVzIiwgbG9nTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSNl
bHNlCi0gICAgICAgIG9zX2xvZyhjaGFubmVsLm9zTG9nQ2hhbm5lbCwgIiV7cHVibGljfXMiLCBs
b2dNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwotI2VuZGlmCi0KLSAgICAgICAgaWYgKGNoYW5uZWwu
c3RhdGUgPT0gV1RGTG9nQ2hhbm5lbE9mZiB8fCBsZXZlbCA+IGNoYW5uZWwubGV2ZWwpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIgOiBvYnNl
cnZlcnMoKSkKLSAgICAgICAgICAgIG9ic2VydmVyLmRpZExvZ01lc3NhZ2UoY2hhbm5lbCwgbGV2
ZWwsIGxvZ01lc3NhZ2UpOwotICAgIH0KLQotICAgIHN0YXRpYyBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxPYnNlcnZlcj4+JiBvYnNlcnZlcnMoKQotICAgIHsKLSAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE9ic2VydmVyPj4+
IG9ic2VydmVyczsKLSAgICAgICAgcmV0dXJuIG9ic2VydmVyczsKLSAgICB9Ci0KLSAgICBjb25z
dCB2b2lkKiBtX293bmVyOwotICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OwotfTsKLQotdGVt
cGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyPiB7
Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBMb2dnZXI6OkxvZ1NpdGVJZGVudGlm
aWVyJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLQotICAg
ICAgICBpZiAodmFsdWUuY2xhc3NOYW1lKSB7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh2
YWx1ZS5jbGFzc05hbWUpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6OiIp
OwotICAgICAgICB9Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlLm1ldGhvZE5hbWUpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIigiKTsKLSAgICAgICAgYXBwZW5kVW5zaWdu
ZWQ2NEFzSGV4KHZhbHVlLm9iamVjdFB0ciwgYnVpbGRlcik7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiKSAiKTsKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLSAg
ICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBQQUwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvTG9nZ2VySGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9M
b2dnZXJIZWxwZXIuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9Mb2dnZXJIZWxwZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFt
ZXNwYWNlIFBBTCB7Ci0KLWNsYXNzIExvZ2dlcjsKLQotY2xhc3MgTG9nZ2VySGVscGVyIHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5Mb2dnZXJIZWxwZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0
dWFsIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgV1RGTG9nQ2hhbm5l
bCYgbG9nQ2hhbm5lbCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIGxvZ0lk
ZW50aWZpZXIoKSBjb25zdCA9IDA7Ci0KLQotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotCi0j
ZGVmaW5lIExPR0lERU5USUZJRVIgUEFMOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKGxvZ0Ns
YXNzTmFtZSgpLCBfX2Z1bmNfXywgbG9nSWRlbnRpZmllcigpKQotCi0jZGVmaW5lIEFMV0FZU19M
T0coLi4uKSAgICAgbG9nZ2VyKCkubG9nQWx3YXlzKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18p
Ci0jZGVmaW5lIEVSUk9SX0xPRyguLi4pICAgICAgbG9nZ2VyKCkuZXJyb3IobG9nQ2hhbm5lbCgp
LCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgV0FSTklOR19MT0coLi4uKSAgICBsb2dnZXIoKS53YXJu
aW5nKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE5PVElDRV9MT0coLi4uKSAg
ICAgbG9nZ2VyKCkubm90aWNlKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIElO
Rk9fTE9HKC4uLikgICAgICAgbG9nZ2VyKCkuaW5mbyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19f
KQotI2RlZmluZSBERUJVR19MT0coLi4uKSAgICAgIGxvZ2dlcigpLmRlYnVnKGxvZ0NoYW5uZWwo
KSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIFdJTExfTE9HKF9sZXZlbF8pICAgbG9nZ2VyKCkud2ls
bExvZyhsb2dDaGFubmVsKCksIF9sZXZlbF8pCi0KLSNlbHNlCi0KLSNkZWZpbmUgTE9HSURFTlRJ
RklFUiAoKHZvaWQpMCkKLQotI2RlZmluZSBBTFdBWVNfTE9HKC4uLikgICAgICgodm9pZCkwKQot
I2RlZmluZSBFUlJPUl9MT0coLi4uKSAgICAgICgodm9pZCkwKQotI2RlZmluZSBFUlJPUl9MT0co
Li4uKSAgICAgICgodm9pZCkwKQotI2RlZmluZSBXQVJOSU5HX0xPRyguLi4pICAgICgodm9pZCkw
KQotI2RlZmluZSBOT1RJQ0VfTE9HKC4uLikgICAgICgodm9pZCkwKQotI2RlZmluZSBJTkZPX0xP
RyguLi4pICAgICAgICgodm9pZCkwKQotI2RlZmluZSBERUJVR19MT0coLi4uKSAgICAgICgodm9p
ZCkwKQotI2RlZmluZSBXSUxMX0xPRyhfbGV2ZWxfKSAgIGZhbHNlCi0KLSNlbmRpZgotICAgIAot
fTsKLQotfSAvLyBuYW1lc3BhY2UgUEFMCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNiBAQAogI2luY2x1ZGUgPGN0aW1lPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suaD4KLSNpbmNsdWRlIDxwYWwvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjI1NjI4KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEy
ICs1MSwxMiBAQAogI2luY2x1ZGUgIlVzZXJBY3Rpb25FbGVtZW50U2V0LmgiCiAjaW5jbHVkZSAi
Vmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJWaXNpYmlsaXR5U3RhdGUuaCIKLSNpbmNs
dWRlIDxwYWwvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
TG9nZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KQEAg
LTMxMyw3ICszMTMsNyBAQCBjbGFzcyBEb2N1bWVudAogICAgICwgcHVibGljIEZvbnRTZWxlY3Rv
ckNsaWVudAogICAgICwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVi
bGljIFN1cHBsZW1lbnRhYmxlPERvY3VtZW50PgotICAgICwgcHVibGljIFBBTDo6TG9nZ2VyOjpP
YnNlcnZlciB7CisgICAgLCBwdWJsaWMgV1RGOjpMb2dnZXI6Ok9ic2VydmVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKICAgICB7CkBAIC0xMzcxLDcgKzEzNzEsNyBAQCBwdWJsaWM6CiAgICAgVGV4dEF1dG9T
aXppbmcmIHRleHRBdXRvU2l6aW5nKCk7CiAjZW5kaWYKIAotICAgIFBBTDo6TG9nZ2VyJiBsb2dn
ZXIoKTsKKyAgICBXVEY6OkxvZ2dlciYgbG9nZ2VyKCk7CiAKICAgICB2b2lkIGhhc1N0b3JhZ2VB
Y2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwYXNzZWRQcm9taXNlKTsKICAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcGFzc2VkUHJvbWlzZSk7
CkBAIC0xODU1LDcgKzE4NTUsNyBAQCBwcml2YXRlOgogCiAgICAgT3JpZW50YXRpb25Ob3RpZmll
ciBtX29yaWVudGF0aW9uTm90aWZpZXI7CiAgICAgbXV0YWJsZSBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKLSAgICBtdXRhYmxlIFJlZlB0cjxQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAg
bXV0YWJsZSBSZWZQdHI8V1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIFJlZlB0cjxTdHJpbmdD
YWxsYmFjaz4gbV9jb25zb2xlTWVzc2FnZUxpc3RlbmVyOwogCiAgICAgc3RhdGljIGJvb2wgaGFz
RXZlckNyZWF0ZWRBbkFYT2JqZWN0Q2FjaGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDYgQEAK
ICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVy
ZUluZGljYXRvci5oIgogI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDxwYWwvTG9nZ2VyLmg+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHBhbC9zeXN0ZW0vU2xlZXBE
aXNhYmxlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgpAQCAtMTY2LDcgKzE2
NSw3IEBACiAjaW5jbHVkZSAiVmlkZW9GdWxsc2NyZWVuTW9kZWwuaCIKICNlbmRpZgogCi1uYW1l
c3BhY2UgUEFMIHsKK25hbWVzcGFjZSBXVEYgewogdGVtcGxhdGUgPD4KIHN0cnVjdCBMb2dBcmd1
bWVudDxXZWJDb3JlOjpVUkw+IHsKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBACiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJpbGl0
eUNoYW5nZUNsaWVudC5oIgotI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTY2LDcgKzY2
LDYgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgUEFMIHsKLWNsYXNzIExvZ2dlcjsKIGNsYXNzIFNs
ZWVwRGlzYWJsZXI7CiB9CiAKQEAgLTE0MSw3ICsxNDAsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVt
ZW50CiAgICAgLCBwcml2YXRlIENETUNsaWVudAogI2VuZGlmCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECi0gICAgLCBwdWJsaWMgUEFMOjpMb2dnZXJIZWxwZXIKKyAgICAsIHByaXZhdGUgV1RG
OjpMb2dnZXJIZWxwZXIKICNlbmRpZgogewogcHVibGljOgpAQCAtNTQwLDcgKzUzOSw3IEBAIHB1
YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IFdURjo6TG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KICAg
ICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQogICAgIFdURkxvZ0No
YW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKICNlbmRpZgpAQCAtOTA2LDcgKzkwNSw3
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIkhUTUxNZWRpYUVsZW1lbnQiOyB9CiAKICAgICBjb25zdCB2b2lkKiBtZWRpYVBs
YXllckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBsb2dJZGVudGlmaWVyKCk7IH0KLSAg
ICBjb25zdCBQQUw6OkxvZ2dlciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSBmaW5hbCB7IHJldHVybiBs
b2dnZXIoKTsgfQorICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpIGZp
bmFsIHsgcmV0dXJuIGxvZ2dlcigpOyB9CiAjZW5kaWYKIAogICAgIFdlYWtQdHJGYWN0b3J5PEhU
TUxNZWRpYUVsZW1lbnQ+IG1fd2Vha0ZhY3Rvcnk7CkBAIC0xMTI3LDcgKzExMjYsNyBAQCBwcml2
YXRlOgogICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0IHsgMCB9OwogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmUHRyPFBBTDo6TG9nZ2VyPiBtX2xvZ2dlcjsK
KyAgICBSZWZQdHI8V1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIHVpbnQ2NF90IG1fbG9nSWRl
bnRpZmllcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnRFbnVtcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudEVudW1zLmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudEVudW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAg
U3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEhUTUxNZQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFR5cGU+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CkBAIC04NCw1ICs4NCw1IEBAIHN0
cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpIVE1MTWVkaWFFbGUKICAgICB9CiB9OwogCi19OyAv
LyBuYW1lc3BhY2UgUEFMCit9OyAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAkocmV2aXNpb24gMjI1NjI4KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODQ1LDcgKzg0NSw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lsbExvZyhX
VEZMb2cKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotY29uc3QgUEFMOjpMb2dnZXIm
IE1lZGlhRWxlbWVudFNlc3Npb246OmxvZ2dlcigpIGNvbnN0Citjb25zdCBXVEY6OkxvZ2dlciYg
TWVkaWFFbGVtZW50U2Vzc2lvbjo6bG9nZ2VyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9lbGVt
ZW50LmxvZ2dlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlICJTdWNjZXNzT3IuaCIKICNpbmNs
dWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3
dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01NCw5ICs1NCw5IEBAIGNsYXNzIFNvdXJjZUJ1ZmZlcjsKIAogY2xh
c3MgTWVkaWFFbGVtZW50U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwgcHVibGljIFBBTDo6TG9nZ2VySGVs
cGVyCisgICAgLCBwcml2YXRlIFdURjo6TG9nZ2VySGVscGVyCiAjZW5kaWYKLSAgICB7Cit7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWVkaWFF
bGVtZW50U2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50Jik7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHVi
bGljOgogICAgIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IFBBTDo6
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBXVEY6OkxvZ2dlciYgbG9n
Z2VyKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJNZWRpYUVsZW1lbnRTZXNzaW9uIjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5u
ZWwoKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCShy
ZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw3IEBAIGNvbnN0IERhdGFDdWUqIHRvRGF0YUN1
ZShjb25zdCBUZXh0VHJhY2sKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2Ug
UEFMIHsKK25hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0
IExvZ0FyZ3VtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBXVEYg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IExvZ0FyZ3VtZW50OwpAQCAtMTM0
LDcgKzEzNCw2IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpUZXh0VHJhY2tDdWUKICAg
ICB9CiB9OwogCi0KIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZUdlbmVyaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1u
YW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBl
Pgogc3RydWN0IExvZ0FyZ3VtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tCYXNlLmNwcAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1l
c3BhY2UgV1RGOwogCiBzdGF0aWMgaW50IHNfdW5pcXVlSWQgPSAwOwogCkBAIC00NSw5ICs0Niw5
IEBAIHN0YXRpYyBjb25zdCB2b2lkKiBuZXh0TG9nSWRlbnRpZmllcigpCiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCsrbG9nSWRlbnRpZmllcik7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8UEFMOjpMb2dnZXI+JiBudWxsTG9nZ2VyKCkKK3N0YXRpYyBSZWZQdHI8TG9nZ2Vy
PiYgbnVsbExvZ2dlcigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxQQUw6
OkxvZ2dlcj4+IGxvZ2dlcjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dl
cj4+IGxvZ2dlcjsKICAgICByZXR1cm4gbG9nZ2VyOwogfQogI2VuZGlmCkBAIC02NCw3ICs2NSw3
IEBAIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXQKIAogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIGlmICghbnVsbExvZ2dlcigpLmdldCgpKSB7Ci0gICAgICAg
IG51bGxMb2dnZXIoKSA9IFBBTDo6TG9nZ2VyOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG51bGxM
b2dnZXIoKSA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMpOwogICAgICAgICBudWxsTG9nZ2VyKCktPnNl
dEVuYWJsZWQodGhpcywgZmFsc2UpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrQmFzZS5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw3IEBACiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNsdWRlIDxwYWwvTG9nZ2VyLmg+Ci0jaW5jbHVk
ZSA8cGFsL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDAsNyArMzksNyBAQCBjbGFzcyBTb3VyY2VCdWZmZXI7CiBjbGFzcyBUcmFja0Jhc2UKICAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICAsIHByaXZhdGUgUEFMOjpMb2dnZXJIZWxwZXIKKyAgICAsIHByaXZhdGUgV1RGOjpM
b2dnZXJIZWxwZXIKICNlbmRpZgogewogcHVibGljOgpAQCAtNzUsNyArNzQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCA9IDA7CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKLSAgICBjb25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwg
eyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qg
V1RGOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0
dXJuICptX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBXVEZMb2dDaGFubmVs
JiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKQEAgLTk3LDcgKzk2LDcgQEAgcHJp
dmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKICAgICBBdG9taWNTdHJpbmcgbV92
YWxpZEJDUDQ3TGFuZ3VhZ2U7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmUHRy
PGNvbnN0IFBBTDo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dn
ZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNlbmRpZgog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAkocmV2aXNpb24gMjI1NjI4KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjI5LDcgKzIyOSw3IEBAIGNvbnN0IFZUVEN1ZSogdG9WVFRDdWUoY29uc3QgVGV4dFRyYWNrQ3UK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBX
VEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IExvZ0FyZ3VtZW50OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFu
ZFRleHRUcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAi
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIgotI2luY2x1ZGUgPHBhbC9Mb2dnZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dC5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3
ICsyNjQsNyBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNl
IFBBTCB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0cnVj
dCBMb2dBcmd1bWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgs
MTMgKzg4LDE0IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNw
YWNlIFdURjsKIAogY29uc3QgUGxhdGZvcm1NZWRpYSBOb1BsYXRmb3JtTWVkaWEgPSB7IFBsYXRm
b3JtTWVkaWE6Ok5vbmUsIHswfSB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1zdGF0
aWMgUmVmUHRyPFBBTDo6TG9nZ2VyPiYgbnVsbExvZ2dlcigpCitzdGF0aWMgUmVmUHRyPExvZ2dl
cj4mIG51bGxMb2dnZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8UEFM
OjpMb2dnZXI+PiBsb2dnZXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxMb2dn
ZXI+PiBsb2dnZXI7CiAgICAgcmV0dXJuIGxvZ2dlcjsKIH0KICNlbmRpZgpAQCAtMTcyLDEwICsx
NzMsMTAgQEAgcHVibGljOgogY2xhc3MgTnVsbE1lZGlhUGxheWVyQ2xpZW50IDogcHVibGljIE1l
ZGlhUGxheWVyQ2xpZW50IHsKIHB1YmxpYzoKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAg
ICBjb25zdCBQQUw6OkxvZ2dlciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSBmaW5hbAorICAgIGNvbnN0
IExvZ2dlciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKCFu
dWxsTG9nZ2VyKCkuZ2V0KCkpIHsKLSAgICAgICAgICAgIG51bGxMb2dnZXIoKSA9IFBBTDo6TG9n
Z2VyOjpjcmVhdGUodGhpcyk7CisgICAgICAgICAgICBudWxsTG9nZ2VyKCkgPSBMb2dnZXI6OmNy
ZWF0ZSh0aGlzKTsKICAgICAgICAgICAgIG51bGxMb2dnZXIoKS0+c2V0RW5hYmxlZCh0aGlzLCBm
YWxzZSk7CiAgICAgICAgIH0KIApAQCAtMTUwNyw3ICsxNTA4LDcgQEAgYm9vbCBNZWRpYVBsYXll
cjo6c2hvdWxkQ2hlY2tIYXJkd2FyZVN1cAogfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
Ci1jb25zdCBQQUw6OkxvZ2dlciYgTWVkaWFQbGF5ZXI6Om1lZGlhUGxheWVyTG9nZ2VyKCkKK2Nv
bnN0IExvZ2dlciYgTWVkaWFQbGF5ZXI6Om1lZGlhUGxheWVyTG9nZ2VyKCkKIHsKICAgICByZXR1
cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJMb2dnZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkocmV2aXNpb24gMjI1NjI4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDExIEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5IYXNo
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgot
I2luY2x1ZGUgPHBhbC9Mb2dnZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlci5oPgogI2luY2x1ZGUg
PHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CkBAIC0zMDMsNyArMzAzLDcgQEAgcHVibGljOgogCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgdmlydHVhbCBjb25zdCB2b2lkKiBtZWRpYVBsYXllckxvZ0lkZW50
aWZpZXIoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBjb25zdCBQQUw6OkxvZ2dl
ciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBXVEY6OkxvZ2dl
ciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTYzMyw3ICs2MzMs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0
OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgUEFMOjpMb2dnZXImIG1l
ZGlhUGxheWVyTG9nZ2VyKCk7CisgICAgY29uc3QgV1RGOjpMb2dnZXImIG1lZGlhUGxheWVyTG9n
Z2VyKCk7CiAgICAgY29uc3Qgdm9pZCogbWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1
cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCk7IH0KICNlbmRpZgogCkBAIC02
ODksMTQgKzY4OSwxNCBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFt
ZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4K
IHN0cnVjdCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxX
VEY6Ok1lZGlhVGltZT4gewotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV1RGOjpN
ZWRpYVRpbWUmIHRpbWUpCitzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lPiB7CisgICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGltZS50b1N0cmluZygpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51bXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgJKHJldmlzaW9uIDIy
NTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyRW51
bXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBXVEY6OlN0cmluZyBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhNCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIAotbmFtZXNw
YWNlIFBBTCB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0
cnVjdCBMb2dBcmd1bWVudDsKQEAgLTcxLDQgKzcxLDQgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFdl
YkNvcmU6Ok1lZGlhUGxheWVyRQogICAgIH0KIH07CiAKLX07IC8vIG5hbWVzcGFjZSBQQUwKK307
IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RyYWNrUHJpdmF0ZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCShyZXZpc2lvbiAyMjU2MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi12b2lkIFRyYWNrUHJpdmF0ZUJhc2U6OnNldExvZ2dlcihj
b25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQordm9p
ZCBUcmFja1ByaXZhdGVCYXNlOjpzZXRMb2dnZXIoY29uc3QgV1RGOjpMb2dnZXImIGxvZ2dlciwg
Y29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikKIHsKICAgICBtX2xvZ2dlciA9ICZsb2dnZXI7CiAg
ICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgJKHJldmlzaW9u
IDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0
ZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksNyBAQAogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogCi0jaW5jbHVkZSA8cGFsL0xvZ2dlci5oPgotI2luY2x1ZGUgPHBhbC9Mb2dn
ZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6
CiBjbGFzcyBUcmFja1ByaXZhdGVCYXNlCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8VHJhY2tQcml2YXRlQmFzZT4KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIHBy
aXZhdGUgUEFMOjpMb2dnZXJIZWxwZXIKKyAgICAsIHByaXZhdGUgV1RGOjpMb2dnZXJIZWxwZXIK
ICNlbmRpZgogewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRyYWNrUHJpdmF0ZUJhc2UpOwpA
QCAtNzQsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0gICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgUEFMOjpMb2dnZXImLCBjb25zdCB2b2lkKik7
Ci0gICAgY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgQVNTRVJUKG1f
bG9nZ2VyKTsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0TG9nZ2VyKGNv
bnN0IFdURjo6TG9nZ2VyJiwgY29uc3Qgdm9pZCopOworICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBs
b2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIu
Z2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgp
IGNvbnN0IGZpbmFsOwogI2VuZGlmCkBAIC04NCw3ICs4Myw3IEBAIHByb3RlY3RlZDoKICAgICBU
cmFja1ByaXZhdGVCYXNlKCkgPSBkZWZhdWx0OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
Ci0gICAgUmVmUHRyPGNvbnN0IFBBTDo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBSZWZQdHI8Y29u
c3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmll
cjsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsLm1tCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FW
UGxheWVySXRlbS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbVRyYWNrLmg+
CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHBhbC9Mb2dnZXIuaD4KICNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBAY2xhc3MgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KICNpbmNsdWRlIDxoZWFwL0hlYXBJbmxpbmVz
Lmg+Ci0jaW5jbHVkZSA8cGFsL0xvZ2dlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0YVZpZXcu
aD4KICNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9VaW50MTZBcnJheS5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxOCArMzIsMTQgQEAKICNpbmNs
dWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUg
PHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAotbmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBMb2dnZXI7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOwpAQCAtNTIsNyArNDgsNyBAQCBjbGFzcyBHZW5lcmljQ3VlRGF0YTsKIAogY2xhc3Mg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSwgcHVibGljIEFWRkluYmFuZFRyYWNrUGFyZW50CiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgLCBwcml2YXRlIFBBTDo6TG9nZ2VySGVscGVyCisgICAgLCBwcml2YXRl
IFdURjo6TG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTE1Myw3ICsxNDksNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0
IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQo
KTsgfQorICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24iOyB9CiAg
ICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KICAgICBXVEZMb2dD
aGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CkBAIC0zNTUsNyArMzUxLDcgQEAgcHJp
dmF0ZToKICAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBtX3ByZWxvYWQ7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICBSZWY8Y29uc3QgUEFMOjpMb2dnZXI+IG1fbG9nZ2VyOworICAg
IFJlZjxjb25zdCBXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJ
ZGVudGlmaWVyOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNp
b24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzQyMyw3ICszNDIzLDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
OmtleVBhdGggbwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fY2FsbGJh
Y2stPmxvZ2dlcigpLndpbGxMb2cobV9jYWxsYmFjay0+bG9nQ2hhbm5lbCgpLCBXVEZMb2dMZXZl
bERlYnVnKSAmJiAhKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZFRpbWVSYW5nZXMi
XSB8fCBba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXSkpIHsK
LSAgICAgICAgYXV0byBpZGVudGlmaWVyID0gUEFMOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVy
KCJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24iLCAib2JzZXJ2ZVZhbHVlRm9yS2V5UGF0
aCIsIG1fY2FsbGJhY2stPmxvZ0lkZW50aWZpZXIoKSk7CisgICAgICAgIGF1dG8gaWRlbnRpZmll
ciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uIiwgIm9ic2VydmVWYWx1ZUZvcktleVBhdGgiLCBtX2NhbGxiYWNrLT5sb2dJZGVu
dGlmaWVyKCkpOwogCiAgICAgICAgIGlmIChzaG91bGRMb2dWYWx1ZSkgewogICAgICAgICAgICAg
aWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImR1cmF0aW9uIl0pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDb25uZWN0aW9uU3RhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDb25u
ZWN0aW9uU3RhdGUuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDSWNlQ29ubmVjdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFJUQ0ljZQog
CiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBX
VEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IExvZ0FyZ3VtZW50OwpAQCAt
NTUsNiArNTUsNiBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6UlRDSWNlQ29ubmVjCiAg
ICAgfQogfTsKIAotfTsgLy8gbmFtZXNwYWNlIFBBTAorfTsgLy8gbmFtZXNwYWNlIFdURgogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUdh
dGhlcmluZ1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDSWNlR2F0aGVyaW5nU3RhdGUuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlR2F0aGVyaW5nU3RhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9u
VG9TdHJpbmcoUlRDSWNlCiAKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLW5hbWVzcGFjZSBQ
QUwgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiBzdHJ1Y3Qg
TG9nQXJndW1lbnQ7CkBAIC01Myw2ICs1Myw2IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3Jl
OjpSVENJY2VHYXRoZXIKICAgICB9CiB9OwogCi19OyAvLyBuYW1lc3BhY2UgUEFMCit9OyAvLyBu
YW1lc3BhY2UgV1RGCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uU3RhdGUuaAkocmV2
aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIFN0
cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhSVENQZWUKIAogfTsgLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotbmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVHlwZT4KIHN0cnVjdCBMb2dBcmd1bWVudDsKQEAgLTU0LDYgKzU0LDYgQEAgc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlJUQ1BlZXJDb25uZQogICAgIH0KIH07CiAKLX07IC8v
IG5hbWVzcGFjZSBQQUwKK307IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTaWduYWxpbmdTdGF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1NpZ25hbGlu
Z1N0YXRlLmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ1NpZ25hbGluZ1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFJUQ1NpZwogCiB9OyAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBXVEYgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IExvZ0FyZ3VtZW50OwpAQCAtNTMsNiArNTMs
NiBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6UlRDU2lnbmFsaW5nCiAgICAgfQogfTsK
IAotfTsgLy8gbmFtZXNwYWNlIFBBTAorfTsgLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eu
Y3BwCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNp
bmNsdWRlIDxwYWwvTG9nZ2VyLmg+CiAKICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExp
bmsuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328768</attachid>
            <date>2017-12-07 18:14:45 -0800</date>
            <delta_ts>2017-12-07 19:02:55 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>move_to_wtf_patch_2.txt</filename>
            <type>text/plain</type>
            <size>65887</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEyLTA3ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgTG9nZ2VyIGZyb20gUEFMIHRvIFdU
RiBzbyBpdCBjYW4gYmUgdXNlZCBvdXRzaWRlIG9mIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU2MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0xvZ2dlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL0xvZ2dlci5oLgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDo6dG9TdHJpbmcp
OiBEZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dnZXI6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChQQUw6OkxvZ2dlcjo6bG9nQWx3YXlzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFBB
TDo6TG9nZ2VyOjplcnJvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6
d2FybmluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6aW5mbyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6ZGVidWcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoUEFMOjpMb2dnZXI6OndpbGxMb2cgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoUEFMOjpMb2dnZXI6OmVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpM
b2dnZXI6OnNldEVuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dnZXI6OkxvZ1Np
dGVJZGVudGlmaWVyOjpMb2dTaXRlSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChQQUw6
OkxvZ2dlcjo6YWRkT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dnZXI6OnJl
bW92ZU9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFBBTDo6TG9nZ2VyOjpMb2dnZXIpOiBE
ZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dnZXI6OmxvZyk6IERlbGV0ZWQuCisgICAgICAgIChQ
QUw6OkxvZ2dlcjo6b2JzZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFBBTDo6TG9nQXJndW1l
bnQ8TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcj46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvTG9nZ2VySGVscGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvTG9nZ2VySGVscGVyLmguCisKIDIwMTctMTItMDYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yaW5nOiBSZW5hbWUgU2NyYW1ibGVkUHRyIHRvIFBv
aXNvbmVkLgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDggQEAKIC8qIEVuZCBQQlhDb250YWlu
ZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KKwkJMDc3Q0Q4NkExRkQ5Q0ZEMjAwODI4NTg3IC8qIExvZ2dlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDc3Q0Q4NkIxRkQ5Q0ZEMzAwODI4NTg3IC8qIExvZ2dlckhlbHBlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnZXJIZWxwZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwRDg1QjMxNzIzNENCMTAwMzM4MjEwIC8qIE5vTG9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOb0xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwRjUy
NjkxRjQyMUZGODAwNEE0NTJDIC8qIFN0cmluZ01hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJpbmdNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBGNTI2
QTFGNDIxRkY4MDA0QTQ1MkMgLyogU3RyaW5nTWFsbG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmlu
Z01hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTA4LDYgKzkxMCw4IEBA
CiAJCQkJMEY2MEYzMkUxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmggKi8s
CiAJCQkJQThBNDcyQzMxNTFBODI1QTAwNDEyM0ZGIC8qIExvY2tlci5oICovLAogCQkJCTUzMTFC
RDU1MUVBN0UxNUEwMDUyNTI4MSAvKiBMb2NrbGVzc0JhZy5oICovLAorCQkJCTA3N0NEODZBMUZE
OUNGRDIwMDgyODU4NyAvKiBMb2dnZXIuaCAqLywKKwkJCQkwNzdDRDg2QjFGRDlDRkQzMDA4Mjg1
ODcgLyogTG9nZ2VySGVscGVyLmggKi8sCiAJCQkJNTEzRTE3MEExQ0Q3RDVCRjAwRTM2NTBCIC8q
IExvZ2dpbmdBY2N1bXVsYXRvci5oICovLAogCQkJCTBGMzBCQThDMUU3ODcwOEUwMDJDQTg0NyAv
KiBMb2dnaW5nSGFzaElELmggKi8sCiAJCQkJMEYzMEJBOEQxRTc4NzA4RTAwMkNBODQ3IC8qIExv
Z2dpbmdIYXNoTWFwLmggKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaAkocmV2aXNpb24gMjI1NjI4KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dlci5oOjIyNTYyOCkKKysrIFNvdXJjZS9XVEYvd3Rm
L0xvZ2dlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBQQUwgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IExvZ0FyZ3VtZW50IHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxV
LCBib29sPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoYm9vbCBhcmd1bWVudCkgeyBy
ZXR1cm4gYXJndW1lbnQgPyBBU0NJSUxpdGVyYWwoInRydWUiKSA6IEFTQ0lJTGl0ZXJhbCgiZmFs
c2UiKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGludD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRv
U3RyaW5nKGludCBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3NhbWU8VSwgdW5zaWduZWQ+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0
cmluZyh1bnNpZ25lZCBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQp
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgdW5zaWduZWQgbG9uZz46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKHVuc2lnbmVkIGxvbmcgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVt
YmVyKGFyZ3VtZW50KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGxvbmc+Ojp2YWx1ZSwgU3RyaW5n
Pjo6dHlwZSB0b1N0cmluZyhsb25nIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihh
cmd1bWVudCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBmbG9hdD46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKGZsb2F0IGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1
bWVudCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBkb3VibGU+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlw
ZSB0b1N0cmluZyhkb3VibGUgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3Vt
ZW50KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxV
Pjo6dHlwZSwgQXRvbWljU3RyaW5nPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoQXRv
bWljU3RyaW5nIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC5zdHJpbmcoKTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSwgU3RyaW5n
Pjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoU3RyaW5nIGFyZ3VtZW50KSB7IHJldHVy
biBhcmd1bWVudDsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVy
ZW5jZTxVPjo6dHlwZSwgU3RyaW5nQnVpbGRlcio+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0
cmluZyhTdHJpbmdCdWlsZGVyKiBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQtPnRvU3RyaW5n
KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBjb25zdCBjaGFyKj46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKGNvbnN0IGNoYXIqIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmcoYXJndW1l
bnQpOyB9CisgICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBjaGFyICgmYXJndW1lbnQpW2xlbmd0aF0pIHsgcmV0dXJuIFN0cmluZyhhcmd1bWVu
dCk7IH0KK307CisKK2NsYXNzIExvZ2dlciA6IHB1YmxpYyBSZWZDb3VudGVkPExvZ2dlcj4gewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvZ2dlcik7CitwdWJsaWM6CisKKyAgICBjbGFzcyBP
YnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVm
YXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hh
bm5lbCYsIFdURkxvZ0xldmVsLCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgfTsKKworICAgIHN0
YXRpYyBSZWY8TG9nZ2VyPiBjcmVhdGUoY29uc3Qgdm9pZCogb3duZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2dnZXIob3duZXIpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgaW5saW5lIHZvaWQgbG9nQWx3YXlzKFdU
RkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFVOVVNFRF9GVU5DVElPTiBjb25zdCBBcmd1bWVudHMmLi4u
IGFyZ3VtZW50cykgY29uc3QKKyAgICB7CisjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAg
ICAgLy8gIlN0YW5kYXJkIiBXZWJDb3JlIGxvZ2dpbmcgZ29lcyB0byBzdGRlcnIsIHdoaWNoIGlz
IGNhcHR1cmVkIGluIGxheW91dCB0ZXN0IG91dHB1dCBhbmQgY2FuIGdlbmVyYWxseSBiZSBhIHBy
b2JsZW0KKyAgICAgICAgLy8gIG9uIHNvbWUgc3lzdGVtcywgc28gZG9uJ3QgYWxsb3cgaXQuCisg
ICAgICAgIFVOVVNFRF9QQVJBTShjaGFubmVsKTsKKyNlbHNlCisgICAgICAgIGlmICghd2lsbExv
ZyhjaGFubmVsLCBXVEZMb2dMZXZlbEFsd2F5cykpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgbG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsQWx3YXlzLCBhcmd1bWVudHMuLi4pOworI2Vu
ZGlmCisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIGlu
bGluZSB2b2lkIGVycm9yKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYu
Li4gYXJndW1lbnRzKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCF3aWxsTG9nKGNoYW5uZWws
IFdURkxvZ0xldmVsRXJyb3IpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxvZyhj
aGFubmVsLCBXVEZMb2dMZXZlbEVycm9yLCBhcmd1bWVudHMuLi4pOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9pZCB3YXJuaW5nKFdU
RkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYuLi4gYXJndW1lbnRzKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKCF3aWxsTG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsV2Fybmlu
ZykpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbG9nKGNoYW5uZWwsIFdURkxvZ0xl
dmVsV2FybmluZywgYXJndW1lbnRzLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CisgICAgaW5saW5lIHZvaWQgaW5mbyhXVEZMb2dDaGFubmVsJiBjaGFu
bmVsLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghd2lsbExvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEluZm8pKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGxvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEluZm8sIGFyZ3VtZW50cy4u
Lik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIGlu
bGluZSB2b2lkIGRlYnVnKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYu
Li4gYXJndW1lbnRzKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCF3aWxsTG9nKGNoYW5uZWws
IFdURkxvZ0xldmVsRGVidWcpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxvZyhj
aGFubmVsLCBXVEZMb2dMZXZlbERlYnVnLCBhcmd1bWVudHMuLi4pOworICAgIH0KKworICAgIGlu
bGluZSBib29sIHdpbGxMb2coY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2
ZWwgbGV2ZWwpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAobGV2ZWwgPD0gV1RGTG9nTGV2ZWxFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGlmIChjaGFubmVsLnN0YXRl
ID09IFdURkxvZ0NoYW5uZWxPZmYgfHwgbGV2ZWwgPiBjaGFubmVsLmxldmVsKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgfQorCisg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisgICAgdm9pZCBz
ZXRFbmFibGVkKGNvbnN0IHZvaWQqIG93bmVyLCBib29sIGVuYWJsZWQpCisgICAgeworICAgICAg
ICBBU1NFUlQob3duZXIgPT0gbV9vd25lcik7CisgICAgICAgIGlmIChvd25lciA9PSBtX293bmVy
KQorICAgICAgICAgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKyAgICB9CisKKyAgICBzdHJ1Y3Qg
TG9nU2l0ZUlkZW50aWZpZXIgeworICAgICAgICBMb2dTaXRlSWRlbnRpZmllcihjb25zdCBjaGFy
KiBtZXRob2ROYW1lLCBjb25zdCB2b2lkKiBvYmplY3RQdHIpCisgICAgICAgICAgICA6IG1ldGhv
ZE5hbWUgeyBtZXRob2ROYW1lIH0KKyAgICAgICAgICAgICwgb2JqZWN0UHRyIHsgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KG9iamVjdFB0cikgfQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICBMb2dTaXRlSWRlbnRpZmllcihjb25zdCBjaGFyKiBjbGFzc05hbWUsIGNvbnN0IGNo
YXIqIG1ldGhvZE5hbWUsIGNvbnN0IHZvaWQqIG9iamVjdFB0cikKKyAgICAgICAgICAgIDogY2xh
c3NOYW1lIHsgY2xhc3NOYW1lIH0KKyAgICAgICAgICAgICwgbWV0aG9kTmFtZSB7IG1ldGhvZE5h
bWUgfQorICAgICAgICAgICAgLCBvYmplY3RQdHIgeyByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4ob2JqZWN0UHRyKSB9CisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGNo
YXIqIGNsYXNzTmFtZSB7IG51bGxwdHIgfTsKKyAgICAgICAgY29uc3QgY2hhciogbWV0aG9kTmFt
ZSB7IG51bGxwdHIgfTsKKyAgICAgICAgY29uc3QgdWludHB0cl90IG9iamVjdFB0ciB7IDAgfTsK
KyAgICB9OworCisgICAgc3RhdGljIGlubGluZSB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyJiBv
YnNlcnZlcikKKyAgICB7CisgICAgICAgIG9ic2VydmVycygpLmFwcGVuZChvYnNlcnZlcik7Cisg
ICAgfQorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYgb2Jz
ZXJ2ZXIpCisgICAgeworICAgICAgICBvYnNlcnZlcnMoKS5yZW1vdmVGaXJzdE1hdGNoaW5nKFsm
b2JzZXJ2ZXJdKGF1dG8gYW5PYnNlcnZlcikgeworICAgICAgICAgICAgcmV0dXJuICZhbk9ic2Vy
dmVyLmdldCgpID09ICZvYnNlcnZlcjsKKyAgICAgICAgfSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIExvZ2dlcihjb25zdCB2b2lkKiBvd25lcikKKyAgICAgICAgOiBtX293bmVyIHsgb3duZXIg
fQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudD4KKyAg
ICBzdGF0aWMgaW5saW5lIHZvaWQgbG9nKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xl
dmVsIGxldmVsLCBjb25zdCBBcmd1bWVudCYuLi4gYXJndW1lbnRzKQorICAgIHsKKyAgICAgICAg
U3RyaW5nIGxvZ01lc3NhZ2UgPSBtYWtlU3RyaW5nKExvZ0FyZ3VtZW50PEFyZ3VtZW50Pjo6dG9T
dHJpbmcoYXJndW1lbnRzKS4uLik7CisKKyNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICAg
ICBXVEZMb2coJmNoYW5uZWwsICIlcyIsIGxvZ01lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisjZWxz
ZQorICAgICAgICBvc19sb2coY2hhbm5lbC5vc0xvZ0NoYW5uZWwsICIle3B1YmxpY31zIiwgbG9n
TWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorCisgICAgICAgIGlmIChjaGFubmVsLnN0
YXRlID09IFdURkxvZ0NoYW5uZWxPZmYgfHwgbGV2ZWwgPiBjaGFubmVsLmxldmVsKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogb2JzZXJ2
ZXJzKCkpCisgICAgICAgICAgICBvYnNlcnZlci5kaWRMb2dNZXNzYWdlKGNoYW5uZWwsIGxldmVs
LCBsb2dNZXNzYWdlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8T2JzZXJ2ZXI+PiYgb2JzZXJ2ZXJzKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxPYnNlcnZlcj4+PiBv
YnNlcnZlcnM7CisgICAgICAgIHJldHVybiBvYnNlcnZlcnM7CisgICAgfQorCisgICAgY29uc3Qg
dm9pZCogbV9vd25lcjsKKyAgICBib29sIG1fZW5hYmxlZCB7IHRydWUgfTsKK307CisKK3RlbXBs
YXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcj4gewor
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmll
ciYgdmFsdWUpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICAg
ICAgaWYgKHZhbHVlLmNsYXNzTmFtZSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodmFs
dWUuY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjoiKTsK
KyAgICAgICAgfQorICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZS5tZXRob2ROYW1lKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoIik7CisgICAgICAgIGFwcGVuZFVuc2lnbmVk
NjRBc0hleCh2YWx1ZS5vYmplY3RQdHIsIGJ1aWxkZXIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIikgIik7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgUEFMCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaAkocmV2aXNpb24gMjI1NjI4
KQorKysgU291cmNlL1dURi93dGYvTG9nZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgTG9nQXJndW1lbnQgewpAQCAtMjIxLDQgKzIy
MSw0IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxMb2dnZXI6OkxvZ1NpdGVJZGVudGkKICAgICB9CiB9
OwogCi19IC8vIG5hbWVzcGFjZSBQQUwKK30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNl
L1dURi93dGYvTG9nZ2VySGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTG9n
Z2VySGVscGVyLmgJKHJldmlzaW9uIDIyNTYyOCkJKGZyb20gU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9Mb2dnZXJIZWxwZXIuaDoyMjU2MjgpCisrKyBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXJIZWxwZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBQQUwgewor
CitjbGFzcyBMb2dnZXI7CisKK2NsYXNzIExvZ2dlckhlbHBlciB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+TG9nZ2VySGVscGVyKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBjb25zdCBMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxvZ0NsYXNz
TmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29u
c3QgPSAwOworCisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKworI2RlZmluZSBMT0dJREVO
VElGSUVSIFBBTDo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihsb2dDbGFzc05hbWUoKSwgX19m
dW5jX18sIGxvZ0lkZW50aWZpZXIoKSkKKworI2RlZmluZSBBTFdBWVNfTE9HKC4uLikgICAgIGxv
Z2dlcigpLmxvZ0Fsd2F5cyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBFUlJP
Ul9MT0coLi4uKSAgICAgIGxvZ2dlcigpLmVycm9yKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18p
CisjZGVmaW5lIFdBUk5JTkdfTE9HKC4uLikgICAgbG9nZ2VyKCkud2FybmluZyhsb2dDaGFubmVs
KCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBOT1RJQ0VfTE9HKC4uLikgICAgIGxvZ2dlcigpLm5v
dGljZShsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBJTkZPX0xPRyguLi4pICAg
ICAgIGxvZ2dlcigpLmluZm8obG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgREVC
VUdfTE9HKC4uLikgICAgICBsb2dnZXIoKS5kZWJ1Zyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19f
KQorI2RlZmluZSBXSUxMX0xPRyhfbGV2ZWxfKSAgIGxvZ2dlcigpLndpbGxMb2cobG9nQ2hhbm5l
bCgpLCBfbGV2ZWxfKQorCisjZWxzZQorCisjZGVmaW5lIExPR0lERU5USUZJRVIgKCh2b2lkKTAp
CisKKyNkZWZpbmUgQUxXQVlTX0xPRyguLi4pICAgICAoKHZvaWQpMCkKKyNkZWZpbmUgRVJST1Jf
TE9HKC4uLikgICAgICAoKHZvaWQpMCkKKyNkZWZpbmUgRVJST1JfTE9HKC4uLikgICAgICAoKHZv
aWQpMCkKKyNkZWZpbmUgV0FSTklOR19MT0coLi4uKSAgICAoKHZvaWQpMCkKKyNkZWZpbmUgTk9U
SUNFX0xPRyguLi4pICAgICAoKHZvaWQpMCkKKyNkZWZpbmUgSU5GT19MT0coLi4uKSAgICAgICAo
KHZvaWQpMCkKKyNkZWZpbmUgREVCVUdfTE9HKC4uLikgICAgICAoKHZvaWQpMCkKKyNkZWZpbmUg
V0lMTF9MT0coX2xldmVsXykgICBmYWxzZQorCisjZW5kaWYKKyAgICAKK307CisKK30gLy8gbmFt
ZXNwYWNlIFBBTApJbmRleDogU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgJKHJldmlzaW9uIDIyNTYyOCkKKysr
IFNvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsy
NSw5IEBACiAKICNwcmFnbWEgb25jZQogCi1uYW1lc3BhY2UgUEFMIHsKKyNpbmNsdWRlIDx3dGYv
TG9nZ2VyLmg+CiAKLWNsYXNzIExvZ2dlcjsKK25hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBMb2dn
ZXJIZWxwZXIgewogcHVibGljOgpAQCAtMzgsMTAgKzM4LDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNv
bnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKLQogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogCi0jZGVmaW5lIExPR0lERU5USUZJRVIgUEFMOjpMb2dnZXI6OkxvZ1NpdGVJ
ZGVudGlmaWVyKGxvZ0NsYXNzTmFtZSgpLCBfX2Z1bmNfXywgbG9nSWRlbnRpZmllcigpKQorI2Rl
ZmluZSBMT0dJREVOVElGSUVSIFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihsb2dDbGFz
c05hbWUoKSwgX19mdW5jX18sIGxvZ0lkZW50aWZpZXIoKSkKIAogI2RlZmluZSBBTFdBWVNfTE9H
KC4uLikgICAgIGxvZ2dlcigpLmxvZ0Fsd2F5cyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQog
I2RlZmluZSBFUlJPUl9MT0coLi4uKSAgICAgIGxvZ2dlcigpLmVycm9yKGxvZ0NoYW5uZWwoKSwg
X19WQV9BUkdTX18pCkBAIC02OCw0ICs2Nyw0IEBAIHB1YmxpYzoKICAgICAKIH07CiAKLX0gLy8g
bmFtZXNwYWNlIFBBTAorfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw2OSBAQAorMjAxNy0xMi0wNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIExvZ2dlciBmcm9tIFBBTCB0byBXVEYgc28gaXQgY2Fu
IGJlIHVzZWQgb3V0c2lkZSBvZiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIEFQSSB0ZXN0IHVwZGF0
ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50Lmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PHdlYnJ0Yzo6UlRDU3RhdHM+Ojp0
b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpVUkw+Ojp0b1N0cmluZyk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50RW51bXMuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpSZWFkeVN0YXRlPjo6dG9TdHJpbmcpOiBEZWxldGVk
LgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6Ok5ldHdvcmtTdGF0ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6bG9nZ2VyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24u
aDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0RhdGFDdWUuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJn
dW1lbnQ8V2ViQ29yZTo6RGF0YUN1ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJD
b3JlOjpUZXh0VHJhY2tDdWU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC90
cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
ICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dl
cik6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OlRyYWNrQmFzZSk6CisgICAgICAgICog
aHRtbC90cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5oOgor
ICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpWVFRDdWU+Ojp0b1N0cmluZyk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVD
bGllbnQuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6R2VuZXJpY0N1ZURh
dGE+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bnVsbExvZ2dlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dnZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PE1l
ZGlhVGltZT46OnRvU3RyaW5nKToKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V1RGOjpNZWRp
YVRpbWU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJFbnVtcy5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3Rh
dGU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVHJh
Y2tQcml2YXRlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlOjpz
ZXRMb2dnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJhc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKC1bV2ViQ29yZUFWRk1vdmll
T2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpd
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VDb25uZWN0aW9uU3RhdGUu
aDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6UlRDSWNlQ29ubmVjdGlvblN0
YXRlPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0ljZUdhdGhlcmluZ1N0YXRlLmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNv
cmU6OlJUQ0ljZUdhdGhlcmluZ1N0YXRlPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uU3RhdGUuaDoKKyAgICAgICAg
KFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25TdGF0ZT46OnRvU3Ry
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTaWduYWxp
bmdTdGF0ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENTaWduYWxp
bmdTdGF0ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcDoKKwogMjAxNy0x
Mi0wNyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV1bR1RLXSBGcmVlemUgV2ViS2l0IHZlcnNpb24gaW4gdXNlciBhZ2VudApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw4ICszNyw3IEBACiAjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlJUQ1NpZ25hbGluZ1N0YXRl
LmgiCi0jaW5jbHVkZSA8cGFsL0xvZ2dlci5oPgotI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIu
aD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjcsNyArNjYsNyBAQCB1c2luZyBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tlbmQgPSBz
dGQ6CiAKIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZAogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAotICAgIDogcHVibGljIFBBTDo6TG9nZ2VySGVscGVyCisgICAgOiBwcml2YXRlIFdURjo6
TG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTEyMCw3ICsxMTksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5Um90YXRpb25Gb3JPdXRnb2luZ1ZpZGVvU291cmNl
cygpIHsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgUEFMOjpMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAg
Y29uc3QgV1RGOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2Vy
LmdldCgpOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQiOyB9CiAgICAg
V1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwpAQCAtMTc2LDcgKzE3NSw3
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFBlbmRpbmdJQ0VDYW5kaWRhdGU+IG1fcGVuZGluZ0lD
RUNhbmRpZGF0ZXM7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBSZWY8Y29uc3Qg
UEFMOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZjxjb25zdCBXVEY6OkxvZ2dlcj4gbV9sb2dn
ZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAgICAgYm9vbCBt
X25lZ290aWF0aW9uTmVlZGVkIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHJldmlzaW9u
IDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIlJU
Q1BlZXJDb25uZWN0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJSVENSdHBUcmFuc2NlaXZlci5oIgog
I2luY2x1ZGUgIlJUQ1NpZ25hbGluZ1N0YXRlLmgiCi0jaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBl
ci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIGZpbmFsCiAgICAg
LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQogICAgICwgcHVibGljIEFjdGl2ZURP
TU9iamVjdAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwgcHVibGljIFBBTDo6TG9n
Z2VySGVscGVyCisgICAgLCBwcml2YXRlIFdURjo6TG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKIHB1
YmxpYzoKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNv
bnN0IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5n
ZXQoKTsgfQorICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUlRDUGVlckNvbm5lY3Rpb24iOyB9
CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwpAQCAtMjA0LDcg
KzIwNCw3IEBAIHByaXZhdGU6CiAgICAgUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSBtX2Nvbm5lY3Rp
b25TdGF0ZSB7IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGU6Ok5ldyB9OwogCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0gICAgUmVmPGNvbnN0IFBBTDo6TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBS
ZWY8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRl
bnRpZmllcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDEyICszMiwxMSBAQAogI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oIgogI2luY2x1
ZGUgPFRpbWVyLmg+Ci0jaW5jbHVkZSA8cGFsL0xvZ2dlci5oPgotI2luY2x1ZGUgPHBhbC9Mb2dn
ZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3ZWJydGMvYXBpL2pzZXAuaD4KICNpbmNsdWRlIDx3ZWJy
dGMvYXBpL3BlZXJjb25uZWN0aW9uaW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uZmFjdG9yeS5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9wYy9ydGNzdGF0c2NvbGxl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CkBAIC02Miw3ICs2MSw3
IEBAIGNsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQKICAgICAsIHByaXZhdGUgd2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbk9ic2VydmVyCiAgICAgLCBwcml2YXRlIHdlYnJ0Yzo6UlRDU3RhdHNDb2xs
ZWN0b3JDYWxsYmFjawogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwgcHVibGljIFBB
TDo6TG9nZ2VySGVscGVyCisgICAgLCBwcml2YXRlIFdURjo6TG9nZ2VySGVscGVyCiAjZW5kaWYK
IHsKIHB1YmxpYzoKQEAgLTEzNCw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxk
T2ZmZXJBbGxvd1RvUmVjZWl2ZVZpZGVvKCkgY29uc3Q7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKLSAgICBjb25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBXVEY6OkxvZ2dlciYgbG9nZ2VyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJ
ZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAg
Y29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQiOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0
IGZpbmFsOwpAQCAtMjEzLDE0ICsyMTIsMTQgQEAgcHJpdmF0ZToKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIGludDY0X3QgbV9zdGF0c0ZpcnN0RGVsaXZlcmVkVGltZXN0YW1wIHsg
MCB9OwotICAgIFJlZjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmPGNvbnN0
IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7
CiAjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNlIFBBTCB7
CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0cnVjdCBMb2dB
cmd1bWVudDsKQEAgLTIzMyw2ICsyMzIsNiBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2VicnRjOjpS
VENTdGF0cz4gewogICAgIH0KIH07CiAKLX07IC8vIG5hbWVzcGFjZSBQQUwKK307IC8vIG5hbWVz
cGFjZSBXVEYKIAogI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyNTY2MikKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0xMi0wNyAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIExvZ2dlciBmcm9tIFBBTCB0
byBXVEYgc28gaXQgY2FuIGJlIHVzZWQgb3V0c2lkZSBvZiBXZWJDb3JlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA1NjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBhbC9Mb2dnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
YWwvTG9nZ2VySGVscGVyLmg6IFJlbW92ZWQuCisKIDIwMTctMTItMDcgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkZCBTUEkgdG8g
ZGlzYWxsb3cgdXNlci1pbnN0YWxsZWQgZm9udHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTYyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsOCArMjEsNiBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0JCTA3MDhBQzMzMUY0
Qzg3NEIwMDFGNzg4RiAvKiBMb2dnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MDhBQzMyMUY0Qzg3NEEwMDFGNzg4RiAvKiBMb2dnZXIuaCAqLzsg
fTsKLQkJMDczNzdBREMxRjU3NzdEOTAwMjdGMTZEIC8qIExvZ2dlckhlbHBlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNzdBREIxRjU3NzdENzAw
MjdGMTZEIC8qIExvZ2dlckhlbHBlci5oICovOyB9OwogCQkwQzAwQ0ZENDFGNjhDRTQ2MDBBQUMy
NkQgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQzAwQ0ZEMjFGNjhDRTQ2MDBBQUMyNkQgLyogTWVkaWFUaW1l
QVZGb3VuZGF0aW9uLmggKi87IH07CiAJCTBDMkQ5RTczMUVFRjVBRjYwMERCQzMxNyAvKiBFeHBv
cnRNYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBDMkQ5RTcyMUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLzsgfTsKIAkJMEMy
REEwNkQxRjMzQ0E4NDAwREJDMzE3IC8qIENGTG9jYWxlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzJEQTA2NzFGMzNDQTg0MDBEQkMzMTcgLyog
Q0ZMb2NhbGVTUEkuaCAqLzsgfTsKQEAgLTE1OSw4ICsxNTcsNiBAQAogLyogRW5kIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwotCQkwNzA4QUMzMjFGNEM4NzRBMDAxRjc4OEYgLyogTG9nZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwNzM3N0FEQjFGNTc3N0Q3MDAyN0YxNkQgLyogTG9nZ2VySGVscGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlckhlbHBlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwQzAwQ0ZEMTFGNjhDRTQ2MDBBQUMyNkQgLyogTWVkaWFUaW1lQVZG
b3VuZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1lZGlh
VGltZUFWRm91bmRhdGlvbi5jcHA7IHBhdGggPSBhdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEMwMENGRDIxRjY4Q0U0
NjAwQUFDMjZEIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBNZWRpYVRpbWVBVkZvdW5kYXRpb24uaDsgcGF0aCA9IGF2Zm91bmRhdGlv
bi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEMyRDlFNzIxRUVGNUFGNjAwREJDMzE3IC8qIEV4cG9ydE1hY3Jvcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFeHBvcnRNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ4Nyw4ICs0ODMsNiBAQAogCQkJCUY0NDI5MTYyMUZBNTI2NzAwMDJDQzkzRSAv
KiBGaWxlU2l6ZUZvcm1hdHRlci5jcHAgKi8sCiAJCQkJRjQ0MjkxNUYxRkE1MjYxRTAwMkNDOTNF
IC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi8sCiAJCQkJQTM5REU3NEQxRjdDNDQzQzAwN0JDQjAw
IC8qIEh5c3RlcmVzaXNBY3Rpdml0eS5oICovLAotCQkJCTA3MDhBQzMyMUY0Qzg3NEEwMDFGNzg4
RiAvKiBMb2dnZXIuaCAqLywKLQkJCQkwNzM3N0FEQjFGNTc3N0Q3MDAyN0YxNkQgLyogTG9nZ2Vy
SGVscGVyLmggKi8sCiAJCQkJMUM0ODc2RDYxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3Bw
ICovLAogCQkJCTFDNDg3NkQ3MUY4RDdGNEUwMENDRUVCRCAvKiBMb2dnaW5nLmggKi8sCiAJCQkJ
MUM0ODc2REQxRjhEODEyQjAwQ0NFRUJEIC8qIExvZ0luaXRpYWxpemF0aW9uLmggKi8sCkBAIC02
NDQsOCArNjM4LDYgQEAKIAkJCQlBMzBENDEyMTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTFDMUY0M0E0QzcwMDJFQUMwMiAvKiBMYXVuY2hT
ZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNDcxRjNCRUI0OTAwREJDMzE3
IC8qIExpbmtQcmVzZW50YXRpb25TUEkuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3MDhBQzMzMUY0
Qzg3NEIwMDFGNzg4RiAvKiBMb2dnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3Mzc3QURDMUY1
Nzc3RDkwMDI3RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNDg3
NkQ5MUY4RDdGNEUwMENDRUVCRCAvKiBMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3
ODU4QjFGNDUxMzBGMDBGNEVCQjYgLyogTG9va3VwU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
QzJEQTE0ODFGM0JFQjQ5MDBEQkMzMTcgLyogTWFjaFZNU1BJLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML3BhbC9Mb2dnZXIuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dl
YkNvcmUvUEFML3BhbC9Mb2dnZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDIyNCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIu
aD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBQ
QUwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IExvZ0FyZ3VtZW50IHsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfc2FtZTxVLCBib29sPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoYm9vbCBh
cmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQgPyBBU0NJSUxpdGVyYWwoInRydWUiKSA6IEFTQ0lJ
TGl0ZXJhbCgiZmFsc2UiKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGludD46OnZhbHVlLCBTdHJp
bmc+Ojp0eXBlIHRvU3RyaW5nKGludCBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIo
YXJndW1lbnQpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgdW5zaWduZWQ+Ojp2YWx1ZSwgU3RyaW5n
Pjo6dHlwZSB0b1N0cmluZyh1bnNpZ25lZCBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1i
ZXIoYXJndW1lbnQpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgdW5zaWduZWQgbG9uZz46OnZhbHVl
LCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKHVuc2lnbmVkIGxvbmcgYXJndW1lbnQpIHsgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKGFyZ3VtZW50KTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBU
PiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGxvbmc+Ojp2
YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhsb25nIGFyZ3VtZW50KSB7IHJldHVybiBTdHJp
bmc6Om51bWJlcihhcmd1bWVudCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3Rh
dGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBmbG9hdD46OnZhbHVl
LCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKGZsb2F0IGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6
Om51bWJlcihhcmd1bWVudCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGlj
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBkb3VibGU+Ojp2YWx1ZSwg
U3RyaW5nPjo6dHlwZSB0b1N0cmluZyhkb3VibGUgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6
bnVtYmVyKGFyZ3VtZW50KTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3JlZmVyZW5jZTxVPjo6dHlwZSwgQXRvbWljU3RyaW5nPjo6dmFsdWUsIFN0cmluZz46OnR5cGUg
dG9TdHJpbmcoQXRvbWljU3RyaW5nIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC5zdHJpbmco
KTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6
dHlwZSwgU3RyaW5nPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoU3RyaW5nIGFyZ3Vt
ZW50KSB7IHJldHVybiBhcmd1bWVudDsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBz
dGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSwgU3RyaW5nQnVpbGRlcio+Ojp2YWx1ZSwgU3RyaW5n
Pjo6dHlwZSB0b1N0cmluZyhTdHJpbmdCdWlsZGVyKiBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1l
bnQtPnRvU3RyaW5nKCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBjb25zdCBjaGFyKj46OnZhbHVl
LCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKGNvbnN0IGNoYXIqIGFyZ3VtZW50KSB7IHJldHVybiBT
dHJpbmcoYXJndW1lbnQpOyB9Ci0gICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIFN0
cmluZyB0b1N0cmluZyhjb25zdCBjaGFyICgmYXJndW1lbnQpW2xlbmd0aF0pIHsgcmV0dXJuIFN0
cmluZyhhcmd1bWVudCk7IH0KLX07Ci0KLWNsYXNzIExvZ2dlciA6IHB1YmxpYyBSZWZDb3VudGVk
PExvZ2dlcj4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvZ2dlcik7Ci1wdWJsaWM6Ci0K
LSAgICBjbGFzcyBPYnNlcnZlciB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5PYnNl
cnZlcigpID0gZGVmYXVsdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZExvZ01lc3NhZ2UoY29u
c3QgV1RGTG9nQ2hhbm5lbCYsIFdURkxvZ0xldmVsLCBjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAg
fTsKLQotICAgIHN0YXRpYyBSZWY8TG9nZ2VyPiBjcmVhdGUoY29uc3Qgdm9pZCogb3duZXIpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBMb2dnZXIob3duZXIpKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgaW5saW5lIHZvaWQg
bG9nQWx3YXlzKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFVOVVNFRF9GVU5DVElPTiBjb25zdCBB
cmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKLSAgICB7Ci0jaWYgUkVMRUFTRV9MT0dfRElT
QUJMRUQKLSAgICAgICAgLy8gIlN0YW5kYXJkIiBXZWJDb3JlIGxvZ2dpbmcgZ29lcyB0byBzdGRl
cnIsIHdoaWNoIGlzIGNhcHR1cmVkIGluIGxheW91dCB0ZXN0IG91dHB1dCBhbmQgY2FuIGdlbmVy
YWxseSBiZSBhIHByb2JsZW0KLSAgICAgICAgLy8gIG9uIHNvbWUgc3lzdGVtcywgc28gZG9uJ3Qg
YWxsb3cgaXQuCi0gICAgICAgIFVOVVNFRF9QQVJBTShjaGFubmVsKTsKLSNlbHNlCi0gICAgICAg
IGlmICghd2lsbExvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEFsd2F5cykpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgbG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsQWx3YXlzLCBhcmd1bWVu
dHMuLi4pOwotI2VuZGlmCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgotICAgIGlubGluZSB2b2lkIGVycm9yKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0
IEFyZ3VtZW50cyYuLi4gYXJndW1lbnRzKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCF3aWxs
TG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGxvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEVycm9yLCBhcmd1bWVudHMuLi4pOwotICAg
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9p
ZCB3YXJuaW5nKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYuLi4gYXJn
dW1lbnRzKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCF3aWxsTG9nKGNoYW5uZWwsIFdURkxv
Z0xldmVsV2FybmluZykpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbG9nKGNoYW5u
ZWwsIFdURkxvZ0xldmVsV2FybmluZywgYXJndW1lbnRzLi4uKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgaW5saW5lIHZvaWQgaW5mbyhXVEZMb2dD
aGFubmVsJiBjaGFubmVsLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGlmICghd2lsbExvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEluZm8pKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEluZm8s
IGFyZ3VtZW50cy4uLik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgotICAgIGlubGluZSB2b2lkIGRlYnVnKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0
IEFyZ3VtZW50cyYuLi4gYXJndW1lbnRzKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCF3aWxs
TG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsRGVidWcpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGxvZyhjaGFubmVsLCBXVEZMb2dMZXZlbERlYnVnLCBhcmd1bWVudHMuLi4pOwotICAg
IH0KLQotICAgIGlubGluZSBib29sIHdpbGxMb2coY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5l
bCwgV1RGTG9nTGV2ZWwgbGV2ZWwpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1fZW5hYmxl
ZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAobGV2ZWwgPD0gV1RG
TG9nTGV2ZWxFcnJvcikKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGlmIChj
aGFubmVsLnN0YXRlID09IFdURkxvZ0NoYW5uZWxPZmYgfHwgbGV2ZWwgPiBjaGFubmVsLmxldmVs
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHJldHVybiBtX2VuYWJsZWQ7
Ci0gICAgfQotCi0gICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9
Ci0gICAgdm9pZCBzZXRFbmFibGVkKGNvbnN0IHZvaWQqIG93bmVyLCBib29sIGVuYWJsZWQpCi0g
ICAgewotICAgICAgICBBU1NFUlQob3duZXIgPT0gbV9vd25lcik7Ci0gICAgICAgIGlmIChvd25l
ciA9PSBtX293bmVyKQotICAgICAgICAgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKLSAgICB9Ci0K
LSAgICBzdHJ1Y3QgTG9nU2l0ZUlkZW50aWZpZXIgewotICAgICAgICBMb2dTaXRlSWRlbnRpZmll
cihjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBjb25zdCB2b2lkKiBvYmplY3RQdHIpCi0gICAgICAg
ICAgICA6IG1ldGhvZE5hbWUgeyBtZXRob2ROYW1lIH0KLSAgICAgICAgICAgICwgb2JqZWN0UHRy
IHsgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9iamVjdFB0cikgfQotICAgICAgICB7Ci0g
ICAgICAgIH0KLQotICAgICAgICBMb2dTaXRlSWRlbnRpZmllcihjb25zdCBjaGFyKiBjbGFzc05h
bWUsIGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUsIGNvbnN0IHZvaWQqIG9iamVjdFB0cikKLSAgICAg
ICAgICAgIDogY2xhc3NOYW1lIHsgY2xhc3NOYW1lIH0KLSAgICAgICAgICAgICwgbWV0aG9kTmFt
ZSB7IG1ldGhvZE5hbWUgfQotICAgICAgICAgICAgLCBvYmplY3RQdHIgeyByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4ob2JqZWN0UHRyKSB9Ci0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIGNvbnN0IGNoYXIqIGNsYXNzTmFtZSB7IG51bGxwdHIgfTsKLSAgICAgICAgY29uc3QgY2hh
ciogbWV0aG9kTmFtZSB7IG51bGxwdHIgfTsKLSAgICAgICAgY29uc3QgdWludHB0cl90IG9iamVj
dFB0ciB7IDAgfTsKLSAgICB9OwotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGFkZE9ic2VydmVy
KE9ic2VydmVyJiBvYnNlcnZlcikKLSAgICB7Ci0gICAgICAgIG9ic2VydmVycygpLmFwcGVuZChv
YnNlcnZlcik7Ci0gICAgfQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVPYnNlcnZlcihP
YnNlcnZlciYgb2JzZXJ2ZXIpCi0gICAgewotICAgICAgICBvYnNlcnZlcnMoKS5yZW1vdmVGaXJz
dE1hdGNoaW5nKFsmb2JzZXJ2ZXJdKGF1dG8gYW5PYnNlcnZlcikgewotICAgICAgICAgICAgcmV0
dXJuICZhbk9ic2VydmVyLmdldCgpID09ICZvYnNlcnZlcjsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIExvZ2dlcihjb25zdCB2b2lkKiBvd25lcikKLSAgICAgICAgOiBtX293
bmVyIHsgb3duZXIgfQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudD4KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgbG9nKFdURkxvZ0NoYW5uZWwmIGNoYW5u
ZWwsIFdURkxvZ0xldmVsIGxldmVsLCBjb25zdCBBcmd1bWVudCYuLi4gYXJndW1lbnRzKQotICAg
IHsKLSAgICAgICAgU3RyaW5nIGxvZ01lc3NhZ2UgPSBtYWtlU3RyaW5nKExvZ0FyZ3VtZW50PEFy
Z3VtZW50Pjo6dG9TdHJpbmcoYXJndW1lbnRzKS4uLik7Ci0KLSNpZiBSRUxFQVNFX0xPR19ESVNB
QkxFRAotICAgICAgICBXVEZMb2coJmNoYW5uZWwsICIlcyIsIGxvZ01lc3NhZ2UudXRmOCgpLmRh
dGEoKSk7Ci0jZWxzZQotICAgICAgICBvc19sb2coY2hhbm5lbC5vc0xvZ0NoYW5uZWwsICIle3B1
YmxpY31zIiwgbG9nTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSNlbmRpZgotCi0gICAgICAgIGlm
IChjaGFubmVsLnN0YXRlID09IFdURkxvZ0NoYW5uZWxPZmYgfHwgbGV2ZWwgPiBjaGFubmVsLmxl
dmVsKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAoT2JzZXJ2ZXImIG9ic2Vy
dmVyIDogb2JzZXJ2ZXJzKCkpCi0gICAgICAgICAgICBvYnNlcnZlci5kaWRMb2dNZXNzYWdlKGNo
YW5uZWwsIGxldmVsLCBsb2dNZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8T2JzZXJ2ZXI+PiYgb2JzZXJ2ZXJzKCkKLSAgICB7Ci0gICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxP
YnNlcnZlcj4+PiBvYnNlcnZlcnM7Ci0gICAgICAgIHJldHVybiBvYnNlcnZlcnM7Ci0gICAgfQot
Ci0gICAgY29uc3Qgdm9pZCogbV9vd25lcjsKLSAgICBib29sIG1fZW5hYmxlZCB7IHRydWUgfTsK
LX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ8TG9nZ2VyOjpMb2dTaXRlSWRl
bnRpZmllcj4gewotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgTG9nZ2VyOjpMb2dT
aXRlSWRlbnRpZmllciYgdmFsdWUpCi0gICAgewotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7Ci0KLSAgICAgICAgaWYgKHZhbHVlLmNsYXNzTmFtZSkgewotICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQodmFsdWUuY2xhc3NOYW1lKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiOjoiKTsKLSAgICAgICAgfQotICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZS5tZXRo
b2ROYW1lKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoIik7Ci0gICAgICAgIGFw
cGVuZFVuc2lnbmVkNjRBc0hleCh2YWx1ZS5vYmplY3RQdHIsIGJ1aWxkZXIpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIikgIik7Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgUEFMCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL0xvZ2dlckhlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvTG9nZ2VySGVscGVyLmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvTG9nZ2VySGVscGVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLW5hbWVzcGFjZSBQQUwgewotCi1jbGFzcyBMb2dnZXI7Ci0KLWNsYXNzIExvZ2dlckhl
bHBlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+TG9nZ2VySGVscGVyKCkgPSBkZWZhdWx0Owot
Ci0gICAgdmlydHVhbCBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFdU
RkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCB2
b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgPSAwOwotCi0KLSNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKLQotI2RlZmluZSBMT0dJREVOVElGSUVSIFBBTDo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRp
Zmllcihsb2dDbGFzc05hbWUoKSwgX19mdW5jX18sIGxvZ0lkZW50aWZpZXIoKSkKLQotI2RlZmlu
ZSBBTFdBWVNfTE9HKC4uLikgICAgIGxvZ2dlcigpLmxvZ0Fsd2F5cyhsb2dDaGFubmVsKCksIF9f
VkFfQVJHU19fKQotI2RlZmluZSBFUlJPUl9MT0coLi4uKSAgICAgIGxvZ2dlcigpLmVycm9yKGxv
Z0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIFdBUk5JTkdfTE9HKC4uLikgICAgbG9n
Z2VyKCkud2FybmluZyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQotI2RlZmluZSBOT1RJQ0Vf
TE9HKC4uLikgICAgIGxvZ2dlcigpLm5vdGljZShsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQot
I2RlZmluZSBJTkZPX0xPRyguLi4pICAgICAgIGxvZ2dlcigpLmluZm8obG9nQ2hhbm5lbCgpLCBf
X1ZBX0FSR1NfXykKLSNkZWZpbmUgREVCVUdfTE9HKC4uLikgICAgICBsb2dnZXIoKS5kZWJ1Zyhs
b2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQotI2RlZmluZSBXSUxMX0xPRyhfbGV2ZWxfKSAgIGxv
Z2dlcigpLndpbGxMb2cobG9nQ2hhbm5lbCgpLCBfbGV2ZWxfKQotCi0jZWxzZQotCi0jZGVmaW5l
IExPR0lERU5USUZJRVIgKCh2b2lkKTApCi0KLSNkZWZpbmUgQUxXQVlTX0xPRyguLi4pICAgICAo
KHZvaWQpMCkKLSNkZWZpbmUgRVJST1JfTE9HKC4uLikgICAgICAoKHZvaWQpMCkKLSNkZWZpbmUg
RVJST1JfTE9HKC4uLikgICAgICAoKHZvaWQpMCkKLSNkZWZpbmUgV0FSTklOR19MT0coLi4uKSAg
ICAoKHZvaWQpMCkKLSNkZWZpbmUgTk9USUNFX0xPRyguLi4pICAgICAoKHZvaWQpMCkKLSNkZWZp
bmUgSU5GT19MT0coLi4uKSAgICAgICAoKHZvaWQpMCkKLSNkZWZpbmUgREVCVUdfTE9HKC4uLikg
ICAgICAoKHZvaWQpMCkKLSNkZWZpbmUgV0lMTF9MT0coX2xldmVsXykgICBmYWxzZQotCi0jZW5k
aWYKLSAgICAKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFBBTApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDYgQEAKICNpbmNsdWRlIDxjdGltZT4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxpbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrLmg+Ci0jaW5jbHVkZSA8cGFsL0xvZ2dlci5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9u
IDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSwxMiArNTEsMTIgQEAKICNpbmNsdWRlICJVc2VyQWN0aW9uRWxlbWVudFNldC5oIgog
I2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVmlzaWJpbGl0eVN0YXRl
LmgiCi0jaW5jbHVkZSA8cGFsL0xvZ2dlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL0xvZ2dlci5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdI
YXNoLmg+CkBAIC0zMTMsNyArMzEzLDcgQEAgY2xhc3MgRG9jdW1lbnQKICAgICAsIHB1YmxpYyBG
b250U2VsZWN0b3JDbGllbnQKICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIK
ICAgICAsIHB1YmxpYyBTdXBwbGVtZW50YWJsZTxEb2N1bWVudD4KLSAgICAsIHB1YmxpYyBQQUw6
OkxvZ2dlcjo6T2JzZXJ2ZXIgeworICAgICwgcHVibGljIFdURjo6TG9nZ2VyOjpPYnNlcnZlciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwpCiAgICAgewpAQCAtMTM3MSw3ICsxMzcxLDcgQEAgcHVibGljOgogICAg
IFRleHRBdXRvU2l6aW5nJiB0ZXh0QXV0b1NpemluZygpOwogI2VuZGlmCiAKLSAgICBQQUw6Okxv
Z2dlciYgbG9nZ2VyKCk7CisgICAgV1RGOjpMb2dnZXImIGxvZ2dlcigpOwogCiAgICAgdm9pZCBo
YXNTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcGFzc2VkUHJvbWlzZSk7CiAg
ICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBhc3Nl
ZFByb21pc2UpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgcHJpdmF0ZToKIAogICAgIE9yaWVudGF0
aW9uTm90aWZpZXIgbV9vcmllbnRhdGlvbk5vdGlmaWVyOwogICAgIG11dGFibGUgUEFMOjpTZXNz
aW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgbXV0YWJsZSBSZWZQdHI8UEFMOjpMb2dnZXI+IG1fbG9n
Z2VyOworICAgIG11dGFibGUgUmVmUHRyPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBSZWZQ
dHI8U3RyaW5nQ2FsbGJhY2s+IG1fY29uc29sZU1lc3NhZ2VMaXN0ZW5lcjsKIAogICAgIHN0YXRp
YyBib29sIGhhc0V2ZXJDcmVhdGVkQW5BWE9iamVjdENhY2hlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3
ICs4OCw2IEBACiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
VXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8cGFs
L0xvZ2dlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDxwYWwvc3lz
dGVtL1NsZWVwRGlzYWJsZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KQEAg
LTE2Niw3ICsxNjUsNyBAQAogI2luY2x1ZGUgIlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCiAjZW5k
aWYKIAotbmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlIDw+CiBzdHJ1
Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6VVJMPiB7CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQAogI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUg
IlZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCIKLSNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBA
IC02Niw3ICs2Niw2IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBMb2dnZXI7
CiBjbGFzcyBTbGVlcERpc2FibGVyOwogfQogCkBAIC0xNDEsNyArMTQwLDcgQEAgY2xhc3MgSFRN
TE1lZGlhRWxlbWVudAogICAgICwgcHJpdmF0ZSBDRE1DbGllbnQKICNlbmRpZgogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAotICAgICwgcHVibGljIFBBTDo6TG9nZ2VySGVscGVyCisgICAgLCBw
cml2YXRlIFdURjo6TG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTU0MCw3ICs1
MzksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlk
ZTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBs
b2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25z
dCBXVEY6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fbG9nZ2VyLmdl
dCgpOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KICAg
ICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKQEAgLTkw
Niw3ICs5MDUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJIVE1MTWVkaWFFbGVtZW50IjsgfQogCiAgICAgY29uc3Qgdm9p
ZCogbWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1cm4gbG9nSWRlbnRpZmll
cigpOyB9Ci0gICAgY29uc3QgUEFMOjpMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwg
eyByZXR1cm4gbG9nZ2VyKCk7IH0KKyAgICBjb25zdCBXVEY6OkxvZ2dlciYgbWVkaWFQbGF5ZXJM
b2dnZXIoKSBmaW5hbCB7IHJldHVybiBsb2dnZXIoKTsgfQogI2VuZGlmCiAKICAgICBXZWFrUHRy
RmFjdG9yeTxIVE1MTWVkaWFFbGVtZW50PiBtX3dlYWtGYWN0b3J5OwpAQCAtMTEyNyw3ICsxMTI2
LDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCB7IDAg
fTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIFJlZlB0cjxQQUw6OkxvZ2dlcj4g
bV9sb2dnZXI7CisgICAgUmVmUHRyPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICB1aW50NjRf
dCBtX2xvZ0lkZW50aWZpZXI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50RW51bXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3
ICs2Myw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhIVE1MTWUKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBXVEYgewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IExvZ0FyZ3VtZW50OwpAQCAtODQsNSAr
ODQsNSBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6SFRNTE1lZGlhRWxlCiAgICAgfQog
fTsKIAotfTsgLy8gbmFtZXNwYWNlIFBBTAorfTsgLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIy
NTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg0NSw3ICs4NDUsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246
OndpbGxMb2coV1RGTG9nCiB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLWNvbnN0IFBB
TDo6TG9nZ2VyJiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpsb2dnZXIoKSBjb25zdAorY29uc3QgV1RG
OjpMb2dnZXImIE1lZGlhRWxlbWVudFNlc3Npb246OmxvZ2dlcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fZWxlbWVudC5sb2dnZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBA
QAogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU3VjY2Vzc09y
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+Cisj
aW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsOSArNTQsOSBAQCBjbGFzcyBTb3VyY2VCdWZm
ZXI7CiAKIGNsYXNzIE1lZGlhRWxlbWVudFNlc3Npb24gZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1N
ZWRpYVNlc3Npb24KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIHB1YmxpYyBQQUw6
OkxvZ2dlckhlbHBlcgorICAgICwgcHJpdmF0ZSBXVEY6OkxvZ2dlckhlbHBlcgogI2VuZGlmCi0g
ICAgeworewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IE1lZGlhRWxlbWVudFNlc3Npb24oSFRNTE1lZGlhRWxlbWVudCYpOwpAQCAtMTQ5LDcgKzE0
OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBj
b25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgV1RGOjpM
b2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiTWVkaWFFbGVtZW50U2Vzc2lvbiI7IH0KICAgICBXVEZMb2dDaGFubmVs
JiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0RhdGFDdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0Rh
dGFDdWUuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9E
YXRhQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBjb25zdCBEYXRhQ3Vl
KiB0b0RhdGFDdWUoY29uc3QgVGV4dFRyYWNrCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
bmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZT4KIHN0cnVjdCBMb2dBcmd1bWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHBy
aXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNlIFBBTCB7CituYW1l
c3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0cnVjdCBMb2dBcmd1bWVu
dDsKQEAgLTEzNCw3ICsxMzQsNiBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6VGV4dFRy
YWNrQ3VlCiAgICAgfQogfTsKIAotCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgJKHJldmlzaW9uIDIyNTYyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotbmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVHlwZT4KIHN0cnVjdCBMb2dBcmd1bWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrQmFzZS5jcHAJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
dXNpbmcgbmFtZXNwYWNlIFdURjsKIAogc3RhdGljIGludCBzX3VuaXF1ZUlkID0gMDsKIApAQCAt
NDUsOSArNDYsOSBAQCBzdGF0aWMgY29uc3Qgdm9pZCogbmV4dExvZ0lkZW50aWZpZXIoKQogICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigrK2xvZ0lkZW50aWZpZXIpOwog
fQogCi1zdGF0aWMgUmVmUHRyPFBBTDo6TG9nZ2VyPiYgbnVsbExvZ2dlcigpCitzdGF0aWMgUmVm
UHRyPExvZ2dlcj4mIG51bGxMb2dnZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZWZQdHI8UEFMOjpMb2dnZXI+PiBsb2dnZXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
ZlB0cjxMb2dnZXI+PiBsb2dnZXI7CiAgICAgcmV0dXJuIGxvZ2dlcjsKIH0KICNlbmRpZgpAQCAt
NjQsNyArNjUsNyBAQCBUcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAoIW51bGxMb2dnZXIoKS5nZXQoKSkg
ewotICAgICAgICBudWxsTG9nZ2VyKCkgPSBQQUw6OkxvZ2dlcjo6Y3JlYXRlKHRoaXMpOworICAg
ICAgICBudWxsTG9nZ2VyKCkgPSBMb2dnZXI6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAgbnVsbExv
Z2dlcigpLT5zZXRFbmFibGVkKHRoaXMsIGZhbHNlKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcs
NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCi0jaW5jbHVkZSA8cGFsL0xvZ2dlci5o
PgotI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVs
cGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQwLDcgKzM5LDcgQEAgY2xhc3MgU291cmNlQnVmZmVyOwogY2xhc3MgVHJh
Y2tCYXNlCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+CiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIFBBTDo6TG9nZ2VySGVscGVyCisgICAgLCBwcml2
YXRlIFdURjo6TG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTc1LDcgKzc0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAwOwogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IGZpbmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQor
ICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2xv
Z2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RG
TG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCkBAIC05Nyw3ICs5
Niw3IEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CiAgICAgQXRvbWlj
U3RyaW5nIG1fdmFsaWRCQ1A0N0xhbmd1YWdlOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAot
ICAgIFJlZlB0cjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmUHRyPGNvbnN0
IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7
CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgJKHJldmlzaW9u
IDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyOSw3ICsyMjksNyBAQCBjb25zdCBWVFRDdWUqIHRvVlRUQ3VlKGNvbnN0IFRl
eHRUcmFja0N1CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNlIFBBTCB7Citu
YW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0cnVjdCBMb2dBcmd1
bWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRU
cmFja1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCIKLSNpbmNsdWRlIDxwYWwv
TG9nZ2VyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1By
aXZhdGVDbGllbnQuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjQsNyArMjY0LDcgQEAgcHVibGljOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg4LDEzICs4OCwxNCBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK3Vz
aW5nIG5hbWVzcGFjZSBXVEY7CiAKIGNvbnN0IFBsYXRmb3JtTWVkaWEgTm9QbGF0Zm9ybU1lZGlh
ID0geyBQbGF0Zm9ybU1lZGlhOjpOb25lLCB7MH0gfTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAotc3RhdGljIFJlZlB0cjxQQUw6OkxvZ2dlcj4mIG51bGxMb2dnZXIoKQorc3RhdGljIFJl
ZlB0cjxMb2dnZXI+JiBudWxsTG9nZ2VyKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVmUHRyPFBBTDo6TG9nZ2VyPj4gbG9nZ2VyOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZWZQdHI8TG9nZ2VyPj4gbG9nZ2VyOwogICAgIHJldHVybiBsb2dnZXI7CiB9CiAjZW5kaWYKQEAg
LTE3MiwxMCArMTczLDEwIEBAIHB1YmxpYzoKIGNsYXNzIE51bGxNZWRpYVBsYXllckNsaWVudCA6
IHB1YmxpYyBNZWRpYVBsYXllckNsaWVudCB7CiBwdWJsaWM6CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECi0gICAgY29uc3QgUEFMOjpMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwK
KyAgICBjb25zdCBMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwKICAgICB7CiAgICAg
ICAgIGlmICghbnVsbExvZ2dlcigpLmdldCgpKSB7Ci0gICAgICAgICAgICBudWxsTG9nZ2VyKCkg
PSBQQUw6OkxvZ2dlcjo6Y3JlYXRlKHRoaXMpOworICAgICAgICAgICAgbnVsbExvZ2dlcigpID0g
TG9nZ2VyOjpjcmVhdGUodGhpcyk7CiAgICAgICAgICAgICBudWxsTG9nZ2VyKCktPnNldEVuYWJs
ZWQodGhpcywgZmFsc2UpOwogICAgICAgICB9CiAKQEAgLTE1MDcsNyArMTUwOCw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OnNob3VsZENoZWNrSGFyZHdhcmVTdXAKIH0KIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAotY29uc3QgUEFMOjpMb2dnZXImIE1lZGlhUGxheWVyOjptZWRpYVBsYXllckxv
Z2dlcigpCitjb25zdCBMb2dnZXImIE1lZGlhUGxheWVyOjptZWRpYVBsYXllckxvZ2dlcigpCiB7
CiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyTG9nZ2VyKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgJKHJldmlzaW9u
IDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDExICs0NCwxMSBAQAogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1By
aXZhdGUuaCIKLSNpbmNsdWRlIDxwYWwvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9VaW50
OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtMzAzLDcgKzMwMyw3IEBAIHB1YmxpYzoKIAogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogbWVkaWFQbGF5
ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgY29uc3Qg
UEFMOjpMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
V1RGOjpMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgPSAwOwogI2VuZGlmCiB9OwogCkBAIC02
MzMsNyArNjMzLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBv
cnQoKSBjb25zdDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IFBBTDo6
TG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpOworICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBtZWRp
YVBsYXllckxvZ2dlcigpOwogICAgIGNvbnN0IHZvaWQqIG1lZGlhUGxheWVyTG9nSWRlbnRpZmll
cigpIHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpOyB9CiAjZW5k
aWYKIApAQCAtNjg5LDE0ICs2ODksMTQgQEAgcHVibGljOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGU+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CiAKIHRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTG9n
QXJndW1lbnQ8V1RGOjpNZWRpYVRpbWU+IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNv
bnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lKQorc3RydWN0IExvZ0FyZ3VtZW50PE1lZGlhVGltZT4g
eworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRpbWUudG9TdHJpbmcoKTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJFbnVtcy5oCShy
ZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllckVudW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgV1RGOjpTdHJp
bmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAKLW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFR5cGU+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CkBAIC03MSw0ICs3MSw0IEBAIHN0cnVjdCBMb2dB
cmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckUKICAgICB9CiB9OwogCi19OyAvLyBuYW1lc3Bh
Y2UgUEFMCit9OyAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcAkocmV2aXNpb24gMjI1
NjI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotdm9pZCBUcmFja1ByaXZhdGVCYXNlOjpz
ZXRMb2dnZXIoY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSWRlbnRp
ZmllcikKK3ZvaWQgVHJhY2tQcml2YXRlQmFzZTo6c2V0TG9nZ2VyKGNvbnN0IFdURjo6TG9nZ2Vy
JiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7CiAgICAgbV9sb2dnZXIgPSAm
bG9nZ2VyOwogICAgIG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5o
CShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
cmFja1ByaXZhdGVCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDcgQEAKIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKIAotI2luY2x1ZGUgPHBhbC9Mb2dnZXIuaD4KLSNpbmNsdWRl
IDxwYWwvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTQ5LDcgKzQ4LDcg
QEAgcHVibGljOgogY2xhc3MgVHJhY2tQcml2YXRlQmFzZQogICAgIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFRyYWNrUHJpdmF0ZUJhc2U+CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
Ci0gICAgLCBwcml2YXRlIFBBTDo6TG9nZ2VySGVscGVyCisgICAgLCBwcml2YXRlIFdURjo6TG9n
Z2VySGVscGVyCiAjZW5kaWYKIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmFja1ByaXZh
dGVCYXNlKTsKQEAgLTc0LDggKzczLDggQEAgcHVibGljOgogICAgIH0KIAogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAotICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IFBBTDo6TG9nZ2VyJiwgY29u
c3Qgdm9pZCopOwotICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7
IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNl
dExvZ2dlcihjb25zdCBXVEY6OkxvZ2dlciYsIGNvbnN0IHZvaWQqKTsKKyAgICBjb25zdCBXVEY6
OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4g
Km1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKICNlbmRpZgpAQCAtODQsNyArODMsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgVHJhY2tQcml2YXRlQmFzZSgpID0gZGVmYXVsdDsKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAotICAgIFJlZlB0cjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAg
UmVmUHRyPGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xv
Z0lkZW50aWZpZXI7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVlBsYXllckl0ZW0uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0
ZW1UcmFjay5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+Ci0jaW1wb3J0IDxwYWwvTG9nZ2Vy
Lmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAogQGNsYXNzIEFWTWVkaWFTZWxlY3Rp
b25PcHRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAjaW5jbHVkZSA8aGVhcC9I
ZWFwSW5saW5lcy5oPgotI2luY2x1ZGUgPHBhbC9Mb2dnZXIuaD4KICNpbmNsdWRlIDxydW50aW1l
L0RhdGFWaWV3Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5SW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvVWludDE2QXJyYXkuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgJKHJldmlzaW9uIDIyNTYyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTggKzMyLDE0
IEBACiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8cGFsL0xv
Z2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4K
KyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKLW5hbWVzcGFjZSBQQUwgewotY2xhc3MgTG9n
Z2VyOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluYmFuZE1ldGFkYXRhVGV4
dFRyYWNrUHJpdmF0ZUFWRjsKQEAgLTUyLDcgKzQ4LDcgQEAgY2xhc3MgR2VuZXJpY0N1ZURhdGE7
CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiA6IHB1YmxpYyBNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBBVkZJbmJhbmRUcmFja1BhcmVudAogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwgcHJpdmF0ZSBQQUw6OkxvZ2dlckhlbHBlcgorICAg
ICwgcHJpdmF0ZSBXVEY6OkxvZ2dlckhlbHBlcgogI2VuZGlmCiB7CiBwdWJsaWM6CkBAIC0xNTMs
NyArMTQ5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LSAgICBjb25zdCBQQUw6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9s
b2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBXVEY6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uIjsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihtX2xvZ0lkZW50aWZpZXIpOyB9CiAg
ICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwpAQCAtMzU1LDcgKzM1
MSw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXI6OlByZWxvYWQgbV9wcmVsb2FkOwogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmPGNvbnN0IFBBTDo6TG9nZ2VyPiBtX2xv
Z2dlcjsKKyAgICBSZWY8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZv
aWQqIG1fbG9nSWRlbnRpZmllcjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0JKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM0MjMsNyArMzQyMyw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDprZXlQYXRoIG8KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlm
IChtX2NhbGxiYWNrLT5sb2dnZXIoKS53aWxsTG9nKG1fY2FsbGJhY2stPmxvZ0NoYW5uZWwoKSwg
V1RGTG9nTGV2ZWxEZWJ1ZykgJiYgIShba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJsb2FkZWRU
aW1lUmFuZ2VzIl0gfHwgW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAic2Vla2FibGVUaW1lUmFu
Z2VzIl0pKSB7Ci0gICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFBBTDo6TG9nZ2VyOjpMb2dTaXRl
SWRlbnRpZmllcigiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIiwgIm9ic2VydmVWYWx1
ZUZvcktleVBhdGgiLCBtX2NhbGxiYWNrLT5sb2dJZGVudGlmaWVyKCkpOworICAgICAgICBhdXRv
IGlkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbiIsICJvYnNlcnZlVmFsdWVGb3JLZXlQYXRoIiwgbV9jYWxsYmFj
ay0+bG9nSWRlbnRpZmllcigpKTsKIAogICAgICAgICBpZiAoc2hvdWxkTG9nVmFsdWUpIHsKICAg
ICAgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJkdXJhdGlvbiJdKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ29ubmVjdGlvblN0
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDSWNlQ29ubmVjdGlvblN0YXRlLmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhSVENJY2UKIAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNlIFBBTCB7Citu
YW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0cnVjdCBMb2dBcmd1
bWVudDsKQEAgLTU1LDYgKzU1LDYgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlJUQ0lj
ZUNvbm5lYwogICAgIH0KIH07CiAKLX07IC8vIG5hbWVzcGFjZSBQQUwKK307IC8vIG5hbWVzcGFj
ZSBXVEYKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENJY2VHYXRoZXJpbmdTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUdhdGhlcmluZ1N0YXRlLmgJKHJldmlzaW9uIDIyNTYy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUdhdGhlcmlu
Z1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgU3RyaW5nIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKFJUQ0ljZQogCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1u
YW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBl
Pgogc3RydWN0IExvZ0FyZ3VtZW50OwpAQCAtNTMsNiArNTMsNiBAQCBzdHJ1Y3QgTG9nQXJndW1l
bnQ8V2ViQ29yZTo6UlRDSWNlR2F0aGVyCiAgICAgfQogfTsKIAotfTsgLy8gbmFtZXNwYWNlIFBB
TAorfTsgLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uU3RhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvblN0
YXRlLmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUlRDUGVlCiAKIH07IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CkBAIC01NCw2ICs1
NCw2IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENQZWVyQ29ubmUKICAgICB9CiB9
OwogCi19OyAvLyBuYW1lc3BhY2UgUEFMCit9OyAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDU2lnbmFsaW5nU3Rh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENTaWduYWxpbmdTdGF0ZS5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTaWduYWxpbmdTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhSVENTaWcK
IAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotbmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2Ug
V1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0cnVjdCBMb2dBcmd1bWVudDsKQEAg
LTUzLDYgKzUzLDYgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlJUQ1NpZ25hbGluZwog
ICAgIH0KIH07CiAKLX07IC8vIG5hbWVzcGFjZSBQQUwKK307IC8vIG5hbWVzcGFjZSBXVEYKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmNwcAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBdWRpb1Nlc3Npb24u
aCIKICNpbmNsdWRlICJDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCi0jaW5jbHVkZSA8cGFsL0xvZ2dlci5oPgogCiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmg+CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTYzNCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEyLTA3ICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgTG9nZ2VyIGZyb20gUEFMIHRv
IFdURiBzbyBpdCBjYW4gYmUgdXNlZCBvdXRzaWRlIG9mIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU2MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0xvZ2dpbmcuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwog
MjAxNy0xMi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
IHNob3VsZCBiZSBhYmxlIHRvIHJlY292ZXIgYWZ0ZXIgYSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNz
IGNyYXNoCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2luZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xvZ2dp
bmcuY3BwCShyZXZpc2lvbiAyMjU2MjgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvTG9nZ2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE0ICsyNSwxMiBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCi0jaW5j
bHVkZSA8cGFsL0xvZ2dlci5oPgotI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjZGVmaW5lIExPR19DSEFOTkVMX1BSRUZJWCBU
ZXN0CiAKLXVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBjb25z
dCBjaGFyKiBsb2dUZXN0aW5nU3Vic3lzdGVtID0gImNvbS53ZWJraXQudGVzdGluZyI7Cg==
</data>
<flag name="review"
          id="347931"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="347942"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328827</attachid>
            <date>2017-12-08 10:11:43 -0800</date>
            <delta_ts>2017-12-08 12:33:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>move_to_wtf_patch_3.txt</filename>
            <type>text/plain</type>
            <size>65745</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEyLTA3ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgTG9nZ2VyIGZyb20gUEFMIHRvIFdU
RiBzbyBpdCBjYW4gYmUgdXNlZCBvdXRzaWRlIG9mIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU2MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3dGYvTG9nZ2VyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvTG9nZ2VyLmguCisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50Ojp0b1N0cmlu
Zyk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFBBTDo6TG9nZ2VyOjpsb2dBbHdheXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
UEFMOjpMb2dnZXI6OmVycm9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFBBTDo6TG9nZ2Vy
Ojp3YXJuaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFBBTDo6TG9nZ2VyOjppbmZvIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFBBTDo6TG9nZ2VyOjpkZWJ1ZyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6d2lsbExvZyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChQQUw6OkxvZ2dlcjo6ZW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6
OkxvZ2dlcjo6c2V0RW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6TG9n
U2l0ZUlkZW50aWZpZXI6OkxvZ1NpdGVJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFBB
TDo6TG9nZ2VyOjphZGRPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6
cmVtb3ZlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dnZXI6OkxvZ2dlcik6
IERlbGV0ZWQuCisgICAgICAgIChQQUw6OkxvZ2dlcjo6bG9nKTogRGVsZXRlZC4KKyAgICAgICAg
KFBBTDo6TG9nZ2VyOjpvYnNlcnZlcnMpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dBcmd1
bWVudDxMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi9Mb2dnZXJIZWxwZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9Mb2dnZXJIZWxwZXIuaC4KKwogMjAxNy0xMi0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6IFJlbmFtZSBTY3JhbWJsZWRQdHIgdG8g
UG9pc29uZWQuCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsOCBAQAogLyogRW5kIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLworCQkwNzdDRDg2QTFGRDlDRkQyMDA4Mjg1ODcgLyogTG9nZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzdDRDg2QjFGRDlDRkQzMDA4Mjg1ODcgLyogTG9nZ2VySGVscGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlckhlbHBlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjBEODVCMzE3MjM0Q0IxMDAzMzgyMTAgLyogTm9Mb2NrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5vTG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBG
NTI2OTFGNDIxRkY4MDA0QTQ1MkMgLyogU3RyaW5nTWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0cmluZ01hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEY1
MjZBMUY0MjFGRjgwMDRBNDUyQyAvKiBTdHJpbmdNYWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nTWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MDgsNiArOTEwLDgg
QEAKIAkJCQkwRjYwRjMyRTFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uaCAq
LywKIAkJCQlBOEE0NzJDMzE1MUE4MjVBMDA0MTIzRkYgLyogTG9ja2VyLmggKi8sCiAJCQkJNTMx
MUJENTUxRUE3RTE1QTAwNTI1MjgxIC8qIExvY2tsZXNzQmFnLmggKi8sCisJCQkJMDc3Q0Q4NkEx
RkQ5Q0ZEMjAwODI4NTg3IC8qIExvZ2dlci5oICovLAorCQkJCTA3N0NEODZCMUZEOUNGRDMwMDgy
ODU4NyAvKiBMb2dnZXJIZWxwZXIuaCAqLywKIAkJCQk1MTNFMTcwQTFDRDdENUJGMDBFMzY1MEIg
LyogTG9nZ2luZ0FjY3VtdWxhdG9yLmggKi8sCiAJCQkJMEYzMEJBOEMxRTc4NzA4RTAwMkNBODQ3
IC8qIExvZ2dpbmdIYXNoSUQuaCAqLywKIAkJCQkwRjMwQkE4RDFFNzg3MDhFMDAyQ0E4NDcgLyog
TG9nZ2luZ0hhc2hNYXAuaCAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5oCShyZXZpc2lvbiAyMjU2MjgpCShmcm9t
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2VyLmg6MjI1NjI4KQorKysgU291cmNlL1dURi93
dGYvTG9nZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgTG9nQXJndW1lbnQgeworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PFUsIGJvb2w+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhib29sIGFyZ3VtZW50KSB7
IHJldHVybiBhcmd1bWVudCA/IEFTQ0lJTGl0ZXJhbCgidHJ1ZSIpIDogQVNDSUlMaXRlcmFsKCJm
YWxzZSIpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgaW50Pjo6dmFsdWUsIFN0cmluZz46OnR5cGUg
dG9TdHJpbmcoaW50IGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCB1bnNpZ25lZD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRv
U3RyaW5nKHVuc2lnbmVkIGFyZ3VtZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVu
dCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCB1bnNpZ25lZCBsb25nPjo6dmFsdWUsIFN0cmluZz46
OnR5cGUgdG9TdHJpbmcodW5zaWduZWQgbG9uZyBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpu
dW1iZXIoYXJndW1lbnQpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgbG9uZz46OnZhbHVlLCBTdHJp
bmc+Ojp0eXBlIHRvU3RyaW5nKGxvbmcgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KGFyZ3VtZW50KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGZsb2F0Pjo6dmFsdWUsIFN0cmluZz46
OnR5cGUgdG9TdHJpbmcoZmxvYXQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFy
Z3VtZW50KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGRvdWJsZT46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKGRvdWJsZSBhcmd1bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJn
dW1lbnQpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNl
PFU+Ojp0eXBlLCBBdG9taWNTdHJpbmc+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhB
dG9taWNTdHJpbmcgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50LnN0cmluZygpOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBTdHJp
bmc+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhTdHJpbmcgYXJndW1lbnQpIHsgcmV0
dXJuIGFyZ3VtZW50OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVm
ZXJlbmNlPFU+Ojp0eXBlLCBTdHJpbmdCdWlsZGVyKj46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRv
U3RyaW5nKFN0cmluZ0J1aWxkZXIqIGFyZ3VtZW50KSB7IHJldHVybiBhcmd1bWVudC0+dG9TdHJp
bmcoKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIGNvbnN0IGNoYXIqPjo6dmFsdWUsIFN0cmluZz46
OnR5cGUgdG9TdHJpbmcoY29uc3QgY2hhciogYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZyhhcmd1
bWVudCk7IH0KKyAgICB0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPiBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKGNvbnN0IGNoYXIgKCZhcmd1bWVudClbbGVuZ3RoXSkgeyByZXR1cm4gU3RyaW5nKGFyZ3Vt
ZW50KTsgfQorfTsKKworY2xhc3MgTG9nZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8TG9nZ2VyPiB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9nZ2VyKTsKK3B1YmxpYzoKKworICAgIGNsYXNz
IE9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBk
ZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9nTWVzc2FnZShjb25zdCBXVEZMb2dD
aGFubmVsJiwgV1RGTG9nTGV2ZWwsIGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB9OworCisgICAg
c3RhdGljIFJlZjxMb2dnZXI+IGNyZWF0ZShjb25zdCB2b2lkKiBvd25lcikKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExvZ2dlcihvd25lcikpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9pZCBsb2dBbHdheXMo
V1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgVU5VU0VEX0ZVTkNUSU9OIGNvbnN0IEFyZ3VtZW50cyYu
Li4gYXJndW1lbnRzKSBjb25zdAorICAgIHsKKyNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
ICAgICAvLyAiU3RhbmRhcmQiIFdlYkNvcmUgbG9nZ2luZyBnb2VzIHRvIHN0ZGVyciwgd2hpY2gg
aXMgY2FwdHVyZWQgaW4gbGF5b3V0IHRlc3Qgb3V0cHV0IGFuZCBjYW4gZ2VuZXJhbGx5IGJlIGEg
cHJvYmxlbQorICAgICAgICAvLyAgb24gc29tZSBzeXN0ZW1zLCBzbyBkb24ndCBhbGxvdyBpdC4K
KyAgICAgICAgVU5VU0VEX1BBUkFNKGNoYW5uZWwpOworI2Vsc2UKKyAgICAgICAgaWYgKCF3aWxs
TG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsQWx3YXlzKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBsb2coY2hhbm5lbCwgV1RGTG9nTGV2ZWxBbHdheXMsIGFyZ3VtZW50cy4uLik7Cisj
ZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAg
aW5saW5lIHZvaWQgZXJyb3IoV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgY29uc3QgQXJndW1lbnRz
Ji4uLiBhcmd1bWVudHMpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIXdpbGxMb2coY2hhbm5l
bCwgV1RGTG9nTGV2ZWxFcnJvcikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbG9n
KGNoYW5uZWwsIFdURkxvZ0xldmVsRXJyb3IsIGFyZ3VtZW50cy4uLik7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIGlubGluZSB2b2lkIHdhcm5pbmco
V1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoIXdpbGxMb2coY2hhbm5lbCwgV1RGTG9nTGV2ZWxXYXJu
aW5nKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsb2coY2hhbm5lbCwgV1RGTG9n
TGV2ZWxXYXJuaW5nLCBhcmd1bWVudHMuLi4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KKyAgICBpbmxpbmUgdm9pZCBpbmZvKFdURkxvZ0NoYW5uZWwmIGNo
YW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYuLi4gYXJndW1lbnRzKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKCF3aWxsTG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsSW5mbykpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsSW5mbywgYXJndW1lbnRz
Li4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAg
aW5saW5lIHZvaWQgZGVidWcoV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgY29uc3QgQXJndW1lbnRz
Ji4uLiBhcmd1bWVudHMpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIXdpbGxMb2coY2hhbm5l
bCwgV1RGTG9nTGV2ZWxEZWJ1ZykpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbG9n
KGNoYW5uZWwsIFdURkxvZ0xldmVsRGVidWcsIGFyZ3VtZW50cy4uLik7CisgICAgfQorCisgICAg
aW5saW5lIGJvb2wgd2lsbExvZyhjb25zdCBXVEZMb2dDaGFubmVsJiBjaGFubmVsLCBXVEZMb2dM
ZXZlbCBsZXZlbCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9lbmFibGVkKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChsZXZlbCA8PSBXVEZMb2dMZXZlbEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKGNoYW5uZWwuc3Rh
dGUgPT0gV1RGTG9nQ2hhbm5lbE9mZiB8fCBsZXZlbCA+IGNoYW5uZWwubGV2ZWwpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsKKyAgICB9CisK
KyAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2b2lk
IHNldEVuYWJsZWQoY29uc3Qgdm9pZCogb3duZXIsIGJvb2wgZW5hYmxlZCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChvd25lciA9PSBtX293bmVyKTsKKyAgICAgICAgaWYgKG93bmVyID09IG1fb3du
ZXIpCisgICAgICAgICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworICAgIH0KKworICAgIHN0cnVj
dCBMb2dTaXRlSWRlbnRpZmllciB7CisgICAgICAgIExvZ1NpdGVJZGVudGlmaWVyKGNvbnN0IGNo
YXIqIG1ldGhvZE5hbWUsIGNvbnN0IHZvaWQqIG9iamVjdFB0cikKKyAgICAgICAgICAgIDogbWV0
aG9kTmFtZSB7IG1ldGhvZE5hbWUgfQorICAgICAgICAgICAgLCBvYmplY3RQdHIgeyByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4ob2JqZWN0UHRyKSB9CisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIExvZ1NpdGVJZGVudGlmaWVyKGNvbnN0IGNoYXIqIGNsYXNzTmFtZSwgY29uc3Qg
Y2hhciogbWV0aG9kTmFtZSwgY29uc3Qgdm9pZCogb2JqZWN0UHRyKQorICAgICAgICAgICAgOiBj
bGFzc05hbWUgeyBjbGFzc05hbWUgfQorICAgICAgICAgICAgLCBtZXRob2ROYW1lIHsgbWV0aG9k
TmFtZSB9CisgICAgICAgICAgICAsIG9iamVjdFB0ciB7IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihvYmplY3RQdHIpIH0KKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgY29uc3Qg
Y2hhciogY2xhc3NOYW1lIHsgbnVsbHB0ciB9OworICAgICAgICBjb25zdCBjaGFyKiBtZXRob2RO
YW1lIHsgbnVsbHB0ciB9OworICAgICAgICBjb25zdCB1aW50cHRyX3Qgb2JqZWN0UHRyIHsgMCB9
OworICAgIH07CisKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIm
IG9ic2VydmVyKQorICAgIHsKKyAgICAgICAgb2JzZXJ2ZXJzKCkuYXBwZW5kKG9ic2VydmVyKTsK
KyAgICB9CisgICAgc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJiBv
YnNlcnZlcikKKyAgICB7CisgICAgICAgIG9ic2VydmVycygpLnJlbW92ZUZpcnN0TWF0Y2hpbmco
WyZvYnNlcnZlcl0oYXV0byBhbk9ic2VydmVyKSB7CisgICAgICAgICAgICByZXR1cm4gJmFuT2Jz
ZXJ2ZXIuZ2V0KCkgPT0gJm9ic2VydmVyOworICAgICAgICB9KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgTG9nZ2VyKGNvbnN0IHZvaWQqIG93bmVyKQorICAgICAgICA6IG1fb3duZXIgeyBvd25l
ciB9CisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50Pgor
ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2coV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9n
TGV2ZWwgbGV2ZWwsIGNvbnN0IEFyZ3VtZW50Ji4uLiBhcmd1bWVudHMpCisgICAgeworICAgICAg
ICBTdHJpbmcgbG9nTWVzc2FnZSA9IG1ha2VTdHJpbmcoTG9nQXJndW1lbnQ8QXJndW1lbnQ+Ojp0
b1N0cmluZyhhcmd1bWVudHMpLi4uKTsKKworI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
ICAgIFdURkxvZygmY2hhbm5lbCwgIiVzIiwgbG9nTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyNl
bHNlCisgICAgICAgIG9zX2xvZyhjaGFubmVsLm9zTG9nQ2hhbm5lbCwgIiV7cHVibGljfXMiLCBs
b2dNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCisKKyAgICAgICAgaWYgKGNoYW5uZWwu
c3RhdGUgPT0gV1RGTG9nQ2hhbm5lbE9mZiB8fCBsZXZlbCA+IGNoYW5uZWwubGV2ZWwpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIgOiBvYnNl
cnZlcnMoKSkKKyAgICAgICAgICAgIG9ic2VydmVyLmRpZExvZ01lc3NhZ2UoY2hhbm5lbCwgbGV2
ZWwsIGxvZ01lc3NhZ2UpOworICAgIH0KKworICAgIHN0YXRpYyBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxPYnNlcnZlcj4+JiBvYnNlcnZlcnMoKQorICAgIHsKKyAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE9ic2VydmVyPj4+
IG9ic2VydmVyczsKKyAgICAgICAgcmV0dXJuIG9ic2VydmVyczsKKyAgICB9CisKKyAgICBjb25z
dCB2b2lkKiBtX293bmVyOworICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworfTsKKwordGVt
cGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyPiB7
CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBMb2dnZXI6OkxvZ1NpdGVJZGVudGlm
aWVyJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAg
ICAgICBpZiAodmFsdWUuY2xhc3NOYW1lKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh2
YWx1ZS5jbGFzc05hbWUpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6OiIp
OworICAgICAgICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlLm1ldGhvZE5hbWUpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIigiKTsKKyAgICAgICAgYXBwZW5kVW5zaWdu
ZWQ2NEFzSGV4KHZhbHVlLm9iamVjdFB0ciwgYnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiKSAiKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAg
ICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQUwKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0xvZ2dl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5oCShyZXZpc2lvbiAyMjU2
MjgpCisrKyBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgV1RGIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBMb2dBcmd1bWVudCB7CkBAIC0yMjEsNCAr
MjIxLDYgQEAgc3RydWN0IExvZ0FyZ3VtZW50PExvZ2dlcjo6TG9nU2l0ZUlkZW50aQogICAgIH0K
IH07CiAKLX0gLy8gbmFtZXNwYWNlIFBBTAorfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdU
Rjo6TG9nZ2VyOwpJbmRleDogU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgJKHJldmlzaW9uIDIyNTYyOCkJKGZy
b20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnZXJIZWxwZXIuaDoyMjU2MjgpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9Mb2dnZXJIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBQQUwgeworCitjbGFzcyBMb2dnZXI7CisKK2NsYXNzIExvZ2dlckhl
bHBlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TG9nZ2VySGVscGVyKCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdU
RkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCB2
b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgPSAwOworCisKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKworI2RlZmluZSBMT0dJREVOVElGSUVSIFBBTDo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRp
Zmllcihsb2dDbGFzc05hbWUoKSwgX19mdW5jX18sIGxvZ0lkZW50aWZpZXIoKSkKKworI2RlZmlu
ZSBBTFdBWVNfTE9HKC4uLikgICAgIGxvZ2dlcigpLmxvZ0Fsd2F5cyhsb2dDaGFubmVsKCksIF9f
VkFfQVJHU19fKQorI2RlZmluZSBFUlJPUl9MT0coLi4uKSAgICAgIGxvZ2dlcigpLmVycm9yKGxv
Z0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCisjZGVmaW5lIFdBUk5JTkdfTE9HKC4uLikgICAgbG9n
Z2VyKCkud2FybmluZyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBOT1RJQ0Vf
TE9HKC4uLikgICAgIGxvZ2dlcigpLm5vdGljZShsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQor
I2RlZmluZSBJTkZPX0xPRyguLi4pICAgICAgIGxvZ2dlcigpLmluZm8obG9nQ2hhbm5lbCgpLCBf
X1ZBX0FSR1NfXykKKyNkZWZpbmUgREVCVUdfTE9HKC4uLikgICAgICBsb2dnZXIoKS5kZWJ1Zyhs
b2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBXSUxMX0xPRyhfbGV2ZWxfKSAgIGxv
Z2dlcigpLndpbGxMb2cobG9nQ2hhbm5lbCgpLCBfbGV2ZWxfKQorCisjZWxzZQorCisjZGVmaW5l
IExPR0lERU5USUZJRVIgKCh2b2lkKTApCisKKyNkZWZpbmUgQUxXQVlTX0xPRyguLi4pICAgICAo
KHZvaWQpMCkKKyNkZWZpbmUgRVJST1JfTE9HKC4uLikgICAgICAoKHZvaWQpMCkKKyNkZWZpbmUg
RVJST1JfTE9HKC4uLikgICAgICAoKHZvaWQpMCkKKyNkZWZpbmUgV0FSTklOR19MT0coLi4uKSAg
ICAoKHZvaWQpMCkKKyNkZWZpbmUgTk9USUNFX0xPRyguLi4pICAgICAoKHZvaWQpMCkKKyNkZWZp
bmUgSU5GT19MT0coLi4uKSAgICAgICAoKHZvaWQpMCkKKyNkZWZpbmUgREVCVUdfTE9HKC4uLikg
ICAgICAoKHZvaWQpMCkKKyNkZWZpbmUgV0lMTF9MT0coX2xldmVsXykgICBmYWxzZQorCisjZW5k
aWYKKyAgICAKK307CisKK30gLy8gbmFtZXNwYWNlIFBBTApJbmRleDogU291cmNlL1dURi93dGYv
TG9nZ2VySGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVy
LmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCi1uYW1lc3Bh
Y2UgUEFMIHsKKyNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAKLWNsYXNzIExvZ2dlcjsKK25hbWVz
cGFjZSBXVEYgewogCiBjbGFzcyBMb2dnZXJIZWxwZXIgewogcHVibGljOgpAQCAtMzgsMTAgKzM4
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCA9
IDA7CiAKLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogCi0jZGVmaW5lIExPR0lERU5USUZJ
RVIgUEFMOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKGxvZ0NsYXNzTmFtZSgpLCBfX2Z1bmNf
XywgbG9nSWRlbnRpZmllcigpKQorI2RlZmluZSBMT0dJREVOVElGSUVSIFdURjo6TG9nZ2VyOjpM
b2dTaXRlSWRlbnRpZmllcihsb2dDbGFzc05hbWUoKSwgX19mdW5jX18sIGxvZ0lkZW50aWZpZXIo
KSkKIAogI2RlZmluZSBBTFdBWVNfTE9HKC4uLikgICAgIGxvZ2dlcigpLmxvZ0Fsd2F5cyhsb2dD
aGFubmVsKCksIF9fVkFfQVJHU19fKQogI2RlZmluZSBFUlJPUl9MT0coLi4uKSAgICAgIGxvZ2dl
cigpLmVycm9yKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCkBAIC02OCw0ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICAKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFBBTAorfSAvLyBuYW1lc3BhY2UgV1RG
CisKK3VzaW5nIFdURjo6TG9nZ2VySGVscGVyOworCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw2OSBAQAorMjAxNy0xMi0wNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBNb3ZlIExvZ2dlciBmcm9tIFBBTCB0byBXVEYgc28gaXQgY2FuIGJl
IHVzZWQgb3V0c2lkZSBvZiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODA1NjEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlz
dGVuc2VuLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZXhpc3RpbmcgQVBJIHRlc3QgdXBkYXRl
ZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8d2VicnRjOjpSVENTdGF0cz46OnRv
U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OlVSTD46OnRvU3RyaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnRFbnVtcy5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlJlYWR5U3RhdGU+Ojp0b1N0cmluZyk6IERlbGV0ZWQu
CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6TmV0d29ya1N0YXRlPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNz
aW9uOjpsb2dnZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5o
OgorICAgICAgICAqIGh0bWwvdHJhY2svRGF0YUN1ZS5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1
bWVudDxXZWJDb3JlOjpEYXRhQ3VlPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGh0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNv
cmU6OlRleHRUcmFja0N1ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJpYz46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KiBodG1sL3RyYWNrL1RyYWNrQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpudWxsTG9nZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6VHJhY2tCYXNlKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RyYWNrQmFzZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmg6Cisg
ICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OlZUVEN1ZT46OnRvU3RyaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNs
aWVudC5oOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpHZW5lcmljQ3VlRGF0
YT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpudWxsTG9nZ2VyKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyOjptZWRpYVBsYXllckxvZ2dlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8TWVk
aWFUaW1lPjo6dG9TdHJpbmcpOgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXVEY6Ok1lZGlh
VGltZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllckVudW1zLmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1l
ZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
IChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0
ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UcmFj
a1ByaXZhdGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2U6OnNl
dExvZ2dlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoLVtXZWJDb3JlQVZGTW92aWVP
YnNlcnZlciBvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0p
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5o
OgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENJY2VDb25uZWN0aW9uU3Rh
dGU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDSWNlR2F0aGVyaW5nU3RhdGUuaDoKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8V2ViQ29y
ZTo6UlRDSWNlR2F0aGVyaW5nU3RhdGU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oOgorICAgICAgICAo
UEFMOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvblN0YXRlPjo6dG9TdHJp
bmcpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1NpZ25hbGlu
Z1N0YXRlLmg6CisgICAgICAgIChQQUw6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OlJUQ1NpZ25hbGlu
Z1N0YXRlPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgorCiAyMDE3LTEy
LTA3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbV1BFXVtHVEtdIEZyZWV6ZSBXZWJLaXQgdmVyc2lvbiBpbiB1c2VyIGFnZW50CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDggKzM3LDcgQEAKICNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCiAjaW5jbHVk
ZSAiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUlRDU2lnbmFsaW5nU3RhdGUu
aCIKLSNpbmNsdWRlIDxwYWwvTG9nZ2VyLmg+Ci0jaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02Nyw3ICs2Niw3IEBAIHVzaW5nIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCA9IHN0
ZDoKIAogY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0gICAgOiBwdWJsaWMgUEFMOjpMb2dnZXJIZWxwZXIKKyAgICA6IHByaXZhdGUgTG9nZ2Vy
SGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTEyMCw3ICsxMTksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGFwcGx5Um90YXRpb25Gb3JPdXRnb2luZ1ZpZGVvU291cmNlcygpIHsg
fQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgUEFMOjpMb2dnZXImIGxv
Z2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qg
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQog
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xv
Z0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUGVlckNvbm5lY3Rpb25CYWNrZW5kIjsgfQogICAgIFdURkxvZ0NoYW5u
ZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKQEAgLTE3Niw3ICsxNzUsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxQZW5kaW5nSUNFQ2FuZGlkYXRlPiBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVz
OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmPGNvbnN0IFBBTDo6TG9nZ2Vy
PiBtX2xvZ2dlcjsKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2
b2lkKiBtX2xvZ0lkZW50aWZpZXI7CiAjZW5kaWYKICAgICBib29sIG1fbmVnb3RpYXRpb25OZWVk
ZWQgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25T
dGF0ZS5oIgogI2luY2x1ZGUgIlJUQ1J0cFRyYW5zY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDU2ln
bmFsaW5nU3RhdGUuaCIKLSNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8
d3RmL0xvZ2dlckhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcwLDcgKzcw
LDcgQEAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24gZmluYWwKICAgICAsIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhCiAgICAgLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwdWJsaWMgUEFMOjpMb2dnZXJIZWxwZXIKKyAgICAs
IHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTE2MCw3ICsxNjAs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsK
IAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBsb2dn
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IExv
Z2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAg
ICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJ
ZGVudGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIlJUQ1BlZXJDb25uZWN0aW9uIjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0No
YW5uZWwoKSBjb25zdCBmaW5hbDsKQEAgLTIwNCw3ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIFJU
Q1BlZXJDb25uZWN0aW9uU3RhdGUgbV9jb25uZWN0aW9uU3RhdGUgeyBSVENQZWVyQ29ubmVjdGlv
blN0YXRlOjpOZXcgfTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIFJlZjxjb25z
dCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7
CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgJKHJldmlzaW9uIDIyNTYyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDExIEBACiAjaW5jbHVk
ZSAiUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlLmgiCiAjaW5jbHVkZSA8VGltZXIuaD4KLSNpbmNsdWRlIDxwYWwvTG9n
Z2VyLmg+Ci0jaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9h
cGkvanNlcC5oPgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcGVlcmNvbm5lY3Rpb25pbnRlcmZhY2Uu
aD4KICNpbmNsdWRlIDx3ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25mYWN0b3J5Lmg+CiAjaW5jbHVk
ZSA8d2VicnRjL3BjL3J0Y3N0YXRzY29sbGVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhl
bHBlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2Ugd2VicnRjIHsKQEAgLTYyLDcgKzYxLDcgQEAgY2xhc3MgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dAogICAgICwgcHJpdmF0ZSB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIKICAgICAsIHBy
aXZhdGUgd2VicnRjOjpSVENTdGF0c0NvbGxlY3RvckNhbGxiYWNrCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgLCBwdWJsaWMgUEFMOjpMb2dnZXJIZWxwZXIKKyAgICAsIHByaXZhdGUg
TG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoKQEAgLTEzNCw3ICsxMzMsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgc2hvdWxkT2ZmZXJBbGxvd1RvUmVjZWl2ZVZpZGVvKCkgY29uc3Q7CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBQQUw6OkxvZ2dlciYgbG9nZ2Vy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAg
Y29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRl
bnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJMaWJXZWJSVENNZWRpYUVuZHBvaW50IjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKQEAgLTIxMywxNCArMjEyLDE0IEBAIHByaXZhdGU6CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpbnQ2NF90IG1fc3RhdHNGaXJzdERlbGl2
ZXJlZFRpbWVzdGFtcCB7IDAgfTsKLSAgICBSZWY8Y29uc3QgUEFMOjpMb2dnZXI+IG1fbG9nZ2Vy
OworICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9n
SWRlbnRpZmllcjsKICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1l
c3BhY2UgUEFMIHsKK25hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgog
c3RydWN0IExvZ0FyZ3VtZW50OwpAQCAtMjMzLDYgKzIzMiw2IEBAIHN0cnVjdCBMb2dBcmd1bWVu
dDx3ZWJydGM6OlJUQ1N0YXRzPiB7CiAgICAgfQogfTsKIAotfTsgLy8gbmFtZXNwYWNlIFBBTAor
fTsgLy8gbmFtZXNwYWNlIFdURgogCiAjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjI1NjYyKQorKysgU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE3LTEyLTA3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgTG9nZ2Vy
IGZyb20gUEFMIHRvIFdURiBzbyBpdCBjYW4gYmUgdXNlZCBvdXRzaWRlIG9mIFdlYkNvcmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDU2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBQQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvTG9nZ2VyLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGFsL0xvZ2dlckhlbHBlci5oOiBSZW1vdmVkLgorCiAyMDE3LTEyLTA3ICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBBZGQgU1BJIHRvIGRpc2FsbG93IHVzZXItaW5zdGFsbGVkIGZvbnRzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDYgQEAKIC8qIEVuZCBQQlhBZ2dyZWdh
dGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwot
CQkwNzA4QUMzMzFGNEM4NzRCMDAxRjc4OEYgLyogTG9nZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA4QUMzMjFGNEM4NzRBMDAxRjc4OEYgLyog
TG9nZ2VyLmggKi87IH07Ci0JCTA3Mzc3QURDMUY1Nzc3RDkwMDI3RjE2RCAvKiBMb2dnZXJIZWxw
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mzc3
QURCMUY1Nzc3RDcwMDI3RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCAqLzsgfTsKIAkJMEMwMENGRDQx
RjY4Q0U0NjAwQUFDMjZEIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEMwMENGRDIxRjY4Q0U0NjAwQUFDMjZE
IC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5oICovOyB9OwogCQkwQzJEOUU3MzFFRUY1QUY2MDBE
QkMzMTcgLyogRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwQzJEOUU3MjFFRUY1QUY2MDBEQkMzMTcgLyogRXhwb3J0TWFjcm9zLmgg
Ki87IH07CiAJCTBDMkRBMDZEMUYzM0NBODQwMERCQzMxNyAvKiBDRkxvY2FsZVNQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEMyREEwNjcxRjMzQ0E4
NDAwREJDMzE3IC8qIENGTG9jYWxlU1BJLmggKi87IH07CkBAIC0xNTksOCArMTU3LDYgQEAKIC8q
IEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxl
UmVmZXJlbmNlIHNlY3Rpb24gKi8KLQkJMDcwOEFDMzIxRjRDODc0QTAwMUY3ODhGIC8qIExvZ2dl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDczNzdBREIxRjU3NzdENzAwMjdGMTZEIC8qIExvZ2dlckhl
bHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnZXJIZWxwZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEMwMENGRDExRjY4Q0U0NjAwQUFDMjZEIC8q
IE1lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwOyBwYXRoID0gYXZmb3VuZGF0aW9uL01l
ZGlhVGltZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBD
MDBDRkQyMUY2OENFNDYwMEFBQzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg7IHBhdGgg
PSBhdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBDMkQ5RTcyMUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwb3J0TWFjcm9zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODcsOCArNDgzLDYgQEAKIAkJCQlGNDQyOTE2MjFGQTUy
NjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAogCQkJCUY0NDI5MTVGMUZB
NTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAogCQkJCUEzOURFNzREMUY3
QzQ0M0MwMDdCQ0IwMCAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAqLywKLQkJCQkwNzA4QUMzMjFG
NEM4NzRBMDAxRjc4OEYgLyogTG9nZ2VyLmggKi8sCi0JCQkJMDczNzdBREIxRjU3NzdENzAwMjdG
MTZEIC8qIExvZ2dlckhlbHBlci5oICovLAogCQkJCTFDNDg3NkQ2MUY4RDdGNEUwMENDRUVCRCAv
KiBMb2dnaW5nLmNwcCAqLywKIAkJCQkxQzQ4NzZENzFGOEQ3RjRFMDBDQ0VFQkQgLyogTG9nZ2lu
Zy5oICovLAogCQkJCTFDNDg3NkREMUY4RDgxMkIwMENDRUVCRCAvKiBMb2dJbml0aWFsaXphdGlv
bi5oICovLApAQCAtNjQ0LDggKzYzOCw2IEBACiAJCQkJQTMwRDQxMjExRjBERDBFQTAwQjcxOTU0
IC8qIEtpbGxSaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjkxQzFGNDNBNEM3MDAyRUFD
MDIgLyogTGF1bmNoU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTQ3MUYz
QkVCNDkwMERCQzMxNyAvKiBMaW5rUHJlc2VudGF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwNzA4QUMzMzFGNEM4NzRCMDAxRjc4OEYgLyogTG9nZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwNzM3N0FEQzFGNTc3N0Q5MDAyN0YxNkQgLyogTG9nZ2VySGVscGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQzQ4NzZEOTFGOEQ3RjRFMDBDQ0VFQkQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEM3Nzg1OEIxRjQ1MTMwRjAwRjRFQkI2IC8qIExvb2t1cFNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEMyREExNDgxRjNCRUI0OTAwREJDMzE3IC8qIE1hY2hWTVNQSS5oIGluIEhl
YWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2VyLmgJKHJldmlzaW9uIDIyNTYyOCkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2VyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwy
MjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3
dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgUEFMIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBMb2dBcmd1
bWVudCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgYm9vbD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRv
U3RyaW5nKGJvb2wgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50ID8gQVNDSUlMaXRlcmFsKCJ0
cnVlIikgOiBBU0NJSUxpdGVyYWwoImZhbHNlIik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
ID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBpbnQ+
Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhpbnQgYXJndW1lbnQpIHsgcmV0dXJuIFN0
cmluZzo6bnVtYmVyKGFyZ3VtZW50KTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBz
dGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIHVuc2lnbmVkPjo6
dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcodW5zaWduZWQgYXJndW1lbnQpIHsgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKGFyZ3VtZW50KTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBU
PiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIHVuc2lnbmVk
IGxvbmc+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyh1bnNpZ25lZCBsb25nIGFyZ3Vt
ZW50KSB7IHJldHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2Ft
ZTxVLCBsb25nPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcobG9uZyBhcmd1bWVudCkg
eyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwg
ZmxvYXQ+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhmbG9hdCBhcmd1bWVudCkgeyBy
ZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgZG91
YmxlPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoZG91YmxlIGFyZ3VtZW50KSB7IHJl
dHVybiBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
ID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTx0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUsIEF0b21pY1N0cmluZz46OnZhbHVlLCBT
dHJpbmc+Ojp0eXBlIHRvU3RyaW5nKEF0b21pY1N0cmluZyBhcmd1bWVudCkgeyByZXR1cm4gYXJn
dW1lbnQuc3RyaW5nKCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2U8VT46OnR5cGUsIFN0cmluZz46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5n
KFN0cmluZyBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQ7IH0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUsIFN0cmluZ0J1aWxkZXIqPjo6
dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoU3RyaW5nQnVpbGRlciogYXJndW1lbnQpIHsg
cmV0dXJuIGFyZ3VtZW50LT50b1N0cmluZygpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9
IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgY29uc3Qg
Y2hhcio+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhjb25zdCBjaGFyKiBhcmd1bWVu
dCkgeyByZXR1cm4gU3RyaW5nKGFyZ3VtZW50KTsgfQotICAgIHRlbXBsYXRlPHNpemVfdCBsZW5n
dGg+IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgY2hhciAoJmFyZ3VtZW50KVtsZW5ndGhd
KSB7IHJldHVybiBTdHJpbmcoYXJndW1lbnQpOyB9Ci19OwotCi1jbGFzcyBMb2dnZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxMb2dnZXI+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2dnZXIp
OwotcHVibGljOgotCi0gICAgY2xhc3MgT2JzZXJ2ZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAg
dmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRM
b2dNZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmLCBXVEZMb2dMZXZlbCwgY29uc3QgU3RyaW5n
JikgPSAwOwotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPExvZ2dlcj4gY3JlYXRlKGNvbnN0IHZv
aWQqIG93bmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTG9nZ2VyKG93
bmVyKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAg
IGlubGluZSB2b2lkIGxvZ0Fsd2F5cyhXVEZMb2dDaGFubmVsJiBjaGFubmVsLCBVTlVTRURfRlVO
Q1RJT04gY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpIGNvbnN0Ci0gICAgewotI2lmIFJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgICAgIC8vICJTdGFuZGFyZCIgV2ViQ29yZSBsb2dnaW5n
IGdvZXMgdG8gc3RkZXJyLCB3aGljaCBpcyBjYXB0dXJlZCBpbiBsYXlvdXQgdGVzdCBvdXRwdXQg
YW5kIGNhbiBnZW5lcmFsbHkgYmUgYSBwcm9ibGVtCi0gICAgICAgIC8vICBvbiBzb21lIHN5c3Rl
bXMsIHNvIGRvbid0IGFsbG93IGl0LgotICAgICAgICBVTlVTRURfUEFSQU0oY2hhbm5lbCk7Ci0j
ZWxzZQotICAgICAgICBpZiAoIXdpbGxMb2coY2hhbm5lbCwgV1RGTG9nTGV2ZWxBbHdheXMpKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEFs
d2F5cywgYXJndW1lbnRzLi4uKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9pZCBlcnJvcihXVEZMb2dDaGFubmVsJiBj
aGFubmVsLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmICghd2lsbExvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEVycm9yKSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBsb2coY2hhbm5lbCwgV1RGTG9nTGV2ZWxFcnJvciwgYXJndW1l
bnRzLi4uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0g
ICAgaW5saW5lIHZvaWQgd2FybmluZyhXVEZMb2dDaGFubmVsJiBjaGFubmVsLCBjb25zdCBBcmd1
bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghd2lsbExvZyhj
aGFubmVsLCBXVEZMb2dMZXZlbFdhcm5pbmcpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGxvZyhjaGFubmVsLCBXVEZMb2dMZXZlbFdhcm5pbmcsIGFyZ3VtZW50cy4uLik7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIGlubGluZSB2b2lk
IGluZm8oV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVu
dHMpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXdpbGxMb2coY2hhbm5lbCwgV1RGTG9nTGV2
ZWxJbmZvKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsb2coY2hhbm5lbCwgV1RG
TG9nTGV2ZWxJbmZvLCBhcmd1bWVudHMuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KLSAgICBpbmxpbmUgdm9pZCBkZWJ1ZyhXVEZMb2dDaGFubmVsJiBj
aGFubmVsLCBjb25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmICghd2lsbExvZyhjaGFubmVsLCBXVEZMb2dMZXZlbERlYnVnKSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBsb2coY2hhbm5lbCwgV1RGTG9nTGV2ZWxEZWJ1ZywgYXJndW1l
bnRzLi4uKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCB3aWxsTG9nKGNvbnN0IFdURkxvZ0No
YW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xldmVsIGxldmVsKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKCFtX2VuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYg
KGxldmVsIDw9IFdURkxvZ0xldmVsRXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgICAgICBpZiAoY2hhbm5lbC5zdGF0ZSA9PSBXVEZMb2dDaGFubmVsT2ZmIHx8IGxldmVsID4g
Y2hhbm5lbC5sZXZlbCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXR1
cm4gbV9lbmFibGVkOwotICAgIH0KLQotICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5hYmxlZDsgfQotICAgIHZvaWQgc2V0RW5hYmxlZChjb25zdCB2b2lkKiBvd25lciwgYm9v
bCBlbmFibGVkKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG93bmVyID09IG1fb3duZXIpOwotICAg
ICAgICBpZiAob3duZXIgPT0gbV9vd25lcikKLSAgICAgICAgICAgIG1fZW5hYmxlZCA9IGVuYWJs
ZWQ7Ci0gICAgfQotCi0gICAgc3RydWN0IExvZ1NpdGVJZGVudGlmaWVyIHsKLSAgICAgICAgTG9n
U2l0ZUlkZW50aWZpZXIoY29uc3QgY2hhciogbWV0aG9kTmFtZSwgY29uc3Qgdm9pZCogb2JqZWN0
UHRyKQotICAgICAgICAgICAgOiBtZXRob2ROYW1lIHsgbWV0aG9kTmFtZSB9Ci0gICAgICAgICAg
ICAsIG9iamVjdFB0ciB7IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihvYmplY3RQdHIpIH0K
LSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgTG9nU2l0ZUlkZW50aWZpZXIoY29uc3Qg
Y2hhciogY2xhc3NOYW1lLCBjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBjb25zdCB2b2lkKiBvYmpl
Y3RQdHIpCi0gICAgICAgICAgICA6IGNsYXNzTmFtZSB7IGNsYXNzTmFtZSB9Ci0gICAgICAgICAg
ICAsIG1ldGhvZE5hbWUgeyBtZXRob2ROYW1lIH0KLSAgICAgICAgICAgICwgb2JqZWN0UHRyIHsg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9iamVjdFB0cikgfQotICAgICAgICB7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zdCBjaGFyKiBjbGFzc05hbWUgeyBudWxscHRyIH07Ci0gICAg
ICAgIGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUgeyBudWxscHRyIH07Ci0gICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBvYmplY3RQdHIgeyAwIH07Ci0gICAgfTsKLQotICAgIHN0YXRpYyBpbmxpbmUgdm9p
ZCBhZGRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCi0gICAgewotICAgICAgICBvYnNlcnZl
cnMoKS5hcHBlbmQob2JzZXJ2ZXIpOwotICAgIH0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgcmVt
b3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQotICAgIHsKLSAgICAgICAgb2JzZXJ2ZXJz
KCkucmVtb3ZlRmlyc3RNYXRjaGluZyhbJm9ic2VydmVyXShhdXRvIGFuT2JzZXJ2ZXIpIHsKLSAg
ICAgICAgICAgIHJldHVybiAmYW5PYnNlcnZlci5nZXQoKSA9PSAmb2JzZXJ2ZXI7Ci0gICAgICAg
IH0pOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBMb2dnZXIoY29uc3Qgdm9pZCogb3duZXIpCi0g
ICAgICAgIDogbV9vd25lciB7IG93bmVyIH0KLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJndW1lbnQ+Ci0gICAgc3RhdGljIGlubGluZSB2b2lkIGxvZyhXVEZMb2dD
aGFubmVsJiBjaGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwgY29uc3QgQXJndW1lbnQmLi4uIGFy
Z3VtZW50cykKLSAgICB7Ci0gICAgICAgIFN0cmluZyBsb2dNZXNzYWdlID0gbWFrZVN0cmluZyhM
b2dBcmd1bWVudDxBcmd1bWVudD46OnRvU3RyaW5nKGFyZ3VtZW50cykuLi4pOwotCi0jaWYgUkVM
RUFTRV9MT0dfRElTQUJMRUQKLSAgICAgICAgV1RGTG9nKCZjaGFubmVsLCAiJXMiLCBsb2dNZXNz
YWdlLnV0ZjgoKS5kYXRhKCkpOwotI2Vsc2UKLSAgICAgICAgb3NfbG9nKGNoYW5uZWwub3NMb2dD
aGFubmVsLCAiJXtwdWJsaWN9cyIsIGxvZ01lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Ci0jZW5kaWYK
LQotICAgICAgICBpZiAoY2hhbm5lbC5zdGF0ZSA9PSBXVEZMb2dDaGFubmVsT2ZmIHx8IGxldmVs
ID4gY2hhbm5lbC5sZXZlbCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKE9i
c2VydmVyJiBvYnNlcnZlciA6IG9ic2VydmVycygpKQotICAgICAgICAgICAgb2JzZXJ2ZXIuZGlk
TG9nTWVzc2FnZShjaGFubmVsLCBsZXZlbCwgbG9nTWVzc2FnZSk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE9ic2VydmVyPj4mIG9ic2VydmVycygp
Ci0gICAgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8T2JzZXJ2ZXI+Pj4gb2JzZXJ2ZXJzOwotICAgICAgICByZXR1cm4gb2JzZXJ2
ZXJzOwotICAgIH0KLQotICAgIGNvbnN0IHZvaWQqIG1fb3duZXI7Ci0gICAgYm9vbCBtX2VuYWJs
ZWQgeyB0cnVlIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IExvZ0FyZ3VtZW50PExvZ2dl
cjo6TG9nU2l0ZUlkZW50aWZpZXI+IHsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0
IExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXImIHZhbHVlKQotICAgIHsKLSAgICAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotCi0gICAgICAgIGlmICh2YWx1ZS5jbGFzc05hbWUpIHsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlLmNsYXNzTmFtZSk7Ci0gICAgICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIjo6Iik7Ci0gICAgICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBl
bmQodmFsdWUubWV0aG9kTmFtZSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKCIp
OwotICAgICAgICBhcHBlbmRVbnNpZ25lZDY0QXNIZXgodmFsdWUub2JqZWN0UHRyLCBidWlsZGVy
KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpICIpOwotICAgICAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFBBTApJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnZXJIZWxwZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dlckhlbHBlci5oCShyZXZpc2lvbiAyMjU2MjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dlckhlbHBlci5oCShub25leGlzdGVudCkKQEAg
LTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgUEFMIHsKLQotY2xhc3MgTG9nZ2VyOwotCi1j
bGFzcyBMb2dnZXJIZWxwZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgfkxvZ2dlckhlbHBlcigp
ID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCA9
IDA7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKLQotCi0jaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0KLSNkZWZpbmUgTE9HSURFTlRJRklFUiBQQUw6OkxvZ2dlcjo6
TG9nU2l0ZUlkZW50aWZpZXIobG9nQ2xhc3NOYW1lKCksIF9fZnVuY19fLCBsb2dJZGVudGlmaWVy
KCkpCi0KLSNkZWZpbmUgQUxXQVlTX0xPRyguLi4pICAgICBsb2dnZXIoKS5sb2dBbHdheXMobG9n
Q2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgRVJST1JfTE9HKC4uLikgICAgICBsb2dn
ZXIoKS5lcnJvcihsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQotI2RlZmluZSBXQVJOSU5HX0xP
RyguLi4pICAgIGxvZ2dlcigpLndhcm5pbmcobG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKLSNk
ZWZpbmUgTk9USUNFX0xPRyguLi4pICAgICBsb2dnZXIoKS5ub3RpY2UobG9nQ2hhbm5lbCgpLCBf
X1ZBX0FSR1NfXykKLSNkZWZpbmUgSU5GT19MT0coLi4uKSAgICAgICBsb2dnZXIoKS5pbmZvKGxv
Z0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIERFQlVHX0xPRyguLi4pICAgICAgbG9n
Z2VyKCkuZGVidWcobG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgV0lMTF9MT0co
X2xldmVsXykgICBsb2dnZXIoKS53aWxsTG9nKGxvZ0NoYW5uZWwoKSwgX2xldmVsXykKLQotI2Vs
c2UKLQotI2RlZmluZSBMT0dJREVOVElGSUVSICgodm9pZCkwKQotCi0jZGVmaW5lIEFMV0FZU19M
T0coLi4uKSAgICAgKCh2b2lkKTApCi0jZGVmaW5lIEVSUk9SX0xPRyguLi4pICAgICAgKCh2b2lk
KTApCi0jZGVmaW5lIEVSUk9SX0xPRyguLi4pICAgICAgKCh2b2lkKTApCi0jZGVmaW5lIFdBUk5J
TkdfTE9HKC4uLikgICAgKCh2b2lkKTApCi0jZGVmaW5lIE5PVElDRV9MT0coLi4uKSAgICAgKCh2
b2lkKTApCi0jZGVmaW5lIElORk9fTE9HKC4uLikgICAgICAgKCh2b2lkKTApCi0jZGVmaW5lIERF
QlVHX0xPRyguLi4pICAgICAgKCh2b2lkKTApCi0jZGVmaW5lIFdJTExfTE9HKF9sZXZlbF8pICAg
ZmFsc2UKLQotI2VuZGlmCi0gICAgCi19OwotCi19IC8vIG5hbWVzcGFjZSBQQUwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw2IEBACiAjaW5j
bHVkZSA8Y3RpbWU+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5j
bHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgotI2luY2x1ZGUgPHBhbC9Mb2dnZXIu
aD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2Uu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDEyIEBACiAjaW5jbHVkZSAiVXNlckFjdGlvbkVs
ZW1lbnRTZXQuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlZp
c2liaWxpdHlTdGF0ZS5oIgotI2luY2x1ZGUgPHBhbC9Mb2dnZXIuaD4KICNpbmNsdWRlIDxwYWwv
U2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3dGYvT2JqZWN0SWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nSGFzaC5oPgpAQCAtMzEzLDcgKzMxMyw3IEBAIGNsYXNzIERvY3VtZW50CiAg
ICAgLCBwdWJsaWMgRm9udFNlbGVjdG9yQ2xpZW50CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgU3VwcGxlbWVudGFibGU8RG9jdW1lbnQ+Ci0gICAg
LCBwdWJsaWMgUEFMOjpMb2dnZXI6Ok9ic2VydmVyIHsKKyAgICAsIHB1YmxpYyBMb2dnZXI6Ok9i
c2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERvY3VtZW50PiBjcmVhdGUoRnJhbWUq
IGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CkBAIC0xMzcxLDcgKzEzNzEsNyBAQCBwdWJs
aWM6CiAgICAgVGV4dEF1dG9TaXppbmcmIHRleHRBdXRvU2l6aW5nKCk7CiAjZW5kaWYKIAotICAg
IFBBTDo6TG9nZ2VyJiBsb2dnZXIoKTsKKyAgICBMb2dnZXImIGxvZ2dlcigpOwogCiAgICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcGFzc2VkUHJvbWlzZSk7
CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBh
c3NlZFByb21pc2UpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgcHJpdmF0ZToKIAogICAgIE9yaWVu
dGF0aW9uTm90aWZpZXIgbV9vcmllbnRhdGlvbk5vdGlmaWVyOwogICAgIG11dGFibGUgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgbXV0YWJsZSBSZWZQdHI8UEFMOjpMb2dnZXI+IG1f
bG9nZ2VyOworICAgIG11dGFibGUgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgUmVmUHRy
PFN0cmluZ0NhbGxiYWNrPiBtX2NvbnNvbGVNZXNzYWdlTGlzdGVuZXI7CiAKICAgICBzdGF0aWMg
Ym9vbCBoYXNFdmVyQ3JlYXRlZEFuQVhPYmplY3RDYWNoZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyAr
ODgsNiBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlVz
ZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHBhbC9M
b2dnZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8cGFsL3N5c3Rl
bS9TbGVlcERpc2FibGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CkBAIC0x
NjYsNyArMTY1LDcgQEAKICNpbmNsdWRlICJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIgogI2VuZGlm
CiAKLW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZSA8Pgogc3RydWN0
IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlVSTD4gewogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmco
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAKICNpbmNsdWRl
ICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJW
aXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCi0jaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAt
NjYsNyArNjYsNiBAQAogI2VuZGlmCiAKIG5hbWVzcGFjZSBQQUwgewotY2xhc3MgTG9nZ2VyOwog
Y2xhc3MgU2xlZXBEaXNhYmxlcjsKIH0KIApAQCAtMTQxLDcgKzE0MCw3IEBAIGNsYXNzIEhUTUxN
ZWRpYUVsZW1lbnQKICAgICAsIHByaXZhdGUgQ0RNQ2xpZW50CiAjZW5kaWYKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICAsIHB1YmxpYyBQQUw6OkxvZ2dlckhlbHBlcgorICAgICwgcHJp
dmF0ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgogewogcHVibGljOgpAQCAtNTQwLDcgKzUzOSw3IEBA
IHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlOwogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CiAgICAg
Y29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KICAgICBXVEZMb2dDaGFu
bmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKQEAgLTkwNiw3ICs5MDUsNyBA
QCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJIVE1MTWVkaWFFbGVtZW50IjsgfQogCiAgICAgY29uc3Qgdm9pZCogbWVkaWFQbGF5
ZXJMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1cm4gbG9nSWRlbnRpZmllcigpOyB9Ci0gICAg
Y29uc3QgUEFMOjpMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwgeyByZXR1cm4gbG9n
Z2VyKCk7IH0KKyAgICBjb25zdCBMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCkgZmluYWwgeyBy
ZXR1cm4gbG9nZ2VyKCk7IH0KICNlbmRpZgogCiAgICAgV2Vha1B0ckZhY3Rvcnk8SFRNTE1lZGlh
RWxlbWVudD4gbV93ZWFrRmFjdG9yeTsKQEAgLTExMjcsNyArMTEyNiw3IEBAIHByaXZhdGU6CiAg
ICAgc2l6ZV90IG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3QgeyAwIH07CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICBSZWZQdHI8UEFMOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJl
ZlB0cjxMb2dnZXI+IG1fbG9nZ2VyOwogICAgIHVpbnQ2NF90IG1fbG9nSWRlbnRpZmllcjsKICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudEVudW1z
LmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudEVudW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKEhUTUxNZQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CkBAIC04NCw1ICs4NCw1IEBAIHN0cnVjdCBMb2dBcmd1
bWVudDxXZWJDb3JlOjpIVE1MTWVkaWFFbGUKICAgICB9CiB9OwogCi19OyAvLyBuYW1lc3BhY2Ug
UEFMCit9OyAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQ1LDcg
Kzg0NSw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lsbExvZyhXVEZMb2cKIH0KIAog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotY29uc3QgUEFMOjpMb2dnZXImIE1lZGlhRWxlbWVu
dFNlc3Npb246OmxvZ2dlcigpIGNvbnN0Citjb25zdCBMb2dnZXImIE1lZGlhRWxlbWVudFNlc3Np
b246OmxvZ2dlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZWxlbWVudC5sb2dnZXIoKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCShyZXZpc2lv
biAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiU3VjY2Vzc09yLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNp
bmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTQsOSArNTQsOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXI7CiAKIGNsYXNzIE1lZGlhRWxlbWVudFNl
c3Npb24gZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVNlc3Npb24KICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKLSAgICAsIHB1YmxpYyBQQUw6OkxvZ2dlckhlbHBlcgorICAgICwgcHJpdmF0
ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgotICAgIHsKK3sKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYUVsZW1lbnRTZXNzaW9uKEhUTUxNZWRp
YUVsZW1lbnQmKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgfQogCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0
IGZpbmFsOworICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CiAgICAgY29u
c3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGxv
Z0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNZWRpYUVsZW1lbnRTZXNzaW9uIjsg
fQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEw
OCw3IEBAIGNvbnN0IERhdGFDdWUqIHRvRGF0YUN1ZShjb25zdCBUZXh0VHJhY2sKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBXVEYgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IExvZ0FyZ3VtZW50OwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1u
YW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBl
Pgogc3RydWN0IExvZ0FyZ3VtZW50OwpAQCAtMTM0LDcgKzEzNCw2IEBAIHN0cnVjdCBMb2dBcmd1
bWVudDxXZWJDb3JlOjpUZXh0VHJhY2tDdWUKICAgICB9CiB9OwogCi0KIH0KIAogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMu
aAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWVHZW5lcmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBX
VEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IExvZ0FyZ3VtZW50OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAkocmV2aXNpb24gMjI1NjI4
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBzdGF0aWMgaW50IHNf
dW5pcXVlSWQgPSAwOwogCkBAIC00NSw5ICs0Niw5IEBAIHN0YXRpYyBjb25zdCB2b2lkKiBuZXh0
TG9nSWRlbnRpZmllcigpCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KCsrbG9nSWRlbnRpZmllcik7CiB9CiAKLXN0YXRpYyBSZWZQdHI8UEFMOjpMb2dnZXI+JiBudWxs
TG9nZ2VyKCkKK3N0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVsbExvZ2dlcigpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxQQUw6OkxvZ2dlcj4+IGxvZ2dlcjsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKICAgICByZXR1cm4gbG9n
Z2VyOwogfQogI2VuZGlmCkBAIC02NCw3ICs2NSw3IEBAIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5
cGUgdHlwZSwgY29uc3QgQXQKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmICgh
bnVsbExvZ2dlcigpLmdldCgpKSB7Ci0gICAgICAgIG51bGxMb2dnZXIoKSA9IFBBTDo6TG9nZ2Vy
OjpjcmVhdGUodGhpcyk7CisgICAgICAgIG51bGxMb2dnZXIoKSA9IExvZ2dlcjo6Y3JlYXRlKHRo
aXMpOwogICAgICAgICBudWxsTG9nZ2VyKCktPnNldEVuYWJsZWQodGhpcywgZmFsc2UpOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCShyZXZpc2lvbiAy
MjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw4ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNp
bmNsdWRlIDxwYWwvTG9nZ2VyLmg+Ci0jaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNyArMzksNyBAQCBjbGFzcyBTb3Vy
Y2VCdWZmZXI7CiBjbGFzcyBUcmFja0Jhc2UKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNr
QmFzZT4KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIHByaXZhdGUgUEFMOjpMb2dn
ZXJIZWxwZXIKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKIHB1YmxpYzoK
QEAgLTc1LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29u
c3QgPSAwOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgUEFMOjpMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0dXJuICptX2xv
Z2dlci5nZXQoKTsgfQorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyBB
U1NFUlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qgdm9p
ZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsg
fQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKICNlbmRpZgpA
QCAtOTcsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOwog
ICAgIEF0b21pY1N0cmluZyBtX3ZhbGlkQkNQNDdMYW5ndWFnZTsKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKLSAgICBSZWZQdHI8Y29uc3QgUEFMOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJl
ZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRp
ZmllcjsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAkocmV2
aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjI5LDcgKzIyOSw3IEBAIGNvbnN0IFZUVEN1ZSogdG9WVFRDdWUoY29u
c3QgVGV4dFRyYWNrQ3UKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgUEFM
IHsKK25hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IExv
Z0FyZ3VtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMjI1NjI4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIgotI2luY2x1ZGUg
PHBhbC9Mb2dnZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudC5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NCw3ICsyNjQsNyBAQCBwdWJsaWM6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotbmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVHlwZT4KIHN0cnVjdCBMb2dBcmd1bWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDIyNTYyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTIsOSArOTIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBQbGF0
Zm9ybU1lZGlhIE5vUGxhdGZvcm1NZWRpYSA9IHsgUGxhdGZvcm1NZWRpYTo6Tm9uZSwgezB9IH07
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXN0YXRpYyBSZWZQdHI8UEFMOjpMb2dnZXI+
JiBudWxsTG9nZ2VyKCkKK3N0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVsbExvZ2dlcigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxQQUw6OkxvZ2dlcj4+IGxvZ2dlcjsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPExvZ2dlcj4+IGxvZ2dlcjsKICAgICByZXR1
cm4gbG9nZ2VyOwogfQogI2VuZGlmCkBAIC0xNzIsMTAgKzE3MiwxMCBAQCBwdWJsaWM6CiBjbGFz
cyBOdWxsTWVkaWFQbGF5ZXJDbGllbnQgOiBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQgewogcHVi
bGljOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IFBBTDo6TG9nZ2VyJiBt
ZWRpYVBsYXllckxvZ2dlcigpIGZpbmFsCisgICAgY29uc3QgTG9nZ2VyJiBtZWRpYVBsYXllckxv
Z2dlcigpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoIW51bGxMb2dnZXIoKS5nZXQoKSkgewot
ICAgICAgICAgICAgbnVsbExvZ2dlcigpID0gUEFMOjpMb2dnZXI6OmNyZWF0ZSh0aGlzKTsKKyAg
ICAgICAgICAgIG51bGxMb2dnZXIoKSA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMpOwogICAgICAgICAg
ICAgbnVsbExvZ2dlcigpLT5zZXRFbmFibGVkKHRoaXMsIGZhbHNlKTsKICAgICAgICAgfQogCkBA
IC0xNTA3LDcgKzE1MDcsNyBAQCBib29sIE1lZGlhUGxheWVyOjpzaG91bGRDaGVja0hhcmR3YXJl
U3VwCiB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLWNvbnN0IFBBTDo6TG9nZ2VyJiBN
ZWRpYVBsYXllcjo6bWVkaWFQbGF5ZXJMb2dnZXIoKQorY29uc3QgTG9nZ2VyJiBNZWRpYVBsYXll
cjo6bWVkaWFQbGF5ZXJMb2dnZXIoKQogewogICAgIHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXll
ckxvZ2dlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMSArNDQs
MTEgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVkZSA8cGFsL0xvZ2dlci5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
KyNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTMwMyw3
ICszMDMsNyBAQCBwdWJsaWM6CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICB2aXJ0
dWFsIGNvbnN0IHZvaWQqIG1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIG51bGxw
dHI7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBBTDo6TG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigp
ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IExvZ2dlciYgbWVkaWFQbGF5ZXJMb2dnZXIoKSA9IDA7
CiAjZW5kaWYKIH07CiAKQEAgLTYzMyw3ICs2MzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0gICAgY29uc3QgUEFMOjpMb2dnZXImIG1lZGlhUGxheWVyTG9nZ2VyKCk7CisgICAgY29u
c3QgTG9nZ2VyJiBtZWRpYVBsYXllckxvZ2dlcigpOwogICAgIGNvbnN0IHZvaWQqIG1lZGlhUGxh
eWVyTG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxheWVyTG9nSWRlbnRp
ZmllcigpOyB9CiAjZW5kaWYKIApAQCAtNjg5LDE0ICs2ODksMTQgQEAgcHVibGljOgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CiAKIHRlbXBsYXRl
IDw+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ8V1RGOjpNZWRpYVRpbWU+IHsKLSAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lKQorc3RydWN0IExvZ0FyZ3Vt
ZW50PE1lZGlhVGltZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgTWVkaWFU
aW1lJiB0aW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRpbWUudG9TdHJpbmcoKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJFbnVtcy5oCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllckVudW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDcgQEAgV1RGOjpTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoTQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAKLW5hbWVzcGFjZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFR5cGU+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ7CkBAIC03MSw0ICs3MSw0
IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpNZWRpYVBsYXllckUKICAgICB9CiB9Owog
Ci19OyAvLyBuYW1lc3BhY2UgUEFMCit9OyAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNw
cAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VHJhY2tQcml2YXRlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotdm9pZCBUcmFj
a1ByaXZhdGVCYXNlOjpzZXRMb2dnZXIoY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlciwgY29uc3Qg
dm9pZCogbG9nSWRlbnRpZmllcikKK3ZvaWQgVHJhY2tQcml2YXRlQmFzZTo6c2V0TG9nZ2VyKGNv
bnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQogewogICAgIG1f
bG9nZ2VyID0gJmxvZ2dlcjsKICAgICBtX2xvZ0lkZW50aWZpZXIgPSBsb2dJZGVudGlmaWVyOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJp
dmF0ZUJhc2UuaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw3
IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNsdWRlIDxwYWwvTG9nZ2VyLmg+
Ci0jaW5jbHVkZSA8cGFsL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxw
ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC00
OSw3ICs0OCw3IEBAIHB1YmxpYzoKIGNsYXNzIFRyYWNrUHJpdmF0ZUJhc2UKICAgICA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUcmFja1ByaXZhdGVCYXNlPgogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAotICAgICwgcHJpdmF0ZSBQQUw6OkxvZ2dlckhlbHBlcgorICAgICwgcHJpdmF0
ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgogewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRyYWNr
UHJpdmF0ZUJhc2UpOwpAQCAtNzQsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgUEFMOjpMb2dnZXIm
LCBjb25zdCB2b2lkKik7Ci0gICAgY29uc3QgUEFMOjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZp
bmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0dXJuICptX2xvZ2dlci5nZXQoKTsgfQorICAgIHZv
aWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKTsKKyAgICBjb25zdCBMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgQVNTRVJUKG1fbG9nZ2VyKTsgcmV0dXJuICptX2xv
Z2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFu
bmVsKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKQEAgLTg0LDcgKzgzLDcgQEAgcHJvdGVjdGVkOgog
ICAgIFRyYWNrUHJpdmF0ZUJhc2UoKSA9IGRlZmF1bHQ7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKLSAgICBSZWZQdHI8Y29uc3QgUEFMOjpMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZlB0
cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmll
cjsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsLm1tCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FW
UGxheWVySXRlbS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbVRyYWNrLmg+
CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHBhbC9Mb2dnZXIuaD4KICNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBAY2xhc3MgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwCShyZXZpc2lvbiAyMjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KICNpbmNsdWRlIDxoZWFwL0hlYXBJbmxpbmVz
Lmg+Ci0jaW5jbHVkZSA8cGFsL0xvZ2dlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRGF0YVZpZXcu
aD4KICNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9VaW50MTZBcnJheS5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkocmV2aXNpb24gMjI1NjI4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxOCArMzIsMTQgQEAKICNpbmNs
dWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUg
PHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAotbmFtZXNwYWNlIFBBTCB7Ci1jbGFzcyBMb2dnZXI7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOwpAQCAtNTIsNyArNDgsNyBAQCBjbGFzcyBHZW5lcmljQ3VlRGF0YTsKIAogY2xhc3Mg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSwgcHVibGljIEFWRkluYmFuZFRyYWNrUGFyZW50CiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgLCBwcml2YXRlIFBBTDo6TG9nZ2VySGVscGVyCisgICAgLCBwcml2YXRl
IExvZ2dlckhlbHBlcgogI2VuZGlmCiB7CiBwdWJsaWM6CkBAIC0xNTMsNyArMTQ5LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBQQUw6
OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0K
KyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2Vy
LmdldCgpOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiI7IH0KICAgICBjb25zdCB2
b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKQEAgLTM1NSw3ICszNTEsNyBAQCBwcml2YXRlOgogICAg
IE1lZGlhUGxheWVyOjpQcmVsb2FkIG1fcHJlbG9hZDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAotICAgIFJlZjxjb25zdCBQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmPGNvbnN0
IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMjI1NjI4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQyMyw3
ICszNDIzLDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggbwogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fY2FsbGJhY2stPmxvZ2dlcigpLndp
bGxMb2cobV9jYWxsYmFjay0+bG9nQ2hhbm5lbCgpLCBXVEZMb2dMZXZlbERlYnVnKSAmJiAhKFtr
ZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImxvYWRlZFRpbWVSYW5nZXMiXSB8fCBba2V5UGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCJzZWVrYWJsZVRpbWVSYW5nZXMiXSkpIHsKLSAgICAgICAgYXV0byBp
ZGVudGlmaWVyID0gUEFMOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24iLCAib2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aCIsIG1fY2FsbGJhY2st
PmxvZ0lkZW50aWZpZXIoKSk7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IExvZ2dlcjo6TG9n
U2l0ZUlkZW50aWZpZXIoIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiIsICJvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoIiwgbV9jYWxsYmFjay0+bG9nSWRlbnRpZmllcigpKTsKIAogICAgICAg
ICBpZiAoc2hvdWxkTG9nVmFsdWUpIHsKICAgICAgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCJkdXJhdGlvbiJdKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDSWNlQ29ubmVjdGlvblN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ29ubmVjdGlvblN0YXRlLmgJKHJldmlz
aW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0lj
ZUNvbm5lY3Rpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIFN0cmlu
ZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhSVENJY2UKIAogfTsgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotbmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVHlwZT4KIHN0cnVjdCBMb2dBcmd1bWVudDsKQEAgLTU1LDYgKzU1LDYgQEAgc3RydWN0
IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlJUQ0ljZUNvbm5lYwogICAgIH0KIH07CiAKLX07IC8vIG5h
bWVzcGFjZSBQQUwKK307IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VHYXRoZXJpbmdTdGF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUdhdGhl
cmluZ1N0YXRlLmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0ljZUdhdGhlcmluZ1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFJUQ0ljZQogCiB9
OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgUEFMIHsKK25hbWVzcGFjZSBXVEYg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IExvZ0FyZ3VtZW50OwpAQCAtNTMs
NiArNTMsNiBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6UlRDSWNlR2F0aGVyCiAgICAg
fQogfTsKIAotfTsgLy8gbmFtZXNwYWNlIFBBTAorfTsgLy8gbmFtZXNwYWNlIFdURgogCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvblN0YXRlLmgJKHJldmlzaW9uIDIyNTYyOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uU3RhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0
aW9uVG9TdHJpbmcoUlRDUGVlCiAKIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLW5hbWVzcGFj
ZSBQQUwgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CiBzdHJ1
Y3QgTG9nQXJndW1lbnQ7CkBAIC01NCw2ICs1NCw2IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxXZWJD
b3JlOjpSVENQZWVyQ29ubmUKICAgICB9CiB9OwogCi19OyAvLyBuYW1lc3BhY2UgUEFMCit9OyAv
LyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDU2lnbmFsaW5nU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTaWduYWxpbmdTdGF0ZS5oCShyZXZpc2lvbiAy
MjU2MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENTaWduYWxp
bmdTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIFN0cmluZyBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhSVENTaWcKIAogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAot
bmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZT4KIHN0cnVjdCBMb2dBcmd1bWVudDsKQEAgLTUzLDYgKzUzLDYgQEAgc3RydWN0IExvZ0FyZ3Vt
ZW50PFdlYkNvcmU6OlJUQ1NpZ25hbGluZwogICAgIH0KIH07CiAKLX07IC8vIG5hbWVzcGFjZSBQ
QUwKK307IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAkocmV2aXNpb24gMjI1NjI4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKICNpbmNsdWRlICJDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8cGFsL0xvZ2dlci5o
PgogCiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTYz
NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDE3LTEyLTA3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgTG9nZ2VyIGZyb20gUEFMIHRvIFdURiBzbyBpdCBjYW4gYmUgdXNlZCBvdXRzaWRl
IG9mIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDU2MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2luZy5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDE3LTEyLTA2ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVjb3ZlciBh
ZnRlciBhIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgY3Jhc2gKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Mb2dnaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2luZy5jcHAJKHJldmlzaW9uIDIyNTYyOCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Mb2dnaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUsMTQgKzI1LDEyIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxwYWwvTG9nZ2VyLmg+Ci0jaW5jbHVk
ZSA8cGFsL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAK
ICNkZWZpbmUgTE9HX0NIQU5ORUxfUFJFRklYIFRlc3QKIAotdXNpbmcgbmFtZXNwYWNlIFBBTDsK
IHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIGNvbnN0IGNoYXIqIGxvZ1Rlc3RpbmdTdWJzeXN0ZW0g
PSAiY29tLndlYmtpdC50ZXN0aW5nIjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>