<?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>130792</bug_id>
          
          <creation_ts>2014-03-26 12:36:44 -0700</creation_ts>
          <short_desc>Reasoning about DWARF register numbers should be moved out of FTL::Location</short_desc>
          <delta_ts>2014-03-26 13:51:25 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>130791</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994679</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-26 12:36:44 -0700</bug_when>
    <thetext>So that it could be reused by the code I will eventually add for parsing the LiveOuts section of StackMaps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994682</commentid>
    <comment_count>1</comment_count>
      <attachid>227876</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-26 12:39:05 -0700</bug_when>
    <thetext>Created attachment 227876
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994684</commentid>
    <comment_count>2</comment_count>
      <attachid>227877</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-26 12:40:19 -0700</bug_when>
    <thetext>Created attachment 227877
the patch

Cleaned up a bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994685</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-26 12:43:03 -0700</bug_when>
    <thetext>Attachment 227877 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLDWARFRegister.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/ftl/FTLDWARFRegister.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994687</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-26 13:14:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 227877 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/ftl/FTLDWARFRegister.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
&gt; ERROR: Source/JavaScriptCore/ftl/FTLDWARFRegister.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; Total errors found: 2 in 7 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994697</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-26 13:51:25 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/166313</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227876</attachid>
            <date>2014-03-26 12:39:05 -0700</date>
            <delta_ts>2014-03-26 12:40:19 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17774</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDE0LTAzLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVhc29uaW5nIGFib3V0IERXQVJGIHJlZ2lzdGVyIG51bWJlcnMgc2hvdWxkIGJlIG1vdmVkIG91
