<?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>165730</bug_id>
          
          <creation_ts>2016-12-10 12:32:13 -0800</creation_ts>
          <short_desc>[CSS Parser] Move CSSParserValues.h/.cpp to CSSParserSelector.h/.cpp</short_desc>
          <delta_ts>2016-12-10 12:39:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1258734</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-12-10 12:32:13 -0800</bug_when>
    <thetext>[CSS Parser] Move CSSParserValues.h/.cpp to CSSParserSelector.h/.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258735</commentid>
    <comment_count>1</comment_count>
      <attachid>296816</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-12-10 12:34:54 -0800</bug_when>
    <thetext>Created attachment 296816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258736</commentid>
    <comment_count>2</comment_count>
      <attachid>296816</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-10 12:35:43 -0800</bug_when>
    <thetext>Comment on attachment 296816
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258737</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-12-10 12:39:30 -0800</bug_when>
    <thetext>Fixed in r209671.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296816</attachid>
            <date>2016-12-10 12:34:54 -0800</date>
            <delta_ts>2016-12-10 12:35:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165730-20161210143409.patch</filename>
            <type>text/plain</type>
            <size>44355</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTY3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTEyLTEwICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgUGFyc2VyXSBNb3ZlIENTU1Bh
cnNlclZhbHVlcy5oLy5jcHAgdG8gQ1NTUGFyc2VyU2VsZWN0b3IuaC8uY3BwCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU3MzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5j
cHA6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKiBjc3Mv
Q1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAgICAgICAgKiBjc3MvbWFrZVNlbGVjdG9yUHNldWRvQ2xh
c3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5weToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1BhcnNlckltcGwuY3BwOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3Iu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVl
cy5jcHAuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oLgorICAgICAg
ICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBj
c3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTU2VsZWN0b3JQYXJzZXIuaDoKKwogMjAxNi0xMi0xMCAgRGF2ZSBIeWF0dCAgPGh5YXR0
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFBhcnNlcl0gUmVtb3ZlIHRoZSBwc2V1ZG9jbGFz
cy9lbGVtZW50IGhhY2tzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA5NjY2
KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEz
ODAsNyArMTM4MCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvcGFyc2VyL0NTU1Bh
cnNlck9ic2VydmVyV3JhcHBlci5jcHAKICAgICBjc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNw
cAogICAgIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5jcHAKLSAgICBjc3MvcGFyc2Vy
L0NTU1BhcnNlclZhbHVlcy5jcHAKKyAgICBjc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNw
cAogICAgIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCiAgICAgY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCiAgICAgY3NzL3BhcnNlci9DU1NTZWxlY3RvclBh
cnNlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTY2NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzUxNiw4ICsz
NTE2LDggQEAKIAkJOTQ2RDM3MkQxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyODFENkNC
MjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCAqLzsgfTsKIAkJOTQ2RDM3MkUxRDZDQjI5NDAw
NzcwODRGIC8qIENTU1BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTQ2RDM3MjkxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk0NkQzNzJGMUQ2
Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyQTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFy
c2VyTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTk0NkQzNzMwMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MkIxRDZDQjI4
QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgKi87IH07Ci0JCTk0NkQzNzMxMUQ2Q0Iy
OTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzJDMUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQYXJz
ZXJWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk5NDZEMzczMDFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyU2VsZWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ2RDM3MkIxRDZD
QjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclNlbGVjdG9yLmNwcCAqLzsgfTsKKwkJOTQ2RDM3MzEx
RDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlclNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyQzFENkNCMjhCMDA3NzA4NEYgLyog
Q1NTUGFyc2VyU2VsZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5NDZEMzczOTFENkNERkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzM0
MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuY3BwICovOyB9OwogCQk5NDZEMzczQTFE
NkNERkMwMDA3NzA4NEYgLyogQ1NTVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzczNzFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9r
ZW5pemVyLmggKi87IH07CiAJCTk0NkQzNzNCMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6
ZXJJbnB1dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NDZEMzczNTFENkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJl
YW0uY3BwICovOyB9OwpAQCAtMTEwOTAsOCArMTEwOTAsOCBAQAogCQk5NDZEMzcyODFENkNCMjhC
MDA3NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENTU1BhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MjkxRDZDQjI4QjAwNzcwODRGIC8qIENTU1Bh
cnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQYXJzZXIuaDsgcGF0
aCA9IHBhcnNlci9DU1NQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2
RDM3MkExRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyTW9kZS5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNl
ck1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTQ2RDM3MkIxRDZDQjI4QjAw
NzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDU1NQYXJzZXJWYWx1ZXMuY3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlclZh
bHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk0NkQzNzJDMUQ2Q0IyOEIw
MDc3MDg0RiAvKiBDU1NQYXJzZXJWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQ1NTUGFyc2VyVmFsdWVzLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NkQzNzJCMUQ2Q0IyOEIwMDc3MDg0RiAv
KiBDU1NQYXJzZXJTZWxlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBDU1NQYXJzZXJTZWxlY3Rvci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyU2VsZWN0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZEMzcyQzFENkNCMjhCMDA3
NzA4NEYgLyogQ1NTUGFyc2VyU2VsZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQ1NTUGFyc2VyU2VsZWN0b3IuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJTZWxlY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzczNDFENkNERjk4MDA3NzA4
NEYgLyogQ1NTVG9rZW5pemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IENTU1Rva2VuaXplci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTVG9rZW5pemVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MzUxRDZDREY5ODAwNzcwODRGIC8qIENT
U1Rva2VuaXplcklucHV0U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NUb2tl
bml6ZXJJbnB1dFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0NkQz
NzM3MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQ1NTVG9rZW5pemVyLmg7IHBhdGggPSBwYXJzZXIvQ1NTVG9rZW5pemVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTA0OCw4ICsxOTA0OCw4IEBACiAJ
CQkJOTQ2RDM3M0QxRDZDRTMxQTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi8sCiAJCQkJ
OTQ2RDM3NEIxRDZEMDdGNTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuUmFuZ2UuY3BwICovLAog
CQkJCTk0NkQzNzRDMUQ2RDA3RjUwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdlLmggKi8s
Ci0JCQkJOTQ2RDM3MkIxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5jcHAgKi8s
Ci0JCQkJOTQ2RDM3MkMxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclZhbHVlcy5oICovLAor
CQkJCTk0NkQzNzJCMUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQYXJzZXJTZWxlY3Rvci5jcHAgKi8s
CisJCQkJOTQ2RDM3MkMxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlclNlbGVjdG9yLmggKi8s
CiAJCQkJOTQ2RDM3NDExRDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyLmNwcCAq
LywKIAkJCQk5NDZEMzc0MjFENkNGNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCAq
LywKIAkJCQk5NDlDNzcwMjFENkUzOTM1MDBDMERFNEYgLyogQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcCAqLywKQEAgLTI1MjM3LDcgKzI1MjM3LDcgQEAKIAkJCQk5NDlDNzcwOTFENkU0OTg3
MDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NDZEMzc0MDFENkNFM0MyMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk0NkQzNzRFMUQ2RDA4QUEwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tlblJhbmdl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NDZEMzczMTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFy
c2VyVmFsdWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDZEMzczMTFENkNCMjk0MDA3NzA4NEYg
LyogQ1NTUGFyc2VyU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0MTgyNzhGMUQ4Q0FG
OTIwMDQ5Mjc2NCAvKiBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3N0IzODYzMTIyODgzRTkwMEI4MUZGOCAvKiBDU1NQcmVsb2FkU2Nhbm5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ByaW1pdGl2
ZVZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MDQ4LDcgKzI5MDQ4LDcgQEAKIAkJCQk5NDlD
NzcwODFENkU0OTg3MDBDMERFNEYgLyogQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk0NkQzNzNGMUQ2Q0UzQzIwMDc3MDg0RiAvKiBDU1NQYXJzZXJUb2tl
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NDZEMzc0RDFENkQwOEE2MDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW5SYW5nZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5NDZEMzczMDFENkNCMjk0
MDA3NzA4NEYgLyogQ1NTUGFyc2VyVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NkQz
NzMwMUQ2Q0IyOTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5NDE4Mjc4RTFEOENBRjkyMDA0OTI3NjQgLyogQ1NTUGVuZGluZ1N1YnN0aXR1dGlv
blZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzODYyMTIyODgzRTkwMEI4MUZGOCAv
KiBDU1NQcmVsb2FkU2Nhbm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkQwNTBBMTk4
OUNBMDA3RkI4QzUgLyogQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIwOTY2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3
LDcgQEAKICNpbmNsdWRlICJDU1NOYW1lZEltYWdlVmFsdWUuY3BwIgogI2luY2x1ZGUgIkNTU1Bh
Z2VSdWxlLmNwcCIKICNpbmNsdWRlICJDU1NQYXJzZXIuY3BwIgotI2luY2x1ZGUgIkNTU1BhcnNl
clZhbHVlcy5jcHAiCisjaW5jbHVkZSAiQ1NTUGFyc2VyU2VsZWN0b3IuY3BwIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5LmNwcCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIgog
I2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwCShyZXZpc2lvbiAyMDk2NjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlLmgiCiAKLSNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKKyNpbmNs
dWRlICJDU1NQYXJzZXJTZWxlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gMjA5NjY2
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRGYW1pbHkuaCIKICNpbmNs
dWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJDU1NNYXJrdXAuaCIKLSNpbmNsdWRlICJDU1NQ
YXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVz
LmgiCiAjaW5jbHVkZSAiQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAJKHJldmlzaW9uIDIwOTY2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0
LmgiCiAKLSNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJT
ZWxlY3Rvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL21ha2VTZWxlY3RvclBzZXVk
b0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL21ha2VTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1l
bnRNYXAucHkJKHJldmlzaW9uIDIwOTY2NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlU2Vs
ZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC05MSw3ICs5MSw3IEBAIG91dHB1dF9maWxlLndyaXRlKCIiIgogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIgogCi0jaW5jbHVkZSAi
Q1NTUGFyc2VyVmFsdWVzLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyU2VsZWN0b3IuaCIKIAogI2lm
IGRlZmluZWQoX19jbGFuZ19fKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAkocmV2aXNpb24g
MjA5NjY2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkNTU0tleWZyYW1lc1J1
bGUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJPYnNlcnZlci5oIgogI2luY2x1ZGUgIkNTU1BhcnNl
ck9ic2VydmVyV3JhcHBlci5oIgotI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIiAvLyBGSVhN
RS1ORVdQQVJTRVIgV2UgbmVlZCB0byBtb3ZlIENTU1BhcnNlclNlbGVjdG9yIHRvIGl0cyBvd24g
ZmlsZS4KKyNpbmNsdWRlICJDU1NQYXJzZXJTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5UGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JQYXJzZXIuaCIKICNpbmNsdWRlICJD
U1NTdHlsZVNoZWV0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
clNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlclNlbGVjdG9yLmNwcAkocmV2aXNpb24gMjA5NjY2KQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHA6MjA5NjY2KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKKworI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFs
dWUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NT
ZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIlNlbGVj
dG9yUHNldWRvVHlwZU1hcC5oIgorCisjaWYgQ09NUElMRVIoTVNWQykKKy8vIFNlZSBodHRwczov
L21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5LzF3ZWE1endlLmFzcHgKKyNwcmFnbWEg
d2FybmluZyhkaXNhYmxlOiA0NzAxKQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dXNpbmcgbmFtZXNwYWNlIFdURjsKKworQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlclNlbGVj
dG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcihjb25zdCBBdG9taWNTdHJpbmcmIHBzZXVkb1R5
cGVTdHJpbmcpCit7CisgICAgQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzc1R5cGUgcHNldWRv
VHlwZTsKKyAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHNldWRvVHlwZVN0
cmluZywgImZpcnN0IikpCisgICAgICAgIHBzZXVkb1R5cGUgPSBDU1NTZWxlY3Rvcjo6UGFnZVBz
ZXVkb0NsYXNzRmlyc3Q7CisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocHNldWRvVHlwZVN0cmluZywgImxlZnQiKSkKKyAgICAgICAgcHNldWRvVHlwZSA9IENTU1Nl
bGVjdG9yOjpQYWdlUHNldWRvQ2xhc3NMZWZ0OworICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHBzZXVkb1R5cGVTdHJpbmcsICJyaWdodCIpKQorICAgICAgICBwc2V1
ZG9UeXBlID0gQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzc1JpZ2h0OworICAgIGVsc2UKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3It
PnNldE1hdGNoKENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpOworICAgIHNlbGVjdG9yLT5t
X3NlbGVjdG9yLT5zZXRQYWdlUHNldWRvVHlwZShwc2V1ZG9UeXBlKTsKKyAgICByZXR1cm4gc2Vs
ZWN0b3IucmVsZWFzZSgpOworfQorCitDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyU2VsZWN0
b3I6OnBhcnNlUHNldWRvRWxlbWVudFNlbGVjdG9yRnJvbVN0cmluZ1ZpZXcoU3RyaW5nVmlldyYg
cHNldWRvVHlwZVN0cmluZykKK3sKKyAgICBBdG9taWNTdHJpbmcgbmFtZSA9IHBzZXVkb1R5cGVT
dHJpbmcudG9BdG9taWNTdHJpbmcoKTsKKyAgICAKKyAgICBDU1NTZWxlY3Rvcjo6UHNldWRvRWxl
bWVudFR5cGUgcHNldWRvVHlwZSA9IENTU1NlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRUeXBl
KG5hbWUpOworICAgIGlmIChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
VW5rbm93bikgeworICAgICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IFdlIGNhbid0IGFkZCAic2xv
dHRlZCIgdG8gdGhlIG1hcCB3aXRob3V0IGJyZWFraW5nIHRoZSBvbGQKKyAgICAgICAgLy8gcGFy
c2VyLCBzbyB0aGlzIGhhY2sgZW5zdXJlcyB0aGUgbmV3IHBhcnNlciBzdGlsbCByZWNvZ25pemVz
IGl0LiBXaGVuIHRoZSBuZXcKKyAgICAgICAgLy8gcGFyc2VyIHR1cm5zIG9uLCB3ZSBjYW4gYWRk
ICJzbG90dGVkIiB0byB0aGUgbWFwIGFuZCByZW1vdmUgdGhpcyBjb2RlLgorICAgICAgICBpZiAo
cHNldWRvVHlwZVN0cmluZy5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoInNsb3R0ZWQiKSkK
KyAgICAgICAgICAgIHBzZXVkb1R5cGUgPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFNsb3R0
ZWQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigp
OworICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRv
RWxlbWVudCk7CisgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBl
KHBzZXVkb1R5cGUpOworICAgIGlmIChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9F
bGVtZW50V2ViS2l0Q3VzdG9tTGVnYWN5UHJlZml4ZWQpIHsKKyAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShuYW1lID09ICItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIiwgIi13ZWJraXQtaW5w
dXQtcGxhY2Vob2xkZXIgaXMgdGhlIG9ubHkgTGVnYWN5UHJlZml4IHBzZXVkbyB0eXBlLiIpOwor
ICAgICAgICBpZiAobmFtZSA9PSAiLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIpCisgICAgICAg
ICAgICBuYW1lID0gQXRvbWljU3RyaW5nKCJwbGFjZWhvbGRlciIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOworICAgIH0KKyAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0
VmFsdWUobmFtZSk7CisgICAgcmV0dXJuIHNlbGVjdG9yLnJlbGVhc2UoKTsKK30KKworQ1NTUGFy
c2VyU2VsZWN0b3IqIENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3JG
cm9tU3RyaW5nVmlldyhTdHJpbmdWaWV3JiBwc2V1ZG9UeXBlU3RyaW5nKQoreworICAgIFBzZXVk
b0NsYXNzT3JDb21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCBwc2V1ZG9UeXBlID0gcGFyc2VQc2V1
ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50U3RyaW5nKHBzZXVkb1R5cGVTdHJpbmcpOwor
ICAgIGlmIChwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1Vua25vd24pIHsKKyAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NT
UGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRj
aChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOworICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rv
ci0+c2V0UHNldWRvQ2xhc3NUeXBlKHBzZXVkb1R5cGUucHNldWRvQ2xhc3MpOworICAgICAgICBy
ZXR1cm4gc2VsZWN0b3IucmVsZWFzZSgpOworICAgIH0KKyAgICBpZiAocHNldWRvVHlwZS5jb21w
YXRpYmlsaXR5UHNldWRvRWxlbWVudCAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25v
d24pIHsKKyAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KCk7CisgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NT
ZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CisgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5z
ZXRQc2V1ZG9FbGVtZW50VHlwZShwc2V1ZG9UeXBlLmNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50
KTsKKyAgICAgICAgQXRvbWljU3RyaW5nIG5hbWUgPSBwc2V1ZG9UeXBlU3RyaW5nLnRvQXRvbWlj
U3RyaW5nKCk7CisgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRWYWx1ZShuYW1lKTsK
KyAgICAgICAgcmV0dXJuIHNlbGVjdG9yLnJlbGVhc2UoKTsKKyAgICB9CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0NTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3RvcigpCisgICAg
OiBtX3NlbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KCkpCit7Cit9CisKK0NT
U1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdRTmFtZSkKKyAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4o
dGFnUU5hbWUpKQoreworfQorCitDU1NQYXJzZXJTZWxlY3Rvcjo6fkNTU1BhcnNlclNlbGVjdG9y
KCkKK3sKKyAgICBpZiAoIW1fdGFnSGlzdG9yeSkKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+LCAxNj4gdG9EZWxldGU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvciA9IFdURk1vdmUobV90
YWdIaXN0b3J5KTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+IG5leHQgPSBXVEZNb3ZlKHNlbGVjdG9yLT5tX3RhZ0hpc3Rvcnkp
OworICAgICAgICB0b0RlbGV0ZS5hcHBlbmQoV1RGTW92ZShzZWxlY3RvcikpOworICAgICAgICBp
ZiAoIW5leHQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc2VsZWN0b3IgPSBXVEZNb3Zl
KG5leHQpOworICAgIH0KK30KKwordm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3Rv
clZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4mIHNlbGVj
dG9yVmVjdG9yKQoreworICAgIGF1dG8gc2VsZWN0b3JMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
U1NTZWxlY3Rvckxpc3Q+KCk7CisgICAgc2VsZWN0b3JMaXN0LT5hZG9wdFNlbGVjdG9yVmVjdG9y
KHNlbGVjdG9yVmVjdG9yKTsKKyAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxpc3QoV1RGTW92
ZShzZWxlY3Rvckxpc3QpKTsKK30KKwordm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0TGFuZ0Fy
Z3VtZW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21pY1N0cmluZz4+IGFyZ3VtZW50
TGlzdCkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFhcmd1bWVudExpc3QtPmlzRW1wdHko
KSwgIk5vIENTUyBTZWxlY3RvciB0YWtlcyBhbiBlbXB0eSBhcmd1bWVudCBsaXN0LiIpOworICAg
IG1fc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExpc3QoV1RGTW92ZShhcmd1bWVudExpc3QpKTsK
K30KKwordm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0U2VsZWN0b3JMaXN0KHN0ZDo6dW5pcXVl
X3B0cjxDU1NTZWxlY3Rvckxpc3Q+IHNlbGVjdG9yTGlzdCkKK3sKKyAgICBtX3NlbGVjdG9yLT5z
ZXRTZWxlY3Rvckxpc3QoV1RGTW92ZShzZWxlY3Rvckxpc3QpKTsKK30KKworc3RhdGljIGJvb2wg
c2VsZWN0b3JMaXN0TWF0Y2hlc1BzZXVkb0VsZW1lbnQoY29uc3QgQ1NTU2VsZWN0b3JMaXN0KiBz
ZWxlY3Rvckxpc3QpCit7CisgICAgaWYgKCFzZWxlY3Rvckxpc3QpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHN1YlNlbGVjdG9yID0gc2VsZWN0
b3JMaXN0LT5maXJzdCgpOyBzdWJTZWxlY3Rvcjsgc3ViU2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxp
c3Q6Om5leHQoc3ViU2VsZWN0b3IpKSB7CisgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yID0gc3ViU2VsZWN0b3I7IHNlbGVjdG9yOyBzZWxlY3RvciA9IHNlbGVjdG9yLT50
YWdIaXN0b3J5KCkpIHsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2hlc1BzZXVkb0Vs
ZW1lbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChj
b25zdCBDU1NTZWxlY3Rvckxpc3QqIHN1YnNlbGVjdG9yTGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rv
ckxpc3QoKSkgeworICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvckxpc3RNYXRjaGVzUHNldWRv
RWxlbWVudChzdWJzZWxlY3Rvckxpc3QpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQ1NTUGFyc2VyU2VsZWN0b3I6Om1hdGNoZXNQc2V1ZG9FbGVtZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zZWxlY3Rvci0+bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSB8fCBzZWxl
Y3Rvckxpc3RNYXRjaGVzUHNldWRvRWxlbWVudChtX3NlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKSk7
Cit9CisKK3ZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6Omluc2VydFRhZ0hpc3RvcnkoQ1NTU2VsZWN0
b3I6OlJlbGF0aW9uVHlwZSBiZWZvcmUsIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gc2VsZWN0b3IsIENTU1NlbGVjdG9yOjpSZWxhdGlvblR5cGUgYWZ0ZXIpCit7CisgICAgaWYg
KG1fdGFnSGlzdG9yeSkKKyAgICAgICAgc2VsZWN0b3ItPnNldFRhZ0hpc3RvcnkoV1RGTW92ZSht
X3RhZ0hpc3RvcnkpKTsKKyAgICBzZXRSZWxhdGlvbihiZWZvcmUpOworICAgIHNlbGVjdG9yLT5z
ZXRSZWxhdGlvbihhZnRlcik7CisgICAgbV90YWdIaXN0b3J5ID0gV1RGTW92ZShzZWxlY3Rvcik7
Cit9CisKK3ZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFwcGVuZFRhZ0hpc3RvcnkoQ1NTU2VsZWN0
b3I6OlJlbGF0aW9uVHlwZSByZWxhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPiBzZWxlY3RvcikKK3sKKyAgICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gdGhpczsKKyAg
ICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9y
eSgpOworCisgICAgZW5kLT5zZXRSZWxhdGlvbihyZWxhdGlvbik7CisgICAgZW5kLT5zZXRUYWdI
aXN0b3J5KFdURk1vdmUoc2VsZWN0b3IpKTsKK30KKwordm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6
YXBwZW5kVGFnSGlzdG9yeShDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3IgcmVsYXRpb24sIHN0
ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc2VsZWN0b3IpCit7CisgICAgQ1NTUGFy
c2VyU2VsZWN0b3IqIGVuZCA9IHRoaXM7CisgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQor
ICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKworICAgIENTU1NlbGVjdG9yOjpSZWxh
dGlvblR5cGUgc2VsZWN0b3JSZWxhdGlvbjsKKyAgICBzd2l0Y2ggKHJlbGF0aW9uKSB7CisgICAg
Y2FzZSBDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3I6OkNoaWxkOgorICAgICAgICBzZWxlY3Rv
clJlbGF0aW9uID0gQ1NTU2VsZWN0b3I6OkNoaWxkOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1BhcnNlclNlbGVjdG9yQ29tYmluYXRvcjo6RGVzY2VuZGFudFNwYWNlOgorICAgICAgICBz
ZWxlY3RvclJlbGF0aW9uID0gQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnRTcGFjZTsKKyAgICAgICAg
YnJlYWs7CisjaWYgRU5BQkxFKENTU19TRUxFQ1RPUlNfTEVWRUw0KQorICAgIGNhc2UgQ1NTUGFy
c2VyU2VsZWN0b3JDb21iaW5hdG9yOjpEZXNjZW5kYW50RG91YmxlQ2hpbGQ6CisgICAgICAgIHNl
bGVjdG9yUmVsYXRpb24gPSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudERvdWJsZUNoaWxkOworICAg
ICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgQ1NTUGFyc2VyU2VsZWN0b3JDb21iaW5hdG9y
OjpEaXJlY3RBZGphY2VudDoKKyAgICAgICAgc2VsZWN0b3JSZWxhdGlvbiA9IENTU1NlbGVjdG9y
OjpEaXJlY3RBZGphY2VudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQYXJzZXJTZWxl
Y3RvckNvbWJpbmF0b3I6OkluZGlyZWN0QWRqYWNlbnQ6CisgICAgICAgIHNlbGVjdG9yUmVsYXRp
b24gPSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGVuZC0+c2V0UmVsYXRpb24oc2VsZWN0b3JSZWxhdGlvbik7CisgICAgZW5kLT5zZXRU
YWdIaXN0b3J5KFdURk1vdmUoc2VsZWN0b3IpKTsKK30KKwordm9pZCBDU1NQYXJzZXJTZWxlY3Rv
cjo6cHJlcGVuZFRhZ1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBib29s
IHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKK3sKKyAgICBhdXRvIHNlY29uZCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgc2Vjb25kLT5tX3NlbGVjdG9yID0gV1RG
TW92ZShtX3NlbGVjdG9yKTsKKyAgICBzZWNvbmQtPm1fdGFnSGlzdG9yeSA9IFdURk1vdmUobV90
YWdIaXN0b3J5KTsKKyAgICBtX3RhZ0hpc3RvcnkgPSBXVEZNb3ZlKHNlY29uZCk7CisKKyAgICBt
X3NlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lz
Rm9yTmFtZXNwYWNlUnVsZSk7CisgICAgbV9zZWxlY3Rvci0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0
b3I6OlN1YnNlbGVjdG9yKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9y
PiBDU1NQYXJzZXJTZWxlY3Rvcjo6cmVsZWFzZVRhZ0hpc3RvcnkoKQoreworICAgIHNldFJlbGF0
aW9uKENTU1NlbGVjdG9yOjpTdWJzZWxlY3Rvcik7CisgICAgcmV0dXJuIFdURk1vdmUobV90YWdI
aXN0b3J5KTsKK30KKworLy8gRklYTUUtTkVXUEFSU0VSOiBBZGQgc3VwcG9ydCBmb3IgOmhvc3Qt
Y29udGV4dAorYm9vbCBDU1NQYXJzZXJTZWxlY3Rvcjo6aXNIb3N0UHNldWRvU2VsZWN0b3IoKSBj
b25zdAoreworICAgIHJldHVybiBtYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAm
JiBwc2V1ZG9DbGFzc1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3N0OworfQor
Cit9CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2Vs
ZWN0b3IuY3BwCShyZXZpc2lvbiAyMDk2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlclNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIK
KyNpbmNsdWRlICJDU1NQYXJzZXJTZWxlY3Rvci5oIgogCiAjaW5jbHVkZSAiQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuaAkocmV2aXNpb24gMjA5
NjY2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oOjIw
OTY2NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
MyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBRdWFsaWZpZWROYW1lOworCitlbnVt
IGNsYXNzIENTU1BhcnNlclNlbGVjdG9yQ29tYmluYXRvciB7CisgICAgQ2hpbGQsCisgICAgRGVz
Y2VuZGFudFNwYWNlLAorI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JTX0xFVkVMNCkKKyAgICBEZXNj
ZW5kYW50RG91YmxlQ2hpbGQsCisjZW5kaWYKKyAgICBEaXJlY3RBZGphY2VudCwKKyAgICBJbmRp
cmVjdEFkamFjZW50Cit9OworCitjbGFzcyBDU1NQYXJzZXJTZWxlY3RvciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIENTU1BhcnNlclNlbGVjdG9y
KiBwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3JGcm9tU3RyaW5nVmlldyhTdHJpbmdWaWV3Jik7Cisg
ICAgc3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRTZWxlY3RvckZy
b21TdHJpbmdWaWV3KFN0cmluZ1ZpZXcmKTsKKyAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3Iq
IHBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIAorICAg
IENTU1BhcnNlclNlbGVjdG9yKCk7CisgICAgZXhwbGljaXQgQ1NTUGFyc2VyU2VsZWN0b3IoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworICAgIH5DU1NQYXJzZXJTZWxlY3RvcigpOworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENTU1NlbGVjdG9yPiByZWxlYXNlU2VsZWN0b3IoKSB7IHJldHVybiBXVEZN
b3ZlKG1fc2VsZWN0b3IpOyB9CisKKyAgICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUsIGJvb2wgbWF0Y2hMb3dlckNhc2UgPSBmYWxzZSkgeyBtX3NlbGVjdG9yLT5zZXRW
YWx1ZSh2YWx1ZSwgbWF0Y2hMb3dlckNhc2UpOyB9CisgICAgCisgICAgLy8gRklYTUUtTkVXUEFS
U0VSOiBUaGVzZSB0d28gbWV0aG9kcyBjYW4gZ28gYXdheSBvbmNlIG9sZCBwYXJzZXIgaXMgZ29u
ZS4KKyAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSwgYm9v
bCBpc0Nhc2VJbnNlbnNpdGl2ZSkgeyBtX3NlbGVjdG9yLT5zZXRBdHRyaWJ1dGUodmFsdWUsIGlz
Q2FzZUluc2Vuc2l0aXZlKTsgfQorICAgIHZvaWQgc2V0QXR0cmlidXRlVmFsdWVNYXRjaGluZ0lz
Q2FzZUluc2Vuc2l0aXZlKGJvb2wgaXNDYXNlSW5zZW5zaXRpdmUpIHsgbV9zZWxlY3Rvci0+c2V0
QXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUluc2Vuc2l0aXZlKGlzQ2FzZUluc2Vuc2l0aXZl
KTsgfQorICAgIAorICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZh
bHVlLCBib29sIGNvbnZlcnRUb0xvd2VyY2FzZSwgQ1NTU2VsZWN0b3I6OkF0dHJpYnV0ZU1hdGNo
VHlwZSB0eXBlKSB7IG1fc2VsZWN0b3ItPnNldEF0dHJpYnV0ZSh2YWx1ZSwgY29udmVydFRvTG93
ZXJjYXNlLCB0eXBlKTsgfQorICAgIAorICAgIHZvaWQgc2V0QXJndW1lbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRBcmd1bWVudCh2YWx1ZSk7IH0KKyAgICB2
b2lkIHNldE50aChpbnQgYSwgaW50IGIpIHsgbV9zZWxlY3Rvci0+c2V0TnRoKGEsIGIpOyB9Cisg
ICAgdm9pZCBzZXRNYXRjaChDU1NTZWxlY3Rvcjo6TWF0Y2ggdmFsdWUpIHsgbV9zZWxlY3Rvci0+
c2V0TWF0Y2godmFsdWUpOyB9CisgICAgdm9pZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6UmVs
YXRpb25UeXBlIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFJlbGF0aW9uKHZhbHVlKTsgfQorICAg
IHZvaWQgc2V0Rm9yUGFnZSgpIHsgbV9zZWxlY3Rvci0+c2V0Rm9yUGFnZSgpOyB9CisKKyAgICBD
U1NTZWxlY3Rvcjo6TWF0Y2ggbWF0Y2goKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5tYXRj
aCgpOyB9CisgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRUeXBlIHBzZXVkb0VsZW1lbnRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUoKTsgfQor
ICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4g
bV9zZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCk7IH0KKyAgICAKKyAgICB2b2lkIHNldFBzZXVkb0Vs
ZW1lbnRUeXBlKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VHlwZSB0eXBlKSB7IG1fc2VsZWN0
b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKHR5cGUpOyB9CisKKyAgICB2b2lkIGFkb3B0U2VsZWN0
b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiBzZWxl
Y3RvclZlY3Rvcik7CisgICAgdm9pZCBzZXRMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8QXRvbWljU3RyaW5nPj4pOworICAgIHZvaWQgc2V0U2VsZWN0b3JMaXN0KHN0ZDo6
dW5pcXVlX3B0cjxDU1NTZWxlY3Rvckxpc3Q+KTsKKworICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc1R5cGUgcHNldWRvQ2xhc3NUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+cHNl
dWRvQ2xhc3NUeXBlKCk7IH0KKyAgICBib29sIGlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0b3ItPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpOyB9CisKKyAgICBi
b29sIGlzUHNldWRvRWxlbWVudEN1ZUZ1bmN0aW9uKCkgY29uc3QKKyAgICB7CisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorICAgICAgICByZXR1cm4gbV9zZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiBtX3NlbGVjdG9yLT5wc2V1ZG9FbGVtZW50VHlwZSgp
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50Q3VlOworI2Vsc2UKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCisgICAgfQorCisgICAgYm9vbCBoYXNTaGFkb3dEZXNjZW5kYW50KCkg
Y29uc3Q7CisgICAgYm9vbCBtYXRjaGVzUHNldWRvRWxlbWVudCgpIGNvbnN0OworCisgICAgYm9v
bCBpc0hvc3RQc2V1ZG9TZWxlY3RvcigpIGNvbnN0OworCisgICAgLy8gRklYTUUtTkVXUEFSU0VS
OiAic2xvdHRlZCIgd2FzIHJlbW92ZWQgaGVyZSBmb3Igbm93LCBzaW5jZSBpdCBsZWFkcyB0byBh
IGNvbWJpbmF0b3IKKyAgICAvLyBjb25uZWN0aW9uIG9mIFNoYWRvd0Rlc2NlbmRhbnQsIGFuZCB0
aGUgY3VycmVudCBzaGFkb3cgRE9NIGNvZGUgZG9lc24ndCBleHBlY3QgdGhpcy4gV2hlbgorICAg
IC8vIHdlIGRvIGZpeCB0aGlzIGlzc3VlLCBtYWtlIHN1cmUgdG8gcGF0Y2ggdGhlIG5hbWVzcGFj
ZSBwcmVwZW5kVGFnIGNvZGUgdG8gcmVtb3ZlIHRoZSBzbG90dGVkCisgICAgLy8gc3BlY2lhbCBj
YXNlLCBzaW5jZSBpdCB3aWxsIGJlIGNvdmVyZWQgYnkgdGhpcyBmdW5jdGlvbiBvbmNlIGFnYWlu
LgorICAgIGJvb2wgbmVlZHNJbXBsaWNpdFNoYWRvd0NvbWJpbmF0b3JGb3JNYXRjaGluZygpIGNv
bnN0OworCisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHRhZ0hpc3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3RhZ0hpc3RvcnkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFRhZ0hpc3Rvcnkoc3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvcikgeyBtX3RhZ0hpc3RvcnkgPSBXVEZN
b3ZlKHNlbGVjdG9yKTsgfQorICAgIHZvaWQgY2xlYXJUYWdIaXN0b3J5KCkgeyBtX3RhZ0hpc3Rv
cnkucmVzZXQoKTsgfQorICAgIHZvaWQgaW5zZXJ0VGFnSGlzdG9yeShDU1NTZWxlY3Rvcjo6UmVs
YXRpb25UeXBlIGJlZm9yZSwgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiwgQ1NT
U2VsZWN0b3I6OlJlbGF0aW9uVHlwZSBhZnRlcik7CisgICAgdm9pZCBhcHBlbmRUYWdIaXN0b3J5
KENTU1NlbGVjdG9yOjpSZWxhdGlvblR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4pOworICAgIHZvaWQgYXBwZW5kVGFnSGlzdG9yeShDU1NQYXJzZXJTZWxlY3RvckNvbWJp
bmF0b3IsIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4pOworICAgIHZvaWQgcHJl
cGVuZFRhZ1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBib29sIHRhZ0lzRm9yTmFtZXNw
YWNlUnVsZSA9IGZhbHNlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
IHJlbGVhc2VUYWdIaXN0b3J5KCk7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPENT
U1NlbGVjdG9yPiBtX3NlbGVjdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gbV90YWdIaXN0b3J5OworfTsKKworaW5saW5lIGJvb2wgQ1NTUGFyc2VyU2VsZWN0b3I6
Omhhc1NoYWRvd0Rlc2NlbmRhbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlbGVjdG9yLT5y
ZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OworfQorCitpbmxpbmUg
Ym9vbCBDU1NQYXJzZXJTZWxlY3Rvcjo6bmVlZHNJbXBsaWNpdFNoYWRvd0NvbWJpbmF0b3JGb3JN
YXRjaGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0VsZW1lbnQKKyAgICAgICAgJiYgKHBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb0VsZW1lbnRXZWJLaXRDdXN0b20KKyAgICAgICAgICAgIHx8IHBzZXVkb0VsZW1l
bnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRVc2VyQWdlbnRDdXN0b20KKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgICAgICB8fCBwc2V1ZG9FbGVtZW50VHlwZSgp
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50Q3VlCisjZW5kaWYKKyAgICAgICAgICAgIHx8
IHBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRXZWJLaXRD
dXN0b21MZWdhY3lQcmVmaXhlZCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwCShyZXZpc2lvbiAyMDk2NjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHAJKG5vbmV4aXN0
ZW50KQpAQCAtMSwyNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA4LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgotCi0jaW5jbHVkZSAiQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgotI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTRnVuY3Rpb25WYWx1ZS5oIgotI2lu
Y2x1ZGUgIkNTU1NlbGVjdG9yLmgiCi0jaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCi0jaW5j
bHVkZSAiU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmgiCi0KLSNpZiBDT01QSUxFUihNU1ZDKQotLy8g
U2VlIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvMXdlYTV6d2UuYXNw
eAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MDEpCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgV1RGOwotCi1DU1NQYXJzZXJTZWxlY3RvciogQ1NT
UGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHNldWRvVHlwZVN0cmluZykKLXsKLSAgICBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNz
VHlwZSBwc2V1ZG9UeXBlOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShw
c2V1ZG9UeXBlU3RyaW5nLCAiZmlyc3QiKSkKLSAgICAgICAgcHNldWRvVHlwZSA9IENTU1NlbGVj
dG9yOjpQYWdlUHNldWRvQ2xhc3NGaXJzdDsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShwc2V1ZG9UeXBlU3RyaW5nLCAibGVmdCIpKQotICAgICAgICBwc2V1ZG9U
eXBlID0gQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzc0xlZnQ7Ci0gICAgZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocHNldWRvVHlwZVN0cmluZywgInJpZ2h0IikpCi0g
ICAgICAgIHBzZXVkb1R5cGUgPSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzUmlnaHQ7Ci0g
ICAgZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBhdXRvIHNlbGVjdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKLSAgICBzZWxlY3Rvci0+
bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcyk7Ci0gICAg
c2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBhZ2VQc2V1ZG9UeXBlKHBzZXVkb1R5cGUpOwotICAg
IHJldHVybiBzZWxlY3Rvci5yZWxlYXNlKCk7Ci19Ci0KLUNTU1BhcnNlclNlbGVjdG9yKiBDU1NQ
YXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3JGcm9tU3RyaW5nVmlldyhT
dHJpbmdWaWV3JiBwc2V1ZG9UeXBlU3RyaW5nKQotewotICAgIEF0b21pY1N0cmluZyBuYW1lID0g
cHNldWRvVHlwZVN0cmluZy50b0F0b21pY1N0cmluZygpOwotICAgIAotICAgIENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50VHlwZSBwc2V1ZG9UeXBlID0gQ1NTU2VsZWN0b3I6OnBhcnNlUHNldWRv
RWxlbWVudFR5cGUobmFtZSk7Ci0gICAgaWYgKHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0VsZW1lbnRVbmtub3duKSB7Ci0gICAgICAgIC8vIEZJWE1FLU5FV1BBUlNFUjogV2UgY2Fu
J3QgYWRkICJzbG90dGVkIiB0byB0aGUgbWFwIHdpdGhvdXQgYnJlYWtpbmcgdGhlIG9sZAotICAg
ICAgICAvLyBwYXJzZXIsIHNvIHRoaXMgaGFjayBlbnN1cmVzIHRoZSBuZXcgcGFyc2VyIHN0aWxs
IHJlY29nbml6ZXMgaXQuIFdoZW4gdGhlIG5ldwotICAgICAgICAvLyBwYXJzZXIgdHVybnMgb24s
IHdlIGNhbiBhZGQgInNsb3R0ZWQiIHRvIHRoZSBtYXAgYW5kIHJlbW92ZSB0aGlzIGNvZGUuCi0g
ICAgICAgIGlmIChwc2V1ZG9UeXBlU3RyaW5nLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgi
c2xvdHRlZCIpKQotICAgICAgICAgICAgcHNldWRvVHlwZSA9IENTU1NlbGVjdG9yOjpQc2V1ZG9F
bGVtZW50U2xvdHRlZDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQotCi0gICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KCk7Ci0gICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVj
dG9yOjpQc2V1ZG9FbGVtZW50KTsKLSAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRv
RWxlbWVudFR5cGUocHNldWRvVHlwZSk7Ci0gICAgaWYgKHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb0VsZW1lbnRXZWJLaXRDdXN0b21MZWdhY3lQcmVmaXhlZCkgewotICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKG5hbWUgPT0gIi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiLCAi
LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciBpcyB0aGUgb25seSBMZWdhY3lQcmVmaXggcHNldWRv
IHR5cGUuIik7Ci0gICAgICAgIGlmIChuYW1lID09ICItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVy
IikKLSAgICAgICAgICAgIG5hbWUgPSBBdG9taWNTdHJpbmcoInBsYWNlaG9sZGVyIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgfQotICAgIHNlbGVjdG9yLT5tX3Nl
bGVjdG9yLT5zZXRWYWx1ZShuYW1lKTsKLSAgICByZXR1cm4gc2VsZWN0b3IucmVsZWFzZSgpOwot
fQotCi1DU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xh
c3NTZWxlY3RvckZyb21TdHJpbmdWaWV3KFN0cmluZ1ZpZXcmIHBzZXVkb1R5cGVTdHJpbmcpCi17
Ci0gICAgUHNldWRvQ2xhc3NPckNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50IHBzZXVkb1R5cGUg
PSBwYXJzZVBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRTdHJpbmcocHNldWRvVHlw
ZVN0cmluZyk7Ci0gICAgaWYgKHBzZXVkb1R5cGUucHNldWRvQ2xhc3MgIT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVW5rbm93bikgewotICAgICAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKLSAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0
b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAgICAgIHNlbGVjdG9y
LT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9DbGFzc1R5cGUocHNldWRvVHlwZS5wc2V1ZG9DbGFzcyk7
Ci0gICAgICAgIHJldHVybiBzZWxlY3Rvci5yZWxlYXNlKCk7Ci0gICAgfQotICAgIGlmIChwc2V1
ZG9UeXBlLmNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50ICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9F
bGVtZW50VW5rbm93bikgewotICAgICAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKLSAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKLSAgICAgICAgc2VsZWN0b3ItPm1f
c2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5cGUuY29tcGF0aWJpbGl0eVBz
ZXVkb0VsZW1lbnQpOwotICAgICAgICBBdG9taWNTdHJpbmcgbmFtZSA9IHBzZXVkb1R5cGVTdHJp
bmcudG9BdG9taWNTdHJpbmcoKTsKLSAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFZh
bHVlKG5hbWUpOwotICAgICAgICByZXR1cm4gc2VsZWN0b3IucmVsZWFzZSgpOwotICAgIH0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVj
dG9yKCkKLSAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkK
LXsKLX0KLQotQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ1FOYW1lKQotICAgIDogbV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPENT
U1NlbGVjdG9yPih0YWdRTmFtZSkpCi17Ci19Ci0KLUNTU1BhcnNlclNlbGVjdG9yOjp+Q1NTUGFy
c2VyU2VsZWN0b3IoKQotewotICAgIGlmICghbV90YWdIaXN0b3J5KQotICAgICAgICByZXR1cm47
Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4sIDE2PiB0b0Rl
bGV0ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNlbGVjdG9yID0g
V1RGTW92ZShtX3RhZ0hpc3RvcnkpOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gbmV4dCA9IFdURk1vdmUoc2VsZWN0b3ItPm1f
dGFnSGlzdG9yeSk7Ci0gICAgICAgIHRvRGVsZXRlLmFwcGVuZChXVEZNb3ZlKHNlbGVjdG9yKSk7
Ci0gICAgICAgIGlmICghbmV4dCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzZWxlY3Rv
ciA9IFdURk1vdmUobmV4dCk7Ci0gICAgfQotfQotCi12b2lkIENTU1BhcnNlclNlbGVjdG9yOjph
ZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+PiYgc2VsZWN0b3JWZWN0b3IpCi17Ci0gICAgYXV0byBzZWxlY3Rvckxpc3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPENTU1NlbGVjdG9yTGlzdD4oKTsKLSAgICBzZWxlY3Rvckxpc3QtPmFkb3B0U2Vs
ZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwotICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9y
TGlzdChXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpOwotfQotCi12b2lkIENTU1BhcnNlclNlbGVjdG9y
OjpzZXRMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRvbWljU3RyaW5n
Pj4gYXJndW1lbnRMaXN0KQotewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWFyZ3VtZW50TGlz
dC0+aXNFbXB0eSgpLCAiTm8gQ1NTIFNlbGVjdG9yIHRha2VzIGFuIGVtcHR5IGFyZ3VtZW50IGxp
c3QuIik7Ci0gICAgbV9zZWxlY3Rvci0+c2V0TGFuZ0FyZ3VtZW50TGlzdChXVEZNb3ZlKGFyZ3Vt
ZW50TGlzdCkpOwotfQotCi12b2lkIENTU1BhcnNlclNlbGVjdG9yOjpzZXRTZWxlY3Rvckxpc3Qo
c3RkOjp1bmlxdWVfcHRyPENTU1NlbGVjdG9yTGlzdD4gc2VsZWN0b3JMaXN0KQotewotICAgIG1f
c2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpOwotfQotCi1z
dGF0aWMgYm9vbCBzZWxlY3Rvckxpc3RNYXRjaGVzUHNldWRvRWxlbWVudChjb25zdCBDU1NTZWxl
Y3Rvckxpc3QqIHNlbGVjdG9yTGlzdCkKLXsKLSAgICBpZiAoIXNlbGVjdG9yTGlzdCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc3ViU2VsZWN0
b3IgPSBzZWxlY3Rvckxpc3QtPmZpcnN0KCk7IHN1YlNlbGVjdG9yOyBzdWJTZWxlY3RvciA9IENT
U1NlbGVjdG9yTGlzdDo6bmV4dChzdWJTZWxlY3RvcikpIHsKLSAgICAgICAgZm9yIChjb25zdCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzdWJTZWxlY3Rvcjsgc2VsZWN0b3I7IHNlbGVjdG9yID0g
c2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgewotICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRj
aGVzUHNldWRvRWxlbWVudCgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc3Vic2VsZWN0b3JMaXN0ID0gc2VsZWN0
b3ItPnNlbGVjdG9yTGlzdCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yTGlzdE1h
dGNoZXNQc2V1ZG9FbGVtZW50KHN1YnNlbGVjdG9yTGlzdCkpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotYm9vbCBDU1NQYXJzZXJTZWxlY3Rvcjo6bWF0Y2hlc1BzZXVkb0VsZW1l
bnQoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlbGVjdG9yLT5tYXRjaGVzUHNldWRvRWxlbWVu
dCgpIHx8IHNlbGVjdG9yTGlzdE1hdGNoZXNQc2V1ZG9FbGVtZW50KG1fc2VsZWN0b3ItPnNlbGVj
dG9yTGlzdCgpKTsKLX0KLQotdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6aW5zZXJ0VGFnSGlzdG9y
eShDU1NTZWxlY3Rvcjo6UmVsYXRpb25UeXBlIGJlZm9yZSwgc3RkOjp1bmlxdWVfcHRyPENTU1Bh
cnNlclNlbGVjdG9yPiBzZWxlY3RvciwgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uVHlwZSBhZnRlcikK
LXsKLSAgICBpZiAobV90YWdIaXN0b3J5KQotICAgICAgICBzZWxlY3Rvci0+c2V0VGFnSGlzdG9y
eShXVEZNb3ZlKG1fdGFnSGlzdG9yeSkpOwotICAgIHNldFJlbGF0aW9uKGJlZm9yZSk7Ci0gICAg
c2VsZWN0b3ItPnNldFJlbGF0aW9uKGFmdGVyKTsKLSAgICBtX3RhZ0hpc3RvcnkgPSBXVEZNb3Zl
KHNlbGVjdG9yKTsKLX0KLQotdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YXBwZW5kVGFnSGlzdG9y
eShDU1NTZWxlY3Rvcjo6UmVsYXRpb25UeXBlIHJlbGF0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8Q1NT
UGFyc2VyU2VsZWN0b3I+IHNlbGVjdG9yKQotewotICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQg
PSB0aGlzOwotICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKLSAgICAgICAgZW5kID0gZW5k
LT50YWdIaXN0b3J5KCk7Ci0KLSAgICBlbmQtPnNldFJlbGF0aW9uKHJlbGF0aW9uKTsKLSAgICBl
bmQtPnNldFRhZ0hpc3RvcnkoV1RGTW92ZShzZWxlY3RvcikpOwotfQotCi12b2lkIENTU1BhcnNl
clNlbGVjdG9yOjphcHBlbmRUYWdIaXN0b3J5KENTU1BhcnNlclNlbGVjdG9yQ29tYmluYXRvciBy
ZWxhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvcikKLXsK
LSAgICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gdGhpczsKLSAgICB3aGlsZSAoZW5kLT50YWdI
aXN0b3J5KCkpCi0gICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOwotCi0gICAgQ1NTU2Vs
ZWN0b3I6OlJlbGF0aW9uVHlwZSBzZWxlY3RvclJlbGF0aW9uOwotICAgIHN3aXRjaCAocmVsYXRp
b24pIHsKLSAgICBjYXNlIENTU1BhcnNlclNlbGVjdG9yQ29tYmluYXRvcjo6Q2hpbGQ6Ci0gICAg
ICAgIHNlbGVjdG9yUmVsYXRpb24gPSBDU1NTZWxlY3Rvcjo6Q2hpbGQ7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTUGFyc2VyU2VsZWN0b3JDb21iaW5hdG9yOjpEZXNjZW5kYW50U3BhY2U6
Ci0gICAgICAgIHNlbGVjdG9yUmVsYXRpb24gPSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudFNwYWNl
OwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SU19MRVZFTDQpCi0gICAg
Y2FzZSBDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3I6OkRlc2NlbmRhbnREb3VibGVDaGlsZDoK
LSAgICAgICAgc2VsZWN0b3JSZWxhdGlvbiA9IENTU1NlbGVjdG9yOjpEZXNjZW5kYW50RG91Ymxl
Q2hpbGQ7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBDU1NQYXJzZXJTZWxlY3Rv
ckNvbWJpbmF0b3I6OkRpcmVjdEFkamFjZW50OgotICAgICAgICBzZWxlY3RvclJlbGF0aW9uID0g
Q1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U1BhcnNlclNlbGVjdG9yQ29tYmluYXRvcjo6SW5kaXJlY3RBZGphY2VudDoKLSAgICAgICAgc2Vs
ZWN0b3JSZWxhdGlvbiA9IENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgZW5kLT5zZXRSZWxhdGlvbihzZWxlY3RvclJlbGF0aW9uKTsKLSAg
ICBlbmQtPnNldFRhZ0hpc3RvcnkoV1RGTW92ZShzZWxlY3RvcikpOwotfQotCi12b2lkIENTU1Bh
cnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
UU5hbWUsIGJvb2wgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKQotewotICAgIGF1dG8gc2Vjb25kID0g
c3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKLSAgICBzZWNvbmQtPm1fc2Vs
ZWN0b3IgPSBXVEZNb3ZlKG1fc2VsZWN0b3IpOwotICAgIHNlY29uZC0+bV90YWdIaXN0b3J5ID0g
V1RGTW92ZShtX3RhZ0hpc3RvcnkpOwotICAgIG1fdGFnSGlzdG9yeSA9IFdURk1vdmUoc2Vjb25k
KTsKLQotICAgIG1fc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPih0YWdR
TmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKLSAgICBtX3NlbGVjdG9yLT5zZXRSZWxhdGlv
bihDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3IpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpyZWxlYXNlVGFnSGlzdG9yeSgpCi17Ci0g
ICAgc2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlN1YnNlbGVjdG9yKTsKLSAgICByZXR1cm4gV1RG
TW92ZShtX3RhZ0hpc3RvcnkpOwotfQotCi0vLyBGSVhNRS1ORVdQQVJTRVI6IEFkZCBzdXBwb3J0
IGZvciA6aG9zdC1jb250ZXh0Ci1ib29sIENTU1BhcnNlclNlbGVjdG9yOjppc0hvc3RQc2V1ZG9T
ZWxlY3RvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzICYmIHBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0hvc3Q7Ci19Ci0KLX0KLQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oCShy
ZXZpc2lvbiAyMDk2NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZh
bHVlcy5oCShub25leGlzdGVudCkKQEAgLTEsMTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwOCwgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKLSNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCi0j
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENTU1ZhbHVlOwotY2xhc3MgUXVhbGlmaWVkTmFtZTsK
LQotZW51bSBjbGFzcyBDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3IgewotICAgIENoaWxkLAot
ICAgIERlc2NlbmRhbnRTcGFjZSwKLSNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SU19MRVZFTDQpCi0g
ICAgRGVzY2VuZGFudERvdWJsZUNoaWxkLAotI2VuZGlmCi0gICAgRGlyZWN0QWRqYWNlbnQsCi0g
ICAgSW5kaXJlY3RBZGphY2VudAotfTsKLQotY2xhc3MgQ1NTUGFyc2VyU2VsZWN0b3IgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBDU1NQYXJzZXJT
ZWxlY3RvciogcGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9yRnJvbVN0cmluZ1ZpZXcoU3RyaW5nVmll
dyYpOwotICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VQc2V1ZG9FbGVtZW50U2Vs
ZWN0b3JGcm9tU3RyaW5nVmlldyhTdHJpbmdWaWV3Jik7Ci0gICAgc3RhdGljIENTU1BhcnNlclNl
bGVjdG9yKiBwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcihjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAg
ICAKLSAgICBDU1NQYXJzZXJTZWxlY3RvcigpOwotICAgIGV4cGxpY2l0IENTU1BhcnNlclNlbGVj
dG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB+Q1NTUGFyc2VyU2VsZWN0b3IoKTsKLQot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NTZWxlY3Rvcj4gcmVsZWFzZVNlbGVjdG9yKCkgeyByZXR1
cm4gV1RGTW92ZShtX3NlbGVjdG9yKTsgfQotCi0gICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlLCBib29sIG1hdGNoTG93ZXJDYXNlID0gZmFsc2UpIHsgbV9zZWxlY3Rv
ci0+c2V0VmFsdWUodmFsdWUsIG1hdGNoTG93ZXJDYXNlKTsgfQotICAgIAotICAgIC8vIEZJWE1F
LU5FV1BBUlNFUjogVGhlc2UgdHdvIG1ldGhvZHMgY2FuIGdvIGF3YXkgb25jZSBvbGQgcGFyc2Vy
IGlzIGdvbmUuCi0gICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFs
dWUsIGJvb2wgaXNDYXNlSW5zZW5zaXRpdmUpIHsgbV9zZWxlY3Rvci0+c2V0QXR0cmlidXRlKHZh
bHVlLCBpc0Nhc2VJbnNlbnNpdGl2ZSk7IH0KLSAgICB2b2lkIHNldEF0dHJpYnV0ZVZhbHVlTWF0
Y2hpbmdJc0Nhc2VJbnNlbnNpdGl2ZShib29sIGlzQ2FzZUluc2Vuc2l0aXZlKSB7IG1fc2VsZWN0
b3ItPnNldEF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmdJc0Nhc2VJbnNlbnNpdGl2ZShpc0Nhc2VJbnNl
bnNpdGl2ZSk7IH0KLSAgICAKLSAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB2YWx1ZSwgYm9vbCBjb252ZXJ0VG9Mb3dlcmNhc2UsIENTU1NlbGVjdG9yOjpBdHRyaWJ1
dGVNYXRjaFR5cGUgdHlwZSkgeyBtX3NlbGVjdG9yLT5zZXRBdHRyaWJ1dGUodmFsdWUsIGNvbnZl
cnRUb0xvd2VyY2FzZSwgdHlwZSk7IH0KLSAgICAKLSAgICB2b2lkIHNldEFyZ3VtZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0QXJndW1lbnQodmFsdWUpOyB9
Ci0gICAgdm9pZCBzZXROdGgoaW50IGEsIGludCBiKSB7IG1fc2VsZWN0b3ItPnNldE50aChhLCBi
KTsgfQotICAgIHZvaWQgc2V0TWF0Y2goQ1NTU2VsZWN0b3I6Ok1hdGNoIHZhbHVlKSB7IG1fc2Vs
ZWN0b3ItPnNldE1hdGNoKHZhbHVlKTsgfQotICAgIHZvaWQgc2V0UmVsYXRpb24oQ1NTU2VsZWN0
b3I6OlJlbGF0aW9uVHlwZSB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRSZWxhdGlvbih2YWx1ZSk7
IH0KLSAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQot
Ci0gICAgQ1NTU2VsZWN0b3I6Ok1hdGNoIG1hdGNoKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rv
ci0+bWF0Y2goKTsgfQotICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VHlwZSBwc2V1ZG9F
bGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBl
KCk7IH0KLSAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VsZWN0b3ItPnNlbGVjdG9yTGlzdCgpOyB9Ci0gICAgCi0gICAgdm9pZCBzZXRQ
c2V1ZG9FbGVtZW50VHlwZShDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFR5cGUgdHlwZSkgeyBt
X3NlbGVjdG9yLT5zZXRQc2V1ZG9FbGVtZW50VHlwZSh0eXBlKTsgfQotCi0gICAgdm9pZCBhZG9w
dFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
PiYgc2VsZWN0b3JWZWN0b3IpOwotICAgIHZvaWQgc2V0TGFuZ0FyZ3VtZW50TGlzdChzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPEF0b21pY1N0cmluZz4+KTsKLSAgICB2b2lkIHNldFNlbGVjdG9yTGlz
dChzdGQ6OnVuaXF1ZV9wdHI8Q1NTU2VsZWN0b3JMaXN0Pik7Ci0KLSAgICBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0
b3ItPnBzZXVkb0NsYXNzVHlwZSgpOyB9Ci0gICAgYm9vbCBpc0N1c3RvbVBzZXVkb0VsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKTsgfQot
Ci0gICAgYm9vbCBpc1BzZXVkb0VsZW1lbnRDdWVGdW5jdGlvbigpIGNvbnN0Ci0gICAgewotI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICAgICAgcmV0dXJuIG1fc2VsZWN0b3ItPm1hdGNoKCkg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgbV9zZWxlY3Rvci0+cHNldWRvRWxlbWVu
dFR5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudEN1ZTsKLSNlbHNlCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgIH0KLQotICAgIGJvb2wgaGFzU2hhZG93RGVzY2Vu
ZGFudCgpIGNvbnN0OwotICAgIGJvb2wgbWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSBjb25zdDsKLQot
ICAgIGJvb2wgaXNIb3N0UHNldWRvU2VsZWN0b3IoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FLU5F
V1BBUlNFUjogInNsb3R0ZWQiIHdhcyByZW1vdmVkIGhlcmUgZm9yIG5vdywgc2luY2UgaXQgbGVh
ZHMgdG8gYSBjb21iaW5hdG9yCi0gICAgLy8gY29ubmVjdGlvbiBvZiBTaGFkb3dEZXNjZW5kYW50
LCBhbmQgdGhlIGN1cnJlbnQgc2hhZG93IERPTSBjb2RlIGRvZXNuJ3QgZXhwZWN0IHRoaXMuIFdo
ZW4KLSAgICAvLyB3ZSBkbyBmaXggdGhpcyBpc3N1ZSwgbWFrZSBzdXJlIHRvIHBhdGNoIHRoZSBu
YW1lc3BhY2UgcHJlcGVuZFRhZyBjb2RlIHRvIHJlbW92ZSB0aGUgc2xvdHRlZAotICAgIC8vIHNw
ZWNpYWwgY2FzZSwgc2luY2UgaXQgd2lsbCBiZSBjb3ZlcmVkIGJ5IHRoaXMgZnVuY3Rpb24gb25j
ZSBhZ2Fpbi4KLSAgICBib29sIG5lZWRzSW1wbGljaXRTaGFkb3dDb21iaW5hdG9yRm9yTWF0Y2hp
bmcoKSBjb25zdDsKLQotICAgIENTU1BhcnNlclNlbGVjdG9yKiB0YWdIaXN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV90YWdIaXN0b3J5LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRUYWdIaXN0b3J5KHN0
ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc2VsZWN0b3IpIHsgbV90YWdIaXN0b3J5
ID0gV1RGTW92ZShzZWxlY3Rvcik7IH0KLSAgICB2b2lkIGNsZWFyVGFnSGlzdG9yeSgpIHsgbV90
YWdIaXN0b3J5LnJlc2V0KCk7IH0KLSAgICB2b2lkIGluc2VydFRhZ0hpc3RvcnkoQ1NTU2VsZWN0
b3I6OlJlbGF0aW9uVHlwZSBiZWZvcmUsIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4sIENTU1NlbGVjdG9yOjpSZWxhdGlvblR5cGUgYWZ0ZXIpOwotICAgIHZvaWQgYXBwZW5kVGFn
SGlzdG9yeShDU1NTZWxlY3Rvcjo6UmVsYXRpb25UeXBlLCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+KTsKLSAgICB2b2lkIGFwcGVuZFRhZ0hpc3RvcnkoQ1NTUGFyc2VyU2VsZWN0
b3JDb21iaW5hdG9yLCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+KTsKLSAgICB2
b2lkIHByZXBlbmRUYWdTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiwgYm9vbCB0YWdJc0Zv
ck5hbWVzcGFjZVJ1bGUgPSBmYWxzZSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNl
bGVjdG9yPiByZWxlYXNlVGFnSGlzdG9yeSgpOwotCi1wcml2YXRlOgotICAgIHN0ZDo6dW5pcXVl
X3B0cjxDU1NTZWxlY3Rvcj4gbV9zZWxlY3RvcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+IG1fdGFnSGlzdG9yeTsKLX07Ci0KLWlubGluZSBib29sIENTU1BhcnNlclNl
bGVjdG9yOjpoYXNTaGFkb3dEZXNjZW5kYW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxl
Y3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDsKLX0KLQot
aW5saW5lIGJvb2wgQ1NTUGFyc2VyU2VsZWN0b3I6Om5lZWRzSW1wbGljaXRTaGFkb3dDb21iaW5h
dG9yRm9yTWF0Y2hpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtYXRjaCgpID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9FbGVtZW50Ci0gICAgICAgICYmIChwc2V1ZG9FbGVtZW50VHlwZSgpID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9tCi0gICAgICAgICAgICB8fCBwc2V1
ZG9FbGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VXNlckFnZW50Q3Vz
dG9tCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICAgICAgICAgfHwgcHNldWRvRWxlbWVu
dFR5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudEN1ZQotI2VuZGlmCi0gICAgICAg
ICAgICB8fCBwc2V1ZG9FbGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
V2ViS2l0Q3VzdG9tTGVnYWN5UHJlZml4ZWQpOwotfQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5oCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NT
ZWxlY3RvclBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTU2VsZWN0b3JQYXJzZXIuaAkocmV2aXNpb24gMjA5NjY2KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsy
OSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ1NTUGFyc2VyU2VsZWN0b3IuaCIK
ICNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCi0jaW5jbHVkZSAiQ1NTUGFyc2VyVmFs
dWVzLmgiIC8vIEZJWE1FLU5FV1BBUlNFUiBDaGFuZ2Ugd2hlbiBDU1NQYXJzZXJTZWxlY3RvciBt
b3ZlcyBpbnRvIGl0cyBvd24gZmlsZS4KICNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsK
</data>
<flag name="review"
          id="319209"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>