<?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>176575</bug_id>
          
          <creation_ts>2017-09-07 17:58:45 -0700</creation_ts>
          <short_desc>Move LineEnding.{h,cpp} from WebCore/platform/text to wtf/text</short_desc>
          <delta_ts>2017-10-02 23:43:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346671</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-07 17:58:45 -0700</bug_when>
    <thetext>Move LineEnding.{h,cpp} from WebCore/platform/text to wtf/text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346672</commentid>
    <comment_count>1</comment_count>
      <attachid>320218</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-07 18:00:58 -0700</bug_when>
    <thetext>Created attachment 320218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346678</commentid>
    <comment_count>2</comment_count>
      <attachid>320221</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-07 18:38:28 -0700</bug_when>
    <thetext>Created attachment 320221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348115</commentid>
    <comment_count>3</comment_count>
      <attachid>320221</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-12 17:13:35 -0700</bug_when>
    <thetext>Comment on attachment 320221
Patch

Rejecting attachment 320221 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 320221, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ebCore/html/FormDataList.cpp	(working copy)
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored
patching file Source/WebCore/platform/text/LineEnding.cpp
rm &apos;Source/WebCore/platform/text/LineEnding.cpp&apos;
patching file Source/WebCore/platform/text/LineEnding.h
rm &apos;Source/WebCore/platform/text/LineEnding.h&apos;

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Alex Christensen&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/4528504</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349607</commentid>
    <comment_count>4</comment_count>
      <attachid>320983</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-15 18:31:07 -0700</bug_when>
    <thetext>Created attachment 320983
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355110</commentid>
    <comment_count>5</comment_count>
      <attachid>320221</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-01 19:58:50 -0700</bug_when>
    <thetext>Comment on attachment 320221
Patch

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

&gt; Source/WTF/wtf/text/LineEnding.h:44
&gt; +// Normalize all line-endings in the given string to the native line-endings and append the result to the given buffer.
&gt; +// (Normalize to CRLF on Windows and normalize to LF on all other platforms.)
&gt; +WTF_EXPORT void normalizeLineEndingsToNative(const CString&amp; from, Vector&lt;uint8_t&gt;&amp; result);

Function should have the word &quot;append&quot; in its name. Unless it always is used on an empty buffer, in which case it should be changed to return the Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355712</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-10-02 23:42:32 -0700</bug_when>
    <thetext>Committed r222771: &lt;http://trac.webkit.org/changeset/222771&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355713</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-02 23:43:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/34785085&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320218</attachid>
            <date>2017-09-07 18:00:58 -0700</date>
            <delta_ts>2017-09-07 18:38:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176575-20170907180057.patch</filename>
            <type>text/plain</type>
            <size>29956</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkNzA0ZTUwMzM3NzNlNjFlYzI0MTlm