dCBvZiBGVEw6OkxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIE1vdmluZyB0aGlzIGNvZGUgbWFrZXMgaXQgcG9zc2libGUgZm9y
IHRoaW5ncyBvdGhlciB0aGFuIEZUTDo6TG9jYXRpb24gdG8gcmVhc29uIGFib3V0CisgICAgICAg
IERXQVJGIHJlZ2lzdGVyIGVuY29kaW5nLiBUaGlzIHJlZmFjdG9yaW5nIGFsc28gYXBwZWFycyB0
byByZWR1Y2Ugc29tZSBjb2RlIGR1cGxpY2F0aW9uCisgICAgICAgIGFuZCBtYWtlcyBGVExMb2Nh
dGlvbi5jcHAgY2xlYW5lci4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcyk6CisgICAgICAgICogZnRsL0ZU
TERXQVJGUmVnaXN0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpEV0FSRlJlZ2lz
dGVyOjpyZWcpOgorICAgICAgICAoSlNDOjpGVEw6OkRXQVJGUmVnaXN0ZXI6OmR1bXApOgorICAg
ICAgICAqIGZ0bC9GVExEV0FSRlJlZ2lzdGVyLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpGVEw6
OkRXQVJGUmVnaXN0ZXI6OkRXQVJGUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRXQVJG
UmVnaXN0ZXI6OmR3YXJmUmVnTnVtKToKKyAgICAgICAgKiBmdGwvRlRMTG9jYXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpkdW1wKToKKyAgICAgICAgKEpTQzo6RlRMOjpM
b2NhdGlvbjo6aXNHUFIpOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpncHIpOgorICAg
ICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjppc0ZQUik6CisgICAgICAgIChKU0M6OkZUTDo6TG9j
YXRpb246OmZwcik6CisgICAgICAgICogZnRsL0ZUTExvY2F0aW9uLmg6CisgICAgICAgIChKU0M6
OkZUTDo6TG9jYXRpb246Omhhc0R3YXJmUmVnKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlv
bjo6ZHdhcmZSZWcpOgorICAgICAgICAqIGZ0bC9GVExTdGFja01hcHMuaDoKKwogMjAxNC0wMy0y
NiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxNjYyNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzgwLDYgKzM4MCw4IEBACiAJ
CTBGOTc0OTcxMTY4N0FERTQwMEE0RkY2QSAvKiBKU0NlbGxJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk3NDk2RjE2ODdBREUyMDBBNEZG
NkEgLyogSlNDZWxsSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGOTgyMDYwMTZCRkUzODEwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRh
cmdldHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY5ODIwNUQxNkJGRTM3RjAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgKi87IH07
CiAJCTBGOTgyMDYxMTZCRkUzODMwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTgyMDVFMTZCRkUz
N0YwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjlDNUU1RTE4RTM1RjVFMDBENDMxQzMgLyog
RlRMRFdBUkZSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjlDNUU1QzE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5j
cHAgKi87IH07CisJCTBGOUM1RTVGMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlDNUU1
RDE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOUQzMzcwMTY1REJCOTAwMDVBRDM4
NyAvKiBEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5RDMzNkUxNjVEQkI4RDAwNUFEMzg3IC8qIERpc2Fzc2VtYmxlci5jcHAg
Ki87IH07CiAJCTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTQxN0ZG
QzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgKi87IH07CiAJCTBGOUQzMzk3MTdGRkM0
RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVk
QXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTkwMyw2ICsxOTA1LDggQEAKIAkJMEY5NzQ5NkYxNjg3QURFMjAwQTRGRjZBIC8qIEpTQ2VsbElu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDZWxsSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk4MjA1RDE2QkZFMzdGMDAyNDBEMDIg
LyogUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFByZWNpc2VKdW1wVGFyZ2V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGOTgyMDVFMTZCRkUzN0YwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlY2lzZUp1bXBUYXJnZXRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUM1RTVDMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExE
V0FSRlJlZ2lzdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZU
TERXQVJGUmVnaXN0ZXIuY3BwOyBwYXRoID0gZnRsL0ZUTERXQVJGUmVnaXN0ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlDNUU1RDE4RTM1RjVFMDBENDMxQzMgLyogRlRM
RFdBUkZSZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExEV0FS
RlJlZ2lzdGVyLmg7IHBhdGggPSBmdGwvRlRMRFdBUkZSZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjlEMzM2RTE2NURCQjhEMDA1QUQzODcgLyogRGlzYXNzZW1ibGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpc2Fzc2VtYmxlci5j
cHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5RDMzOTQxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGbHVzaGVkQXQuY3Bw
OyBwYXRoID0gZGZnL0RGR0ZsdXNoZWRBdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGOUQzMzk1MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRmx1c2hlZEF0Lmg7IHBhdGggPSBkZmcvREZHRmx1
c2hlZEF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjc1LDYgKzMyNzksOCBA
QAogCQkJCTBGRTk1Rjc4MThCNTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlvbi5oICovLAog
CQkJCTJBQzkyMkI5MThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uY3Bw
ICovLAogCQkJCTJBQzkyMkJBMThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUlu
Zm8uaCAqLywKKwkJCQkwRjlDNUU1QzE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rl
ci5jcHAgKi8sCisJCQkJMEY5QzVFNUQxOEUzNUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0
ZXIuaCAqLywKIAkJCQkwRjIzNUJCRDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50
LmNwcCAqLywKIAkJCQkwRjIzNUJCRTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50
LmggKi8sCiAJCQkJMEYyMzVCQkYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZv
ck9wZXJhbmQuY3BwICovLApAQCAtNTcxMCw2ICs1NzE2LDcgQEAKIAkJCQkwRjk2M0IzODEzRkM2
RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0
ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY5MTgxQzcxODQxNUNBNTAwNTdCNjY5IC8qIFZhcmlhYmxlV2F0Y2hwb2ludFNldC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY5QzVFNUYxOEUzNUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDI2QTQ5MTQ2MENCQjcwMDEzMUY4RiAvKiBWaXJ0
dWFsUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDIwMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjQyLDYgKzYyNDksNyBAQAogCQkJ
CTBGOEY5NDNDMTY2NzYzMTMwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBDb2RlVHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDMTEwN0VDMzc2MDA0MjdBNDggLyogQ29tbW9u
SWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5QzVFNUUxOEUzNUY1RTAwRDQz
MUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwOUYyRjIx
N0EwQUMyQTAwNTEyRTk4IC8qIENvbW1vblNsb3dQYXRocy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk2NTUzQTMzMTE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0U1QTNBNzE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGls
YXRpb25SZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHJldmlzaW9uIDE2NjI3NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw3ICszMDAs
OCBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlci0+dmFsdWUuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgICAgICAgICBTdGFja01hcHM6OlJlY29yZCYgcmVjb3JkID0gaXRlci0+dmFsdWVbaV07
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogTExWTSBzaG91bGQgdGVs
bCB1cyB3aGljaCByZWdpc3RlcnMgYXJlIGxpdmUuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFVzZSB0aGUgbGl2ZW5lc3MgaW5mb3JtYXRpb24gdGhhdCBMTFZNIGdpdmVzIHVzLgorICAgICAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3
OTEKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gUmVnaXN0ZXJT
ZXQ6OmFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdQ
UlJlZyByZXN1bHQgPSByZWNvcmQubG9jYXRpb25zWzBdLmRpcmVjdEdQUigpOwpAQCAtMzM4LDcg
KzMzOSw4IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVyLT52YWx1ZS5zaXplKCk7ICsraSkg
ewogICAgICAgICAgICAgICAgIFN0YWNrTWFwczo6UmVjb3JkJiByZWNvcmQgPSBpdGVyLT52YWx1
ZVtpXTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogTExWTSBz
aG91bGQgdGVsbCB1cyB3aGljaCByZWdpc3RlcnMgYXJlIGxpdmUuCisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFVzZSB0aGUgbGl2ZW5lc3MgaW5mb3JtYXRpb24gdGhhdCBMTFZNIGdpdmVzIHVz
LgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzA3OTEKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0g
UmVnaXN0ZXJTZXQ6OmFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIEdQUlJlZyBiYXNlID0gcmVjb3JkLmxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRFdBUkZSZWdpc3Rlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExEV0FSRlJlZ2lzdGVyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRFdBUkZSZWdpc3Rl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRlRMRHdhcmZSZWdpc3Rlci5oIgorCisjaWYgRU5BQkxFKEZUTF9KSVQpCisKKyNpbmNsdWRl
ICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiRlBSSW5mby5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CisKK1JlZyBEV0FSRlJlZ2lzdGVyOjpyZWcoKSBjb25zdAoreworI2lmIENQ
VShYODZfNjQpCisgICAgaWYgKG1fZHdhcmZSZWdOdW0gPj0gMCAmJiBtX2R3YXJmUmVnTnVtIDwg
MTYpIHsKKyAgICAgICAgc3dpdGNoIChkd2FyZlJlZ051bSgpKSB7CisgICAgICAgIGNhc2UgMDoK
KyAgICAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVheDsKKyAgICAgICAgY2FzZSAxOgor
ICAgICAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWR4OworICAgICAgICBjYXNlIDI6Cisg
ICAgICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplY3g7CisgICAgICAgIGNhc2UgMzoKKyAg
ICAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVieDsKKyAgICAgICAgY2FzZSA0OgorICAg
ICAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZXNpOworICAgICAgICBjYXNlIDU6CisgICAg
ICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplZGk7CisgICAgICAgIGNhc2UgNjoKKyAgICAg
ICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVicDsKKyAgICAgICAgY2FzZSA3OgorICAgICAg
ICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZXNwOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9kd2FyZlJlZ051bSA8IDE2KTsKKyAgICAgICAgICAgIC8v
IFJlZ2lzdGVycyByOC4ucjE1IGFyZSBudW1iZXJlZCBzZW5zaWJseS4KKyAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fZHdhcmZSZWdOdW0pOworICAgICAgICB9CisgICAg
fQorICAgIGlmIChtX2R3YXJmUmVnTnVtID49IDE3ICYmIG1fZHdhcmZSZWdOdW0gPD0gMzIpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxGUFJSZWc+KG1fZHdhcmZSZWdOdW0gLSAxNyk7Cisj
ZWxpZiBDUFUoQVJNNjQpCisgICAgaWYgKG1fZHdhcmZSZWdOdW0gPj0gMCAmJiBtX2R3YXJmUmVn
TnVtIDw9IDMxKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihtX2R3YXJmUmVn
TnVtKTsKKyAgICBpZiAobV9kd2FyZlJlZ051bSA+PSA2NCAmJiBtX2R3YXJmUmVnTnVtIDw9IDk1
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RlBSUmVnPihtX2R3YXJmUmVnTnVtIC0gNjQp
OworI2VuZGlmCisgICAgcmV0dXJuIFJlZygpOworfQorCit2b2lkIERXQVJGUmVnaXN0ZXI6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBSZWcgcmVnID0gdGhpcy0+cmVnKCk7
CisgICAgaWYgKCEhcmVnKQorICAgICAgICBvdXQucHJpbnQocmVnKTsKKyAgICBlbHNlCisgICAg
ICAgIG91dC5wcmludCgiPHVua25vd246IiwgbV9kd2FyZlJlZ051bSwgIj4iKTsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAorCisjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRFdBUkZSZWdpc3Rlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRFdBUkZSZWdpc3Rlci5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExEV0FSRlJlZ2lzdGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZUTERXQVJGUmVnaXN0ZXJfaAorI2RlZmlu
ZSBGVExEV0FSRlJlZ2lzdGVyX2gKKworI2lmIEVOQUJMRShGVExfSklUKQorCisjaW5jbHVkZSAi
UmVnLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKKworY2xhc3MgRFdBUkZSZWdpc3RlciB7CitwdWJsaWM6CisgICAgRFdB
UkZSZWdpc3RlcigpCisgICAgICAgIDogbV9kd2FyZlJlZ051bSgtMSkKKyAgICB7CisgICAgfQor
ICAgIAorICAgIGV4cGxpY2l0IERXQVJGUmVnaXN0ZXIoaW50MTZfdCBkd2FyZlJlZ051bSkKKyAg
ICAgICAgOiBtX2R3YXJmUmVnTnVtKGR3YXJmUmVnTnVtKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgaW50MTZfdCBkd2FyZlJlZ051bSgpIGNvbnN0IHsgcmV0dXJuIG1fZHdhcmZSZWdOdW07IH0K
KyAgICAKKyAgICBSZWcgcmVnKCkgY29uc3Q7IC8vIFRoaXMgbWF5IHJldHVybiBSZWcoKSBpZiBp
dCBjYW4ndCBwYXJzZSB0aGUgRHdhcmYgcmVnaXN0ZXIgbnVtYmVyLgorICAgIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBpbnQxNl90IG1f
ZHdhcmZSZWdOdW07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCisKKyNlbmRpZiAv
LyBFTkFCTEUoRlRMX0pJVCkKKworI2VuZGlmIC8vIEZUTERXQVJGUmVnaXN0ZXJfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvY2F0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvY2F0aW9uLmNwcAkocmV2aXNpb24gMTY2
Mjc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDggKzY0LDggQEAgTG9jYXRpb24gTG9jYXRpb246OmZvclN0YWNrbWFw
cyhjb25zdCBTdAogdm9pZCBMb2NhdGlvbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewogICAgIG91dC5wcmludCgiKCIsIGtpbmQoKSk7Ci0gICAgaWYgKGhhc0R3YXJmUmVnTnVtKCkp
Ci0gICAgICAgIG91dC5wcmludCgiLCByZWciLCBkd2FyZlJlZ051bSgpKTsKKyAgICBpZiAoaGFz
RHdhcmZSZWcoKSkKKyAgICAgICAgb3V0LnByaW50KCIsICIsIGR3YXJmUmVnKCkpOwogICAgIGlm
IChoYXNPZmZzZXQoKSkKICAgICAgICAgb3V0LnByaW50KCIsICIsIG9mZnNldCgpKTsKICAgICBp
ZiAoaGFzQWRkZW5kKCkpCkBAIC04MCw4MSArODAsMjUgQEAgYm9vbCBMb2NhdGlvbjo6aW52b2x2
ZXNHUFIoKSBjb25zdAogICAgIHJldHVybiBpc0dQUigpIHx8IGtpbmQoKSA9PSBJbmRpcmVjdDsK
IH0KIAotI2lmIENQVShYODZfNjQpIC8vIENQVSBjYXNlcyBmb3IgTG9jYXRpb24gbWV0aG9kcwot
Ly8gVGhpcyBkZWNvZGVzIER3YXJmIGZsYXZvdXIgMCBmb3IgeDg2LTY0LgogYm9vbCBMb2NhdGlv
bjo6aXNHUFIoKSBjb25zdAogewotICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgZHdh
cmZSZWdOdW0oKSA8IDE2OworICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgZHdhcmZS
ZWcoKS5yZWcoKS5pc0dQUigpOwogfQogCiBHUFJSZWcgTG9jYXRpb246OmdwcigpIGNvbnN0CiB7
Ci0gICAgLy8gU3R1cGlkbHksIER3YXJmIGRvZXNuJ3QgbnVtYmVyIHRoZSByZWdpc3RlcnMgaW4g
dGhlIHNhbWUgd2F5IGFzIHRoZSBhcmNoaXRlY3R1cmU7Ci0gICAgLy8gZm9yIGV4YW1wbGUsIHRo
ZSBhcmNoaXRlY3R1cmUgZW5jb2RlcyBDWCBhcyAxIGFuZCBEWCBhcyAyIHdoaWxlIER3YXJmIGRv
ZXMgdGhlCi0gICAgLy8gb3Bwb3NpdGUuIEhlbmNlIHdlIG5lZWQgdGhlIHN3aXRjaC4KLSAgICAK
LSAgICBSRUxFQVNFX0FTU0VSVChpbnZvbHZlc0dQUigpKTsKLSAgICAKLSAgICBzd2l0Y2ggKGR3
YXJmUmVnTnVtKCkpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6
OmVheDsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVkeDsKLSAg
ICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVjeDsKLSAgICBjYXNlIDM6
Ci0gICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVieDsKLSAgICBjYXNlIDQ6Ci0gICAgICAg
IHJldHVybiBYODZSZWdpc3RlcnM6OmVzaTsKLSAgICBjYXNlIDU6Ci0gICAgICAgIHJldHVybiBY
ODZSZWdpc3RlcnM6OmVkaTsKLSAgICBjYXNlIDY6Ci0gICAgICAgIHJldHVybiBYODZSZWdpc3Rl
cnM6OmVicDsKLSAgICBjYXNlIDc6Ci0gICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVzcDsK
LSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVChkd2FyZlJlZ051bSgpIDwgMTYp
OwotICAgICAgICAvLyBSZWdpc3RlcnMgcjguLnIxNSBhcmUgbnVtYmVyZWQgc2Vuc2libHkuCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KGR3YXJmUmVnTnVtKCkpOwotICAgIH0K
LX0KLQotYm9vbCBMb2NhdGlvbjo6aXNGUFIoKSBjb25zdAotewotICAgIHJldHVybiBraW5kKCkg
PT0gUmVnaXN0ZXIgJiYgZHdhcmZSZWdOdW0oKSA+PSAxNyAmJiBkd2FyZlJlZ051bSgpIDw9IDMy
OwotfQotCi1GUFJSZWcgTG9jYXRpb246OmZwcigpIGNvbnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NF
UlQoaXNGUFIoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZQUlJlZz4oZHdhcmZSZWdOdW0o
KSAtIDE3KTsKLX0KLSNlbGlmIENQVShBUk02NCkKLS8vIFRoaXMgZGVjb2RlcyBEd2FyZiBmbGF2
b3VyIDAgZm9yIEFSTTY0LgotYm9vbCBMb2NhdGlvbjo6aXNHUFIoKSBjb25zdAotewotICAgIHJl
dHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgZHdhcmZSZWdOdW0oKSA+PSAwICYmIGR3YXJmUmVn
TnVtKCkgPD0gMzE7Ci19Ci0KLUdQUlJlZyBMb2NhdGlvbjo6Z3ByKCkgY29uc3QKLXsKLSAgICBS
RUxFQVNFX0FTU0VSVChpbnZvbHZlc0dQUigpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BS
UmVnPihkd2FyZlJlZ051bSgpKTsKKyAgICByZXR1cm4gZHdhcmZSZWcoKS5yZWcoKS5ncHIoKTsK
IH0KIAogYm9vbCBMb2NhdGlvbjo6aXNGUFIoKSBjb25zdAogewotICAgIHJldHVybiBraW5kKCkg
PT0gUmVnaXN0ZXIgJiYgZHdhcmZSZWdOdW0oKSA+PSA2NCAmJiBkd2FyZlJlZ051bSgpIDw9IDk1
OworICAgIHJldHVybiBraW5kKCkgPT0gUmVnaXN0ZXIgJiYgZHdhcmZSZWcoKS5yZWcoKS5pc0ZQ
UigpOwogfQogCiBGUFJSZWcgTG9jYXRpb246OmZwcigpIGNvbnN0CiB7Ci0gICAgUkVMRUFTRV9B
U1NFUlQoaXNGUFIoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZQUlJlZz4oZHdhcmZSZWdO
dW0oKSAtIDY0KTsKKyAgICByZXR1cm4gZHdhcmZSZWcoKS5yZWcoKS5mcHIoKTsKIH0KLSNlbHNl
IC8vIENQVSBjYXNlcyBmb3IgTG9jYXRpb24gbWV0aG9kcwotI2Vycm9yICJDUFUgYXJjaGl0ZWN0
dXJlIG5vdCBzdXBwb3J0ZWQuIgotI2VuZGlmIC8vIENQVSBjYXNlcyBmb3IgTG9jYXRpb24gbWV0
aG9kcwogCiB2b2lkIExvY2F0aW9uOjpyZXN0b3JlSW50byhNYWNyb0Fzc2VtYmxlciYgaml0LCBj
aGFyKiBzYXZlZFJlZ2lzdGVycywgR1BSUmVnIHJlc3VsdCwgdW5zaWduZWQgbnVtRnJhbWVzVG9Q
b3ApIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvY2F0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5o
CShyZXZpc2lvbiAxNjYyNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvY2F0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoRlRMX0pJVCkK
IAogI2luY2x1ZGUgIkZQUkluZm8uaCIKKyNpbmNsdWRlICJGVExEV0FSRlJlZ2lzdGVyLmgiCiAj
aW5jbHVkZSAiRlRMU3RhY2tNYXBzLmgiCiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC05NSw2ICs5Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHUudmFyaWFibGUuZHdhcmZSZWdOdW07CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzRHdhcmZS
ZWcoKSBjb25zdCB7IHJldHVybiBoYXNEd2FyZlJlZ051bSgpOyB9CisgICAgRFdBUkZSZWdpc3Rl
ciBkd2FyZlJlZygpIGNvbnN0IHsgcmV0dXJuIERXQVJGUmVnaXN0ZXIoZHdhcmZSZWdOdW0oKSk7
IH0KKyAgICAKICAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBJ
bmRpcmVjdDsgfQogICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3QKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YWNrTWFwcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBzLmgJKHJldmlzaW9uIDE2NjI3NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhY2tNYXBzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDYgKzU5LDkgQEAgc3RydWN0IFN0YWNrTWFwcyB7CiAgICAgICAgIHZvaWQgcGFyc2Uo
UGFyc2VDb250ZXh0Jik7CiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
ICAgIH07CisgICAgCisgICAgc3RydWN0IER3YXJmUmVnaXN0ZXIgeworICAgIH07CiAKICAgICBz
dHJ1Y3QgTG9jYXRpb24gewogICAgICAgICBlbnVtIEtpbmQgOiBpbnQ4X3Qgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227877</attachid>
            <date>2014-03-26 12:40:19 -0700</date>
            <delta_ts>2014-03-26 13:21:35 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17286</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY2MzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE0LTAzLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVhc29uaW5nIGFib3V0IERXQVJGIHJlZ2lzdGVyIG51bWJlcnMgc2hvdWxkIGJlIG1vdmVkIG91
