<?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>218160</bug_id>
          
          <creation_ts>2020-10-25 10:34:21 -0700</creation_ts>
          <short_desc>[LFC Display] Move display box creation and geometry computation out of Display::TreeBuilder</short_desc>
          <delta_ts>2020-10-25 13:27:40 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1701312</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-25 10:34:21 -0700</bug_when>
    <thetext>[LFC Display] Move display box creation and geometry computation out of Display::TreeBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701313</commentid>
    <comment_count>1</comment_count>
      <attachid>412273</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-25 10:37:57 -0700</bug_when>
    <thetext>Created attachment 412273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701324</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-25 13:26:07 -0700</bug_when>
    <thetext>Committed r268959: &lt;https://trac.webkit.org/changeset/268959&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412273.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701327</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-25 13:27:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/70662726&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412273</attachid>
            <date>2020-10-25 10:37:57 -0700</date>
            <delta_ts>2020-10-25 13:26:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218160-20201025103756.patch</filename>
            <type>text/plain</type>
            <size>40593</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI0ZDgyMjFjZjI2MmRm
MDE2OGQyN2M1MjJkNjQ1MjA3M2Q4NjY5MC4uNGYwYjhjZDJjZWM3MTk3YjAxMWIzNTQyMjM0MTcw
MzUwOTFkMjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIwLTEwLTI1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkMgRGlzcGxh
eV0gTW92ZSBkaXNwbGF5IGJveCBjcmVhdGlvbiBhbmQgZ2VvbWV0cnkgY29tcHV0YXRpb24gb3V0
IG9mIERpc3BsYXk6OlRyZWVCdWlsZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTgxNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIERpc3BsYXk6OkJveEZhY3RvcnksIHdoaWNoIGhhcyB0aGUg
cmVzcG9uc2liaWxpdHkgb2YgbWFraW5nIERpc3BsYXk6OkJveGVzLAorICAgICAgICBhbmQgc2V0
dGluZyB1cCB0aGVpciBzdHlsZSBhbmQgZ2VvbWV0cnkuIFRoaXMgbW92ZXMgYWxsIG9mIHRoZSBw
aXhlbCBzbmFwcGluZyAKKyAgICAgICAgY29kZSBvdXQgb2YgRGlzcGxheTo6VHJlZUJ1aWxkZXIu
CisgICAgICAgIAorICAgICAgICBEaXNwbGF5OjpCb3ggc3ViY2xhc3NlcyBkZWNsYXJlIERpc3Bs
YXk6OkJveEZhY3RvcnkgYXMgYSBmcmllbmQgY2xhc3Mgc28gdGhhdCB0aGUgZmFjdG9yeQorICAg
ICAgICBjYW4gY2FsbCBnZW9tZXRyeSBzZXR0ZXIgZnVuY3Rpb25zICh0byBhdm9pZCBwYXNzaW5n
IGxvbmcgbGlzdHMgb2YgYXJndW1lbnRzIGRvd24gdGhyb3VnaAorICAgICAgICBjb25zdHJ1Y3Rv
cnMpLgorCisgICAgICAgIERpc3BsYXk6OlRleHRCb3gncyB0ZXh0KCkgaXMgbm8gbG9uZ2VyIE9w
dGlvbmFsPD4gYmVjYXVzZSB3ZSBvbmx5IG1ha2UgdGV4dCBib3hlcworICAgICAgICBmb3IgcnVu
cyB3aXRoIHRleHQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJl
ZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OlRy
ZWVCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpidWls
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6YnVpbGRJ
bmxpbmVEaXNwbGF5VHJlZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVl
QnVpbGRlcjo6cmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6Y29tcHV0ZUJveERlY29yYXRpb25EYXRhIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpkaXNw
bGF5Qm94Rm9yUm9vdEJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpUcmVlQnVpbGRlcjo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKiBkaXNw
bGF5L2Nzcy9EaXNwbGF5Qm94RGVjb3JhdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Qm94RGVjb3JhdGlvbkRhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
ZGlzcGxheS9jc3MvRGlzcGxheUJveERlY29yYXRpb25EYXRhLmg6CisgICAgICAgICogZGlzcGxh
eS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveEZhY3Rvcnk6OkJveEZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94RmFjdG9yeTo6ZGlzcGxheUJveEZvclJvb3RCb3ggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94RmFjdG9yeTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yVGV4
dFJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3hGYWN0b3J5OjpzZXR1
cEJveEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveEZhY3Rv
cnk6OmNvbnN0cnVjdEJveERlY29yYXRpb25EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkJveEZhY3Rvcnk6OnNldHVwQm94TW9kZWxCb3ggY29uc3QpOgorICAgICAgICAq
IGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmguCisgICAgICAgICogZGlzcGxheS9jc3Mv
RGlzcGxheUJveE1vZGVsQm94LmNwcDoKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Qm94
TW9kZWxCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveE1vZGVsQm94OjphYnNv
bHV0ZUJvcmRlckJveFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
TW9kZWxCb3g6OmFic29sdXRlUGFkZGluZ0JveFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6Qm94TW9kZWxCb3g6OmFic29sdXRlQ29udGVudEJveFJlY3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94TW9kZWxCb3g6OmJveERlY29yYXRpb25EYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveE1vZGVsQm94OjpzZXRBYnNv
bHV0ZVBhZGRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveE1vZGVs
Qm94OjpzZXRBYnNvbHV0ZUNvbnRlbnRCb3hSZWN0KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9E
aXNwbGF5Q1NTUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpDU1NQYWlu
dGVyOjpwYWludEJveENvbnRlbnQpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlGaWxs
TGF5ZXJJbWFnZUdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OmNhbGN1
bGF0ZUZpbGxMYXllckltYWdlR2VvbWV0cnkpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3Bs
YXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5Lmg6CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxh
eUltYWdlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkltYWdlQm94OjpJbWFn
ZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjptX2ltYWdlKToKKyAgICAgICAgKCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpJbWFnZUJveDo6c2V0SW1hZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlJbWFnZUJveC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6SW1hZ2VCb3g6OmltYWdlIGNvbnN0KToKKyAgICAgICAg
KiBkaXNwbGF5L2Nzcy9EaXNwbGF5UmVwbGFjZWRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6UmVwbGFjZWRCb3g6OlJlcGxhY2VkQm94KToKKyAgICAgICAgKiBkaXNwbGF5L2Nz
cy9EaXNwbGF5UmVwbGFjZWRCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJlcGxh
Y2VkQm94OjpzZXRSZXBsYWNlZENvbnRlbnRSZWN0KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9E
aXNwbGF5VGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjptX3RleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VGV4dEJveDo6ZGVidWdEZXNjcmlwdGlvbiBjb25z
dCk6CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OnRleHQgY29uc3QpOgorCiAyMDIwLTEwLTI0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkMgRGlzcGxh
eV0gSW1wbGVtZW50IGJhY2tncm91bmQgaW1hZ2UgcGFpbnRpbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
MWVmNDQ0YTE0YmI1NDY2Njc4NWI5NWIyNTllZGQxNzc5ODVhOGViMy4uMDI3YTVlNGY0OWVhY2Y0
Mjg2YTZhYzgzZGE2NDBmMzE5NjhjNjIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTgxNCw2ICs4MTQs
NyBAQCBjc3MvdHlwZWRvbS9UeXBlZE9NQ1NTVW5wYXJzZWRWYWx1ZS5jcHAKIGNzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcAogZGlzcGxheS9jc3MvRGlzcGxheUJveC5jcHAKIGRpc3BsYXkvY3Nz
L0Rpc3BsYXlCb3hEZWNvcmF0aW9uRGF0YS5jcHAKK2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0
b3J5LmNwcAogZGlzcGxheS9jc3MvRGlzcGxheUJveE1vZGVsQm94LmNwcAogZGlzcGxheS9jc3Mv
RGlzcGxheUNvbnRhaW5lckJveC5jcHAKIGRpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGM0NTkwNzFlYThhZjNiNDkyYTI3Mzc5MzAyNmY3YWI4Y2EzNzgyODYuLmZjZTIxNDlh
NTA2ZDNjNmU2ODJjNGM5MWE5YWQ1OTc5MWE1OWM0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU5ODgsNiArNTk4OCw4IEBA
CiAJCTBGNjBGMzJBMURGQkIxMDQwMDQxNkQ2QyAvKiBDb21tb25WTS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25WTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjYzODNEQjE4NjE1QjI5MDAzRTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZGVkU2Nyb2xsaW5n
VHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjM4M0RDMTg2MTVCMjkw
MDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNjU2RkI1MjU0NTJFNTQwMDIxOUY0QyAvKiBEaXNwbGF5Qm94RmFjdG9yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEaXNwbGF5Qm94RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjY1NkZCNjI1NDUyRTU0MDAyMTlGNEMgLyogRGlzcGxheUJveEZhY3Rvcnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheUJveEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjY5RjJCNjIyOEI5OEZGMDA4RDM1NjUgLyogTGF5ZXJPdmVy
bGFwTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheWVyT3ZlcmxhcE1hcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjY5RjJCNzIyOEI5OEZGMDA4RDM1NjUgLyogTGF5ZXJPdmVybGFw
TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheWVyT3ZlcmxhcE1hcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1Z1Bh
Z2VPdmVybGF5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWJ1
Z1BhZ2VPdmVybGF5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzYyMyw2
ICsxNzYyNSw4IEBACiAJCQkJMEZGRjFCNzgyNTFCQzY1NzAwOTg3OTVBIC8qIERpc3BsYXlCb3gu
aCAqLywKIAkJCQkwRjk0NzIyQjI1MzRCMDQ1MDBGMTUzQzggLyogRGlzcGxheUJveERlY29yYXRp
b25EYXRhLmNwcCAqLywKIAkJCQkwRjk0NzIyOTI1MzRCMDQ1MDBGMTUzQzggLyogRGlzcGxheUJv
eERlY29yYXRpb25EYXRhLmggKi8sCisJCQkJMEY2NTZGQjYyNTQ1MkU1NDAwMjE5RjRDIC8qIERp
c3BsYXlCb3hGYWN0b3J5LmNwcCAqLywKKwkJCQkwRjY1NkZCNTI1NDUyRTU0MDAyMTlGNEMgLyog
RGlzcGxheUJveEZhY3RvcnkuaCAqLywKIAkJCQkwRjk0NzIyMDI1MzQwMTA5MDBGMTUzQzggLyog
RGlzcGxheUJveE1vZGVsQm94LmNwcCAqLywKIAkJCQkwRjk0NzIxRTI1MzQwMTA5MDBGMTUzQzgg
LyogRGlzcGxheUJveE1vZGVsQm94LmggKi8sCiAJCQkJMEZGRjFCNzQyNTFCQzY1NzAwOTg3OTVB
IC8qIERpc3BsYXlDb250YWluZXJCb3guY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxh
eS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDkzMjkxZDM0YWMzNDE4OGNmNjI4NTExNDli
MzE4YTU2NWVhY2M2NWYuLjVmYmM5OWRiYjQ4NGQxYTY1ODNmMWFlMDFkNWYxMDU1M2M4ODMyNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAKQEAg
LTI4LDExICsyOCw5IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
IAotI2luY2x1ZGUgIkRpc3BsYXlCb3hEZWNvcmF0aW9uRGF0YS5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlCb3hGYWN0b3J5LmgiCiAjaW5jbHVkZSAiRGlzcGxheUNvbnRhaW5lckJveC5oIgotI2luY2x1
ZGUgIkRpc3BsYXlJbWFnZUJveC5oIgogI2luY2x1ZGUgIkRpc3BsYXlTdHlsZS5oIgotI2luY2x1
ZGUgIkRpc3BsYXlUZXh0Qm94LmgiCiAjaW5jbHVkZSAiRGlzcGxheVRyZWUuaCIKICNpbmNsdWRl
ICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3hHZW9tZXRyeS5o
IgpAQCAtNDksNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxh
eSB7CiAKIFRyZWVCdWlsZGVyOjpUcmVlQnVpbGRlcihmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9y
KQotICAgIDogbV9waXhlbFNuYXBwaW5nRmFjdG9yKHBpeGVsU25hcHBpbmdGYWN0b3IpCisgICAg
OiBtX2JveEZhY3RvcnkocGl4ZWxTbmFwcGluZ0ZhY3RvcikKIHsKIH0KIApAQCAtNjIsNyArNjAs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VHJlZT4gVHJlZUJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExheW91
dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0
aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJCdWlsZGluZyBkaXNwbGF5IHRyZWUgZm9yOlxu
IiA8PCBsYXlvdXRUcmVlQXNUZXh0KHJvb3RMYXlvdXRCb3gsICZsYXlvdXRTdGF0ZSkpOwogCiAg
ICAgYXV0byBnZW9tZXRyeSA9IGxheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KHJvb3RMYXlvdXRC
b3gpOwotICAgIGF1dG8gcm9vdERpc3BsYXlCb3ggPSBkaXNwbGF5Qm94Rm9yUm9vdEJveChnZW9t
ZXRyeSwgcm9vdExheW91dEJveCk7CisgICAgYXV0byByb290RGlzcGxheUJveCA9IG1fYm94RmFj
dG9yeS5kaXNwbGF5Qm94Rm9yUm9vdEJveChyb290TGF5b3V0Qm94LCBnZW9tZXRyeSk7CiAgICAg
YXV0byByb290RGlzcGxheUNvbnRhaW5lckJveCA9IHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJC
b3g+IHsgZG93bmNhc3Q8Q29udGFpbmVyQm94Pihyb290RGlzcGxheUJveC5yZWxlYXNlKCkpIH07
CiAKICAgICBpZiAoIXJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKQpAQCAtOTgsMTcgKzk2LDcg
QEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRJbmxpbmVEaXNwbGF5VHJlZShjb25zdCBMYXlvdXQ6
OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwKICAgICBmb3IgKGF1dG8mIHJ1biA6IGlubGluZUZv
cm1hdHRpbmdTdGF0ZS5saW5lUnVucygpKSB7CiAgICAgICAgIGlmIChydW4udGV4dCgpKSB7CiAg
ICAgICAgICAgICBhdXRvJiBsaW5lR2VvbWV0cnkgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGlu
ZXMoKS5hdChydW4ubGluZUluZGV4KCkpOwotCi0gICAgICAgICAgICBhdXRvIGxpbmVSZWN0ID0g
bGluZUdlb21ldHJ5LmxvZ2ljYWxSZWN0KCk7Ci0gICAgICAgICAgICBhdXRvIGxpbmVMYXlvdXRS
ZWN0ID0gTGF5b3V0UmVjdCB7IGxpbmVSZWN0LmxlZnQoKSwgbGluZVJlY3QudG9wKCksIGxpbmVS
ZWN0LndpZHRoKCksIGxpbmVSZWN0LmhlaWdodCgpIH07Ci0KLSAgICAgICAgICAgIGF1dG8gcnVu
UmVjdCA9IExheW91dFJlY3QgeyBydW4ubG9naWNhbExlZnQoKSwgcnVuLmxvZ2ljYWxUb3AoKSwg
cnVuLmxvZ2ljYWxXaWR0aCgpLCBydW4ubG9naWNhbEhlaWdodCgpIH07Ci0gICAgICAgICAgICBy
dW5SZWN0Lm1vdmVCeShsaW5lTGF5b3V0UmVjdC5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgIHJ1
blJlY3QubW92ZShvZmZzZXRGcm9tUm9vdCk7Ci0KLSAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBT
dHlsZSB7IHJ1bi5sYXlvdXRCb3goKS5zdHlsZSgpIH07Ci0gICAgICAgICAgICBhdXRvIHRleHRC
b3ggPSBtYWtlVW5pcXVlPFRleHRCb3g+KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocnVuUmVjdCwg
bV9waXhlbFNuYXBwaW5nRmFjdG9yKSwgV1RGTW92ZShzdHlsZSksIHJ1bik7Ci0KKyAgICAgICAg
ICAgIGF1dG8gdGV4dEJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94Rm9yVGV4dFJ1bihydW4s
IGxpbmVHZW9tZXRyeSwgb2Zmc2V0RnJvbVJvb3QpOwogICAgICAgICAgICAgaW5zZXJ0KFdURk1v
dmUodGV4dEJveCksIGluc2VydGlvblBvc2l0aW9uKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CkBAIC0xMTksNDQgKzEwNywyMiBAQCB2b2lkIFRyZWVCdWlsZGVyOjpidWlsZElu
bGluZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLAog
ICAgICAgICB9CiAKICAgICAgICAgYXV0byBnZW9tZXRyeSA9IGxheW91dFN0YXRlLmdlb21ldHJ5
Rm9yQm94KHJ1bi5sYXlvdXRCb3goKSk7Ci0gICAgICAgIGF1dG8gZGlzcGxheUJveCA9IGRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goZ2VvbWV0cnksIHJ1bi5sYXlvdXRCb3goKSwgb2Zmc2V0RnJvbVJv
b3QpOworICAgICAgICBhdXRvIGRpc3BsYXlCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZv
ckxheW91dEJveChydW4ubGF5b3V0Qm94KCksIGdlb21ldHJ5LCBvZmZzZXRGcm9tUm9vdCk7CiAg
ICAgICAgIGluc2VydChXVEZNb3ZlKGRpc3BsYXlCb3gpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiAg
ICAgfQogfQogCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgaGFwcGVuIGFzIHBhcnQgb2YgRGlzcGxh
eTo6Qm94IGNyZWF0aW9uLgotdm9pZCBUcmVlQnVpbGRlcjo6Y29tcHV0ZUJveERlY29yYXRpb25E
YXRhKEJveE1vZGVsQm94JiBib3gsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0
IExheW91dDo6Qm94R2VvbWV0cnkmIGdlb21ldHJ5LCBMYXlvdXRTaXplIG9mZnNldEZyb21Sb290
KSBjb25zdAotewotICAgIGF1dG8gYm9yZGVyQm94UmVjdCA9IExheW91dFJlY3QgeyBMYXlvdXQ6
OkJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGdlb21ldHJ5KSB9OwotICAgIGJvcmRlckJveFJl
Y3QubW92ZShvZmZzZXRGcm9tUm9vdCk7Ci0KLSAgICBhdXRvIHBhZGRpbmdCb3hSZWN0ID0gTGF5
b3V0UmVjdCB7IGdlb21ldHJ5LnBhZGRpbmdCb3goKSB9OwotICAgIHBhZGRpbmdCb3hSZWN0Lm1v
dmVCeShib3JkZXJCb3hSZWN0LmxvY2F0aW9uKCkpOwotICAgIGJveC5zZXRBYnNvbHV0ZVBhZGRp
bmdCb3hSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocGFkZGluZ0JveFJlY3QsIG1fcGl4ZWxT
bmFwcGluZ0ZhY3RvcikpOwotCi0gICAgYXV0byBjb250ZW50Qm94UmVjdCA9IExheW91dFJlY3Qg
eyBnZW9tZXRyeS5jb250ZW50Qm94KCkgfTsKLSAgICBjb250ZW50Qm94UmVjdC5tb3ZlQnkoYm9y
ZGVyQm94UmVjdC5sb2NhdGlvbigpKTsKLSAgICBib3guc2V0QWJzb2x1dGVDb250ZW50Qm94UmVj
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNvbnRlbnRCb3hSZWN0LCBtX3BpeGVsU25hcHBpbmdG
YWN0b3IpKTsKLQotICAgIC8vIEZJWE1FOiBDaGVjayBmb3Igcm91bmRlZCBib3JkZXJzIHdoZW4g
c3VwcG9ydGVkLgotICAgIGlmICghYm94LnN0eWxlKCkuaGFzQmFja2dyb3VuZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvIGJveERlY29yYXRpb25EYXRhID0gQm94RGVjb3JhdGlvbkRh
dGE6OmNyZWF0ZShib3gsIGxheW91dEJveCwgZ2VvbWV0cnksIG9mZnNldEZyb21Sb290LCBtX3Bp
eGVsU25hcHBpbmdGYWN0b3IpOwotICAgIGJveC5zZXRCb3hEZWNvcmF0aW9uRGF0YShXVEZNb3Zl
KGJveERlY29yYXRpb25EYXRhKSk7Ci19Ci0KLXZvaWQgVHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1
aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIExh
eW91dFNpemUgb2Zmc2V0RnJvbVJvb3QsIGNvbnN0IExheW91dDo6Qm94JiBib3gsIEluc2VydGlv
blBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikgY29uc3QKK3ZvaWQgVHJlZUJ1aWxkZXI6OnJl
Y3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QsIGNvbnN0IExheW91dDo6Qm94JiBsYXlv
dXRCb3gsIEluc2VydGlvblBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikgY29uc3QKIHsKLSAg
ICBhdXRvIGdlb21ldHJ5ID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3goYm94KTsKLSAgICBh
dXRvIGRpc3BsYXlCb3ggPSBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGdlb21ldHJ5LCBib3gsIG9m
ZnNldEZyb21Sb290KTsKKyAgICBhdXRvIGdlb21ldHJ5ID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlG
b3JCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvIGRpc3BsYXlCb3ggPSBtX2JveEZhY3RvcnkuZGlz
cGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gsIGdlb21ldHJ5LCBvZmZzZXRGcm9tUm9vdCk7
CiAgICAgCiAgICAgaW5zZXJ0KFdURk1vdmUoZGlzcGxheUJveCksIGluc2VydGlvblBvc2l0aW9u
KTsKIAotICAgIGlmICghaXM8TGF5b3V0OjpDb250YWluZXJCb3g+KGJveCkpCisgICAgaWYgKCFp
czxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byYgbGF5b3V0Q29udGFpbmVyQm94ID0gZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJC
b3g+KGJveCk7CisgICAgYXV0byYgbGF5b3V0Q29udGFpbmVyQm94ID0gZG93bmNhc3Q8TGF5b3V0
OjpDb250YWluZXJCb3g+KGxheW91dEJveCk7CiAgICAgaWYgKCFsYXlvdXRDb250YWluZXJCb3gu
aGFzQ2hpbGQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzYsNTQgKzE0Miw2IEBAIHZvaWQg
VHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhCiAgICAgfQogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVl
QnVpbGRlcjo6ZGlzcGxheUJveEZvclJvb3RCb3goY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYg
Z2VvbWV0cnksIGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiByb290Qm94KSBjb25zdAotewot
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGRvIGxvZ2ljYWwgLT4gcGh5c2ljYWwgY29vcmRpbmF0ZSBt
YXBwaW5nIGhlcmUuCi0gICAgYXV0byBib3JkZXJCb3hSZWN0ID0gTGF5b3V0UmVjdCB7IExheW91
dDo6Qm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3QoZ2VvbWV0cnkpIH07Ci0KLSAgICBhdXRvIHN0
eWxlID0gU3R5bGUgeyByb290Qm94LnN0eWxlKCkgfTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
b250YWluZXJCb3g+KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyQm94UmVjdCwgbV9waXhl
bFNuYXBwaW5nRmFjdG9yKSwgV1RGTW92ZShzdHlsZSkpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8
Qm94PiBUcmVlQnVpbGRlcjo6ZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJv
eEdlb21ldHJ5JiBnZW9tZXRyeSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgTGF5b3V0
U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogTmVlZCB0byBtYXAg
bG9naWNhbCB0byBwaHlzaWNhbCByZWN0cy4KLSAgICBhdXRvIGJvcmRlckJveFJlY3QgPSBMYXlv
dXRSZWN0IHsgTGF5b3V0OjpCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChnZW9tZXRyeSkgfTsK
LSAgICBib3JkZXJCb3hSZWN0Lm1vdmUob2Zmc2V0RnJvbVJvb3QpOwotICAgIGF1dG8gcGl4ZWxT
bmFwcGVkQm9yZGVyQm94UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyQm94UmVj
dCwgbV9waXhlbFNuYXBwaW5nRmFjdG9yKTsKLQotICAgIC8vIEZJWE1FOiBIYW5kbGUgaXNBbm9u
eW1vdXMoKQotICAgIC8vIEZJWE1FOiBEbyBob2lzdGluZyBvZiA8Ym9keT4gc3R5bGVzIHRvIHRo
ZSByb290IHdoZXJlIGFwcHJvcHJpYXRlLgotCi0gICAgLy8gRklYTUU6IE5lZWQgdG8gZG8gbG9n
aWNhbCAtPiBwaHlzaWNhbCBjb29yZGluYXRlIG1hcHBpbmcgaGVyZS4KLSAgICBhdXRvIHN0eWxl
ID0gU3R5bGUgeyBsYXlvdXRCb3guc3R5bGUoKSB9OwotICAgIAotICAgIGlmIChpczxMYXlvdXQ6
OlJlcGxhY2VkQm94PihsYXlvdXRCb3gpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXcm9uZzsgZ2Vv
bWV0cnkgbmVlZHMgdG8gdmVuZCB0aGUgY29ycmVjdCByZXBsYWNlZCBjb250ZW50IHJlY3QuCi0g
ICAgICAgIGF1dG8gcmVwbGFjZWRDb250ZW50UmVjdCA9IExheW91dFJlY3QgeyBnZW9tZXRyeS5j
b250ZW50Qm94TGVmdCgpLCBnZW9tZXRyeS5jb250ZW50Qm94VG9wKCksIGdlb21ldHJ5LmNvbnRl
bnRCb3hXaWR0aCgpLCBnZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCkgfTsKLSAgICAgICAgcmVw
bGFjZWRDb250ZW50UmVjdC5tb3ZlQnkoYm9yZGVyQm94UmVjdC5sb2NhdGlvbigpKTsKLSAgICAg
ICAgYXV0byBwaXhlbFNuYXBwZWRSZXBsYWNlZENvbnRlbnRSZWN0ID0gc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhyZXBsYWNlZENvbnRlbnRSZWN0LCBtX3BpeGVsU25hcHBpbmdGYWN0b3IpOwotCi0g
ICAgICAgIC8vIEZJWE1FOiBEb24ndCBhc3N1bWUgaXQncyBhbiBpbWFnZS4KLSAgICAgICAgYXV0
byBpbWFnZUJveCA9IG1ha2VVbmlxdWU8SW1hZ2VCb3g+KHBpeGVsU25hcHBlZEJvcmRlckJveFJl
Y3QsIFdURk1vdmUoc3R5bGUpLCBwaXhlbFNuYXBwZWRSZXBsYWNlZENvbnRlbnRSZWN0KTsKLQot
ICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxMYXlvdXQ6OlJlcGxhY2Vk
Qm94PihsYXlvdXRCb3gpLmNhY2hlZEltYWdlKCkpCi0gICAgICAgICAgICBpbWFnZUJveC0+c2V0
SW1hZ2UoY2FjaGVkSW1hZ2UtPmltYWdlKCkpOwotCi0gICAgICAgIGNvbXB1dGVCb3hEZWNvcmF0
aW9uRGF0YSgqaW1hZ2VCb3gsIGxheW91dEJveCwgZ2VvbWV0cnksIG9mZnNldEZyb21Sb290KTsK
LSAgICAgICAgcmV0dXJuIGltYWdlQm94OwotICAgIH0KLSAgICAKLSAgICBpZiAoaXM8TGF5b3V0
OjpDb250YWluZXJCb3g+KGxheW91dEJveCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoZSBkZWNp
c2lvbiB0byBtYWtlIGEgQ29udGFpbmVyQm94IHNob3VsZCBiZSBtYWRlIGJhc2VkIG9uIHdoZXRo
ZXIgdGhpcyBEaXNwbGF5OjpCb3ggd2lsbCBoYXZlIGNoaWxkcmVuLgotICAgICAgICBhdXRvIGNv
bnRhaW5lckJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyQm94PihwaXhlbFNuYXBwZWRCb3JkZXJC
b3hSZWN0LCBXVEZNb3ZlKHN0eWxlKSk7Ci0gICAgICAgIGNvbXB1dGVCb3hEZWNvcmF0aW9uRGF0
YSgqY29udGFpbmVyQm94LCBsYXlvdXRCb3gsIGdlb21ldHJ5LCBvZmZzZXRGcm9tUm9vdCk7Ci0g
ICAgICAgIHJldHVybiBjb250YWluZXJCb3g7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1ha2VVbmlx
dWU8Qm94PihzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlckJveFJlY3QsIG1fcGl4ZWxTbmFw
cGluZ0ZhY3RvciksIFdURk1vdmUoc3R5bGUpKTsKLX0KLQogI2lmIEVOQUJMRShUUkVFX0RFQlVH
R0lORykKIAogc3RhdGljIHZvaWQgb3V0cHV0RGlzcGxheUJveChUZXh0U3RyZWFtJiBzdHJlYW0s
IGNvbnN0IEJveCYgZGlzcGxheUJveCwgdW5zaWduZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxh
eS9EaXNwbGF5VHJlZUJ1aWxkZXIuaAppbmRleCBlN2JlMTgzN2RmMjdmNmIwZTVmZmI4N2ExMzBl
MGIzY2E4YTU4OGU3Li5jMDM2OGU5NzBjNzU3ZWIwYjhhNzg5ZGU3YThlZWMzNmY1OTAzZjA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCisjaW5j
bHVkZSAiRGlzcGxheUJveEZhY3RvcnkuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAK
ICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCkBAIC02MiwxOCArNjMsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgRGlzcGxheTo6Qm94KiBjdXJyZW50Q2hpbGQgeyBudWxscHRyIH07CiAgICAgfTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JSb290Qm94KGNvbnN0IExh
eW91dDo6Qm94R2VvbWV0cnkmLCBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYpIGNvbnN0Owot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5
b3V0OjpCb3hHZW9tZXRyeSYsIGNvbnN0IExheW91dDo6Qm94JiwgTGF5b3V0U2l6ZSBvZmZzZXRG
cm9tUm9vdCkgY29uc3Q7Ci0KLSAgICB2b2lkIGNvbXB1dGVCb3hEZWNvcmF0aW9uRGF0YShCb3hN
b2RlbEJveCYsIGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYs
IExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QpIGNvbnN0OwotCiAgICAgdm9pZCByZWN1cnNpdmVC
dWlsZERpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBMYXlvdXRTaXplIG9m
ZnNldEZyb21Sb290LCBjb25zdCBMYXlvdXQ6OkJveCYsIEluc2VydGlvblBvc2l0aW9uJikgY29u
c3Q7CiAKICAgICB2b2lkIGJ1aWxkSW5saW5lRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlv
dXRTdGF0ZSYsIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QsIGNvbnN0IExheW91dDo6Q29udGFp
bmVyQm94JiwgSW5zZXJ0aW9uUG9zaXRpb24mKSBjb25zdDsKICAgICAKICAgICB2b2lkIGluc2Vy
dChzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYmLCBJbnNlcnRpb25Qb3NpdGlvbiYpIGNvbnN0OwogCi0g
ICAgZmxvYXQgbV9waXhlbFNuYXBwaW5nRmFjdG9yIHsgMSB9OworICAgIEJveEZhY3RvcnkgbV9i
b3hGYWN0b3J5OwogfTsKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hEZWNvcmF0aW9uRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RGVjb3JhdGlvbkRhdGEuY3Bw
CmluZGV4IDNiMzVmMDBhZWY5MDdmMGE5YjA1Zjg3YzYzYTUwNWJhMWIzNzhjNjIuLmIzZDBlZGYx
MWUyZmQ1MzdmZDM5ZDY1MmNkYThiYWYzZjk0ZDM2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hEZWNvcmF0aW9uRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveERlY29yYXRpb25EYXRhLmNwcApAQCAtMjQs
NyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEaXNwbGF5
Qm94LmgiCisjaW5jbHVkZSAiRGlzcGxheUJveERlY29yYXRpb25EYXRhLmgiCiAKICNpZiBFTkFC
TEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIApAQCAtMzQsMjAgKzM0LDkgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5IHsKIAotc3RkOjp1bmlxdWVfcHRyPEJv
eERlY29yYXRpb25EYXRhPiBCb3hEZWNvcmF0aW9uRGF0YTo6Y3JlYXRlKGNvbnN0IEJveCYgZGlz
cGxheUJveCwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0OjpCb3hH
ZW9tZXRyeSYgbGF5b3V0R2VvbWV0cnksIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QsIGZsb2F0
IHBpeGVsU25hcHBpbmdGYWN0b3IpCi17Ci0gICAgYXV0byBiYWNrZ3JvdW5kSW1hZ2VHZW9tZXRy
eSA9IGNhbGN1bGF0ZUZpbGxMYXllckltYWdlR2VvbWV0cnkoZGlzcGxheUJveCwgbGF5b3V0Qm94
LCBsYXlvdXRHZW9tZXRyeSwgb2Zmc2V0RnJvbVJvb3QsIHBpeGVsU25hcHBpbmdGYWN0b3IpOwot
Ci0gICAgYXV0byBib3hEZWNvcmF0aW9uRGF0YSA9IG1ha2VVbmlxdWU8Qm94RGVjb3JhdGlvbkRh
dGE+KCk7Ci0gICAgYm94RGVjb3JhdGlvbkRhdGEtPnNldEJhY2tncm91bmRJbWFnZUdlb21ldHJ5
KGJhY2tncm91bmRJbWFnZUdlb21ldHJ5KTsKLQotICAgIC8vIEZJWE1FOiBDb21wdXRlIHJvdW5k
ZWQgYm9yZGVyIHJlY3QuCi0KLSAgICByZXR1cm4gYm94RGVjb3JhdGlvbkRhdGE7Ci19Ci0KIEJv
eERlY29yYXRpb25EYXRhOjpCb3hEZWNvcmF0aW9uRGF0YSgpID0gZGVmYXVsdDsKIAorCiB9IC8v
IG5hbWVzcGFjZSBEaXNwbGF5CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hEZWNvcmF0aW9uRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveERlY29yYXRpb25EYXRhLmgKaW5k
ZXggODA3MmE5OGYyNWRiMjYxZmFhZmZlNzVhNjNiMjc3N2I1MTZkODI2OC4uNjJhOWE5YmViZGZk
OTUyMjU4MzdmMjJlOWE4MDI2YzhhNTIyMzczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheUJveERlY29yYXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9jc3MvRGlzcGxheUJveERlY29yYXRpb25EYXRhLmgKQEAgLTQ0LDggKzQ0LDYg
QEAgbmFtZXNwYWNlIERpc3BsYXkgewogY2xhc3MgQm94RGVjb3JhdGlvbkRhdGEgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKEJveERlY29yYXRpb25E
YXRhKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEJveERlY29yYXRpb25E
YXRhPiBjcmVhdGUoY29uc3QgQm94JiwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6
OkJveEdlb21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCwgZmxvYXQgcGl4ZWxTbmFw
cGluZ0ZhY3Rvcik7Ci0KICAgICBCb3hEZWNvcmF0aW9uRGF0YSgpOwogCiAgICAgY29uc3QgVmVj
dG9yPEZpbGxMYXllckltYWdlR2VvbWV0cnksIDE+IGJhY2tncm91bmRJbWFnZUdlb21ldHJ5KCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVl
YTA4MTdlOGFiMzJlZmU4MGQxZDJiNGM2ODcyYTU5YzU3MGRiYTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAKQEAgLTAs
MCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RGlzcGxheUJveEZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQorCisjaW5jbHVkZSAiRGlzcGxheUJveERlY29yYXRpb25EYXRhLmgiCisjaW5jbHVkZSAi
RGlzcGxheUZpbGxMYXllckltYWdlR2VvbWV0cnkuaCIKKyNpbmNsdWRlICJEaXNwbGF5SW1hZ2VC
b3guaCIKKyNpbmNsdWRlICJEaXNwbGF5VGV4dEJveC5oIgorI2luY2x1ZGUgIkxheW91dEJveEdl
b21ldHJ5LmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCisjaW5jbHVkZSAiTGF5
b3V0UmVwbGFjZWRCb3guaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3Bs
YXkgeworCitCb3hGYWN0b3J5OjpCb3hGYWN0b3J5KGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3Ip
CisgICAgOiBtX3BpeGVsU25hcHBpbmdGYWN0b3IocGl4ZWxTbmFwcGluZ0ZhY3RvcikKK3sKK30K
Kworc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvclJvb3RCb3go
Y29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3gsIGNvbnN0IExheW91dDo6
Qm94R2VvbWV0cnkmIGdlb21ldHJ5KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBOZWVkIHRvIGRv
IGxvZ2ljYWwgLT4gcGh5c2ljYWwgY29vcmRpbmF0ZSBtYXBwaW5nIGhlcmUuCisgICAgYXV0byBi
b3JkZXJCb3hSZWN0ID0gTGF5b3V0UmVjdCB7IExheW91dDo6Qm94R2VvbWV0cnk6OmJvcmRlckJv
eFJlY3QoZ2VvbWV0cnkpIH07CisKKyAgICBhdXRvIHN0eWxlID0gU3R5bGUgeyByb290TGF5b3V0
Qm94LnN0eWxlKCkgfTsKKyAgICBhdXRvIHJvb3RCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lckJv
eD4oc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJCb3hSZWN0LCBtX3BpeGVsU25hcHBpbmdG
YWN0b3IpLCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgc2V0dXBCb3hNb2RlbEJveCgqcm9vdEJveCwg
cm9vdExheW91dEJveCwgZ2VvbWV0cnksIHsgfSk7CisgICAgcmV0dXJuIHJvb3RCb3g7Cit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
Y29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYg
Z2VvbWV0cnksIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IE5lZWQgdG8gbWFwIGxvZ2ljYWwgdG8gcGh5c2ljYWwgcmVjdHMuCisgICAgYXV0byBib3Jk
ZXJCb3hSZWN0ID0gTGF5b3V0UmVjdCB7IExheW91dDo6Qm94R2VvbWV0cnk6OmJvcmRlckJveFJl
Y3QoZ2VvbWV0cnkpIH07CisgICAgYm9yZGVyQm94UmVjdC5tb3ZlKG9mZnNldEZyb21Sb290KTsK
KyAgICBhdXRvIHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKGJvcmRlckJveFJlY3QsIG1fcGl4ZWxTbmFwcGluZ0ZhY3Rvcik7CisKKyAgICAvLyBGSVhN
RTogSGFuZGxlIGlzQW5vbnltb3VzKCkKKyAgICAvLyBGSVhNRTogRG8gaG9pc3Rpbmcgb2YgPGJv
ZHk+IHN0eWxlcyB0byB0aGUgcm9vdCB3aGVyZSBhcHByb3ByaWF0ZS4KKworICAgIC8vIEZJWE1F
OiBOZWVkIHRvIGRvIGxvZ2ljYWwgLT4gcGh5c2ljYWwgY29vcmRpbmF0ZSBtYXBwaW5nIGhlcmUu
CisgICAgYXV0byBzdHlsZSA9IFN0eWxlIHsgbGF5b3V0Qm94LnN0eWxlKCkgfTsKKyAgICAKKyAg
ICBpZiAoaXM8TGF5b3V0OjpSZXBsYWNlZEJveD4obGF5b3V0Qm94KSkgeworICAgICAgICAvLyBG
SVhNRTogRG9uJ3QgYXNzdW1lIGl0J3MgYW4gaW1hZ2UuCisgICAgICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2U7CisgICAgICAgIGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PExheW91dDo6
UmVwbGFjZWRCb3g+KGxheW91dEJveCkuY2FjaGVkSW1hZ2UoKSkKKyAgICAgICAgICAgIGltYWdl
ID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CisKKyAgICAgICAgYXV0byBpbWFnZUJveCA9IG1ha2VV
bmlxdWU8SW1hZ2VCb3g+KHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QsIFdURk1vdmUoc3R5bGUp
LCBXVEZNb3ZlKGltYWdlKSk7CisgICAgICAgIHNldHVwQm94TW9kZWxCb3goKmltYWdlQm94LCBs
YXlvdXRCb3gsIGdlb21ldHJ5LCBvZmZzZXRGcm9tUm9vdCk7CisgICAgICAgIHJldHVybiBpbWFn
ZUJveDsKKyAgICB9CisgICAgCisgICAgaWYgKGlzPExheW91dDo6Q29udGFpbmVyQm94PihsYXlv
dXRCb3gpKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgZGVjaXNpb24gdG8gbWFrZSBhIENvbnRh
aW5lckJveCBzaG91bGQgYmUgbWFkZSBiYXNlZCBvbiB3aGV0aGVyIHRoaXMgRGlzcGxheTo6Qm94
IHdpbGwgaGF2ZSBjaGlsZHJlbi4KKyAgICAgICAgYXV0byBjb250YWluZXJCb3ggPSBtYWtlVW5p
cXVlPENvbnRhaW5lckJveD4ocGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCwgV1RGTW92ZShzdHls
ZSkpOworICAgICAgICBzZXR1cEJveE1vZGVsQm94KCpjb250YWluZXJCb3gsIGxheW91dEJveCwg
Z2VvbWV0cnksIG9mZnNldEZyb21Sb290KTsKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5lckJveDsK
KyAgICB9CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3g+KHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoYm9yZGVyQm94UmVjdCwgbV9waXhlbFNuYXBwaW5nRmFjdG9yKSwgV1RGTW92ZShzdHlsZSkp
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yVGV4
dFJ1bihjb25zdCBMYXlvdXQ6OkxpbmVSdW4mIHJ1biwgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5l
R2VvbWV0cnkmIGxpbmVHZW9tZXRyeSwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3QK
K3sKKyAgICBBU1NFUlQocnVuLnRleHQoKSk7CisgICAgYXV0byBsaW5lUmVjdCA9IGxpbmVHZW9t
ZXRyeS5sb2dpY2FsUmVjdCgpOworICAgIGF1dG8gbGluZUxheW91dFJlY3QgPSBMYXlvdXRSZWN0
IHsgbGluZVJlY3QubGVmdCgpLCBsaW5lUmVjdC50b3AoKSwgbGluZVJlY3Qud2lkdGgoKSwgbGlu
ZVJlY3QuaGVpZ2h0KCkgfTsKKworICAgIGF1dG8gcnVuUmVjdCA9IExheW91dFJlY3QgeyBydW4u
bG9naWNhbExlZnQoKSwgcnVuLmxvZ2ljYWxUb3AoKSwgcnVuLmxvZ2ljYWxXaWR0aCgpLCBydW4u
bG9naWNhbEhlaWdodCgpIH07CisgICAgcnVuUmVjdC5tb3ZlQnkobGluZUxheW91dFJlY3QubG9j
YXRpb24oKSk7CisgICAgcnVuUmVjdC5tb3ZlKG9mZnNldEZyb21Sb290KTsKKworICAgIGF1dG8g
c3R5bGUgPSBTdHlsZSB7IHJ1bi5sYXlvdXRCb3goKS5zdHlsZSgpIH07CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dEJveD4oc25hcFJlY3RUb0RldmljZVBpeGVscyhydW5SZWN0LCBtX3BpeGVs
U25hcHBpbmdGYWN0b3IpLCBXVEZNb3ZlKHN0eWxlKSwgcnVuKTsKK30KKwordm9pZCBCb3hGYWN0
b3J5OjpzZXR1cEJveEdlb21ldHJ5KEJveE1vZGVsQm94JiBib3gsIGNvbnN0IExheW91dDo6Qm94
JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYgbGF5b3V0R2VvbWV0cnksIExheW91dFNpemUg
b2Zmc2V0RnJvbVJvb3QpIGNvbnN0Cit7CisgICAgYXV0byBib3JkZXJCb3hSZWN0ID0gTGF5b3V0
UmVjdCB7IExheW91dDo6Qm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3QobGF5b3V0R2VvbWV0cnkp
IH07CisgICAgYm9yZGVyQm94UmVjdC5tb3ZlKG9mZnNldEZyb21Sb290KTsKKworICAgIGF1dG8g
cGFkZGluZ0JveFJlY3QgPSBMYXlvdXRSZWN0IHsgbGF5b3V0R2VvbWV0cnkucGFkZGluZ0JveCgp
IH07CisgICAgcGFkZGluZ0JveFJlY3QubW92ZUJ5KGJvcmRlckJveFJlY3QubG9jYXRpb24oKSk7
CisgICAgYm94LnNldEFic29sdXRlUGFkZGluZ0JveFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVs
cyhwYWRkaW5nQm94UmVjdCwgbV9waXhlbFNuYXBwaW5nRmFjdG9yKSk7CisKKyAgICBhdXRvIGNv
bnRlbnRCb3hSZWN0ID0gTGF5b3V0UmVjdCB7IGxheW91dEdlb21ldHJ5LmNvbnRlbnRCb3goKSB9
OworICAgIGNvbnRlbnRCb3hSZWN0Lm1vdmVCeShib3JkZXJCb3hSZWN0LmxvY2F0aW9uKCkpOwor
ICAgIGJveC5zZXRBYnNvbHV0ZUNvbnRlbnRCb3hSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
Y29udGVudEJveFJlY3QsIG1fcGl4ZWxTbmFwcGluZ0ZhY3RvcikpOworCisgICAgaWYgKGlzPFJl
cGxhY2VkQm94Pihib3gpKSB7CisgICAgICAgIGF1dG8mIHJlcGxhY2VkQm94ID0gZG93bmNhc3Q8
UmVwbGFjZWRCb3g+KGJveCk7CisgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGdldCB0aGUgY29y
cmVjdCByZWN0IHRha2luZyBvYmplY3QtZml0IGV0YyBpbnRvIGFjY291bnQuCisgICAgICAgIGF1
dG8gcmVwbGFjZWRDb250ZW50UmVjdCA9IExheW91dFJlY3QgeyBsYXlvdXRHZW9tZXRyeS5jb250
ZW50Qm94TGVmdCgpLCBsYXlvdXRHZW9tZXRyeS5jb250ZW50Qm94VG9wKCksIGxheW91dEdlb21l
dHJ5LmNvbnRlbnRCb3hXaWR0aCgpLCBsYXlvdXRHZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCkg
fTsKKyAgICAgICAgcmVwbGFjZWRDb250ZW50UmVjdC5tb3ZlQnkoYm9yZGVyQm94UmVjdC5sb2Nh
dGlvbigpKTsKKyAgICAgICAgYXV0byBwaXhlbFNuYXBwZWRSZXBsYWNlZENvbnRlbnRSZWN0ID0g
c25hcFJlY3RUb0RldmljZVBpeGVscyhyZXBsYWNlZENvbnRlbnRSZWN0LCBtX3BpeGVsU25hcHBp
bmdGYWN0b3IpOworICAgICAgICByZXBsYWNlZEJveC5zZXRSZXBsYWNlZENvbnRlbnRSZWN0KHBp
eGVsU25hcHBlZFJlcGxhY2VkQ29udGVudFJlY3QpOworICAgIH0KK30KKworc3RkOjp1bmlxdWVf
cHRyPEJveERlY29yYXRpb25EYXRhPiBCb3hGYWN0b3J5Ojpjb25zdHJ1Y3RCb3hEZWNvcmF0aW9u
RGF0YShjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXQ6OkJveEdlb21l
dHJ5JiBsYXlvdXRHZW9tZXRyeSwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3QKK3sK
KyAgICBhdXRvIGJhY2tncm91bmRJbWFnZUdlb21ldHJ5ID0gY2FsY3VsYXRlRmlsbExheWVySW1h
Z2VHZW9tZXRyeShsYXlvdXRCb3gsIGxheW91dEdlb21ldHJ5LCBvZmZzZXRGcm9tUm9vdCwgbV9w
aXhlbFNuYXBwaW5nRmFjdG9yKTsKKworICAgIGF1dG8gYm94RGVjb3JhdGlvbkRhdGEgPSBtYWtl
VW5pcXVlPEJveERlY29yYXRpb25EYXRhPigpOworICAgIGJveERlY29yYXRpb25EYXRhLT5zZXRC
YWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShiYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSk7CisKKyAgICAv
LyBGSVhNRTogQ29tcHV0ZSByb3VuZGVkIGJvcmRlciByZWN0LgorCisgICAgcmV0dXJuIGJveERl
Y29yYXRpb25EYXRhOworfQorCit2b2lkIEJveEZhY3Rvcnk6OnNldHVwQm94TW9kZWxCb3goQm94
TW9kZWxCb3gmIGJveCwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0
OjpCb3hHZW9tZXRyeSYgbGF5b3V0R2VvbWV0cnksIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3Qp
IGNvbnN0Cit7CisgICAgc2V0dXBCb3hHZW9tZXRyeShib3gsIGxheW91dEJveCwgbGF5b3V0R2Vv
bWV0cnksIG9mZnNldEZyb21Sb290KTsKKworICAgIC8vIEZJWE1FOiBDaGVjayBmb3Igcm91bmRl
ZCBib3JkZXJzIHdoZW4gc3VwcG9ydGVkLgorICAgIGlmICghYm94LnN0eWxlKCkuaGFzQmFja2dy
b3VuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGJveERlY29yYXRpb25EYXRhID0g
Y29uc3RydWN0Qm94RGVjb3JhdGlvbkRhdGEobGF5b3V0Qm94LCBsYXlvdXRHZW9tZXRyeSwgb2Zm
c2V0RnJvbVJvb3QpOworICAgIGJveC5zZXRCb3hEZWNvcmF0aW9uRGF0YShXVEZNb3ZlKGJveERl
Y29yYXRpb25EYXRhKSk7Cit9CisKKworCit9IC8vIG5hbWVzcGFjZSBEaXNwbGF5Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hG
YWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA0ODQ4M2RmN2ZiOTFjOGJkNzY0YjY0MWIyYjY1ZmFhZTExMDc2MTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFj
dG9yeS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiTGF5b3V0U2l6
ZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgTGF5b3V0IHsKK2NsYXNzIEJveDsKK2NsYXNzIEJveEdlb21ldHJ5OworY2xh
c3MgSW5saW5lTGluZUdlb21ldHJ5OworY2xhc3MgUmVwbGFjZWRCb3g7CitzdHJ1Y3QgTGluZVJ1
bjsKK30KKworbmFtZXNwYWNlIERpc3BsYXkgeworCitjbGFzcyBCb3g7CitjbGFzcyBCb3hEZWNv
cmF0aW9uRGF0YTsKK2NsYXNzIEJveE1vZGVsQm94OworCitjbGFzcyBCb3hGYWN0b3J5IHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBCb3hGYWN0b3J5KGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3Ip
OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvclJvb3RCb3goY29uc3Qg
TGF5b3V0OjpDb250YWluZXJCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JikgY29uc3Q7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBM
YXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBMYXlvdXRTaXplIG9mZnNl
dEZyb21Sb290KSBjb25zdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hG
b3JUZXh0UnVuKGNvbnN0IExheW91dDo6TGluZVJ1biYsIGNvbnN0IExheW91dDo6SW5saW5lTGlu
ZUdlb21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3Q7Citwcml2YXRlOgor
CisgICAgdm9pZCBzZXR1cEJveEdlb21ldHJ5KEJveE1vZGVsQm94JiwgY29uc3QgTGF5b3V0OjpC
b3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9v
dCkgY29uc3Q7CisgICAgdm9pZCBzZXR1cEJveE1vZGVsQm94KEJveE1vZGVsQm94JiwgY29uc3Qg
TGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZz
ZXRGcm9tUm9vdCkgY29uc3Q7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94RGVjb3JhdGlvbkRh
dGE+IGNvbnN0cnVjdEJveERlY29yYXRpb25EYXRhKGNvbnN0IExheW91dDo6Qm94JiwgY29uc3Qg
TGF5b3V0OjpCb3hHZW9tZXRyeSYsIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QpIGNvbnN0Owor
CisgICAgZmxvYXQgbV9waXhlbFNuYXBwaW5nRmFjdG9yIHsgMSB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgRGlzcGxheQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisKKyNlbmRpZiAvLyBFTkFC
TEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hNb2RlbEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNw
bGF5L2Nzcy9EaXNwbGF5Qm94TW9kZWxCb3guY3BwCmluZGV4IDdhMjk1N2ZlNTBmN2I3YTkzYzQ4
YmEwOGQ5NWEwNmM4ZGUwOWI4NzUuLjZkYTAwOTgwMGRmNDBlOTEwNDIyNWUyYjlhMDljNDJlYzBl
MGQyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hN
b2RlbEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveE1v
ZGVsQm94LmNwcApAQCAtNDcsNyArNDcsNiBAQCB2b2lkIEJveE1vZGVsQm94OjpzZXRCb3hEZWNv
cmF0aW9uRGF0YShzdGQ6OnVuaXF1ZV9wdHI8Qm94RGVjb3JhdGlvbkRhdGE+JiYgZGVjbwogICAg
IG1fYm94RGVjb3JhdGlvbkRhdGEgPSBXVEZNb3ZlKGRlY29yYXRpb25EYXRhKTsKIH0KIAotCiBT
dHJpbmcgQm94TW9kZWxCb3g6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIFRleHRT
dHJlYW0gc3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheUJveE1vZGVsQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94
TW9kZWxCb3guaAppbmRleCBlYzJiMmM0NDljNjNjMTIzYWYxNjlkOGY5MDdmYTMwYmEwMDFkNDQ0
Li5kMzBjMTBmY2FlY2QyN2I4NjlmZWViZjdlZjk2MWVkZWJiYzYyYWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94TW9kZWxCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94TW9kZWxCb3guaApAQCAtNDMsMTkgKzQz
LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Cb3hNb2RlbEJveCgpOwogCiAgICAgQWJzb2x1
dGVGbG9hdFJlY3QgYWJzb2x1dGVCb3JkZXJCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gYWJzb2x1
dGVCb3hSZWN0KCk7IH0KLQogICAgIEFic29sdXRlRmxvYXRSZWN0IGFic29sdXRlUGFkZGluZ0Jv
eFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3BhZGRpbmdCb3hSZWN0OyB9Ci0gICAgdm9pZCBzZXRB
YnNvbHV0ZVBhZGRpbmdCb3hSZWN0KGNvbnN0IEFic29sdXRlRmxvYXRSZWN0JiBib3gpIHsgbV9w
YWRkaW5nQm94UmVjdCA9IGJveDsgfQotCiAgICAgQWJzb2x1dGVGbG9hdFJlY3QgYWJzb2x1dGVD
b250ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEJveFJlY3Q7IH0KLSAgICB2
b2lkIHNldEFic29sdXRlQ29udGVudEJveFJlY3QoY29uc3QgQWJzb2x1dGVGbG9hdFJlY3QmIGJv
eCkgeyBtX2NvbnRlbnRCb3hSZWN0ID0gYm94OyB9CiAKICAgICBjb25zdCBCb3hEZWNvcmF0aW9u
RGF0YSogYm94RGVjb3JhdGlvbkRhdGEoKSBjb25zdCB7IHJldHVybiBtX2JveERlY29yYXRpb25E
YXRhLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRCb3hEZWNvcmF0aW9uRGF0YShzdGQ6OnVuaXF1ZV9w
dHI8Qm94RGVjb3JhdGlvbkRhdGE+JiYpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZGVidWdEZXNj
cmlwdGlvbigpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBCb3hGYWN0b3J5
OworICAgIHZvaWQgc2V0QWJzb2x1dGVQYWRkaW5nQm94UmVjdChjb25zdCBBYnNvbHV0ZUZsb2F0
UmVjdCYgYm94KSB7IG1fcGFkZGluZ0JveFJlY3QgPSBib3g7IH0KKyAgICB2b2lkIHNldEFic29s
dXRlQ29udGVudEJveFJlY3QoY29uc3QgQWJzb2x1dGVGbG9hdFJlY3QmIGJveCkgeyBtX2NvbnRl
bnRCb3hSZWN0ID0gYm94OyB9CisgICAgdm9pZCBzZXRCb3hEZWNvcmF0aW9uRGF0YShzdGQ6OnVu
aXF1ZV9wdHI8Qm94RGVjb3JhdGlvbkRhdGE+JiYpOworCiAgICAgQWJzb2x1dGVGbG9hdFJlY3Qg
bV9wYWRkaW5nQm94UmVjdDsKICAgICBBYnNvbHV0ZUZsb2F0UmVjdCBtX2NvbnRlbnRCb3hSZWN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFp
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5j
cHAKaW5kZXggMTgzMDI1NGRjYWUwMDA4MmNlMWIzMTQyZDUxYWYwOGQxY2I5ZWU2OS4uNzdjMTJl
MTlhZjRiNDI3ZWU2ODZhNDQ1NGZmMjMwZTY5MDY2Mjc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmNwcApAQCAtMjAyLDggKzIwMiw2IEBA
IHZvaWQgQ1NTUGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KGNvbnN0IEJveCYgYm94LCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiAgICAgCiAgICAgaWYgKGlzPFRleHRCb3g+KGJveCkpIHsKICAg
ICAgICAgYXV0byYgdGV4dEJveCA9IGRvd25jYXN0PFRleHRCb3g+KGJveCk7Ci0gICAgICAgIGlm
ICghdGV4dEJveC50ZXh0KCkpCi0gICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byYg
c3R5bGUgPSBib3guc3R5bGUoKTsKICAgICAgICAgYXV0byB0ZXh0UmVjdCA9IGJveC5hYnNvbHV0
ZUJveFJlY3QoKTsKQEAgLTIxNSw3ICsyMTMsNyBAQCB2b2lkIENTU1BhaW50ZXI6OnBhaW50Qm94
Q29udGVudChjb25zdCBCb3gmIGJveCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAg
ICBhdXRvIGJhc2VsaW5lID0gdGV4dFJlY3QueSgpICsgc3R5bGUuZm9udE1ldHJpY3MoKS5hc2Nl
bnQoKTsKICAgICAgICAgYXV0byBleHBhbnNpb24gPSB0ZXh0Qm94LmV4cGFuc2lvbigpOwogCi0g
ICAgICAgIGF1dG8gdGV4dFJ1biA9IFRleHRSdW4geyB0ZXh0Qm94LnRleHQoKS0+Y29udGVudCgp
LnN1YnN0cmluZyh0ZXh0Qm94LnRleHQoKS0+c3RhcnQoKSwgdGV4dEJveC50ZXh0KCktPmxlbmd0
aCgpKSwgdGV4dFJlY3QueCgpLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5z
aW9uLmJlaGF2aW9yIH07CisgICAgICAgIGF1dG8gdGV4dFJ1biA9IFRleHRSdW4geyB0ZXh0Qm94
LnRleHQoKS5jb250ZW50KCkuc3Vic3RyaW5nKHRleHRCb3gudGV4dCgpLnN0YXJ0KCksIHRleHRC
b3gudGV4dCgpLmxlbmd0aCgpKSwgdGV4dFJlY3QueCgpLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4
cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CiAgICAgICAgIHRleHRSdW4uc2V0VGFiU2l6
ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CiAgICAgICAg
IGNvbnRleHQuZHJhd1RleHQoc3R5bGUuZm9udENhc2NhZGUoKSwgdGV4dFJ1biwgeyB0ZXh0UmVj
dC54KCksIGJhc2VsaW5lIH0pOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Rpc3BsYXkvY3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcAppbmRl
eCA2OWQzOTFlNDQ3M2JiMGQxZDY4ZWFjNzk2YzM0MzBjMDZlZjk3NzVhLi4zMGRmZjA4YTk3YmM5
Y2E0NGY2YTEzYmI5OGU3MWFjYjI2ZjBmNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
aXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUZpbGxMYXllckltYWdlR2VvbWV0cnkuY3BwCkBA
IC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIEZpbGxMYXllckltYWdlR2VvbWV0cnkgZ2VvbWV0cnlG
b3JMYXllcihjb25zdCBGaWxsTGF5ZXImIGZpbGxMYXllciwgTGF5b3UKICAgICByZXR1cm4gcGl4
ZWxTbmFwcGVkRmlsbExheWVySW1hZ2VHZW9tZXRyeShkZXN0aW5hdGlvblJlY3QsIHRpbGVTaXpl
LCBwaGFzZSwgc3BhY2VTaXplLCBmaWxsTGF5ZXIuYXR0YWNobWVudCgpLCBwaXhlbFNuYXBwaW5n
RmFjdG9yKTsKIH0KIAotVmVjdG9yPEZpbGxMYXllckltYWdlR2VvbWV0cnksIDE+IGNhbGN1bGF0
ZUZpbGxMYXllckltYWdlR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgTGF5b3V0OjpCb3gmIGxh
eW91dEJveCwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYgYm94R2VvbWV0cnksIExheW91dFNp
emUgb2Zmc2V0RnJvbVJvb3QsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpCitWZWN0b3I8Rmls
bExheWVySW1hZ2VHZW9tZXRyeSwgMT4gY2FsY3VsYXRlRmlsbExheWVySW1hZ2VHZW9tZXRyeShj
b25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBi
b3hHZW9tZXRyeSwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCwgZmxvYXQgcGl4ZWxTbmFwcGlu
Z0ZhY3RvcikKIHsKICAgICBhdXRvJiByZW5kZXJTdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExheWVy
SW1hZ2VHZW9tZXRyeS5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUZpbGxM
YXllckltYWdlR2VvbWV0cnkuaAppbmRleCAyYzlhZjNjNmRmZGRmZGY3MTE1YmQ5OTMzYmMxZjU3
YzAyODU4MmU3Li41MWM3NzQzM2Q0MjA1YzE4NTUxYTAwMWZiNjZhYzYxOTBkNjcwN2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExheWVySW1hZ2VH
ZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlGaWxsTGF5
ZXJJbWFnZUdlb21ldHJ5LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0
YW50cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWxsTGF5ZXI7CkBAIC03OSw3
ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc05vbkxvY2FsR2VvbWV0cnkgeyBmYWxz
ZSB9OyAvLyBIYXMgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZC4gSW1wbGllcyB0aGF0IHdl
IGNhbid0IGFsd2F5cyBjaGVhcGx5IGNvbXB1dGUgZGVzdFJlY3QuCiB9OwogCi1WZWN0b3I8Rmls
bExheWVySW1hZ2VHZW9tZXRyeSwgMT4gY2FsY3VsYXRlRmlsbExheWVySW1hZ2VHZW9tZXRyeShj
b25zdCBCb3gmLCBjb25zdCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkm
LCBMYXlvdXRTaXplIG9mZnNldEZyb21Sb290LCBmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yKTsK
K1ZlY3RvcjxGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LCAxPiBjYWxjdWxhdGVGaWxsTGF5ZXJJbWFn
ZUdlb21ldHJ5KGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYs
IExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpOwog
CiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5SW1hZ2VCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUltYWdlQm94LmNwcAppbmRleCBkMzUxZTQ3
ZTVhMmQ0YTNhNjNjNWNhM2QyZGEyMmRkMjM0ZmU5MTQyLi5kMmIyNDE0ZWQ3OTdiZmU2ZjY3YzM0
Njk4ZjNjZGY5ODAxY2YwMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nz
cy9EaXNwbGF5SW1hZ2VCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rp
c3BsYXlJbWFnZUJveC5jcHAKQEAgLTM0LDE2ICszNCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIERpc3BsYXkgewogCi1JbWFnZUJveDo6SW1hZ2VCb3goQWJzb2x1dGVGbG9h
dFJlY3QgYm9yZGVyQm94LCBTdHlsZSYmIGRpc3BsYXlTdHlsZSwgQWJzb2x1dGVGbG9hdFJlY3Qg
cmVwbGFjZWRDb250ZW50UmVjdCkKLSAgICA6IFJlcGxhY2VkQm94KGJvcmRlckJveCwgV1RGTW92
ZShkaXNwbGF5U3R5bGUpLCB7IEZsYWdzOjpJbWFnZUJveCB9LCByZXBsYWNlZENvbnRlbnRSZWN0
KQorSW1hZ2VCb3g6OkltYWdlQm94KEFic29sdXRlRmxvYXRSZWN0IGJvcmRlckJveCwgU3R5bGUm
JiBkaXNwbGF5U3R5bGUsIFJlZlB0cjxJbWFnZT4mJiBpbWFnZSkKKyAgICA6IFJlcGxhY2VkQm94
KGJvcmRlckJveCwgV1RGTW92ZShkaXNwbGF5U3R5bGUpLCB7IEZsYWdzOjpJbWFnZUJveCB9KQor
ICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKIHsKIH0KIAotdm9pZCBJbWFnZUJveDo6c2V0
SW1hZ2UoSW1hZ2UqIGltYWdlKQotewotICAgIG1faW1hZ2UgPSBpbWFnZTsKLX0KLQogU3RyaW5n
IEltYWdlQm94OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHN0
cmVhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlJbWFn
ZUJveC5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUltYWdlQm94LmgKaW5k
ZXggNmFhN2Y1NmQ2MDJmNzM4NzRjNWRlMjViZjc4Yjc5MTRlNWJmMWU5MS4uZmY1ZjlmYjU5MDVl
OTZlYzVlOWVlNmVjNmE0YTE0ZGU3OWI5NjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheUltYWdlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxh
eS9jc3MvRGlzcGxheUltYWdlQm94LmgKQEAgLTQwLDEwICs0MCw5IEBAIGNsYXNzIFN0eWxlOwog
Y2xhc3MgSW1hZ2VCb3ggOiBwdWJsaWMgUmVwbGFjZWRCb3ggewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKEltYWdlQm94KTsKIHB1YmxpYzoKLSAgICBJ
bWFnZUJveChBYnNvbHV0ZUZsb2F0UmVjdCBib3JkZXJCb3gsIFN0eWxlJiYsIEFic29sdXRlRmxv
YXRSZWN0IHJlcGxhY2VkQ29udGVudFJlY3QpOwotICAgIAorICAgIEltYWdlQm94KEFic29sdXRl
RmxvYXRSZWN0IGJvcmRlckJveCwgU3R5bGUmJiwgUmVmUHRyPEltYWdlPiYmKTsKKwogICAgIElt
YWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNl
dEltYWdlKEltYWdlKik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24o
KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rp
c3BsYXlSZXBsYWNlZEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
UmVwbGFjZWRCb3guY3BwCmluZGV4IDJkOTJjMDA4N2I4NzkzZDU5YjBlMzI0MzYwYzAyNTQ2NWVi
ZWMxYzEuLjA0YzdjY2U1ZjUyOTgxZjA1ZmEwNzViNzcxNGVhM2UzNTI4ZTBiMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlSZXBsYWNlZEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVJlcGxhY2VkQm94LmNwcApAQCAt
MzMsOSArMzMsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXkgewog
Ci1SZXBsYWNlZEJveDo6UmVwbGFjZWRCb3goQWJzb2x1dGVGbG9hdFJlY3QgYm9yZGVyQm94LCBT
dHlsZSYmIGRpc3BsYXlTdHlsZSwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncywgQWJzb2x1dGVGbG9h
dFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdCkKK1JlcGxhY2VkQm94OjpSZXBsYWNlZEJveChBYnNv
bHV0ZUZsb2F0UmVjdCBib3JkZXJCb3gsIFN0eWxlJiYgZGlzcGxheVN0eWxlLCBPcHRpb25TZXQ8
RmxhZ3M+IGZsYWdzKQogICAgIDogQm94TW9kZWxCb3goYm9yZGVyQm94LCBXVEZNb3ZlKGRpc3Bs
YXlTdHlsZSksIGZsYWdzKQotICAgICwgbV9yZXBsYWNlZENvbnRlbnRSZWN0KHJlcGxhY2VkQ29u
dGVudFJlY3QpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3Nz
L0Rpc3BsYXlSZXBsYWNlZEJveC5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eVJlcGxhY2VkQm94LmgKaW5kZXggNTUxNDMzMjlhNWE4MDgyMGE0MWM2NjViYTBhNjk3NzRlNjIz
YzU3ZS4uM2Y2NjAyMDZmMTFmMjU2ZGE0ZGQ4YjM0NDBjNzc2ODYzODhmYjVlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVJlcGxhY2VkQm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVJlcGxhY2VkQm94LmgKQEAgLTM1LDEx
ICszNSwxNCBAQCBuYW1lc3BhY2UgRGlzcGxheSB7CiBjbGFzcyBSZXBsYWNlZEJveCA6IHB1Ymxp
YyBCb3hNb2RlbEJveCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lE
RU5USUZJRVIoUmVwbGFjZWRCb3gpOwogcHVibGljOgotICAgIFJlcGxhY2VkQm94KEFic29sdXRl
RmxvYXRSZWN0IGJvcmRlckJveCwgU3R5bGUmJiwgT3B0aW9uU2V0PEZsYWdzPiwgQWJzb2x1dGVG
bG9hdFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdCk7CisgICAgUmVwbGFjZWRCb3goQWJzb2x1dGVG
bG9hdFJlY3QgYm9yZGVyQm94LCBTdHlsZSYmLCBPcHRpb25TZXQ8RmxhZ3M+KTsKICAgICAKICAg
ICBBYnNvbHV0ZUZsb2F0UmVjdCByZXBsYWNlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZXBsYWNlZENvbnRlbnRSZWN0OyB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJv
eEZhY3Rvcnk7CisgICAgdm9pZCBzZXRSZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0IEFic29sdXRl
RmxvYXRSZWN0JiBib3gpIHsgbV9yZXBsYWNlZENvbnRlbnRSZWN0ID0gYm94OyB9CisKICAgICBB
YnNvbHV0ZUZsb2F0UmVjdCBtX3JlcGxhY2VkQ29udGVudFJlY3Q7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKaW5kZXggYTQyNzQxZTRlODdk
MmFlNTA1ZmFkODhhM2JkNDhlZmQ1Y2VjNDkxNi4uMWFjMGM5ZTczNmY5MTE3NTc3OGEyZGE0NTc3
MDQyYTdkOTZlYjZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlU
ZXh0Qm94LmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgRGlzcGxheSB7CiBUZXh0Qm94
OjpUZXh0Qm94KEFic29sdXRlRmxvYXRSZWN0IGJvcmRlckJveCwgU3R5bGUmJiBkaXNwbGF5U3R5
bGUsIGNvbnN0IExheW91dDo6TGluZVJ1biYgbGluZVJ1bikKICAgICA6IEJveChib3JkZXJCb3gs
IFdURk1vdmUoZGlzcGxheVN0eWxlKSwgeyBGbGFnczo6VGV4dEJveCB9KQogICAgICwgbV9leHBh
bnNpb24obGluZVJ1bi5leHBhbnNpb24oKSkKLSAgICAsIG1fdGV4dChsaW5lUnVuLnRleHQoKSkK
KyAgICAsIG1fdGV4dChsaW5lUnVuLnRleHQoKS52YWx1ZSgpKQogewogfQogCkBAIC00NiwxNyAr
NDYsMTUgQEAgU3RyaW5nIFRleHRCb3g6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIFRl
eHRTdHJlYW0gc3RyZWFtOwogCiAgICAgc3RyZWFtIDw8ICJ0ZXh0IGJveCAiIDw8IGFic29sdXRl
Qm94UmVjdCgpIDw8ICIgKCIgPDwgdGhpcyA8PCAiKSI7Ci0gICAgaWYgKHRleHQoKSkgewotICAg
ICAgICBhdXRvIHRleHRDb250ZW50ID0gdGV4dCgpLT5jb250ZW50KCkuc3Vic3RyaW5nKHRleHQo
KS0+c3RhcnQoKSwgdGV4dCgpLT5sZW5ndGgoKSk7Ci0gICAgICAgIHRleHRDb250ZW50LnJlcGxh
Y2VXaXRoTGl0ZXJhbCgnXFwnLCAiXFxcXCIpOwotICAgICAgICB0ZXh0Q29udGVudC5yZXBsYWNl
V2l0aExpdGVyYWwoJ1xuJywgIlxcbiIpOwotICAgICAgICBjb25zdCBzaXplX3QgbWF4UHJpbnRl
ZExlbmd0aCA9IDgwOwotICAgICAgICBpZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQcmlu
dGVkTGVuZ3RoKSB7Ci0gICAgICAgICAgICBhdXRvIHN1YnN0cmluZyA9IHRleHRDb250ZW50LnN1
YnN0cmluZygwLCBtYXhQcmludGVkTGVuZ3RoKTsKLSAgICAgICAgICAgIHN0cmVhbSA8PCAiIFwi
IiA8PCBzdWJzdHJpbmcgPDwgIlwi4oCmIjsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBz
dHJlYW0gPDwgIiBcIiIgPDwgdGV4dENvbnRlbnQgPDwgIlwiIjsKLSAgICB9CisgICAgYXV0byB0
ZXh0Q29udGVudCA9IHRleHQoKS5jb250ZW50KCkuc3Vic3RyaW5nKHRleHQoKS5zdGFydCgpLCB0
ZXh0KCkubGVuZ3RoKCkpOworICAgIHRleHRDb250ZW50LnJlcGxhY2VXaXRoTGl0ZXJhbCgnXFwn
LCAiXFxcXCIpOworICAgIHRleHRDb250ZW50LnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxu
Iik7CisgICAgY29uc3Qgc2l6ZV90IG1heFByaW50ZWRMZW5ndGggPSA4MDsKKyAgICBpZiAodGV4
dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQcmludGVkTGVuZ3RoKSB7CisgICAgICAgIGF1dG8gc3Vi
c3RyaW5nID0gdGV4dENvbnRlbnQuc3Vic3RyaW5nKDAsIG1heFByaW50ZWRMZW5ndGgpOworICAg
ICAgICBzdHJlYW0gPDwgIiBcIiIgPDwgc3Vic3RyaW5nIDw8ICJcIuKApiI7CisgICAgfSBlbHNl
CisgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCB0ZXh0Q29udGVudCA8PCAiXCIiOwogICAgIAog
ICAgIHJldHVybiBzdHJlYW0ucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkv
Y3NzL0Rpc3BsYXlUZXh0Qm94LmgKaW5kZXggNmU0OTY1NzVkYWIxOTkwZDFiMGNmODRjY2Y2Yzg5
MjIyYjNmMjVjNy4uMTc5MTBlMjZmNmUzMGNlMjU1ZTIzNGI4NWMxMzExYmFkZThmMjg2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5oCkBAIC00MCwxNCAr
NDAsMTQgQEAgcHVibGljOgogICAgIFRleHRCb3goQWJzb2x1dGVGbG9hdFJlY3QgYm9yZGVyQm94
LCBTdHlsZSYmLCBjb25zdCBMYXlvdXQ6OkxpbmVSdW4mKTsKIAogICAgIExheW91dDo6TGluZVJ1
bjo6RXhwYW5zaW9uIGV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9Ci0g
ICAgT3B0aW9uYWw8TGF5b3V0OjpMaW5lUnVuOjpUZXh0PiB0ZXh0KCkgY29uc3Qge3JldHVybiBt
X3RleHQ7IH0KKyAgICBjb25zdCBMYXlvdXQ6OkxpbmVSdW46OlRleHQmIHRleHQoKSBjb25zdCB7
IHJldHVybiBtX3RleHQ7IH0KIAogcHJpdmF0ZToKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0
aW9uKCkgY29uc3QgZmluYWw7CiAgICAgCiAgICAgTGF5b3V0OjpMaW5lUnVuOjpFeHBhbnNpb24g
bV9leHBhbnNpb247Ci0gICAgT3B0aW9uYWw8TGF5b3V0OjpMaW5lUnVuOjpUZXh0PiBtX3RleHQ7
CisgICAgTGF5b3V0OjpMaW5lUnVuOjpUZXh0IG1fdGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IERpc3BsYXkK
</data>

          </attachment>
      

    </bug>

</bugzilla>