ZTE1MjAzNzc4YmJiNmYwYzEuLjcxMzFmNmJhODc1NjY2YWIwM2NlYmU0ZDYwNmQyYjZlOTVmYjMw
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIwMTctMDktMDcgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBNb3ZlIExpbmVFbmRpbmcue2gsY3BwfSBm
cm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byB3dGYvdGV4dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NTc1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGUgUEFMIGVmZm9ydCwg
d2UncmUgdHJ5aW5nIHRvIG1vdmUgZXZlcnl0aGluZyBvdXQgb2YgV2ViQ29yZS9wbGF0Zm9ybSwg
b25lLWJ5LW9uZS4KKyAgICAgICAgVGhlc2UgTGluZUVuZGluZyBmaWxlcyBiZWxvbmcgaW4gV1RG
LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
d3RmL3RleHQvTGluZUVuZGluZy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3BwLgorICAgICAgICAoV1RGOjpub3JtYWxpemVMaW5lRW5k
aW5nc1RvQ1JMRik6CisgICAgICAgICogd3RmL3RleHQvTGluZUVuZGluZy5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmguCisKKzIwMTctMDkt
MDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwogICAgICAgICBb
UEFMXSBVbmlmeSBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaCB3aXRoIExhbmd1YWdl
LmgKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjU2
MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggM2IxMWM3YjgxZDcwMWU2YWZiMmViOTQ4ZWY0NTZkMzhkNDA2NmZl
OC4uZDg3ODQxZTBmOTkzMGRiMDMzZGFhYTQyZTIzYzcwYjU4MTYwNmRjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDE3LTA5LTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBMaW5lRW5kaW5nLntoLGNwcH0gZnJvbSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gd3RmL3RleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JCdWlsZGVyLmNwcDoKKyAgICAgICAgKiBodG1s
L0Zvcm1EYXRhTGlzdC5jcHA6CisKIDIwMTctMDktMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lz
dGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMTI5Yjk4NTM5NjY4ZmVmYzYwMjA0Yjc2YTgzNWU2NDc2Zjg4NmUxZi4uOTUy
YTM3ODkxN2I4MzFmY2EzNDhlM2JkMDc2NmNjMWIxYWViZjdlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQsNiArMTM0LDcgQEAKIAkJQURGMkNFNjcx
RTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlE
QiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi87IH07CiAJCUMyQkNGQzQwMUY2MUQxMzAw
MEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkJDRkMzRTFGNjFEMTMwMDBDOTIyMkMgLyogTGFuZ3VhZ2UuY3BwICov
OyB9OwogCQlDMkJDRkM0MjFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkJDRkM0MTFGNjFENjE2
MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi87IH07CisJCUMyQkNGQzU1MUY2MjFGM0YwMEM5
MjIyQyAvKiBMaW5lRW5kaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyQkNGQzUzMUY2MjFGM0YwMEM5MjIyQyAvKiBMaW5lRW5kaW5nLmNwcCAq
LzsgfTsKIAkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAz
MDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLzsgfTsKIAkJRENFRTIyMDExQ0VBNzU1MTAwMEMy
Mzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpD
RXhjZXB0aW9ucy5tbSAqLzsgfTsKIAkJRTE1NTU2RjUxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0
b2dyYXBoaWNVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuY3BwICovOyB9OwpAQCAtNTUxLDYgKzU1Miw4IEBACiAJCUMyQkNGQzNFMUY2MUQxMzAw
MEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMYW5ndWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQkNGQzNG
MUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkM0
MTFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzJCQ0ZDNTMxRjYyMUYzRjAwQzkyMjJDIC8qIExpbmVFbmRpbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGluZUVuZGluZy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyQkNGQzU0MUY2MjFGM0YwMEM5MjIyQyAvKiBMaW5lRW5kaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVFbmRpbmcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3
YXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9wd2F0Y2guaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzhGNTk3Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJh
bmRvbURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5k
b21EZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0OTdBQTE1ODU3
RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhVGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDg2LDYgKzEwODksOCBAQAogCQkJCTI2MTQ3QjA4MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2Vy
VG9TdHJpbmdDb252ZXJzaW9uLmggKi8sCiAJCQkJOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8q
IExDaGFyLmggKi8sCiAJCQkJMUMxODFDODExRDMwNzk3QzAwRjVGQTE2IC8qIExpbmVCcmVha0l0
ZXJhdG9yUG9vbElDVS5oICovLAorCQkJCUMyQkNGQzUzMUY2MjFGM0YwMEM5MjIyQyAvKiBMaW5l
RW5kaW5nLmNwcCAqLywKKwkJCQlDMkJDRkM1NDFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGlu
Zy5oICovLAogCQkJCTE0RTc4NUU3MURGQjMzMDEwMDIwOUJEMSAvKiBPcmRpbmFsTnVtYmVyLmgg
Ki8sCiAJCQkJQThBNDczMjMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1ZmZlci5oICovLAog
CQkJCUE4QTQ3MzI0MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLywKQEAg
LTEzNjgsNiArMTM3Myw3IEBACiAJCQkJQThBNDczRDgxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hU
YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkJDRkM0MDFGNjFEMTMwMDBDOTIyMkMgLyog
TGFuZ3VhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJCQ0ZDNDIxRjYxRDYxNjAwQzkyMjJD
IC8qIExhbmd1YWdlQ0YuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJCQ0ZDNTUxRjYyMUYzRjAw
QzkyMjJDIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMTY0NkExQjZG
RkM5NjAwNDAwRTdDIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MEYzMkYxREZD
QkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzNTM0RjJBMUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVFbmRpbmcuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9MaW5lRW5kaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODc2NmJjZjBh
ZWNmY2E3NjQwZGJhYjZlNTI2ZDY3NDQxOTcxODllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9MaW5lRW5kaW5nLmNwcApAQCAtMCwwICsxLDIyNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwOCwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGluZUVuZGluZy5oIgorCisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgeworCitjbGFzcyBPdXRwdXRCdWZmZXIgeworcHVibGljOgorICAgIHZp
cnR1YWwgdWludDhfdCogYWxsb2NhdGUoc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNv
cHkoY29uc3QgQ1N0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIH5PdXRwdXRCdWZmZXIoKSB7IH0K
K307CisKK2NsYXNzIENTdHJpbmdCdWZmZXIgOiBwdWJsaWMgT3V0cHV0QnVmZmVyIHsKK3B1Ymxp
YzoKKyAgICBDU3RyaW5nQnVmZmVyKENTdHJpbmcmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZl
cihidWZmZXIpCisgICAgeworICAgIH0KKyAgICB2aXJ0dWFsIH5DU3RyaW5nQnVmZmVyKCkgeyB9
CisKKyAgICB1aW50OF90KiBhbGxvY2F0ZShzaXplX3Qgc2l6ZSkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGNoYXIqIHB0cjsKKyAgICAgICAgbV9idWZmZXIgPSBDU3RyaW5nOjpuZXdVbmluaXRp
YWxpemVkKHNpemUsIHB0cik7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihwdHIpOworICAgIH0KKworICAgIHZvaWQgY29weShjb25zdCBDU3RyaW5nJiBzb3VyY2Up
IG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2J1ZmZlciA9IHNvdXJjZTsKKyAgICB9CisKKyAg
ICBjb25zdCBDU3RyaW5nJiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorCitw
cml2YXRlOgorICAgIENTdHJpbmcgbV9idWZmZXI7Cit9OworCisjaWYgT1MoV0lORE9XUykKK2Ns
YXNzIFZlY3RvckNoYXJBcHBlbmRCdWZmZXIgOiBwdWJsaWMgT3V0cHV0QnVmZmVyIHsKK3B1Ymxp
YzoKKyAgICBWZWN0b3JDaGFyQXBwZW5kQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQor
ICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgflZl
Y3RvckNoYXJBcHBlbmRCdWZmZXIoKSB7IH0KKworICAgIHVpbnQ4X3QqIGFsbG9jYXRlKHNpemVf
dCBzaXplKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgc2l6ZV90IG9sZFNpemUgPSBtX2J1ZmZl
ci5zaXplKCk7CisgICAgICAgIG1fYnVmZmVyLmdyb3cob2xkU2l6ZSArIHNpemUpOworICAgICAg
ICByZXR1cm4gbV9idWZmZXIuZGF0YSgpICsgb2xkU2l6ZTsKKyAgICB9CisKKyAgICB2b2lkIGNv
cHkoY29uc3QgQ1N0cmluZyYgc291cmNlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9idWZm
ZXIuYXBwZW5kKHNvdXJjZS5kYXRhKCksIHNvdXJjZS5sZW5ndGgoKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFZlY3Rvcjx1aW50OF90PiYgbV9idWZmZXI7Cit9OworI2VuZGlmCisKK3ZvaWQg
aW50ZXJuYWxOb3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihjb25zdCBDU3RyaW5nJiBmcm9tLCBP
dXRwdXRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWZyb20ubGVuZ3RoKCkpCisgICAgICAg
IHJldHVybjsKKyAgICAvLyBDb21wdXRlIHRoZSBuZXcgbGVuZ3RoLgorICAgIHNpemVfdCBuZXdM
ZW4gPSAwOworICAgIGNvbnN0IGNoYXIqIHAgPSBmcm9tLmRhdGEoKTsKKyAgICB3aGlsZSAocCA8
IGZyb20uZGF0YSgpICsgZnJvbS5sZW5ndGgoKSkgeworICAgICAgICBjaGFyIGMgPSAqcCsrOwor
ICAgICAgICBpZiAoYyA9PSAnXHInKSB7CisgICAgICAgICAgICAvLyBTYWZlIHRvIGxvb2sgYWhl
YWQgYmVjYXVzZSBvZiB0cmFpbGluZyAnXDAnLgorICAgICAgICAgICAgaWYgKCpwICE9ICdcbicp
IHsKKyAgICAgICAgICAgICAgICAvLyBUdXJuIENSIGludG8gQ1JMRi4KKyAgICAgICAgICAgICAg
ICBuZXdMZW4gKz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjID09ICdc
bicpIHsKKyAgICAgICAgICAgIC8vIFR1cm4gTEYgaW50byBDUkxGLgorICAgICAgICAgICAgbmV3
TGVuICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMZWF2ZSBvdGhlciBj
aGFyYWN0ZXJzIGFsb25lLgorICAgICAgICAgICAgbmV3TGVuICs9IDE7CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKG5ld0xlbiA8IGZyb20ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChuZXdMZW4gPT0gZnJvbS5sZW5ndGgoKSkgeworICAgICAgICBidWZmZXIuY29weShm
cm9tKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHAgPSBmcm9tLmRhdGEoKTsKKyAg
ICB1aW50OF90KiBxID0gYnVmZmVyLmFsbG9jYXRlKG5ld0xlbik7CisKKyAgICAvLyBNYWtlIGEg
Y29weSBvZiB0aGUgc3RyaW5nLgorICAgIHdoaWxlIChwIDwgZnJvbS5kYXRhKCkgKyBmcm9tLmxl
bmd0aCgpKSB7CisgICAgICAgIGNoYXIgYyA9ICpwKys7CisgICAgICAgIGlmIChjID09ICdccicp
IHsKKyAgICAgICAgICAgIC8vIFNhZmUgdG8gbG9vayBhaGVhZCBiZWNhdXNlIG9mIHRyYWlsaW5n
ICdcMCcuCisgICAgICAgICAgICBpZiAoKnAgIT0gJ1xuJykgeworICAgICAgICAgICAgICAgIC8v
IFR1cm4gQ1IgaW50byBDUkxGLgorICAgICAgICAgICAgICAgICpxKysgPSAnXHInOworICAgICAg
ICAgICAgICAgICpxKysgPSAnXG4nOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYg
KGMgPT0gJ1xuJykgeworICAgICAgICAgICAgLy8gVHVybiBMRiBpbnRvIENSTEYuCisgICAgICAg
ICAgICAqcSsrID0gJ1xyJzsKKyAgICAgICAgICAgICpxKysgPSAnXG4nOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVycyBhbG9uZS4KKyAgICAg
ICAgICAgICpxKysgPSBjOworICAgICAgICB9CisgICAgfQorfQorCit9OworCituYW1lc3BhY2Ug
V1RGIHsKKworLy8gTm9ybWFsaXplIGFsbCBsaW5lLWVuZGluZ3MgdG8gQ1Igb3IgTEYuCitzdGF0
aWMgdm9pZCBub3JtYWxpemVUb0NST3JMRihjb25zdCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8dWlu
dDhfdD4mIHJlc3VsdCwgYm9vbCB0b0NSKQoreworICAgIC8vIENvbXB1dGUgdGhlIG5ldyBsZW5n
dGguCisgICAgc2l6ZV90IG5ld0xlbiA9IDA7CisgICAgYm9vbCBuZWVkRml4ID0gZmFsc2U7Cisg
ICAgY29uc3QgY2hhciogcCA9IGZyb20uZGF0YSgpOworICAgIGNoYXIgZnJvbUVuZGluZ0NoYXIg
PSB0b0NSID8gJ1xuJyA6ICdccic7CisgICAgY2hhciB0b0VuZGluZ0NoYXIgPSB0b0NSID8gJ1xy
JyA6ICdcbic7CisgICAgd2hpbGUgKHAgPCBmcm9tLmRhdGEoKSArIGZyb20ubGVuZ3RoKCkpIHsK
KyAgICAgICAgY2hhciBjID0gKnArKzsKKyAgICAgICAgaWYgKGMgPT0gJ1xyJyAmJiAqcCA9PSAn
XG4nKSB7CisgICAgICAgICAgICAvLyBUdXJuIENSTEYgaW50byBDUiBvciBMRi4KKyAgICAgICAg
ICAgIHArKzsKKyAgICAgICAgICAgIG5lZWRGaXggPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYg
KGMgPT0gZnJvbUVuZGluZ0NoYXIpIHsKKyAgICAgICAgICAgIC8vIFR1cm4gQ1IvTEYgaW50byBM
Ri9DUi4KKyAgICAgICAgICAgIG5lZWRGaXggPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG5l
d0xlbiArPSAxOworICAgIH0KKworICAgIC8vIEdyb3cgdGhlIHJlc3VsdCBidWZmZXIuCisgICAg
cCA9IGZyb20uZGF0YSgpOworICAgIHNpemVfdCBvbGRSZXN1bHRTaXplID0gcmVzdWx0LnNpemUo
KTsKKyAgICByZXN1bHQuZ3JvdyhvbGRSZXN1bHRTaXplICsgbmV3TGVuKTsKKyAgICB1aW50OF90
KiBxID0gcmVzdWx0LmRhdGEoKSArIG9sZFJlc3VsdFNpemU7CisKKyAgICAvLyBJZiBubyBuZWVk
IHRvIGZpeCB0aGUgc3RyaW5nLCBqdXN0IGNvcHkgdGhlIHN0cmluZyBvdmVyLgorICAgIGlmICgh
bmVlZEZpeCkgeworICAgICAgICBtZW1jcHkocSwgcCwgZnJvbS5sZW5ndGgoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgc3RyaW5nLgorICAg
IHdoaWxlIChwIDwgZnJvbS5kYXRhKCkgKyBmcm9tLmxlbmd0aCgpKSB7CisgICAgICAgIGNoYXIg
YyA9ICpwKys7CisgICAgICAgIGlmIChjID09ICdccicgJiYgKnAgPT0gJ1xuJykgeworICAgICAg
ICAgICAgLy8gVHVybiBDUkxGIG9yIENSIGludG8gQ1Igb3IgTEYuCisgICAgICAgICAgICBwKys7
CisgICAgICAgICAgICAqcSsrID0gdG9FbmRpbmdDaGFyOworICAgICAgICB9IGVsc2UgaWYgKGMg
PT0gZnJvbUVuZGluZ0NoYXIpIHsKKyAgICAgICAgICAgIC8vIFR1cm4gQ1IvTEYgaW50byBMRi9D
Ui4KKyAgICAgICAgICAgICpxKysgPSB0b0VuZGluZ0NoYXI7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyBMZWF2ZSBvdGhlciBjaGFyYWN0ZXJzIGFsb25lLgorICAgICAgICAgICAg
KnErKyA9IGM7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NTdHJpbmcgbm9ybWFsaXplTGluZUVu
ZGluZ3NUb0NSTEYoY29uc3QgQ1N0cmluZyYgZnJvbSkKK3sKKyAgICBDU3RyaW5nIHJlc3VsdDsK
KyAgICA6OkNTdHJpbmdCdWZmZXIgYnVmZmVyKHJlc3VsdCk7CisgICAgaW50ZXJuYWxOb3JtYWxp
emVMaW5lRW5kaW5nc1RvQ1JMRihmcm9tLCBidWZmZXIpOworICAgIHJldHVybiBidWZmZXIuYnVm
ZmVyKCk7Cit9CisKK3ZvaWQgbm9ybWFsaXplTGluZUVuZGluZ3NUb05hdGl2ZShjb25zdCBDU3Ry
aW5nJiBmcm9tLCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKK3sKKyNpZiBPUyhXSU5ET1dTKQor
ICAgIFZlY3RvckNoYXJBcHBlbmRCdWZmZXIgYnVmZmVyKHJlc3VsdCk7CisgICAgaW50ZXJuYWxO
b3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihmcm9tLCBidWZmZXIpOworI2Vsc2UKKyAgICBub3Jt
YWxpemVUb0NST3JMRihmcm9tLCByZXN1bHQsIGZhbHNlKTsKKyNlbmRpZgorfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUVuZGluZy5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lRW5kaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgzOGY1YTI0
N2JhNWU4YTgxNjhkZjAyYjEyYjBhNTU0YmE5ZTljMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvTGluZUVuZGluZy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIE5vcm1hbGl6ZSBhbGwgbGluZS1l
bmRpbmdzIGluIHRoZSBnaXZlbiBzdHJpbmcgdG8gQ1JMRi4KK1dURl9FWFBPUlQgQ1N0cmluZyBu
b3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihjb25zdCBDU3RyaW5nJiBmcm9tKTsKKworLy8gTm9y
bWFsaXplIGFsbCBsaW5lLWVuZGluZ3MgaW4gdGhlIGdpdmVuIHN0cmluZyB0byB0aGUgbmF0aXZl
IGxpbmUtZW5kaW5ncyBhbmQgYXBwZW5kIHRoZSByZXN1bHQgdG8gdGhlIGdpdmVuIGJ1ZmZlci4K
Ky8vIChOb3JtYWxpemUgdG8gQ1JMRiBvbiBXaW5kb3dzIGFuZCBub3JtYWxpemUgdG8gTEYgb24g
YWxsIG90aGVyIHBsYXRmb3Jtcy4pCitXVEZfRVhQT1JUIHZvaWQgbm9ybWFsaXplTGluZUVuZGlu
Z3NUb05hdGl2ZShjb25zdCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCk7
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6Om5vcm1hbGl6ZUxpbmVFbmRpbmdz
VG9DUkxGOwordXNpbmcgV1RGOjpub3JtYWxpemVMaW5lRW5kaW5nc1RvTmF0aXZlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMy
MjA3YjAzYmYwMGVhYTAxZTc0NDk4ZjRkYTgxMGZjNGRkMjg4NWUuLjNkY2NjNGNjMDdmZmFiYjIx
NzdhNDdkZmRjZGI1MGMyZWE1YTQ3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3MTEsOCArMzcxMSw2IEBACiAJCTg5MzFE
RTVCMTRDNDRDNDQwMDBEQzlEMiAvKiBKU0Jsb2JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzMURFNUExNEM0NEM0NDAwMERDOUQyIC8q
IEpTQmxvYkN1c3RvbS5jcHAgKi87IH07CiAJCTg5ODc4NUY0MTIyRTFFQUMwMDNBQUJEQSAvKiBK
U0ZpbGVSZWFkZXJTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg5ODc4NUYyMTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNw
cCAqLzsgfTsKIAkJODk4Nzg1RjUxMjJFMUVBQzAwM0FBQkRBIC8qIEpTRmlsZVJlYWRlclN5bmMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NUYz
MTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmggKi87IH07Ci0JCTg5QjVFQUEx
MTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5QjVFQTlGMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5l
RW5kaW5nLmNwcCAqLzsgfTsKLQkJODlCNUVBQTIxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRp
bmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5QjVF
QUEwMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODlGNjBCMTExNTdGNjg2RTAwNzVFMTU3IC8q
IERPTVdpbmRvd1F1b3RhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4OUY2MEIwQTE1N0Y2ODZEMDA3NUUxNTcgLyogRE9NV2luZG93UXVvdGEuaCAqLzsg
fTsKIAkJODlGNjBDREExNTgwOUQ3NjAwNzVFMTU3IC8qIEpTU3RvcmFnZUluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5RjYwQ0QyMTU4MDlENzYw
MDc1RTE1NyAvKiBKU1N0b3JhZ2VJbmZvLmggKi87IH07CiAJCThBMTJFMzVEMTFGQTMzMjgwMDI1
ODM2QSAvKiBMb2FkVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4QTEyRTM1QzExRkEzMzI4MDAyNTgzNkEgLyogTG9hZFRpbWluZy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjAxMyw4ICsx
MjAxMSw2IEBACiAJCTg5MzFERTVBMTRDNDRDNDQwMDBEQzlEMiAvKiBKU0Jsb2JDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCbG9iQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODk4Nzg1RjIxMjJFMUVBQzAwM0FBQkRBIC8q
IEpTRmlsZVJlYWRlclN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGaWxlUmVhZGVyU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5
ODc4NUYzMTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmlsZVJlYWRlclN5bmMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODlCNUVBOUYxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGluZUVuZGluZy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5QjVFQUEwMTFFODAwM0QwMEYyMzY3RSAvKiBM
aW5lRW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVFbmRpbmcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODlGNjBCMEExNTdGNjg2RDAwNzVFMTU3
IC8qIERPTVdpbmRvd1F1b3RhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TVdpbmRvd1F1b3RhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5RjYwQ0QyMTU4
MDlENzYwMDc1RTE1NyAvKiBKU1N0b3JhZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU3RvcmFnZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODlGRDU4RDgxNkVFREJENDAwRTE4M0YwIC8qIE5hdmlnYXRvclN0b3JhZ2VRdW90YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNzkyLDggKzIzNzg4LDYgQEAKIAkJCQk0NTNF
QjYzNTE1OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuaCAqLywKIAkJCQlDRUNDRkMz
QTE0MTk3M0Q1MDAyQTBBQzEgLyogRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmggKi8sCiAJCQkJMzc1
Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi8sCi0JCQkJODlCNUVBOUYx
MUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwICovLAotCQkJCTg5QjVFQUEwMTFFODAw
M0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi8sCiAJCQkJNzYzM0E3MjQxM0Q4QjMzQTAwODUw
MUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oICovLAogCQkJCTc2MzNBNzI1MTNEOEIzM0Ew
MDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcCAqLywKIAkJCQlCQzc2
QUMxMTBERDdBRDVDMDA0MTVGMzQgLyogUGFyc2VyVXRpbGl0aWVzLmggKi8sCkBAIC0yOTAzNSw3
ICsyOTAyOSw2IEBACiAJCQkJODQ3MzBEOTExMjQ4RjBCMzAwRDNBOUM5IC8qIExpZ2h0U291cmNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3MUI3ODIgLyogTGluZWFy
R3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhF
MDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTg5QjVFQUEy
MTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRkVG
QUIyQTE4MzgwREEwMDA1MTQ1MzQgLyogTGluZUxheW91dFN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRkRCQzA0NzE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0FEMkY4ODBFQzg5RDA3MDA4QUIwMDIgLyogTGlua0hhc2guaCBpbiBIZWFkZXJz
ICovLApAQCAtMzMxMDcsNyArMzMxMDAsNiBAQAogCQkJCTQxNzYxMkIxMUUzQTk5NDAwMEMzRDgx
RCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDFBMUIwMEUxRTUyNjU3OTAwN0YzNzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZGQjY5OENDMTgzM0VFMEQwMDE1OEEzMSAvKiBMaW5lQnJlYWtlci5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk4OUI1RUFBMTExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVu
ZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkI2OThDRjE4MzQwMkJCMDAxNThBMzEgLyog
TGluZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkZEQkMwNDgxODNEMjdCNzAwNDA3MTA5
IC8qIExpbmVXaWR0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0FEMkY4NzBFQzg5RDA3MDA4
QUIwMDIgLyogTGlua0hhc2guY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2JCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYkJ1aWxkZXIuY3BwCmluZGV4IGQ2NmRjOWZmMDhmYTRhYzMwNzE4N2Y2OTRmZGEyMTBiNDVh
OTExY2MuLmU3YWM4M2Y5Yzk4ZTAxNzQxZTQ0ZWMzN2MyZDExMDZmOGNiYjc1ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwCkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbmNs
dWRlICJCbG9iQnVpbGRlci5oIgogCiAjaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkxpbmVF
bmRpbmcuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDxydW50aW1lL0Fy
cmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvTGluZUVuZGluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRm9ybURhdGFMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0LmNw
cAppbmRleCA2NDRmYWY3MjE1MDkwZDVhYjEyMmYxZjc5NjIzOTlkMjgxM2M3MDY3Li45ZDMyZWQx
OWViZDQzN2QzZGMxMGY2YWEyODhhODVmNzljNTNlNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1EYXRhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
RGF0YUxpc3QuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiRm9ybURhdGFMaXN0LmgiCiAKLSNpbmNsdWRlICJMaW5lRW5kaW5nLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvTGluZUVuZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9MaW5lRW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
TGluZUVuZGluZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMGVhNGRmNjFm
YmVmYjNiNGNkNDcyZTBkYTZjMjY3NGIyOWNhZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5k
aW5nLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJMaW5lRW5kaW5nLmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSB7Ci0KLWNsYXNzIE91dHB1dEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB1aW50OF90
KiBhbGxvY2F0ZShzaXplX3Qgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0
IENTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB+T3V0cHV0QnVmZmVyKCkgeyB9Ci19OwotCi1j
bGFzcyBDU3RyaW5nQnVmZmVyIDogcHVibGljIE91dHB1dEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAg
Q1N0cmluZ0J1ZmZlcihDU3RyaW5nJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoYnVmZmVy
KQotICAgIHsKLSAgICB9Ci0gICAgdmlydHVhbCB+Q1N0cmluZ0J1ZmZlcigpIHsgfQotCi0gICAg
dWludDhfdCogYWxsb2NhdGUoc2l6ZV90IHNpemUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBj
aGFyKiBwdHI7Ci0gICAgICAgIG1fYnVmZmVyID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChz
aXplLCBwdHIpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocHRy
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHkoY29uc3QgQ1N0cmluZyYgc291cmNlKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgbV9idWZmZXIgPSBzb3VyY2U7Ci0gICAgfQotCi0gICAgY29uc3Qg
Q1N0cmluZyYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KLQotcHJpdmF0ZToK
LSAgICBDU3RyaW5nIG1fYnVmZmVyOwotfTsKLQotI2lmIE9TKFdJTkRPV1MpCi1jbGFzcyBWZWN0
b3JDaGFyQXBwZW5kQnVmZmVyIDogcHVibGljIE91dHB1dEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAg
VmVjdG9yQ2hhckFwcGVuZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKLSAgICAgICAg
OiBtX2J1ZmZlcihidWZmZXIpCi0gICAgewotICAgIH0KLSAgICB2aXJ0dWFsIH5WZWN0b3JDaGFy
QXBwZW5kQnVmZmVyKCkgeyB9Ci0KLSAgICB1aW50OF90KiBhbGxvY2F0ZShzaXplX3Qgc2l6ZSkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHNpemVfdCBvbGRTaXplID0gbV9idWZmZXIuc2l6ZSgp
OwotICAgICAgICBtX2J1ZmZlci5ncm93KG9sZFNpemUgKyBzaXplKTsKLSAgICAgICAgcmV0dXJu
IG1fYnVmZmVyLmRhdGEoKSArIG9sZFNpemU7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5KGNvbnN0
IENTdHJpbmcmIHNvdXJjZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLmFwcGVu
ZChzb3VyY2UuZGF0YSgpLCBzb3VyY2UubGVuZ3RoKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBWZWN0b3I8dWludDhfdD4mIG1fYnVmZmVyOwotfTsKLSNlbmRpZgotCi12b2lkIGludGVybmFs
Tm9ybWFsaXplTGluZUVuZGluZ3NUb0NSTEYoY29uc3QgQ1N0cmluZyYgZnJvbSwgT3V0cHV0QnVm
ZmVyJiBidWZmZXIpCi17Ci0gICAgaWYgKCFmcm9tLmxlbmd0aCgpKQotICAgICAgICByZXR1cm47
Ci0gICAgLy8gQ29tcHV0ZSB0aGUgbmV3IGxlbmd0aC4KLSAgICBzaXplX3QgbmV3TGVuID0gMDsK
LSAgICBjb25zdCBjaGFyKiBwID0gZnJvbS5kYXRhKCk7Ci0gICAgd2hpbGUgKHAgPCBmcm9tLmRh
dGEoKSArIGZyb20ubGVuZ3RoKCkpIHsKLSAgICAgICAgY2hhciBjID0gKnArKzsKLSAgICAgICAg
aWYgKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgLy8gU2FmZSB0byBsb29rIGFoZWFkIGJlY2F1
c2Ugb2YgdHJhaWxpbmcgJ1wwJy4KLSAgICAgICAgICAgIGlmICgqcCAhPSAnXG4nKSB7Ci0gICAg
ICAgICAgICAgICAgLy8gVHVybiBDUiBpbnRvIENSTEYuCi0gICAgICAgICAgICAgICAgbmV3TGVu
ICs9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nKSB7Ci0g
ICAgICAgICAgICAvLyBUdXJuIExGIGludG8gQ1JMRi4KLSAgICAgICAgICAgIG5ld0xlbiArPSAy
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVy
cyBhbG9uZS4KLSAgICAgICAgICAgIG5ld0xlbiArPSAxOwotICAgICAgICB9Ci0gICAgfQotICAg
IGlmIChuZXdMZW4gPCBmcm9tLmxlbmd0aCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
bmV3TGVuID09IGZyb20ubGVuZ3RoKCkpIHsKLSAgICAgICAgYnVmZmVyLmNvcHkoZnJvbSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwID0gZnJvbS5kYXRhKCk7Ci0gICAgdWludDhf
dCogcSA9IGJ1ZmZlci5hbGxvY2F0ZShuZXdMZW4pOwotCi0gICAgLy8gTWFrZSBhIGNvcHkgb2Yg
dGhlIHN0cmluZy4KLSAgICB3aGlsZSAocCA8IGZyb20uZGF0YSgpICsgZnJvbS5sZW5ndGgoKSkg
ewotICAgICAgICBjaGFyIGMgPSAqcCsrOwotICAgICAgICBpZiAoYyA9PSAnXHInKSB7Ci0gICAg
ICAgICAgICAvLyBTYWZlIHRvIGxvb2sgYWhlYWQgYmVjYXVzZSBvZiB0cmFpbGluZyAnXDAnLgot
ICAgICAgICAgICAgaWYgKCpwICE9ICdcbicpIHsKLSAgICAgICAgICAgICAgICAvLyBUdXJuIENS
IGludG8gQ1JMRi4KLSAgICAgICAgICAgICAgICAqcSsrID0gJ1xyJzsKLSAgICAgICAgICAgICAg
ICAqcSsrID0gJ1xuJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjID09ICdc
bicpIHsKLSAgICAgICAgICAgIC8vIFR1cm4gTEYgaW50byBDUkxGLgotICAgICAgICAgICAgKnEr
KyA9ICdccic7Ci0gICAgICAgICAgICAqcSsrID0gJ1xuJzsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIC8vIExlYXZlIG90aGVyIGNoYXJhY3RlcnMgYWxvbmUuCi0gICAgICAgICAgICAq
cSsrID0gYzsKLSAgICAgICAgfQotICAgIH0KLX0KLQotfTsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0vLyBOb3JtYWxpemUgYWxsIGxpbmUtZW5kaW5ncyB0byBDUiBvciBMRi4KLXN0YXRpYyB2
b2lkIG5vcm1hbGl6ZVRvQ1JPckxGKGNvbnN0IENTdHJpbmcmIGZyb20sIFZlY3Rvcjx1aW50OF90
PiYgcmVzdWx0LCBib29sIHRvQ1IpCi17Ci0gICAgLy8gQ29tcHV0ZSB0aGUgbmV3IGxlbmd0aC4K
LSAgICBzaXplX3QgbmV3TGVuID0gMDsKLSAgICBib29sIG5lZWRGaXggPSBmYWxzZTsKLSAgICBj
b25zdCBjaGFyKiBwID0gZnJvbS5kYXRhKCk7Ci0gICAgY2hhciBmcm9tRW5kaW5nQ2hhciA9IHRv
Q1IgPyAnXG4nIDogJ1xyJzsKLSAgICBjaGFyIHRvRW5kaW5nQ2hhciA9IHRvQ1IgPyAnXHInIDog
J1xuJzsKLSAgICB3aGlsZSAocCA8IGZyb20uZGF0YSgpICsgZnJvbS5sZW5ndGgoKSkgewotICAg
ICAgICBjaGFyIGMgPSAqcCsrOwotICAgICAgICBpZiAoYyA9PSAnXHInICYmICpwID09ICdcbicp
IHsKLSAgICAgICAgICAgIC8vIFR1cm4gQ1JMRiBpbnRvIENSIG9yIExGLgotICAgICAgICAgICAg
cCsrOwotICAgICAgICAgICAgbmVlZEZpeCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9
PSBmcm9tRW5kaW5nQ2hhcikgewotICAgICAgICAgICAgLy8gVHVybiBDUi9MRiBpbnRvIExGL0NS
LgotICAgICAgICAgICAgbmVlZEZpeCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbmV3TGVu
ICs9IDE7Ci0gICAgfQotCi0gICAgLy8gR3JvdyB0aGUgcmVzdWx0IGJ1ZmZlci4KLSAgICBwID0g
ZnJvbS5kYXRhKCk7Ci0gICAgc2l6ZV90IG9sZFJlc3VsdFNpemUgPSByZXN1bHQuc2l6ZSgpOwot
ICAgIHJlc3VsdC5ncm93KG9sZFJlc3VsdFNpemUgKyBuZXdMZW4pOwotICAgIHVpbnQ4X3QqIHEg
PSByZXN1bHQuZGF0YSgpICsgb2xkUmVzdWx0U2l6ZTsKLQotICAgIC8vIElmIG5vIG5lZWQgdG8g
Zml4IHRoZSBzdHJpbmcsIGp1c3QgY29weSB0aGUgc3RyaW5nIG92ZXIuCi0gICAgaWYgKCFuZWVk
Rml4KSB7Ci0gICAgICAgIG1lbWNweShxLCBwLCBmcm9tLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzdHJpbmcuCi0gICAgd2hp
bGUgKHAgPCBmcm9tLmRhdGEoKSArIGZyb20ubGVuZ3RoKCkpIHsKLSAgICAgICAgY2hhciBjID0g
KnArKzsKLSAgICAgICAgaWYgKGMgPT0gJ1xyJyAmJiAqcCA9PSAnXG4nKSB7Ci0gICAgICAgICAg
ICAvLyBUdXJuIENSTEYgb3IgQ1IgaW50byBDUiBvciBMRi4KLSAgICAgICAgICAgIHArKzsKLSAg
ICAgICAgICAgICpxKysgPSB0b0VuZGluZ0NoYXI7Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSBm
cm9tRW5kaW5nQ2hhcikgewotICAgICAgICAgICAgLy8gVHVybiBDUi9MRiBpbnRvIExGL0NSLgot
ICAgICAgICAgICAgKnErKyA9IHRvRW5kaW5nQ2hhcjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIExlYXZlIG90aGVyIGNoYXJhY3RlcnMgYWxvbmUuCi0gICAgICAgICAgICAqcSsr
ID0gYzsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQ1N0cmluZyBub3JtYWxpemVMaW5lRW5kaW5n
c1RvQ1JMRihjb25zdCBDU3RyaW5nJiBmcm9tKQotewotICAgIENTdHJpbmcgcmVzdWx0OwotICAg
IENTdHJpbmdCdWZmZXIgYnVmZmVyKHJlc3VsdCk7Ci0gICAgaW50ZXJuYWxOb3JtYWxpemVMaW5l
RW5kaW5nc1RvQ1JMRihmcm9tLCBidWZmZXIpOwotICAgIHJldHVybiBidWZmZXIuYnVmZmVyKCk7
Ci19Ci0KLXZvaWQgbm9ybWFsaXplTGluZUVuZGluZ3NUb05hdGl2ZShjb25zdCBDU3RyaW5nJiBm
cm9tLCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIFZl
Y3RvckNoYXJBcHBlbmRCdWZmZXIgYnVmZmVyKHJlc3VsdCk7Ci0gICAgaW50ZXJuYWxOb3JtYWxp
emVMaW5lRW5kaW5nc1RvQ1JMRihmcm9tLCBidWZmZXIpOwotI2Vsc2UKLSAgICBub3JtYWxpemVU
b0NST3JMRihmcm9tLCByZXN1bHQsIGZhbHNlKTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVF
bmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDFjYjgwOTk3ZDY1OGQyZTA1YWYxNjA2MzA4YmM2
OGYwNDJjNjlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIExpbmVFbmRpbmdfaAotI2RlZmluZSBM
aW5lRW5kaW5nX2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIE5vcm1hbGl6ZSBhbGwgbGluZS1l
bmRpbmdzIGluIHRoZSBnaXZlbiBzdHJpbmcgdG8gQ1JMRi4KLUNTdHJpbmcgbm9ybWFsaXplTGlu
ZUVuZGluZ3NUb0NSTEYoY29uc3QgQ1N0cmluZyYgZnJvbSk7Ci0KLS8vIE5vcm1hbGl6ZSBhbGwg
bGluZS1lbmRpbmdzIGluIHRoZSBnaXZlbiBzdHJpbmcgdG8gdGhlIG5hdGl2ZSBsaW5lLWVuZGlu
Z3MgYW5kIGFwcGVuZCB0aGUgcmVzdWx0IHRvIHRoZSBnaXZlbiBidWZmZXIuCi0vLyAoTm9ybWFs
aXplIHRvIENSTEYgb24gV2luZG93cyBhbmQgbm9ybWFsaXplIHRvIExGIG9uIGFsbCBvdGhlciBw
bGF0Zm9ybXMuKQotdm9pZCBub3JtYWxpemVMaW5lRW5kaW5nc1RvTmF0aXZlKGNvbnN0IENTdHJp
bmcmIGZyb20sIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gTGluZUVuZGluZ19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320221</attachid>
            <date>2017-09-07 18:38:28 -0700</date>
            <delta_ts>2017-09-12 17:13:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176575-20170907183827.patch</filename>
            <type>text/plain</type>
            <size>31165</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkNzA0ZTUwMzM3NzNlNjFlYzI0MTlm