dCBvZiBGVEw6OkxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzA3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIE1vdmluZyB0aGlzIGNvZGUgbWFrZXMgaXQgcG9zc2libGUgZm9y
IHRoaW5ncyBvdGhlciB0aGFuIEZUTDo6TG9jYXRpb24gdG8gcmVhc29uIGFib3V0CisgICAgICAg
IERXQVJGIHJlZ2lzdGVyIGVuY29kaW5nLiBUaGlzIHJlZmFjdG9yaW5nIGFsc28gYXBwZWFycyB0
byByZWR1Y2Ugc29tZSBjb2RlIGR1cGxpY2F0aW9uCisgICAgICAgIGFuZCBtYWtlcyBGVExMb2Nh
dGlvbi5jcHAgY2xlYW5lci4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcyk6CisgICAgICAgICogZnRsL0ZU
TERXQVJGUmVnaXN0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpEV0FSRlJlZ2lz
dGVyOjpyZWcpOgorICAgICAgICAoSlNDOjpGVEw6OkRXQVJGUmVnaXN0ZXI6OmR1bXApOgorICAg
ICAgICAqIGZ0bC9GVExEV0FSRlJlZ2lzdGVyLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpGVEw6
OkRXQVJGUmVnaXN0ZXI6OkRXQVJGUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRXQVJG
UmVnaXN0ZXI6OmR3YXJmUmVnTnVtKToKKyAgICAgICAgKiBmdGwvRlRMTG9jYXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpkdW1wKToKKyAgICAgICAgKEpTQzo6RlRMOjpM
b2NhdGlvbjo6aXNHUFIpOgorICAgICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjpncHIpOgorICAg
ICAgICAoSlNDOjpGVEw6OkxvY2F0aW9uOjppc0ZQUik6CisgICAgICAgIChKU0M6OkZUTDo6TG9j
YXRpb246OmZwcik6CisgICAgICAgICogZnRsL0ZUTExvY2F0aW9uLmg6CisgICAgICAgIChKU0M6
OkZUTDo6TG9jYXRpb246Omhhc0R3YXJmUmVnKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb2NhdGlv
bjo6ZHdhcmZSZWcpOgorCiAyMDE0LTAzLTI2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NjI3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zODAsNiArMzgwLDggQEAKIAkJMEY5NzQ5NzExNjg3QURFNDAwQTRGRjZBIC8qIEpT
Q2VsbElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOTc0OTZGMTY4N0FERTIwMEE0RkY2QSAvKiBKU0NlbGxJbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5ODIwNjAxNkJGRTM4
MTAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk4MjA1RDE2QkZFMzdGMDAyNDBEMDIgLyogUHJl
Y2lzZUp1bXBUYXJnZXRzLmNwcCAqLzsgfTsKIAkJMEY5ODIwNjExNkJGRTM4MzAwMjQwRDAyIC8q
IFByZWNpc2VKdW1wVGFyZ2V0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5ODIwNUUxNkJGRTM3RjAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
OUM1RTVFMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUM1RTVDMThFMzVGNUUwMEQ0
MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmNwcCAqLzsgfTsKKwkJMEY5QzVFNUYxOEUzNUY1RTAw
RDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUM1RTVEMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJl
Z2lzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY5RDMzNzAxNjVEQkI5MDAwNUFEMzg3IC8qIERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM2RTE2NURCQjhEMDA1
QUQzODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJMEY5RDMzOTYxN0ZGQzRFNjAwNzND
MkJDIC8qIERGR0ZsdXNoZWRBdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjlEMzM5NDE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmNw
cCAqLzsgfTsKIAkJMEY5RDMzOTcxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzOTUxN0ZG
QzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTAzLDYgKzE5MDUsOCBAQAogCQkwRjk3NDk2RjE2
ODdBREUyMDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0NlbGxJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOTgyMDVEMTZCRkUzN0YwMDI0MEQwMiAvKiBQcmVjaXNlSnVtcFRhcmdldHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5ODIwNUUxNkJGRTM3RjAwMjQwRDAyIC8q
IFByZWNpc2VKdW1wVGFyZ2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cmVjaXNlSnVtcFRhcmdldHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5QzVF
NUMxOEUzNUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMRFdBUkZSZWdpc3Rlci5jcHA7IHBhdGggPSBmdGwv
RlRMRFdBUkZSZWdpc3Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUM1
RTVEMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEZUTERXQVJGUmVnaXN0ZXIuaDsgcGF0aCA9IGZ0bC9GVExEV0FS
RlJlZ2lzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzZFMTY1REJC
OEQwMDVBRDM4NyAvKiBEaXNhc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRGlzYXNzZW1ibGVyLmNwcDsgcGF0aCA9IGRpc2Fzc2VtYmxlci9EaXNhc3Nl
bWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlEMzM5NDE3RkZDNEU2
MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0ZsdXNoZWRBdC5jcHA7IHBhdGggPSBkZmcvREZHRmx1c2hlZEF0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RDMzOTUxN0ZGQzRFNjAwNzNDMkJDIC8q
IERGR0ZsdXNoZWRBdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdGbHVz
aGVkQXQuaDsgcGF0aCA9IGRmZy9ERkdGbHVzaGVkQXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTMyNzUsNiArMzI3OSw4IEBACiAJCQkJMEZFOTVGNzgxOEI1Njk0NzAwQjUzMUZC
IC8qIEZUTERhdGFTZWN0aW9uLmggKi8sCiAJCQkJMkFDOTIyQjkxOEExNjE4MjAwM0NFMEZCIC8q
IEZUTERXQVJGRGVidWdMaW5lSW5mby5jcHAgKi8sCiAJCQkJMkFDOTIyQkExOEExNjE4MjAwM0NF
MEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5oICovLAorCQkJCTBGOUM1RTVDMThFMzVGNUUw
MEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmNwcCAqLywKKwkJCQkwRjlDNUU1RDE4RTM1RjVF
MDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5oICovLAogCQkJCTBGMjM1QkJEMTcxNzhFMUMw
MDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuY3BwICovLAogCQkJCTBGMjM1QkJFMTcxNzhFMUMw
MDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCAqLywKIAkJCQkwRjIzNUJCRjE3MTc4RTFDMDA2
OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5jcHAgKi8sCkBAIC01NzEwLDYgKzU3
MTYsNyBAQAogCQkJCTBGOTYzQjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292
ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxODFDNzE4NDE1Q0E1MDA1N0I2NjkgLyogVmFy
aWFibGVXYXRjaHBvaW50U2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlDNUU1RjE4RTM1RjVF
MDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZB
NDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MjAwRTE2RjVDRDAwQjM0NDYwIC8qIFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywK
QEAgLTYyNDIsNiArNjI0OSw3IEBACiAJCQkJMEY4Rjk0M0MxNjY3NjMxMzAwRDYxOTcxIC8qIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0NDIxNjY3
NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUMx
MTA3RUMzNzYwMDQyN0E0OCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjlDNUU1RTE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzA5RjJGMjE3QTBBQzJBMDA1MTJFOTggLyogQ29tbW9uU2xvd1Bh
dGhzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NTNBMzMxMTdBMUYxRUUwMDhDRjZGMyAvKiBD
b21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RTVBM0E3
MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24g
MTY2Mjc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw4IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFz
ZWRPblN0YWNrTWFwcygKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVy
LT52YWx1ZS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgICAgIFN0YWNrTWFwczo6UmVjb3Jk
JiByZWNvcmQgPSBpdGVyLT52YWx1ZVtpXTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBMTFZNIHNob3VsZCB0ZWxsIHVzIHdoaWNoIHJlZ2lzdGVycyBhcmUgbGl2ZS4K
KyAgICAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIHRoZSBsaXZlbmVzcyBpbmZvcm1hdGlvbiB0
aGF0IExMVk0gZ2l2ZXMgdXMuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDc5MQogICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0
IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IHJlY29yZC5sb2NhdGlvbnNb
MF0uZGlyZWN0R1BSKCk7CkBAIC0zMzgsNyArMzM5LDggQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rp
b25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGl0ZXItPnZhbHVlLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgU3RhY2tNYXBzOjpS
ZWNvcmQmIHJlY29yZCA9IGl0ZXItPnZhbHVlW2ldOwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBMTFZNIHNob3VsZCB0ZWxsIHVzIHdoaWNoIHJlZ2lzdGVycyBh
cmUgbGl2ZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIHRoZSBsaXZlbmVzcyBpbmZv
cm1hdGlvbiB0aGF0IExMVk0gZ2l2ZXMgdXMuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDc5MQogICAgICAgICAgICAgICAgIFJl
Z2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSBSZWdpc3RlclNldDo6YWxsUmVnaXN0ZXJzKCk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2UgPSByZWNvcmQubG9j
YXRpb25zWzBdLmRpcmVjdEdQUigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExEV0FSRlJlZ2lzdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTERXQVJGUmVnaXN0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExEV0FSRlJlZ2lzdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGVExEd2FyZlJlZ2lzdGVyLmgiCisKKyNpZiBF
TkFCTEUoRlRMX0pJVCkKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJGUFJJbmZv
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKKworUmVnIERXQVJGUmVnaXN0
ZXI6OnJlZygpIGNvbnN0Cit7CisjaWYgQ1BVKFg4Nl82NCkKKyAgICBpZiAobV9kd2FyZlJlZ051
bSA+PSAwICYmIG1fZHdhcmZSZWdOdW0gPCAxNikgeworICAgICAgICBzd2l0Y2ggKGR3YXJmUmVn
TnVtKCkpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVy
czo6ZWF4OworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJz
OjplZHg7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6
OmVjeDsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6
ZWJ4OworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjpl
c2k7CisgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVk
aTsKKyAgICAgICAgY2FzZSA2OgorICAgICAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWJw
OworICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplc3A7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2R3YXJmUmVn
TnVtIDwgMTYpOworICAgICAgICAgICAgLy8gUmVnaXN0ZXJzIHI4Li5yMTUgYXJlIG51bWJlcmVk
IHNlbnNpYmx5LgorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4obV9kd2Fy
ZlJlZ051bSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1fZHdhcmZSZWdOdW0gPj0gMTcg
JiYgbV9kd2FyZlJlZ051bSA8PSAzMikKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZQUlJl
Zz4obV9kd2FyZlJlZ051bSAtIDE3KTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBpZiAobV9kd2Fy
ZlJlZ051bSA+PSAwICYmIG1fZHdhcmZSZWdOdW0gPD0gMzEpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHUFJSZWc+KG1fZHdhcmZSZWdOdW0pOworICAgIGlmIChtX2R3YXJmUmVnTnVtID49
IDY0ICYmIG1fZHdhcmZSZWdOdW0gPD0gOTUpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxG
UFJSZWc+KG1fZHdhcmZSZWdOdW0gLSA2NCk7CisjZW5kaWYKKyAgICByZXR1cm4gUmVnKCk7Cit9
CisKK3ZvaWQgRFdBUkZSZWdpc3Rlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorewor
ICAgIFJlZyByZWcgPSB0aGlzLT5yZWcoKTsKKyAgICBpZiAoISFyZWcpCisgICAgICAgIG91dC5w
cmludChyZWcpOworICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KCI8dW5rbm93bjoiLCBtX2R3
YXJmUmVnTnVtLCAiPiIpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCisKKyNlbmRp
ZiAvLyBFTkFCTEUoRlRMX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExEV0FSRlJlZ2lzdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExEV0FSRlJlZ2lzdGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTERXQVJGUmVnaXN0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
RlRMRFdBUkZSZWdpc3Rlcl9oCisjZGVmaW5lIEZUTERXQVJGUmVnaXN0ZXJfaAorCisjaWYgRU5B
QkxFKEZUTF9KSVQpCisKKyNpbmNsdWRlICJSZWcuaCIKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworCitjbGFzcyBEV0FSRlJl
Z2lzdGVyIHsKK3B1YmxpYzoKKyAgICBEV0FSRlJlZ2lzdGVyKCkKKyAgICAgICAgOiBtX2R3YXJm
UmVnTnVtKC0xKQorICAgIHsKKyAgICB9CisgICAgCisgICAgZXhwbGljaXQgRFdBUkZSZWdpc3Rl
cihpbnQxNl90IGR3YXJmUmVnTnVtKQorICAgICAgICA6IG1fZHdhcmZSZWdOdW0oZHdhcmZSZWdO
dW0pCisgICAgeworICAgIH0KKyAgICAKKyAgICBpbnQxNl90IGR3YXJmUmVnTnVtKCkgY29uc3Qg
eyByZXR1cm4gbV9kd2FyZlJlZ051bTsgfQorICAgIAorICAgIFJlZyByZWcoKSBjb25zdDsgLy8g
VGhpcyBtYXkgcmV0dXJuIFJlZygpIGlmIGl0IGNhbid0IHBhcnNlIHRoZSBEd2FyZiByZWdpc3Rl
ciBudW1iZXIuCisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAg
Citwcml2YXRlOgorICAgIGludDE2X3QgbV9kd2FyZlJlZ051bTsKK307CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpGVEwKKworI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQorCisjZW5kaWYgLy8g
RlRMRFdBUkZSZWdpc3Rlcl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG9jYXRpb24uY3BwCShyZXZpc2lvbiAxNjYyNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsOCArNjQsOCBAQCBMb2Nh
dGlvbiBMb2NhdGlvbjo6Zm9yU3RhY2ttYXBzKGNvbnN0IFN0CiB2b2lkIExvY2F0aW9uOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIoIiwga2luZCgpKTsK
LSAgICBpZiAoaGFzRHdhcmZSZWdOdW0oKSkKLSAgICAgICAgb3V0LnByaW50KCIsIHJlZyIsIGR3
YXJmUmVnTnVtKCkpOworICAgIGlmIChoYXNEd2FyZlJlZygpKQorICAgICAgICBvdXQucHJpbnQo
IiwgIiwgZHdhcmZSZWcoKSk7CiAgICAgaWYgKGhhc09mZnNldCgpKQogICAgICAgICBvdXQucHJp
bnQoIiwgIiwgb2Zmc2V0KCkpOwogICAgIGlmIChoYXNBZGRlbmQoKSkKQEAgLTgwLDgxICs4MCwy
NSBAQCBib29sIExvY2F0aW9uOjppbnZvbHZlc0dQUigpIGNvbnN0CiAgICAgcmV0dXJuIGlzR1BS
KCkgfHwga2luZCgpID09IEluZGlyZWN0OwogfQogCi0jaWYgQ1BVKFg4Nl82NCkgLy8gQ1BVIGNh
c2VzIGZvciBMb2NhdGlvbiBtZXRob2RzCi0vLyBUaGlzIGRlY29kZXMgRHdhcmYgZmxhdm91ciAw
IGZvciB4ODYtNjQuCiBib29sIExvY2F0aW9uOjppc0dQUigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGtpbmQoKSA9PSBSZWdpc3RlciAmJiBkd2FyZlJlZ051bSgpIDwgMTY7CisgICAgcmV0dXJuIGtp
bmQoKSA9PSBSZWdpc3RlciAmJiBkd2FyZlJlZygpLnJlZygpLmlzR1BSKCk7CiB9CiAKIEdQUlJl
ZyBMb2NhdGlvbjo6Z3ByKCkgY29uc3QKIHsKLSAgICAvLyBTdHVwaWRseSwgRHdhcmYgZG9lc24n
dCBudW1iZXIgdGhlIHJlZ2lzdGVycyBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIGFyY2hpdGVjdHVy
ZTsKLSAgICAvLyBmb3IgZXhhbXBsZSwgdGhlIGFyY2hpdGVjdHVyZSBlbmNvZGVzIENYIGFzIDEg
YW5kIERYIGFzIDIgd2hpbGUgRHdhcmYgZG9lcyB0aGUKLSAgICAvLyBvcHBvc2l0ZS4gSGVuY2Ug
d2UgbmVlZCB0aGUgc3dpdGNoLgotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKGludm9sdmVzR1BS
KCkpOwotICAgIAotICAgIHN3aXRjaCAoZHdhcmZSZWdOdW0oKSkgewotICAgIGNhc2UgMDoKLSAg
ICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWF4OwotICAgIGNhc2UgMToKLSAgICAgICAgcmV0
dXJuIFg4NlJlZ2lzdGVyczo6ZWR4OwotICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIFg4NlJl
Z2lzdGVyczo6ZWN4OwotICAgIGNhc2UgMzoKLSAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6
ZWJ4OwotICAgIGNhc2UgNDoKLSAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZXNpOwotICAg
IGNhc2UgNToKLSAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWRpOwotICAgIGNhc2UgNjoK
LSAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWJwOwotICAgIGNhc2UgNzoKLSAgICAgICAg
cmV0dXJuIFg4NlJlZ2lzdGVyczo6ZXNwOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGR3YXJmUmVnTnVtKCkgPCAxNik7Ci0gICAgICAgIC8vIFJlZ2lzdGVycyByOC4ucjE1
IGFyZSBudW1iZXJlZCBzZW5zaWJseS4KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJl
Zz4oZHdhcmZSZWdOdW0oKSk7Ci0gICAgfQotfQotCi1ib29sIExvY2F0aW9uOjppc0ZQUigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGtpbmQoKSA9PSBSZWdpc3RlciAmJiBkd2FyZlJlZ051bSgpID49
IDE3ICYmIGR3YXJmUmVnTnVtKCkgPD0gMzI7Ci19Ci0KLUZQUlJlZyBMb2NhdGlvbjo6ZnByKCkg
Y29uc3QKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChpc0ZQUigpKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RlBSUmVnPihkd2FyZlJlZ051bSgpIC0gMTcpOwotfQotI2VsaWYgQ1BVKEFSTTY0KQot
Ly8gVGhpcyBkZWNvZGVzIER3YXJmIGZsYXZvdXIgMCBmb3IgQVJNNjQuCi1ib29sIExvY2F0aW9u
Ojppc0dQUigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGtpbmQoKSA9PSBSZWdpc3RlciAmJiBkd2Fy
ZlJlZ051bSgpID49IDAgJiYgZHdhcmZSZWdOdW0oKSA8PSAzMTsKLX0KLQotR1BSUmVnIExvY2F0
aW9uOjpncHIoKSBjb25zdAotewotICAgIFJFTEVBU0VfQVNTRVJUKGludm9sdmVzR1BSKCkpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KGR3YXJmUmVnTnVtKCkpOworICAgIHJldHVy
biBkd2FyZlJlZygpLnJlZygpLmdwcigpOwogfQogCiBib29sIExvY2F0aW9uOjppc0ZQUigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGtpbmQoKSA9PSBSZWdpc3RlciAmJiBkd2FyZlJlZ051bSgpID49
IDY0ICYmIGR3YXJmUmVnTnVtKCkgPD0gOTU7CisgICAgcmV0dXJuIGtpbmQoKSA9PSBSZWdpc3Rl
ciAmJiBkd2FyZlJlZygpLnJlZygpLmlzRlBSKCk7CiB9CiAKIEZQUlJlZyBMb2NhdGlvbjo6ZnBy
KCkgY29uc3QKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChpc0ZQUigpKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RlBSUmVnPihkd2FyZlJlZ051bSgpIC0gNjQpOworICAgIHJldHVybiBkd2FyZlJl
ZygpLnJlZygpLmZwcigpOwogfQotI2Vsc2UgLy8gQ1BVIGNhc2VzIGZvciBMb2NhdGlvbiBtZXRo
b2RzCi0jZXJyb3IgIkNQVSBhcmNoaXRlY3R1cmUgbm90IHN1cHBvcnRlZC4iCi0jZW5kaWYgLy8g
Q1BVIGNhc2VzIGZvciBMb2NhdGlvbiBtZXRob2RzCiAKIHZvaWQgTG9jYXRpb246OnJlc3RvcmVJ
bnRvKE1hY3JvQXNzZW1ibGVyJiBqaXQsIGNoYXIqIHNhdmVkUmVnaXN0ZXJzLCBHUFJSZWcgcmVz
dWx0LCB1bnNpZ25lZCBudW1GcmFtZXNUb1BvcCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvY2F0aW9uLmgJKHJldmlzaW9uIDE2NjI3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjks
NyBAQAogI2lmIEVOQUJMRShGVExfSklUKQogCiAjaW5jbHVkZSAiRlBSSW5mby5oIgorI2luY2x1
ZGUgIkZUTERXQVJGUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJGVExTdGFja01hcHMuaCIKICNpbmNs
dWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTk1LDYgKzk2LDkg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdS52YXJpYWJsZS5kd2FyZlJlZ051bTsKICAgICB9
CiAgICAgCisgICAgYm9vbCBoYXNEd2FyZlJlZygpIGNvbnN0IHsgcmV0dXJuIGhhc0R3YXJmUmVn
TnVtKCk7IH0KKyAgICBEV0FSRlJlZ2lzdGVyIGR3YXJmUmVnKCkgY29uc3QgeyByZXR1cm4gRFdB
UkZSZWdpc3Rlcihkd2FyZlJlZ051bSgpKTsgfQorICAgIAogICAgIGJvb2wgaGFzT2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IEluZGlyZWN0OyB9CiAgICAgaW50MzJfdCBvZmZzZXQo
KSBjb25zdAogICAgIHsK
</data>
<flag name="review"
          id="252127"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>