ZTE1MjAzNzc4YmJiNmYwYzEuLjcxMzFmNmJhODc1NjY2YWIwM2NlYmU0ZDYwNmQyYjZlOTVmYjMw
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIwMTctMDktMDcgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBNb3ZlIExpbmVFbmRpbmcue2gsY3BwfSBm
cm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byB3dGYvdGV4dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NTc1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGUgUEFMIGVmZm9ydCwg
d2UncmUgdHJ5aW5nIHRvIG1vdmUgZXZlcnl0aGluZyBvdXQgb2YgV2ViQ29yZS9wbGF0Zm9ybSwg
b25lLWJ5LW9uZS4KKyAgICAgICAgVGhlc2UgTGluZUVuZGluZyBmaWxlcyBiZWxvbmcgaW4gV1RG
LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
d3RmL3RleHQvTGluZUVuZGluZy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3BwLgorICAgICAgICAoV1RGOjpub3JtYWxpemVMaW5lRW5k
aW5nc1RvQ1JMRik6CisgICAgICAgICogd3RmL3RleHQvTGluZUVuZGluZy5oOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmguCisKKzIwMTctMDkt
MDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwogICAgICAgICBb
UEFMXSBVbmlmeSBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuaCB3aXRoIExhbmd1YWdl
LmgKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjU2
MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggM2IxMWM3YjgxZDcwMWU2YWZiMmViOTQ4ZWY0NTZkMzhkNDA2NmZl
OC4uZDg3ODQxZTBmOTkzMGRiMDMzZGFhYTQyZTIzYzcwYjU4MTYwNmRjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDE3LTA5LTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBMaW5lRW5kaW5nLntoLGNwcH0gZnJvbSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQgdG8gd3RmL3RleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjU3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JCdWlsZGVyLmNwcDoKKyAgICAgICAgKiBodG1s
L0Zvcm1EYXRhTGlzdC5jcHA6CisKIDIwMTctMDktMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lz
dGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMTI5Yjk4NTM5NjY4ZmVmYzYwMjA0Yjc2YTgzNWU2NDc2Zjg4NmUxZi4uOTUy
YTM3ODkxN2I4MzFmY2EzNDhlM2JkMDc2NmNjMWIxYWViZjdlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQsNiArMTM0LDcgQEAKIAkJQURGMkNFNjcx
RTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlE
QiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi87IH07CiAJCUMyQkNGQzQwMUY2MUQxMzAw
MEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkJDRkMzRTFGNjFEMTMwMDBDOTIyMkMgLyogTGFuZ3VhZ2UuY3BwICov
OyB9OwogCQlDMkJDRkM0MjFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkJDRkM0MTFGNjFENjE2
MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi87IH07CisJCUMyQkNGQzU1MUY2MjFGM0YwMEM5
MjIyQyAvKiBMaW5lRW5kaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyQkNGQzUzMUY2MjFGM0YwMEM5MjIyQyAvKiBMaW5lRW5kaW5nLmNwcCAq
LzsgfTsKIAkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAz
MDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLzsgfTsKIAkJRENFRTIyMDExQ0VBNzU1MTAwMEMy
Mzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRDFDRUE3NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpD
RXhjZXB0aW9ucy5tbSAqLzsgfTsKIAkJRTE1NTU2RjUxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0
b2dyYXBoaWNVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuY3BwICovOyB9OwpAQCAtNTUxLDYgKzU1Miw4IEBACiAJCUMyQkNGQzNFMUY2MUQxMzAw
MEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBMYW5ndWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQkNGQzNG
MUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkJDRkM0
MTFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzJCQ0ZDNTMxRjYyMUYzRjAwQzkyMjJDIC8qIExpbmVFbmRpbmcuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGluZUVuZGluZy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyQkNGQzU0MUY2MjFGM0YwMEM5MjIyQyAvKiBMaW5lRW5kaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVFbmRpbmcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGOEE5MzYxOUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3
YXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9wd2F0Y2guaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzhGNTk3Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJh
bmRvbURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5k
b21EZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0OTdBQTE1ODU3
RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhVGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDg2LDYgKzEwODksOCBAQAogCQkJCTI2MTQ3QjA4MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2Vy
VG9TdHJpbmdDb252ZXJzaW9uLmggKi8sCiAJCQkJOTNBQzkxQTcxODk0MkZDNDAwMjQ0OTM5IC8q
IExDaGFyLmggKi8sCiAJCQkJMUMxODFDODExRDMwNzk3QzAwRjVGQTE2IC8qIExpbmVCcmVha0l0
ZXJhdG9yUG9vbElDVS5oICovLAorCQkJCUMyQkNGQzUzMUY2MjFGM0YwMEM5MjIyQyAvKiBMaW5l
RW5kaW5nLmNwcCAqLywKKwkJCQlDMkJDRkM1NDFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGlu
Zy5oICovLAogCQkJCTE0RTc4NUU3MURGQjMzMDEwMDIwOUJEMSAvKiBPcmRpbmFsTnVtYmVyLmgg
Ki8sCiAJCQkJQThBNDczMjMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1ZmZlci5oICovLAog
CQkJCUE4QTQ3MzI0MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLywKQEAg
LTEzNjgsNiArMTM3Myw3IEBACiAJCQkJQThBNDczRDgxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hU
YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkJDRkM0MDFGNjFEMTMwMDBDOTIyMkMgLyog
TGFuZ3VhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJCQ0ZDNDIxRjYxRDYxNjAwQzkyMjJD
IC8qIExhbmd1YWdlQ0YuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJCQ0ZDNTUxRjYyMUYzRjAw
QzkyMjJDIC8qIExpbmVFbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMTY0NkExQjZG
RkM5NjAwNDAwRTdDIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MEYzMkYxREZD
QkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzNTM0RjJBMUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGRjYTM4YmJkNzc0YmMxY2U0MGQ2MDhlZDgx
ZDk5NTc2MjA4Zjk1MWUuLjA2YmYwNTllMTRlYTZjN2Y2N2FjNjQ5NjgxYzQ0OGUzYzE0ODI1MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNzgsNiArMTc4LDcgQEAgc2V0KFdURl9IRUFERVJT
CiAgICAgdGV4dC9DU3RyaW5nLmgKICAgICB0ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24u
aAogICAgIHRleHQvTENoYXIuaAorICAgIHRleHQvTGluZUVuZGluZy5oCiAgICAgdGV4dC9MaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuaAogICAgIHRleHQvU3RyaW5nQnVmZmVyLmgKICAgICB0ZXh0
L1N0cmluZ0NvbW1vbi5oCkBAIC0yODcsNiArMjg4LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAg
dGV4dC9BdG9taWNTdHJpbmdUYWJsZS5jcHAKICAgICB0ZXh0L0Jhc2U2NC5jcHAKICAgICB0ZXh0
L0NTdHJpbmcuY3BwCisgICAgdGV4dC9MaW5lRW5kaW5nLmNwcAogICAgIHRleHQvU3RyaW5nQnVp
bGRlci5jcHAKICAgICB0ZXh0L1N0cmluZ0J1aWxkZXJKU09OLmNwcAogICAgIHRleHQvU3RyaW5n
SW1wbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUVuZGluZy5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVFbmRpbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NzY2YmNm
MGFlY2ZjYTc2NDBkYmFiNmU1MjZkNjc0NDE5NzE4OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0xpbmVFbmRpbmcuY3BwCkBAIC0wLDAgKzEsMjI3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA4LCAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaW5lRW5kaW5nLmgiCisKKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIE91dHB1dEJ1ZmZlciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB1aW50OF90KiBhbGxvY2F0ZShzaXplX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29weShjb25zdCBDU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgfk91dHB1dEJ1ZmZlcigpIHsg
fQorfTsKKworY2xhc3MgQ1N0cmluZ0J1ZmZlciA6IHB1YmxpYyBPdXRwdXRCdWZmZXIgeworcHVi
bGljOgorICAgIENTdHJpbmdCdWZmZXIoQ1N0cmluZyYgYnVmZmVyKQorICAgICAgICA6IG1fYnVm
ZmVyKGJ1ZmZlcikKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgfkNTdHJpbmdCdWZmZXIoKSB7
IH0KKworICAgIHVpbnQ4X3QqIGFsbG9jYXRlKHNpemVfdCBzaXplKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgY2hhciogcHRyOworICAgICAgICBtX2J1ZmZlciA9IENTdHJpbmc6Om5ld1VuaW5p
dGlhbGl6ZWQoc2l6ZSwgcHRyKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KHB0cik7CisgICAgfQorCisgICAgdm9pZCBjb3B5KGNvbnN0IENTdHJpbmcmIHNvdXJj
ZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fYnVmZmVyID0gc291cmNlOworICAgIH0KKwor
ICAgIGNvbnN0IENTdHJpbmcmIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisK
K3ByaXZhdGU6CisgICAgQ1N0cmluZyBtX2J1ZmZlcjsKK307CisKKyNpZiBPUyhXSU5ET1dTKQor
Y2xhc3MgVmVjdG9yQ2hhckFwcGVuZEJ1ZmZlciA6IHB1YmxpYyBPdXRwdXRCdWZmZXIgeworcHVi
bGljOgorICAgIFZlY3RvckNoYXJBcHBlbmRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQorICAgIHsKKyAgICB9CisgICAgdmlydHVhbCB+
VmVjdG9yQ2hhckFwcGVuZEJ1ZmZlcigpIHsgfQorCisgICAgdWludDhfdCogYWxsb2NhdGUoc2l6
ZV90IHNpemUpIG92ZXJyaWRlCisgICAgeworICAgICAgICBzaXplX3Qgb2xkU2l6ZSA9IG1fYnVm
ZmVyLnNpemUoKTsKKyAgICAgICAgbV9idWZmZXIuZ3JvdyhvbGRTaXplICsgc2l6ZSk7CisgICAg
ICAgIHJldHVybiBtX2J1ZmZlci5kYXRhKCkgKyBvbGRTaXplOworICAgIH0KKworICAgIHZvaWQg
Y29weShjb25zdCBDU3RyaW5nJiBzb3VyY2UpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2J1
ZmZlci5hcHBlbmQoc291cmNlLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgVmVjdG9yPHVpbnQ4X3Q+JiBtX2J1ZmZlcjsKK307CisjZW5kaWYKKwordm9p
ZCBpbnRlcm5hbE5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUkxGKGNvbnN0IENTdHJpbmcmIGZyb20s
IE91dHB1dEJ1ZmZlciYgYnVmZmVyKQoreworICAgIGlmICghZnJvbS5sZW5ndGgoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIC8vIENvbXB1dGUgdGhlIG5ldyBsZW5ndGguCisgICAgc2l6ZV90IG5l
d0xlbiA9IDA7CisgICAgY29uc3QgY2hhciogcCA9IGZyb20uZGF0YSgpOworICAgIHdoaWxlIChw
IDwgZnJvbS5kYXRhKCkgKyBmcm9tLmxlbmd0aCgpKSB7CisgICAgICAgIGNoYXIgYyA9ICpwKys7
CisgICAgICAgIGlmIChjID09ICdccicpIHsKKyAgICAgICAgICAgIC8vIFNhZmUgdG8gbG9vayBh
aGVhZCBiZWNhdXNlIG9mIHRyYWlsaW5nICdcMCcuCisgICAgICAgICAgICBpZiAoKnAgIT0gJ1xu
JykgeworICAgICAgICAgICAgICAgIC8vIFR1cm4gQ1IgaW50byBDUkxGLgorICAgICAgICAgICAg
ICAgIG5ld0xlbiArPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGMgPT0g
J1xuJykgeworICAgICAgICAgICAgLy8gVHVybiBMRiBpbnRvIENSTEYuCisgICAgICAgICAgICBu
ZXdMZW4gKz0gMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIExlYXZlIG90aGVy
IGNoYXJhY3RlcnMgYWxvbmUuCisgICAgICAgICAgICBuZXdMZW4gKz0gMTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAobmV3TGVuIDwgZnJvbS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG5ld0xlbiA9PSBmcm9tLmxlbmd0aCgpKSB7CisgICAgICAgIGJ1ZmZlci5jb3B5
KGZyb20pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcCA9IGZyb20uZGF0YSgpOwor
ICAgIHVpbnQ4X3QqIHEgPSBidWZmZXIuYWxsb2NhdGUobmV3TGVuKTsKKworICAgIC8vIE1ha2Ug
YSBjb3B5IG9mIHRoZSBzdHJpbmcuCisgICAgd2hpbGUgKHAgPCBmcm9tLmRhdGEoKSArIGZyb20u
bGVuZ3RoKCkpIHsKKyAgICAgICAgY2hhciBjID0gKnArKzsKKyAgICAgICAgaWYgKGMgPT0gJ1xy
JykgeworICAgICAgICAgICAgLy8gU2FmZSB0byBsb29rIGFoZWFkIGJlY2F1c2Ugb2YgdHJhaWxp
bmcgJ1wwJy4KKyAgICAgICAgICAgIGlmICgqcCAhPSAnXG4nKSB7CisgICAgICAgICAgICAgICAg
Ly8gVHVybiBDUiBpbnRvIENSTEYuCisgICAgICAgICAgICAgICAgKnErKyA9ICdccic7CisgICAg
ICAgICAgICAgICAgKnErKyA9ICdcbic7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBp
ZiAoYyA9PSAnXG4nKSB7CisgICAgICAgICAgICAvLyBUdXJuIExGIGludG8gQ1JMRi4KKyAgICAg
ICAgICAgICpxKysgPSAnXHInOworICAgICAgICAgICAgKnErKyA9ICdcbic7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBMZWF2ZSBvdGhlciBjaGFyYWN0ZXJzIGFsb25lLgorICAg
ICAgICAgICAgKnErKyA9IGM7CisgICAgICAgIH0KKyAgICB9Cit9CisKK307CisKK25hbWVzcGFj
ZSBXVEYgeworCisvLyBOb3JtYWxpemUgYWxsIGxpbmUtZW5kaW5ncyB0byBDUiBvciBMRi4KK3N0
YXRpYyB2b2lkIG5vcm1hbGl6ZVRvQ1JPckxGKGNvbnN0IENTdHJpbmcmIGZyb20sIFZlY3Rvcjx1
aW50OF90PiYgcmVzdWx0LCBib29sIHRvQ1IpCit7CisgICAgLy8gQ29tcHV0ZSB0aGUgbmV3IGxl
bmd0aC4KKyAgICBzaXplX3QgbmV3TGVuID0gMDsKKyAgICBib29sIG5lZWRGaXggPSBmYWxzZTsK
KyAgICBjb25zdCBjaGFyKiBwID0gZnJvbS5kYXRhKCk7CisgICAgY2hhciBmcm9tRW5kaW5nQ2hh
ciA9IHRvQ1IgPyAnXG4nIDogJ1xyJzsKKyAgICBjaGFyIHRvRW5kaW5nQ2hhciA9IHRvQ1IgPyAn
XHInIDogJ1xuJzsKKyAgICB3aGlsZSAocCA8IGZyb20uZGF0YSgpICsgZnJvbS5sZW5ndGgoKSkg
eworICAgICAgICBjaGFyIGMgPSAqcCsrOworICAgICAgICBpZiAoYyA9PSAnXHInICYmICpwID09
ICdcbicpIHsKKyAgICAgICAgICAgIC8vIFR1cm4gQ1JMRiBpbnRvIENSIG9yIExGLgorICAgICAg
ICAgICAgcCsrOworICAgICAgICAgICAgbmVlZEZpeCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBp
ZiAoYyA9PSBmcm9tRW5kaW5nQ2hhcikgeworICAgICAgICAgICAgLy8gVHVybiBDUi9MRiBpbnRv
IExGL0NSLgorICAgICAgICAgICAgbmVlZEZpeCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
bmV3TGVuICs9IDE7CisgICAgfQorCisgICAgLy8gR3JvdyB0aGUgcmVzdWx0IGJ1ZmZlci4KKyAg
ICBwID0gZnJvbS5kYXRhKCk7CisgICAgc2l6ZV90IG9sZFJlc3VsdFNpemUgPSByZXN1bHQuc2l6
ZSgpOworICAgIHJlc3VsdC5ncm93KG9sZFJlc3VsdFNpemUgKyBuZXdMZW4pOworICAgIHVpbnQ4
X3QqIHEgPSByZXN1bHQuZGF0YSgpICsgb2xkUmVzdWx0U2l6ZTsKKworICAgIC8vIElmIG5vIG5l
ZWQgdG8gZml4IHRoZSBzdHJpbmcsIGp1c3QgY29weSB0aGUgc3RyaW5nIG92ZXIuCisgICAgaWYg
KCFuZWVkRml4KSB7CisgICAgICAgIG1lbWNweShxLCBwLCBmcm9tLmxlbmd0aCgpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzdHJpbmcuCisg
ICAgd2hpbGUgKHAgPCBmcm9tLmRhdGEoKSArIGZyb20ubGVuZ3RoKCkpIHsKKyAgICAgICAgY2hh
ciBjID0gKnArKzsKKyAgICAgICAgaWYgKGMgPT0gJ1xyJyAmJiAqcCA9PSAnXG4nKSB7CisgICAg
ICAgICAgICAvLyBUdXJuIENSTEYgb3IgQ1IgaW50byBDUiBvciBMRi4KKyAgICAgICAgICAgIHAr
KzsKKyAgICAgICAgICAgICpxKysgPSB0b0VuZGluZ0NoYXI7CisgICAgICAgIH0gZWxzZSBpZiAo
YyA9PSBmcm9tRW5kaW5nQ2hhcikgeworICAgICAgICAgICAgLy8gVHVybiBDUi9MRiBpbnRvIExG
L0NSLgorICAgICAgICAgICAgKnErKyA9IHRvRW5kaW5nQ2hhcjsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIExlYXZlIG90aGVyIGNoYXJhY3RlcnMgYWxvbmUuCisgICAgICAgICAg
ICAqcSsrID0gYzsKKyAgICAgICAgfQorICAgIH0KK30KKworQ1N0cmluZyBub3JtYWxpemVMaW5l
RW5kaW5nc1RvQ1JMRihjb25zdCBDU3RyaW5nJiBmcm9tKQoreworICAgIENTdHJpbmcgcmVzdWx0
OworICAgIDo6Q1N0cmluZ0J1ZmZlciBidWZmZXIocmVzdWx0KTsKKyAgICBpbnRlcm5hbE5vcm1h
bGl6ZUxpbmVFbmRpbmdzVG9DUkxGKGZyb20sIGJ1ZmZlcik7CisgICAgcmV0dXJuIGJ1ZmZlci5i
dWZmZXIoKTsKK30KKwordm9pZCBub3JtYWxpemVMaW5lRW5kaW5nc1RvTmF0aXZlKGNvbnN0IENT
dHJpbmcmIGZyb20sIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KQoreworI2lmIE9TKFdJTkRPV1Mp
CisgICAgVmVjdG9yQ2hhckFwcGVuZEJ1ZmZlciBidWZmZXIocmVzdWx0KTsKKyAgICBpbnRlcm5h
bE5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUkxGKGZyb20sIGJ1ZmZlcik7CisjZWxzZQorICAgIG5v
cm1hbGl6ZVRvQ1JPckxGKGZyb20sIHJlc3VsdCwgZmFsc2UpOworI2VuZGlmCit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lRW5kaW5n
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVFbmRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODM4ZjVh
MjQ3YmE1ZThhODE2OGRmMDJiMTJiMGE1NTRiYTllOWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9MaW5lRW5kaW5nLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwOCwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gTm9ybWFsaXplIGFsbCBsaW5l
LWVuZGluZ3MgaW4gdGhlIGdpdmVuIHN0cmluZyB0byBDUkxGLgorV1RGX0VYUE9SVCBDU3RyaW5n
IG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUkxGKGNvbnN0IENTdHJpbmcmIGZyb20pOworCisvLyBO
b3JtYWxpemUgYWxsIGxpbmUtZW5kaW5ncyBpbiB0aGUgZ2l2ZW4gc3RyaW5nIHRvIHRoZSBuYXRp
dmUgbGluZS1lbmRpbmdzIGFuZCBhcHBlbmQgdGhlIHJlc3VsdCB0byB0aGUgZ2l2ZW4gYnVmZmVy
LgorLy8gKE5vcm1hbGl6ZSB0byBDUkxGIG9uIFdpbmRvd3MgYW5kIG5vcm1hbGl6ZSB0byBMRiBv
biBhbGwgb3RoZXIgcGxhdGZvcm1zLikKK1dURl9FWFBPUlQgdm9pZCBub3JtYWxpemVMaW5lRW5k
aW5nc1RvTmF0aXZlKGNvbnN0IENTdHJpbmcmIGZyb20sIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0
KTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6bm9ybWFsaXplTGluZUVuZGlu
Z3NUb0NSTEY7Cit1c2luZyBXVEY6Om5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9OYXRpdmU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDlhZDFjYzI3YmZkZDY3YWIxMGIwZmZiYzVkOTJmZmU0ZTdiOTBj
NTQuLjk2NzllZDE1YTg5ZjcyNTQzNzhiYTE0ZGYyY2VmNWIwYzFlYWE3NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0yNTYyLDcgKzI1NjIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAg
ICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcAogICAgIHBsYXRmb3JtL3RleHQvRGF0ZVRp
bWVGb3JtYXQuY3BwCi0gICAgcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmNwcAogICAgIHBsYXRm
b3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAKICAgICBwbGF0Zm9ybS90
ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcAogICAgIHBsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDMyMjA3YjAzYmYwMGVhYTAxZTc0NDk4ZjRkYTgxMGZjNGRkMjg4NWUuLjNkY2Nj
NGNjMDdmZmFiYjIxNzdhNDdkZmRjZGI1MGMyZWE1YTQ3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3MTEsOCArMzcxMSw2
IEBACiAJCTg5MzFERTVCMTRDNDRDNDQwMDBEQzlEMiAvKiBKU0Jsb2JDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzMURFNUExNEM0NEM0
NDAwMERDOUQyIC8qIEpTQmxvYkN1c3RvbS5jcHAgKi87IH07CiAJCTg5ODc4NUY0MTIyRTFFQUMw
MDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODc4NUYyMTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVS
ZWFkZXJTeW5jLmNwcCAqLzsgfTsKIAkJODk4Nzg1RjUxMjJFMUVBQzAwM0FBQkRBIC8qIEpTRmls
ZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg5ODc4NUYzMTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmggKi87IH07
Ci0JCTg5QjVFQUExMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5QjVFQTlGMTFFODAwM0QwMEYy
MzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLzsgfTsKLQkJODlCNUVBQTIxMUU4MDAzRDAwRjIzNjdF
IC8qIExpbmVFbmRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5QjVFQUEwMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODlGNjBCMTExNTdGNjg2
RTAwNzVFMTU3IC8qIERPTVdpbmRvd1F1b3RhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4OUY2MEIwQTE1N0Y2ODZEMDA3NUUxNTcgLyogRE9NV2luZG93
UXVvdGEuaCAqLzsgfTsKIAkJODlGNjBDREExNTgwOUQ3NjAwNzVFMTU3IC8qIEpTU3RvcmFnZUlu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5RjYw
Q0QyMTU4MDlENzYwMDc1RTE1NyAvKiBKU1N0b3JhZ2VJbmZvLmggKi87IH07CiAJCThBMTJFMzVE
MTFGQTMzMjgwMDI1ODM2QSAvKiBMb2FkVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QTEyRTM1QzExRkEzMzI4MDAyNTgzNkEgLyogTG9hZFRp
bWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMjAxMyw4ICsxMjAxMSw2IEBACiAJCTg5MzFERTVBMTRDNDRDNDQwMDBEQzlEMiAvKiBKU0Js
b2JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCbG9i
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODk4Nzg1RjIxMjJFMUVB
QzAwM0FBQkRBIC8qIEpTRmlsZVJlYWRlclN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNGaWxlUmVhZGVyU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg5ODc4NUYzMTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmlsZVJlYWRlclN5bmMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODlCNUVBOUYxMUU4MDAzRDAwRjIzNjdFIC8qIExp
bmVFbmRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGluZUVu
ZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5QjVFQUEwMTFFODAwM0Qw
MEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IExpbmVFbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODlGNjBCMEExNTdG
Njg2RDAwNzVFMTU3IC8qIERPTVdpbmRvd1F1b3RhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTVdpbmRvd1F1b3RhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg5RjYwQ0QyMTU4MDlENzYwMDc1RTE1NyAvKiBKU1N0b3JhZ2VJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RvcmFnZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODlGRDU4RDgxNkVFREJENDAwRTE4M0YwIC8qIE5hdmlnYXRvclN0b3JhZ2VR
dW90YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JTdG9yYWdl
UXVvdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNzkyLDggKzIzNzg4LDYg
QEAKIAkJCQk0NTNFQjYzNTE1OUM1NzA0MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuaCAqLywK
IAkJCQlDRUNDRkMzQTE0MTk3M0Q1MDAyQTBBQzEgLyogRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgg
Ki8sCiAJCQkJMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi8sCi0J
CQkJODlCNUVBOUYxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwICovLAotCQkJCTg5
QjVFQUEwMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi8sCiAJCQkJNzYzM0E3MjQx
M0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oICovLAogCQkJCTc2MzNB
NzI1MTNEOEIzM0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcCAq
LywKIAkJCQlCQzc2QUMxMTBERDdBRDVDMDA0MTVGMzQgLyogUGFyc2VyVXRpbGl0aWVzLmggKi8s
CkBAIC0yOTAzNSw3ICsyOTAyOSw2IEBACiAJCQkJODQ3MzBEOTExMjQ4RjBCMzAwRDNBOUM5IC8q
IExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3MUI3
ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjMx
QzkxRTEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTg5QjVFQUEyMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRkVGQUIyQTE4MzgwREEwMDA1MTQ1MzQgLyogTGluZUxheW91dFN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRkRCQzA0NzE4M0QyN0I3MDA0MDcxMDkgLyogTGluZVdpZHRoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0FEMkY4ODBFQzg5RDA3MDA4QUIwMDIgLyogTGlua0hhc2gu
aCBpbiBIZWFkZXJzICovLApAQCAtMzMxMDcsNyArMzMxMDAsNiBAQAogCQkJCTQxNzYxMkIxMUUz
QTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDFBMUIwMEUxRTUyNjU3OTAwN0YzNzY5IC8qIExpYldlYlJUQ1Byb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZGQjY5OENDMTgzM0VFMEQwMDE1OEEzMSAvKiBM
aW5lQnJlYWtlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4OUI1RUFBMTExRTgwMDNEMDBGMjM2
N0UgLyogTGluZUVuZGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkI2OThDRjE4MzQwMkJC
MDAxNThBMzEgLyogTGluZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkZEQkMwNDgxODNE
MjdCNzAwNDA3MTA5IC8qIExpbmVXaWR0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0FEMkY4
NzBFQzg5RDA3MDA4QUIwMDIgLyogTGlua0hhc2guY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwCmluZGV4IGQ2NmRjOWZmMDhmYTRhYzMwNzE4N2Y2
OTRmZGEyMTBiNDVhOTExY2MuLmU3YWM4M2Y5Yzk4ZTAxNzQxZTQ0ZWMzN2MyZDExMDZmOGNiYjc1
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwCkBAIC0zMiwxMSArMzIs
MTEgQEAKICNpbmNsdWRlICJCbG9iQnVpbGRlci5oIgogCiAjaW5jbHVkZSAiQmxvYi5oIgotI2lu
Y2x1ZGUgIkxpbmVFbmRpbmcuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRl
IDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZp
ZXcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
TGluZUVuZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bURhdGFMaXN0LmNwcAppbmRleCA2NDRmYWY3MjE1MDkwZDVhYjEyMmYxZjc5NjIzOTlkMjgxM2M3
MDY3Li45ZDMyZWQxOWViZDQzN2QzZGMxMGY2YWEyODhhODVmNzljNTNlNmNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1EYXRhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtRGF0YUxpc3QuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAKLSNpbmNsdWRlICJMaW5lRW5kaW5n
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvTGluZUVuZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDNlMGVhNGRmNjFmYmVmYjNiNGNkNDcyZTBkYTZjMjY3NGIyOWNhZTUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9MaW5lRW5kaW5nLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMaW5lRW5kaW5nLmgiCi0KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIE91dHB1dEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB1aW50OF90KiBhbGxvY2F0ZShzaXplX3Qgc2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBjb3B5KGNvbnN0IENTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB+T3V0cHV0QnVmZmVyKCkg
eyB9Ci19OwotCi1jbGFzcyBDU3RyaW5nQnVmZmVyIDogcHVibGljIE91dHB1dEJ1ZmZlciB7Ci1w
dWJsaWM6Ci0gICAgQ1N0cmluZ0J1ZmZlcihDU3RyaW5nJiBidWZmZXIpCi0gICAgICAgIDogbV9i
dWZmZXIoYnVmZmVyKQotICAgIHsKLSAgICB9Ci0gICAgdmlydHVhbCB+Q1N0cmluZ0J1ZmZlcigp
IHsgfQotCi0gICAgdWludDhfdCogYWxsb2NhdGUoc2l6ZV90IHNpemUpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBjaGFyKiBwdHI7Ci0gICAgICAgIG1fYnVmZmVyID0gQ1N0cmluZzo6bmV3VW5p
bml0aWFsaXplZChzaXplLCBwdHIpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4ocHRyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHkoY29uc3QgQ1N0cmluZyYgc291
cmNlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9idWZmZXIgPSBzb3VyY2U7Ci0gICAgfQot
Ci0gICAgY29uc3QgQ1N0cmluZyYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0K
LQotcHJpdmF0ZToKLSAgICBDU3RyaW5nIG1fYnVmZmVyOwotfTsKLQotI2lmIE9TKFdJTkRPV1Mp
Ci1jbGFzcyBWZWN0b3JDaGFyQXBwZW5kQnVmZmVyIDogcHVibGljIE91dHB1dEJ1ZmZlciB7Ci1w
dWJsaWM6Ci0gICAgVmVjdG9yQ2hhckFwcGVuZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mIGJ1ZmZl
cikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgewotICAgIH0KLSAgICB2aXJ0dWFs
IH5WZWN0b3JDaGFyQXBwZW5kQnVmZmVyKCkgeyB9Ci0KLSAgICB1aW50OF90KiBhbGxvY2F0ZShz
aXplX3Qgc2l6ZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHNpemVfdCBvbGRTaXplID0gbV9i
dWZmZXIuc2l6ZSgpOwotICAgICAgICBtX2J1ZmZlci5ncm93KG9sZFNpemUgKyBzaXplKTsKLSAg
ICAgICAgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKSArIG9sZFNpemU7Ci0gICAgfQotCi0gICAgdm9p
ZCBjb3B5KGNvbnN0IENTdHJpbmcmIHNvdXJjZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1f
YnVmZmVyLmFwcGVuZChzb3VyY2UuZGF0YSgpLCBzb3VyY2UubGVuZ3RoKCkpOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBWZWN0b3I8dWludDhfdD4mIG1fYnVmZmVyOwotfTsKLSNlbmRpZgotCi12
b2lkIGludGVybmFsTm9ybWFsaXplTGluZUVuZGluZ3NUb0NSTEYoY29uc3QgQ1N0cmluZyYgZnJv
bSwgT3V0cHV0QnVmZmVyJiBidWZmZXIpCi17Ci0gICAgaWYgKCFmcm9tLmxlbmd0aCgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgLy8gQ29tcHV0ZSB0aGUgbmV3IGxlbmd0aC4KLSAgICBzaXplX3Qg
bmV3TGVuID0gMDsKLSAgICBjb25zdCBjaGFyKiBwID0gZnJvbS5kYXRhKCk7Ci0gICAgd2hpbGUg
KHAgPCBmcm9tLmRhdGEoKSArIGZyb20ubGVuZ3RoKCkpIHsKLSAgICAgICAgY2hhciBjID0gKnAr
KzsKLSAgICAgICAgaWYgKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgLy8gU2FmZSB0byBsb29r
IGFoZWFkIGJlY2F1c2Ugb2YgdHJhaWxpbmcgJ1wwJy4KLSAgICAgICAgICAgIGlmICgqcCAhPSAn
XG4nKSB7Ci0gICAgICAgICAgICAgICAgLy8gVHVybiBDUiBpbnRvIENSTEYuCi0gICAgICAgICAg
ICAgICAgbmV3TGVuICs9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9
PSAnXG4nKSB7Ci0gICAgICAgICAgICAvLyBUdXJuIExGIGludG8gQ1JMRi4KLSAgICAgICAgICAg
IG5ld0xlbiArPSAyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTGVhdmUgb3Ro
ZXIgY2hhcmFjdGVycyBhbG9uZS4KLSAgICAgICAgICAgIG5ld0xlbiArPSAxOwotICAgICAgICB9
Ci0gICAgfQotICAgIGlmIChuZXdMZW4gPCBmcm9tLmxlbmd0aCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAobmV3TGVuID09IGZyb20ubGVuZ3RoKCkpIHsKLSAgICAgICAgYnVmZmVyLmNv
cHkoZnJvbSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwID0gZnJvbS5kYXRhKCk7
Ci0gICAgdWludDhfdCogcSA9IGJ1ZmZlci5hbGxvY2F0ZShuZXdMZW4pOwotCi0gICAgLy8gTWFr
ZSBhIGNvcHkgb2YgdGhlIHN0cmluZy4KLSAgICB3aGlsZSAocCA8IGZyb20uZGF0YSgpICsgZnJv
bS5sZW5ndGgoKSkgewotICAgICAgICBjaGFyIGMgPSAqcCsrOwotICAgICAgICBpZiAoYyA9PSAn
XHInKSB7Ci0gICAgICAgICAgICAvLyBTYWZlIHRvIGxvb2sgYWhlYWQgYmVjYXVzZSBvZiB0cmFp
bGluZyAnXDAnLgotICAgICAgICAgICAgaWYgKCpwICE9ICdcbicpIHsKLSAgICAgICAgICAgICAg
ICAvLyBUdXJuIENSIGludG8gQ1JMRi4KLSAgICAgICAgICAgICAgICAqcSsrID0gJ1xyJzsKLSAg
ICAgICAgICAgICAgICAqcSsrID0gJ1xuJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNl
IGlmIChjID09ICdcbicpIHsKLSAgICAgICAgICAgIC8vIFR1cm4gTEYgaW50byBDUkxGLgotICAg
ICAgICAgICAgKnErKyA9ICdccic7Ci0gICAgICAgICAgICAqcSsrID0gJ1xuJzsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIC8vIExlYXZlIG90aGVyIGNoYXJhY3RlcnMgYWxvbmUuCi0g
ICAgICAgICAgICAqcSsrID0gYzsKLSAgICAgICAgfQotICAgIH0KLX0KLQotfTsKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0vLyBOb3JtYWxpemUgYWxsIGxpbmUtZW5kaW5ncyB0byBDUiBvciBM
Ri4KLXN0YXRpYyB2b2lkIG5vcm1hbGl6ZVRvQ1JPckxGKGNvbnN0IENTdHJpbmcmIGZyb20sIFZl
Y3Rvcjx1aW50OF90PiYgcmVzdWx0LCBib29sIHRvQ1IpCi17Ci0gICAgLy8gQ29tcHV0ZSB0aGUg
bmV3IGxlbmd0aC4KLSAgICBzaXplX3QgbmV3TGVuID0gMDsKLSAgICBib29sIG5lZWRGaXggPSBm
YWxzZTsKLSAgICBjb25zdCBjaGFyKiBwID0gZnJvbS5kYXRhKCk7Ci0gICAgY2hhciBmcm9tRW5k
aW5nQ2hhciA9IHRvQ1IgPyAnXG4nIDogJ1xyJzsKLSAgICBjaGFyIHRvRW5kaW5nQ2hhciA9IHRv
Q1IgPyAnXHInIDogJ1xuJzsKLSAgICB3aGlsZSAocCA8IGZyb20uZGF0YSgpICsgZnJvbS5sZW5n
dGgoKSkgewotICAgICAgICBjaGFyIGMgPSAqcCsrOwotICAgICAgICBpZiAoYyA9PSAnXHInICYm
ICpwID09ICdcbicpIHsKLSAgICAgICAgICAgIC8vIFR1cm4gQ1JMRiBpbnRvIENSIG9yIExGLgot
ICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgbmVlZEZpeCA9IHRydWU7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoYyA9PSBmcm9tRW5kaW5nQ2hhcikgewotICAgICAgICAgICAgLy8gVHVybiBDUi9M
RiBpbnRvIExGL0NSLgotICAgICAgICAgICAgbmVlZEZpeCA9IHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgbmV3TGVuICs9IDE7Ci0gICAgfQotCi0gICAgLy8gR3JvdyB0aGUgcmVzdWx0IGJ1ZmZl
ci4KLSAgICBwID0gZnJvbS5kYXRhKCk7Ci0gICAgc2l6ZV90IG9sZFJlc3VsdFNpemUgPSByZXN1
bHQuc2l6ZSgpOwotICAgIHJlc3VsdC5ncm93KG9sZFJlc3VsdFNpemUgKyBuZXdMZW4pOwotICAg
IHVpbnQ4X3QqIHEgPSByZXN1bHQuZGF0YSgpICsgb2xkUmVzdWx0U2l6ZTsKLQotICAgIC8vIElm
IG5vIG5lZWQgdG8gZml4IHRoZSBzdHJpbmcsIGp1c3QgY29weSB0aGUgc3RyaW5nIG92ZXIuCi0g
ICAgaWYgKCFuZWVkRml4KSB7Ci0gICAgICAgIG1lbWNweShxLCBwLCBmcm9tLmxlbmd0aCgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzdHJp
bmcuCi0gICAgd2hpbGUgKHAgPCBmcm9tLmRhdGEoKSArIGZyb20ubGVuZ3RoKCkpIHsKLSAgICAg
ICAgY2hhciBjID0gKnArKzsKLSAgICAgICAgaWYgKGMgPT0gJ1xyJyAmJiAqcCA9PSAnXG4nKSB7
Ci0gICAgICAgICAgICAvLyBUdXJuIENSTEYgb3IgQ1IgaW50byBDUiBvciBMRi4KLSAgICAgICAg
ICAgIHArKzsKLSAgICAgICAgICAgICpxKysgPSB0b0VuZGluZ0NoYXI7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoYyA9PSBmcm9tRW5kaW5nQ2hhcikgewotICAgICAgICAgICAgLy8gVHVybiBDUi9MRiBp
bnRvIExGL0NSLgotICAgICAgICAgICAgKnErKyA9IHRvRW5kaW5nQ2hhcjsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIC8vIExlYXZlIG90aGVyIGNoYXJhY3RlcnMgYWxvbmUuCi0gICAg
ICAgICAgICAqcSsrID0gYzsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQ1N0cmluZyBub3JtYWxp
emVMaW5lRW5kaW5nc1RvQ1JMRihjb25zdCBDU3RyaW5nJiBmcm9tKQotewotICAgIENTdHJpbmcg
cmVzdWx0OwotICAgIENTdHJpbmdCdWZmZXIgYnVmZmVyKHJlc3VsdCk7Ci0gICAgaW50ZXJuYWxO
b3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihmcm9tLCBidWZmZXIpOwotICAgIHJldHVybiBidWZm
ZXIuYnVmZmVyKCk7Ci19Ci0KLXZvaWQgbm9ybWFsaXplTGluZUVuZGluZ3NUb05hdGl2ZShjb25z
dCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKLXsKLSNpZiBPUyhXSU5E
T1dTKQotICAgIFZlY3RvckNoYXJBcHBlbmRCdWZmZXIgYnVmZmVyKHJlc3VsdCk7Ci0gICAgaW50
ZXJuYWxOb3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihmcm9tLCBidWZmZXIpOwotI2Vsc2UKLSAg
ICBub3JtYWxpemVUb0NST3JMRihmcm9tLCByZXN1bHQsIGZhbHNlKTsKLSNlbmRpZgotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xpbmVFbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVu
ZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDFjYjgwOTk3ZDY1OGQyZTA1
YWYxNjA2MzA4YmM2OGYwNDJjNjlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwg
MjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIExpbmVFbmRpbmdf
aAotI2RlZmluZSBMaW5lRW5kaW5nX2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIE5vcm1hbGl6
ZSBhbGwgbGluZS1lbmRpbmdzIGluIHRoZSBnaXZlbiBzdHJpbmcgdG8gQ1JMRi4KLUNTdHJpbmcg
bm9ybWFsaXplTGluZUVuZGluZ3NUb0NSTEYoY29uc3QgQ1N0cmluZyYgZnJvbSk7Ci0KLS8vIE5v
cm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIGluIHRoZSBnaXZlbiBzdHJpbmcgdG8gdGhlIG5hdGl2
ZSBsaW5lLWVuZGluZ3MgYW5kIGFwcGVuZCB0aGUgcmVzdWx0IHRvIHRoZSBnaXZlbiBidWZmZXIu
Ci0vLyAoTm9ybWFsaXplIHRvIENSTEYgb24gV2luZG93cyBhbmQgbm9ybWFsaXplIHRvIExGIG9u
IGFsbCBvdGhlciBwbGF0Zm9ybXMuKQotdm9pZCBub3JtYWxpemVMaW5lRW5kaW5nc1RvTmF0aXZl
KGNvbnN0IENTdHJpbmcmIGZyb20sIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTGluZUVuZGluZ19oCg==
</data>
<flag name="review"
          id="340368"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="340692"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320983</attachid>
            <date>2017-09-15 18:31:07 -0700</date>
            <delta_ts>2017-09-15 18:31:07 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-176575-20170915183106.patch</filename>
            <type>text/plain</type>
            <size>32703</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmZjBkOTg1M2RiMWUxZGIzNzEyMDFj
NzQ3NmVhYzAyM2ExZTY0MTAuLjEzMDdkM2MwMDI2ZDUwYzBlOGNkNzljYmM1NDNiNzZmYTMxMmJj
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDktMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIExpbmVFbmRpbmcue2gsY3BwfSBm
cm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byB3dGYvdGV4dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NTc1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBBcyBwYXJ0IG9mIHRoZSBQQUwgZWZmb3J0
LCB3ZSdyZSB0cnlpbmcgdG8gbW92ZSBldmVyeXRoaW5nIG91dCBvZiBXZWJDb3JlL3BsYXRmb3Jt
LCBvbmUtYnktb25lLgorICAgICAgICBUaGVzZSBMaW5lRW5kaW5nIGZpbGVzIGJlbG9uZyBpbiBX
VEYuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvdGV4dC9MaW5lRW5kaW5nLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAuCisgICAgICAgIChXVEY6Om5vcm1hbGl6ZUxpbmVF
bmRpbmdzVG9DUkxGKToKKyAgICAgICAgKiB3dGYvdGV4dC9MaW5lRW5kaW5nLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuaC4KKwogMjAxNy0w
OS0xNSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV1RGOiB1
c2UgRm9yd2FyZC5oIHdoZW4gYXBwcm9wcmlhdGUgaW5zdGVhZCBvZiBWZWN0b3IuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDIxODE0NGVkYjZlYTY1N2U4NmQ5MDRiN2NkZTEyMzg2ZTVmNjlkODYuLjBjZjcwZjQ2
MDNkMjlhMTIzNzcxMjhlYWExZTAxNzg2ZGY4MjUyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNy0wOS0xNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIE1vdmUgTGluZUVuZGluZy57aCxjcHB9IGZyb20gV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0IHRvIHd0Zi90ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY1NzUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2Vu
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2JCdWlsZGVyLmNwcDoKKyAgICAgICAgKiBodG1sL0Zvcm1EYXRh
TGlzdC5jcHA6CisKIDIwMTctMDktMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgQXZvaWQgc3R5bGUgcmVjb21wdXRhdGlvbiB3aGVuIGZvcndhcmRp
bmcgYSBmb2N1cyBldmVudCB0byBhbiB0ZXh0IGZpZWxkJ3MgaW5wdXQgdHlwZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGUzZWQxOGUzOGE0MjEzYzFiYzVj
NDE0MThhYzYwOWU3N2Q0NTU0ZC4uMjQzN2M2OWY4YjE3Y2FhMmY1NDhlNzc1ZDcwYzVjYmRmMDVh
ZDZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQs
NiArMTM0LDcgQEAKIAkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3Rwcmlu
dENvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFERjJDRTY1MUUzOUYxMDYwMDY4ODlEQiAvKiBNZW1vcnlGb290cHJpbnRDb2NvYS5jcHAgKi87
IH07CiAJCUMyQkNGQzQwMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkJDRkMzRTFGNjFEMTMwMDBD
OTIyMkMgLyogTGFuZ3VhZ2UuY3BwICovOyB9OwogCQlDMkJDRkM0MjFGNjFENjE2MDBDOTIyMkMg
LyogTGFuZ3VhZ2VDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMkJDRkM0MTFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi87IH07
CisJCUMyQkNGQzU1MUY2MjFGM0YwMEM5MjIyQyAvKiBMaW5lRW5kaW5nLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQkNGQzUzMUY2MjFGM0YwMEM5
MjIyQyAvKiBMaW5lRW5kaW5nLmNwcCAqLzsgfTsKIAkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMw
IC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLzsgfTsK
IAkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQ0VFMjFGRDFDRUE3
NTUxMDAwQzIzOTYgLyogQmxvY2tPYmpDRXhjZXB0aW9ucy5tbSAqLzsgfTsKIAkJRTE1NTU2RjUx
OEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1NTU2RjMxOEEwQ0MxODAwNkY0
OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwICovOyB9OwpAQCAtNTUzLDYgKzU1NCw4
IEBACiAJCUMyQkNGQzNFMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyQkNGQzNGMUY2MUQxMzAwMEM5MjIyQyAvKiBMYW5ndWFnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYW5ndWFnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMkJDRkM0MTFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZUNGLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJCQ0ZDNTMxRjYyMUYzRjAwQzkyMjJDIC8q
IExpbmVFbmRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlu
ZUVuZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQkNGQzU0MUY2MjFG
M0YwMEM5MjIyQyAvKiBMaW5lRW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExpbmVFbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzRGOEE5MzYx
OUM2NUVCNDAwQjJCMTVEIC8qIFN0b3B3YXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9wd2F0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzhGNTk3
Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21EZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDU0OTdBQTE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhVGltZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04OTMsOCArODk2LDggQEAKIAkJCQkwRjVCRjE2NTFGMjMx
NzgzMDAyOUQ5MUQgLyogTmF0dXJhbExvb3BzLmggKi8sCiAJCQkJMUEzRjZCRTYxNzRBREEyMTAw
QjJFRUE3IC8qIE5ldmVyRGVzdHJveWVkLmggKi8sCiAJCQkJMEYwRDg1QjMxNzIzNENCMTAwMzM4
MjEwIC8qIE5vTG9jay5oICovLAotCQkJCTUyNkFFQzkxMUY2QjRFNUMwMDY5NUY1RCAvKiBOb1Rh
aWxDYWxscy5oICovLAogCQkJCUE4QTQ3MkQwMTUxQTgyNUIwMDQxMjNGRiAvKiBOb25jb3B5YWJs
ZS5oICovLAorCQkJCTUyNkFFQzkxMUY2QjRFNUMwMDY5NUY1RCAvKiBOb1RhaWxDYWxscy5oICov
LAogCQkJCTdDRUFFNUFDMUVBNkUxMEYwMERCNjg5MCAvKiBOb3RGb3VuZC5oICovLAogCQkJCUE4
QTQ3MkQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1iZXJPZkNvcmVzLmNwcCAqLywKIAkJCQlBOEE0
NzJENjE1MUE4MjVCMDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5oICovLApAQCAtMTA5MCw2ICsx
MDkzLDggQEAKIAkJCQkyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5n
Q29udmVyc2lvbi5oICovLAogCQkJCTkzQUM5MUE3MTg5NDJGQzQwMDI0NDkzOSAvKiBMQ2hhci5o
ICovLAogCQkJCTFDMTgxQzgxMUQzMDc5N0MwMEY1RkExNiAvKiBMaW5lQnJlYWtJdGVyYXRvclBv
b2xJQ1UuaCAqLywKKwkJCQlDMkJDRkM1MzFGNjIxRjNGMDBDOTIyMkMgLyogTGluZUVuZGluZy5j
cHAgKi8sCisJCQkJQzJCQ0ZDNTQxRjYyMUYzRjAwQzkyMjJDIC8qIExpbmVFbmRpbmcuaCAqLywK
IAkJCQkxNEU3ODVFNzFERkIzMzAxMDAyMDlCRDEgLyogT3JkaW5hbE51bWJlci5oICovLAogCQkJ
CUE4QTQ3MzIzMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWZmZXIuaCAqLywKIAkJCQlBOEE0
NzMyNDE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCkBAIC0xMzcyLDYg
KzEzNzcsNyBAQAogCQkJCUE4QTQ3M0Q4MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoVGFibGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzJCQ0ZDNDAxRjYxRDEzMDAwQzkyMjJDIC8qIExhbmd1YWdl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyQkNGQzQyMUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5n
dWFnZUNGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyQkNGQzU1MUY2MjFGM0YwMEM5MjIyQyAv
KiBMaW5lRW5kaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTE2NDZBMUI2RkZDOTYwMDQw
MEU3QyAvKiBMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjBGMzJGMURGQ0JEMUIwMDQx
NkQ2QyAvKiBMb2NrZWRQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzUzNEYy
QTFFQzBFMTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBkY2EzOGJiZDc3NGJjMWNlNDBkNjA4ZWQ4MWQ5OTU3NjIw
OGY5NTFlLi4wNmJmMDU5ZTE0ZWE2YzdmNjdhYzY0OTY4MWM0NDhlM2MxNDgyNTE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dApAQCAtMTc4LDYgKzE3OCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIHRl
eHQvQ1N0cmluZy5oCiAgICAgdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKICAgICB0
ZXh0L0xDaGFyLmgKKyAgICB0ZXh0L0xpbmVFbmRpbmcuaAogICAgIHRleHQvTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVLmgKICAgICB0ZXh0L1N0cmluZ0J1ZmZlci5oCiAgICAgdGV4dC9TdHJpbmdD
b21tb24uaApAQCAtMjg3LDYgKzI4OCw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIHRleHQvQXRv
bWljU3RyaW5nVGFibGUuY3BwCiAgICAgdGV4dC9CYXNlNjQuY3BwCiAgICAgdGV4dC9DU3RyaW5n
LmNwcAorICAgIHRleHQvTGluZUVuZGluZy5jcHAKICAgICB0ZXh0L1N0cmluZ0J1aWxkZXIuY3Bw
CiAgICAgdGV4dC9TdHJpbmdCdWlsZGVySlNPTi5jcHAKICAgICB0ZXh0L1N0cmluZ0ltcGwuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVFbmRpbmcuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9MaW5lRW5kaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODc2NmJjZjBhZWNmY2E3
NjQwZGJhYjZlNTI2ZDY3NDQxOTcxODllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9MaW5lRW5kaW5nLmNwcApAQCAtMCwwICsxLDIyNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAwNiwgMjAwOCwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGluZUVuZGluZy5oIgorCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgeworCitjbGFzcyBPdXRwdXRCdWZmZXIgeworcHVibGljOgorICAgIHZpcnR1YWwg
dWludDhfdCogYWxsb2NhdGUoc2l6ZV90KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvcHkoY29u
c3QgQ1N0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIH5PdXRwdXRCdWZmZXIoKSB7IH0KK307CisK
K2NsYXNzIENTdHJpbmdCdWZmZXIgOiBwdWJsaWMgT3V0cHV0QnVmZmVyIHsKK3B1YmxpYzoKKyAg
ICBDU3RyaW5nQnVmZmVyKENTdHJpbmcmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZm
ZXIpCisgICAgeworICAgIH0KKyAgICB2aXJ0dWFsIH5DU3RyaW5nQnVmZmVyKCkgeyB9CisKKyAg
ICB1aW50OF90KiBhbGxvY2F0ZShzaXplX3Qgc2l6ZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGNoYXIqIHB0cjsKKyAgICAgICAgbV9idWZmZXIgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVk
KHNpemUsIHB0cik7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihw
dHIpOworICAgIH0KKworICAgIHZvaWQgY29weShjb25zdCBDU3RyaW5nJiBzb3VyY2UpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBtX2J1ZmZlciA9IHNvdXJjZTsKKyAgICB9CisKKyAgICBjb25z
dCBDU3RyaW5nJiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorCitwcml2YXRl
OgorICAgIENTdHJpbmcgbV9idWZmZXI7Cit9OworCisjaWYgT1MoV0lORE9XUykKK2NsYXNzIFZl
Y3RvckNoYXJBcHBlbmRCdWZmZXIgOiBwdWJsaWMgT3V0cHV0QnVmZmVyIHsKK3B1YmxpYzoKKyAg
ICBWZWN0b3JDaGFyQXBwZW5kQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQorICAgICAg
ICA6IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgflZlY3RvckNo
YXJBcHBlbmRCdWZmZXIoKSB7IH0KKworICAgIHVpbnQ4X3QqIGFsbG9jYXRlKHNpemVfdCBzaXpl
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgc2l6ZV90IG9sZFNpemUgPSBtX2J1ZmZlci5zaXpl
KCk7CisgICAgICAgIG1fYnVmZmVyLmdyb3cob2xkU2l6ZSArIHNpemUpOworICAgICAgICByZXR1
cm4gbV9idWZmZXIuZGF0YSgpICsgb2xkU2l6ZTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHkoY29u
c3QgQ1N0cmluZyYgc291cmNlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9idWZmZXIuYXBw
ZW5kKHNvdXJjZS5kYXRhKCksIHNvdXJjZS5sZW5ndGgoKSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFZlY3Rvcjx1aW50OF90PiYgbV9idWZmZXI7Cit9OworI2VuZGlmCisKK3ZvaWQgaW50ZXJu
YWxOb3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihjb25zdCBDU3RyaW5nJiBmcm9tLCBPdXRwdXRC
dWZmZXImIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWZyb20ubGVuZ3RoKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAvLyBDb21wdXRlIHRoZSBuZXcgbGVuZ3RoLgorICAgIHNpemVfdCBuZXdMZW4gPSAw
OworICAgIGNvbnN0IGNoYXIqIHAgPSBmcm9tLmRhdGEoKTsKKyAgICB3aGlsZSAocCA8IGZyb20u
ZGF0YSgpICsgZnJvbS5sZW5ndGgoKSkgeworICAgICAgICBjaGFyIGMgPSAqcCsrOworICAgICAg
ICBpZiAoYyA9PSAnXHInKSB7CisgICAgICAgICAgICAvLyBTYWZlIHRvIGxvb2sgYWhlYWQgYmVj
YXVzZSBvZiB0cmFpbGluZyAnXDAnLgorICAgICAgICAgICAgaWYgKCpwICE9ICdcbicpIHsKKyAg
ICAgICAgICAgICAgICAvLyBUdXJuIENSIGludG8gQ1JMRi4KKyAgICAgICAgICAgICAgICBuZXdM
ZW4gKz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjID09ICdcbicpIHsK
KyAgICAgICAgICAgIC8vIFR1cm4gTEYgaW50byBDUkxGLgorICAgICAgICAgICAgbmV3TGVuICs9
IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMZWF2ZSBvdGhlciBjaGFyYWN0
ZXJzIGFsb25lLgorICAgICAgICAgICAgbmV3TGVuICs9IDE7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKG5ld0xlbiA8IGZyb20ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChuZXdMZW4gPT0gZnJvbS5sZW5ndGgoKSkgeworICAgICAgICBidWZmZXIuY29weShmcm9tKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHAgPSBmcm9tLmRhdGEoKTsKKyAgICB1aW50
OF90KiBxID0gYnVmZmVyLmFsbG9jYXRlKG5ld0xlbik7CisKKyAgICAvLyBNYWtlIGEgY29weSBv
ZiB0aGUgc3RyaW5nLgorICAgIHdoaWxlIChwIDwgZnJvbS5kYXRhKCkgKyBmcm9tLmxlbmd0aCgp
KSB7CisgICAgICAgIGNoYXIgYyA9ICpwKys7CisgICAgICAgIGlmIChjID09ICdccicpIHsKKyAg
ICAgICAgICAgIC8vIFNhZmUgdG8gbG9vayBhaGVhZCBiZWNhdXNlIG9mIHRyYWlsaW5nICdcMCcu
CisgICAgICAgICAgICBpZiAoKnAgIT0gJ1xuJykgeworICAgICAgICAgICAgICAgIC8vIFR1cm4g
Q1IgaW50byBDUkxGLgorICAgICAgICAgICAgICAgICpxKysgPSAnXHInOworICAgICAgICAgICAg
ICAgICpxKysgPSAnXG4nOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGMgPT0g
J1xuJykgeworICAgICAgICAgICAgLy8gVHVybiBMRiBpbnRvIENSTEYuCisgICAgICAgICAgICAq
cSsrID0gJ1xyJzsKKyAgICAgICAgICAgICpxKysgPSAnXG4nOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVycyBhbG9uZS4KKyAgICAgICAgICAg
ICpxKysgPSBjOworICAgICAgICB9CisgICAgfQorfQorCit9OworCituYW1lc3BhY2UgV1RGIHsK
KworLy8gTm9ybWFsaXplIGFsbCBsaW5lLWVuZGluZ3MgdG8gQ1Igb3IgTEYuCitzdGF0aWMgdm9p
ZCBub3JtYWxpemVUb0NST3JMRihjb25zdCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8dWludDhfdD4m
IHJlc3VsdCwgYm9vbCB0b0NSKQoreworICAgIC8vIENvbXB1dGUgdGhlIG5ldyBsZW5ndGguCisg
ICAgc2l6ZV90IG5ld0xlbiA9IDA7CisgICAgYm9vbCBuZWVkRml4ID0gZmFsc2U7CisgICAgY29u
c3QgY2hhciogcCA9IGZyb20uZGF0YSgpOworICAgIGNoYXIgZnJvbUVuZGluZ0NoYXIgPSB0b0NS
ID8gJ1xuJyA6ICdccic7CisgICAgY2hhciB0b0VuZGluZ0NoYXIgPSB0b0NSID8gJ1xyJyA6ICdc
bic7CisgICAgd2hpbGUgKHAgPCBmcm9tLmRhdGEoKSArIGZyb20ubGVuZ3RoKCkpIHsKKyAgICAg
ICAgY2hhciBjID0gKnArKzsKKyAgICAgICAgaWYgKGMgPT0gJ1xyJyAmJiAqcCA9PSAnXG4nKSB7
CisgICAgICAgICAgICAvLyBUdXJuIENSTEYgaW50byBDUiBvciBMRi4KKyAgICAgICAgICAgIHAr
KzsKKyAgICAgICAgICAgIG5lZWRGaXggPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0g
ZnJvbUVuZGluZ0NoYXIpIHsKKyAgICAgICAgICAgIC8vIFR1cm4gQ1IvTEYgaW50byBMRi9DUi4K
KyAgICAgICAgICAgIG5lZWRGaXggPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG5ld0xlbiAr
PSAxOworICAgIH0KKworICAgIC8vIEdyb3cgdGhlIHJlc3VsdCBidWZmZXIuCisgICAgcCA9IGZy
b20uZGF0YSgpOworICAgIHNpemVfdCBvbGRSZXN1bHRTaXplID0gcmVzdWx0LnNpemUoKTsKKyAg
ICByZXN1bHQuZ3JvdyhvbGRSZXN1bHRTaXplICsgbmV3TGVuKTsKKyAgICB1aW50OF90KiBxID0g
cmVzdWx0LmRhdGEoKSArIG9sZFJlc3VsdFNpemU7CisKKyAgICAvLyBJZiBubyBuZWVkIHRvIGZp
eCB0aGUgc3RyaW5nLCBqdXN0IGNvcHkgdGhlIHN0cmluZyBvdmVyLgorICAgIGlmICghbmVlZEZp
eCkgeworICAgICAgICBtZW1jcHkocSwgcCwgZnJvbS5sZW5ndGgoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgc3RyaW5nLgorICAgIHdoaWxl
IChwIDwgZnJvbS5kYXRhKCkgKyBmcm9tLmxlbmd0aCgpKSB7CisgICAgICAgIGNoYXIgYyA9ICpw
Kys7CisgICAgICAgIGlmIChjID09ICdccicgJiYgKnAgPT0gJ1xuJykgeworICAgICAgICAgICAg
Ly8gVHVybiBDUkxGIG9yIENSIGludG8gQ1Igb3IgTEYuCisgICAgICAgICAgICBwKys7CisgICAg
ICAgICAgICAqcSsrID0gdG9FbmRpbmdDaGFyOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gZnJv
bUVuZGluZ0NoYXIpIHsKKyAgICAgICAgICAgIC8vIFR1cm4gQ1IvTEYgaW50byBMRi9DUi4KKyAg
ICAgICAgICAgICpxKysgPSB0b0VuZGluZ0NoYXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBMZWF2ZSBvdGhlciBjaGFyYWN0ZXJzIGFsb25lLgorICAgICAgICAgICAgKnErKyA9
IGM7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NTdHJpbmcgbm9ybWFsaXplTGluZUVuZGluZ3NU
b0NSTEYoY29uc3QgQ1N0cmluZyYgZnJvbSkKK3sKKyAgICBDU3RyaW5nIHJlc3VsdDsKKyAgICA6
OkNTdHJpbmdCdWZmZXIgYnVmZmVyKHJlc3VsdCk7CisgICAgaW50ZXJuYWxOb3JtYWxpemVMaW5l
RW5kaW5nc1RvQ1JMRihmcm9tLCBidWZmZXIpOworICAgIHJldHVybiBidWZmZXIuYnVmZmVyKCk7
Cit9CisKK3ZvaWQgbm9ybWFsaXplTGluZUVuZGluZ3NUb05hdGl2ZShjb25zdCBDU3RyaW5nJiBm
cm9tLCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIFZl
Y3RvckNoYXJBcHBlbmRCdWZmZXIgYnVmZmVyKHJlc3VsdCk7CisgICAgaW50ZXJuYWxOb3JtYWxp
emVMaW5lRW5kaW5nc1RvQ1JMRihmcm9tLCBidWZmZXIpOworI2Vsc2UKKyAgICBub3JtYWxpemVU
b0NST3JMRihmcm9tLCByZXN1bHQsIGZhbHNlKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUVuZGluZy5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9MaW5lRW5kaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgzOGY1YTI0N2JhNWU4
YTgxNjhkZjAyYjEyYjBhNTU0YmE5ZTljMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvTGluZUVuZGluZy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdz
IGluIHRoZSBnaXZlbiBzdHJpbmcgdG8gQ1JMRi4KK1dURl9FWFBPUlQgQ1N0cmluZyBub3JtYWxp
emVMaW5lRW5kaW5nc1RvQ1JMRihjb25zdCBDU3RyaW5nJiBmcm9tKTsKKworLy8gTm9ybWFsaXpl
IGFsbCBsaW5lLWVuZGluZ3MgaW4gdGhlIGdpdmVuIHN0cmluZyB0byB0aGUgbmF0aXZlIGxpbmUt
ZW5kaW5ncyBhbmQgYXBwZW5kIHRoZSByZXN1bHQgdG8gdGhlIGdpdmVuIGJ1ZmZlci4KKy8vIChO
b3JtYWxpemUgdG8gQ1JMRiBvbiBXaW5kb3dzIGFuZCBub3JtYWxpemUgdG8gTEYgb24gYWxsIG90
aGVyIHBsYXRmb3Jtcy4pCitXVEZfRVhQT1JUIHZvaWQgbm9ybWFsaXplTGluZUVuZGluZ3NUb05h
dGl2ZShjb25zdCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCk7CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6Om5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUkxG
OwordXNpbmcgV1RGOjpub3JtYWxpemVMaW5lRW5kaW5nc1RvTmF0aXZlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA4NmZjZmQ5ZDA1NzZiYTk1Mjk4YzcyMzU1ZWI1OGJhMDRmMmEyZWZhLi5lMWQx
MWY1MDk4MGM5NWE0NGFiMDE3Nzg3NTA3NzU2Y2QyOTBjMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjYxMyw3ICsyNjEzLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZv
cm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L0RhdGVUaW1lRm9ybWF0
LmNwcAotICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKICAgICBwbGF0Zm9ybS90ZXh0
L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9QbGF0
Zm9ybUxvY2FsZS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyM2IwZjBkZWYzMThiYmNlZTdjN2JmOWZmNmU2MDU0MDQwMjc4Y2UyLi5hYWUxNDE4ZDFlMmE0
Y2JhZDk0NmRlOTE4NGY2YjhhZThmNDBkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzQ0LDggKzM3NDQsNiBAQAogCQk4
OTMxREU1QjE0QzQ0QzQ0MDAwREM5RDIgLyogSlNCbG9iQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5MzFERTVBMTRDNDRDNDQwMDBEQzlE
MiAvKiBKU0Jsb2JDdXN0b20uY3BwICovOyB9OwogCQk4OTg3ODVGNDEyMkUxRUFDMDAzQUFCREEg
LyogSlNGaWxlUmVhZGVyU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4OTg3ODVGMjEyMkUxRUFDMDAzQUFCREEgLyogSlNGaWxlUmVhZGVyU3lu
Yy5jcHAgKi87IH07CiAJCTg5ODc4NUY1MTIyRTFFQUMwMDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJT
eW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3
ODVGMzEyMkUxRUFDMDAzQUFCREEgLyogSlNGaWxlUmVhZGVyU3luYy5oICovOyB9OwotCQk4OUI1
RUFBMTExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OUI1RUE5RjExRTgwMDNEMDBGMjM2N0UgLyog
TGluZUVuZGluZy5jcHAgKi87IH07Ci0JCTg5QjVFQUEyMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5l
RW5kaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
OUI1RUFBMDExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg5RjYwQjExMTU3RjY4NkUwMDc1RTE1
NyAvKiBET01XaW5kb3dRdW90YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODlGNjBCMEExNTdGNjg2RDAwNzVFMTU3IC8qIERPTVdpbmRvd1F1b3RhLmgg
Ki87IH07CiAJCTg5RjYwQ0RBMTU4MDlENzYwMDc1RTE1NyAvKiBKU1N0b3JhZ2VJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OUY2MENEMjE1ODA5
RDc2MDA3NUUxNTcgLyogSlNTdG9yYWdlSW5mby5oICovOyB9OwogCQk4QTEyRTM1RDExRkEzMzI4
MDAyNTgzNkEgLyogTG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOEExMkUzNUMxMUZBMzMyODAwMjU4MzZBIC8qIExvYWRUaW1pbmcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIxMDcs
OCArMTIxMDUsNiBAQAogCQk4OTMxREU1QTE0QzQ0QzQ0MDAwREM5RDIgLyogSlNCbG9iQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmxvYkN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4NUYyMTIyRTFFQUMwMDNBQUJE
QSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRmlsZVJlYWRlclN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4OTg3ODVGMzEyMkUxRUFDMDAzQUFCREEgLyogSlNGaWxlUmVhZGVyU3luYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVSZWFkZXJTeW5jLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTg5QjVFQTlGMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5n
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmVFbmRpbmcuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OUI1RUFBMDExRTgwMDNEMDBGMjM2N0Ug
LyogTGluZUVuZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lRW5k
aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5RjYwQjBBMTU3RjY4NkQwMDc1
RTE1NyAvKiBET01XaW5kb3dRdW90YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01XaW5kb3dRdW90YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OUY2MENE
MjE1ODA5RDc2MDA3NUUxNTcgLyogSlNTdG9yYWdlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1N0b3JhZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg5RkQ1OEQ4MTZFRURCRDQwMEUxODNGMCAvKiBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzk2MCw4ICsyMzk1Niw2IEBACiAJCQkJ
NDUzRUI2MzUxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmggKi8sCiAJCQkJQ0VD
Q0ZDM0ExNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICovLAogCQkJ
CTM3NUNEMjMxMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oICovLAotCQkJCTg5QjVF
QTlGMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLywKLQkJCQk4OUI1RUFBMDEx
RTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5oICovLAogCQkJCTc2MzNBNzI0MTNEOEIzM0Ew
MDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCAqLywKIAkJCQk3NjMzQTcyNTEzRDhC
MzNBMDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgKi8sCiAJCQkJ
RjU0NEY3ODYxNUNGQjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmNwcCAqLywKQEAgLTI5
MjEzLDcgKzI5MjA3LDYgQEAKIAkJCQk4NDczMEQ5MTEyNDhGMEIzMDBEM0E5QzkgLyogTGlnaHRT
b3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTY1MEQwMEJGMjIwMDcxQjc4MiAvKiBM
aW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCMzFDOTFFMTBB
RTFCOEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODlC
NUVBQTIxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZGRUZBQjJBMTgzODBEQTAwMDUxNDUzNCAvKiBMaW5lTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZGREJDMDQ3MTgzRDI3QjcwMDQwNzEwOSAvKiBMaW5lV2lkdGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3QUQyRjg4MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zMjExNCw3ICszMjEwNyw2IEBACiAJCQkJRTEyREU3MTcxRTRCNzQ5QzAw
RjlBQ0NGIC8qIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTRDMjVENzFFOUVGRURFMDBCRUUxNDEgLyogSDI2NFZpZGVvVG9vbEJveEVuY29kZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RCRjEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5w
dXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3M0JEQzA1MUY2ODQzNjEwMEVFMzRFRCAv
KiBUcmFja1ByaXZhdGVCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNUJFMTlCMUQ1NEY2
QzEwMEREN0M2OCAvKiBISURHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNUJFMTlE
MUQ1NEY2QzEwMEREN0M2OCAvKiBISURHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM5NEQxNTMwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMzI5OCw3ICszMzI5MCw2IEBACiAJCQkJNDE3NjEyQjExRTNBOTk0MDAwQzNEODFE
IC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUExQjAwRTFFNTI2NTc5MDA3RjM3NjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkZCNjk4Q0MxODMzRUUwRDAwMTU4QTMxIC8qIExpbmVCcmVha2VyLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTg5QjVFQUExMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5k
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZGQjY5OENGMTgzNDAyQkIwMDE1OEEzMSAvKiBM
aW5lSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkRCQzA0ODE4M0QyN0I3MDA0MDcxMDkg
LyogTGluZVdpZHRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QUQyRjg3MEVDODlEMDcwMDhB
QjAwMiAvKiBMaW5rSGFzaC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM0MzczLDYgKzM0MzY0LDcg
QEAKIAkJCQkwNzAzMzREOTE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3MDMzNEQzMTQ1OUZGQUQwMDhEOEQ0NSAvKiBUcmFja0V2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RC
YXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3M0JEQzA1MUY2ODQzNjEwMEVFMzRFRCAvKiBU
cmFja1ByaXZhdGVCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZGQUMzMEZGMTg0RkIxNDUw
MDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEN0VG
RUMxQkRFRkE1MTAwRTkzRTEwIC8qIFRyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5RTkxMUMzMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYkJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iQnVpbGRlci5jcHAK
aW5kZXggZDY2ZGM5ZmYwOGZhNGFjMzA3MTg3ZjY5NGZkYTIxMGI0NWE5MTFjYy4uZTdhYzgzZjlj
OThlMDE3NDFlNDRlYzM3YzJkMTEwNmY4Y2JiNzVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9C
bG9iQnVpbGRlci5jcHAKQEAgLTMyLDExICszMiwxMSBAQAogI2luY2x1ZGUgIkJsb2JCdWlsZGVy
LmgiCiAKICNpbmNsdWRlICJCbG9iLmgiCi0jaW5jbHVkZSAiTGluZUVuZGluZy5oIgogI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNp
bmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9MaW5lRW5kaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cAppbmRleCA2NzJkMGE5YjA1YjgzMjc0ZjcyNTJmNDdjY2I1ZGM5ZjU1MzIwNjkxLi5jNTc1ZmRh
NDUyYWQ4YzBiMWQyMGY0MzE2Y2JhYWQwYzk3M2RlOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVk
ZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGb3JtRGF0YUJ1
aWxkZXIuaCIKLSNpbmNsdWRlICJMaW5lRW5kaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnku
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9MaW5lRW5kaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMGVhNGRmNjFmYmVmYjNiNGNkNDcyZTBkYTZjMjY3
NGIyOWNhZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIyNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJMaW5lRW5kaW5nLmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIE91dHB1dEJ1
ZmZlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB1aW50OF90KiBhbGxvY2F0ZShzaXplX3Qgc2l6
ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IENTdHJpbmcmKSA9IDA7Ci0gICAg
dmlydHVhbCB+T3V0cHV0QnVmZmVyKCkgeyB9Ci19OwotCi1jbGFzcyBDU3RyaW5nQnVmZmVyIDog
cHVibGljIE91dHB1dEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgQ1N0cmluZ0J1ZmZlcihDU3RyaW5n
JiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgIHsKLSAgICB9Ci0gICAg
dmlydHVhbCB+Q1N0cmluZ0J1ZmZlcigpIHsgfQotCi0gICAgdWludDhfdCogYWxsb2NhdGUoc2l6
ZV90IHNpemUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBjaGFyKiBwdHI7Ci0gICAgICAgIG1f
YnVmZmVyID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChzaXplLCBwdHIpOwotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocHRyKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGNvcHkoY29uc3QgQ1N0cmluZyYgc291cmNlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgbV9i
dWZmZXIgPSBzb3VyY2U7Ci0gICAgfQotCi0gICAgY29uc3QgQ1N0cmluZyYgYnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXI7IH0KLQotcHJpdmF0ZToKLSAgICBDU3RyaW5nIG1fYnVmZmVy
OwotfTsKLQotI2lmIE9TKFdJTkRPV1MpCi1jbGFzcyBWZWN0b3JDaGFyQXBwZW5kQnVmZmVyIDog
cHVibGljIE91dHB1dEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgVmVjdG9yQ2hhckFwcGVuZEJ1ZmZl
cihWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIpCi0g
ICAgewotICAgIH0KLSAgICB2aXJ0dWFsIH5WZWN0b3JDaGFyQXBwZW5kQnVmZmVyKCkgeyB9Ci0K
LSAgICB1aW50OF90KiBhbGxvY2F0ZShzaXplX3Qgc2l6ZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIHNpemVfdCBvbGRTaXplID0gbV9idWZmZXIuc2l6ZSgpOwotICAgICAgICBtX2J1ZmZlci5n
cm93KG9sZFNpemUgKyBzaXplKTsKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKSArIG9s
ZFNpemU7Ci0gICAgfQotCi0gICAgdm9pZCBjb3B5KGNvbnN0IENTdHJpbmcmIHNvdXJjZSkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLmFwcGVuZChzb3VyY2UuZGF0YSgpLCBzb3Vy
Y2UubGVuZ3RoKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8dWludDhfdD4mIG1f
YnVmZmVyOwotfTsKLSNlbmRpZgotCi12b2lkIGludGVybmFsTm9ybWFsaXplTGluZUVuZGluZ3NU
b0NSTEYoY29uc3QgQ1N0cmluZyYgZnJvbSwgT3V0cHV0QnVmZmVyJiBidWZmZXIpCi17Ci0gICAg
aWYgKCFmcm9tLmxlbmd0aCgpKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gQ29tcHV0ZSB0aGUg
bmV3IGxlbmd0aC4KLSAgICBzaXplX3QgbmV3TGVuID0gMDsKLSAgICBjb25zdCBjaGFyKiBwID0g
ZnJvbS5kYXRhKCk7Ci0gICAgd2hpbGUgKHAgPCBmcm9tLmRhdGEoKSArIGZyb20ubGVuZ3RoKCkp
IHsKLSAgICAgICAgY2hhciBjID0gKnArKzsKLSAgICAgICAgaWYgKGMgPT0gJ1xyJykgewotICAg
ICAgICAgICAgLy8gU2FmZSB0byBsb29rIGFoZWFkIGJlY2F1c2Ugb2YgdHJhaWxpbmcgJ1wwJy4K
LSAgICAgICAgICAgIGlmICgqcCAhPSAnXG4nKSB7Ci0gICAgICAgICAgICAgICAgLy8gVHVybiBD
UiBpbnRvIENSTEYuCi0gICAgICAgICAgICAgICAgbmV3TGVuICs9IDI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAvLyBUdXJuIExG
IGludG8gQ1JMRi4KLSAgICAgICAgICAgIG5ld0xlbiArPSAyOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVycyBhbG9uZS4KLSAgICAgICAgICAg
IG5ld0xlbiArPSAxOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChuZXdMZW4gPCBmcm9tLmxl
bmd0aCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobmV3TGVuID09IGZyb20ubGVuZ3Ro
KCkpIHsKLSAgICAgICAgYnVmZmVyLmNvcHkoZnJvbSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBwID0gZnJvbS5kYXRhKCk7Ci0gICAgdWludDhfdCogcSA9IGJ1ZmZlci5hbGxvY2F0
ZShuZXdMZW4pOwotCi0gICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIHN0cmluZy4KLSAgICB3aGls
ZSAocCA8IGZyb20uZGF0YSgpICsgZnJvbS5sZW5ndGgoKSkgewotICAgICAgICBjaGFyIGMgPSAq
cCsrOwotICAgICAgICBpZiAoYyA9PSAnXHInKSB7Ci0gICAgICAgICAgICAvLyBTYWZlIHRvIGxv
b2sgYWhlYWQgYmVjYXVzZSBvZiB0cmFpbGluZyAnXDAnLgotICAgICAgICAgICAgaWYgKCpwICE9
ICdcbicpIHsKLSAgICAgICAgICAgICAgICAvLyBUdXJuIENSIGludG8gQ1JMRi4KLSAgICAgICAg
ICAgICAgICAqcSsrID0gJ1xyJzsKLSAgICAgICAgICAgICAgICAqcSsrID0gJ1xuJzsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjID09ICdcbicpIHsKLSAgICAgICAgICAgIC8v
IFR1cm4gTEYgaW50byBDUkxGLgotICAgICAgICAgICAgKnErKyA9ICdccic7Ci0gICAgICAgICAg
ICAqcSsrID0gJ1xuJzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIExlYXZlIG90
aGVyIGNoYXJhY3RlcnMgYWxvbmUuCi0gICAgICAgICAgICAqcSsrID0gYzsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotfTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBOb3JtYWxpemUgYWxs
IGxpbmUtZW5kaW5ncyB0byBDUiBvciBMRi4KLXN0YXRpYyB2b2lkIG5vcm1hbGl6ZVRvQ1JPckxG
KGNvbnN0IENTdHJpbmcmIGZyb20sIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0LCBib29sIHRvQ1Ip
Ci17Ci0gICAgLy8gQ29tcHV0ZSB0aGUgbmV3IGxlbmd0aC4KLSAgICBzaXplX3QgbmV3TGVuID0g
MDsKLSAgICBib29sIG5lZWRGaXggPSBmYWxzZTsKLSAgICBjb25zdCBjaGFyKiBwID0gZnJvbS5k
YXRhKCk7Ci0gICAgY2hhciBmcm9tRW5kaW5nQ2hhciA9IHRvQ1IgPyAnXG4nIDogJ1xyJzsKLSAg
ICBjaGFyIHRvRW5kaW5nQ2hhciA9IHRvQ1IgPyAnXHInIDogJ1xuJzsKLSAgICB3aGlsZSAocCA8
IGZyb20uZGF0YSgpICsgZnJvbS5sZW5ndGgoKSkgewotICAgICAgICBjaGFyIGMgPSAqcCsrOwot
ICAgICAgICBpZiAoYyA9PSAnXHInICYmICpwID09ICdcbicpIHsKLSAgICAgICAgICAgIC8vIFR1
cm4gQ1JMRiBpbnRvIENSIG9yIExGLgotICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgbmVl
ZEZpeCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSBmcm9tRW5kaW5nQ2hhcikgewot
ICAgICAgICAgICAgLy8gVHVybiBDUi9MRiBpbnRvIExGL0NSLgotICAgICAgICAgICAgbmVlZEZp
eCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbmV3TGVuICs9IDE7Ci0gICAgfQotCi0gICAg
Ly8gR3JvdyB0aGUgcmVzdWx0IGJ1ZmZlci4KLSAgICBwID0gZnJvbS5kYXRhKCk7Ci0gICAgc2l6
ZV90IG9sZFJlc3VsdFNpemUgPSByZXN1bHQuc2l6ZSgpOwotICAgIHJlc3VsdC5ncm93KG9sZFJl
c3VsdFNpemUgKyBuZXdMZW4pOwotICAgIHVpbnQ4X3QqIHEgPSByZXN1bHQuZGF0YSgpICsgb2xk
UmVzdWx0U2l6ZTsKLQotICAgIC8vIElmIG5vIG5lZWQgdG8gZml4IHRoZSBzdHJpbmcsIGp1c3Qg
Y29weSB0aGUgc3RyaW5nIG92ZXIuCi0gICAgaWYgKCFuZWVkRml4KSB7Ci0gICAgICAgIG1lbWNw
eShxLCBwLCBmcm9tLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IE1ha2UgYSBjb3B5IG9mIHRoZSBzdHJpbmcuCi0gICAgd2hpbGUgKHAgPCBmcm9tLmRhdGEoKSAr
IGZyb20ubGVuZ3RoKCkpIHsKLSAgICAgICAgY2hhciBjID0gKnArKzsKLSAgICAgICAgaWYgKGMg
PT0gJ1xyJyAmJiAqcCA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAvLyBUdXJuIENSTEYgb3IgQ1Ig
aW50byBDUiBvciBMRi4KLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgICAgICpxKysgPSB0b0Vu
ZGluZ0NoYXI7Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSBmcm9tRW5kaW5nQ2hhcikgewotICAg
ICAgICAgICAgLy8gVHVybiBDUi9MRiBpbnRvIExGL0NSLgotICAgICAgICAgICAgKnErKyA9IHRv
RW5kaW5nQ2hhcjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIExlYXZlIG90aGVy
IGNoYXJhY3RlcnMgYWxvbmUuCi0gICAgICAgICAgICAqcSsrID0gYzsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotQ1N0cmluZyBub3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihjb25zdCBDU3RyaW5n
JiBmcm9tKQotewotICAgIENTdHJpbmcgcmVzdWx0OwotICAgIENTdHJpbmdCdWZmZXIgYnVmZmVy
KHJlc3VsdCk7Ci0gICAgaW50ZXJuYWxOb3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihmcm9tLCBi
dWZmZXIpOwotICAgIHJldHVybiBidWZmZXIuYnVmZmVyKCk7Ci19Ci0KLXZvaWQgbm9ybWFsaXpl
TGluZUVuZGluZ3NUb05hdGl2ZShjb25zdCBDU3RyaW5nJiBmcm9tLCBWZWN0b3I8dWludDhfdD4m
IHJlc3VsdCkKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIFZlY3RvckNoYXJBcHBlbmRCdWZmZXIg
YnVmZmVyKHJlc3VsdCk7Ci0gICAgaW50ZXJuYWxOb3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihm
cm9tLCBidWZmZXIpOwotI2Vsc2UKLSAgICBub3JtYWxpemVUb0NST3JMRihmcm9tLCByZXN1bHQs
IGZhbHNlKTsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlYTQ0MzYyODUxOGJhMzlkOTU3YzFkZDBiZTZlYzRjMmI0NGUwYzhkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTGluZUVuZGluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIExpbmVFbmRpbmdfaAotI2RlZmluZSBMaW5lRW5kaW5nX2gKLQotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gTm9ybWFsaXpl
IGFsbCBsaW5lLWVuZGluZ3MgaW4gdGhlIGdpdmVuIHN0cmluZyB0byBDUkxGLgotQ1N0cmluZyBu
b3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihjb25zdCBDU3RyaW5nJiBmcm9tKTsKLQotLy8gTm9y
bWFsaXplIGFsbCBsaW5lLWVuZGluZ3MgaW4gdGhlIGdpdmVuIHN0cmluZyB0byB0aGUgbmF0aXZl
IGxpbmUtZW5kaW5ncyBhbmQgYXBwZW5kIHRoZSByZXN1bHQgdG8gdGhlIGdpdmVuIGJ1ZmZlci4K
LS8vIChOb3JtYWxpemUgdG8gQ1JMRiBvbiBXaW5kb3dzIGFuZCBub3JtYWxpemUgdG8gTEYgb24g
YWxsIG90aGVyIHBsYXRmb3Jtcy4pCi12b2lkIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9OYXRpdmUo
Y29uc3QgQ1N0cmluZyYgZnJvbSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpOwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBMaW5lRW5kaW5nX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>