<?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>243771</bug_id>
          
          <creation_ts>2022-08-10 01:26:36 -0700</creation_ts>
          <short_desc>Add generic media query parser and evaluator</short_desc>
          <delta_ts>2022-08-12 00:47:24 -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>CSS</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>
          
          <blocked>180234</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>annulen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youssefdevelops</cc>
    
    <cc>y_soliman</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1890229</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-08-10 01:26:36 -0700</bug_when>
    <thetext>Generalize container query parsing and evaluation code so it can be used for media queries too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890230</commentid>
    <comment_count>1</comment_count>
      <attachid>461523</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-08-10 01:34:41 -0700</bug_when>
    <thetext>Created attachment 461523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890281</commentid>
    <comment_count>2</comment_count>
      <attachid>461527</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-08-10 07:44:25 -0700</bug_when>
    <thetext>Created attachment 461527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890292</commentid>
    <comment_count>3</comment_count>
      <attachid>461528</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-08-10 08:17:50 -0700</bug_when>
    <thetext>Created attachment 461528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890299</commentid>
    <comment_count>4</comment_count>
      <attachid>461529</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-08-10 09:06:06 -0700</bug_when>
    <thetext>Created attachment 461529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890313</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-10 09:58:39 -0700</bug_when>
    <thetext>Committed 253298@main (e923d76d5954): &lt;https://commits.webkit.org/253298@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 461529.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890314</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-08-10 09:59:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/98457034&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461523</attachid>
            <date>2022-08-10 01:34:41 -0700</date>
            <delta_ts>2022-08-10 07:59:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243771-20220810113439.patch</filename>
            <type>text/plain</type>
            <size>35475</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAwMDVkMjUwM2MwMjMzN2Y4ZDJkMjk5NDFkNGNiYjQxOTA0YmZiN2RmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDEwIEF1ZyAyMDIyIDExOjI3OjE5ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIGdl
bmVyaWMgbWVkaWEgcXVlcnkgcGFyc2VyIGFuZCBldmFsdWF0b3IKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM3NzEKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKR2VuZXJhbGl6ZSBjb250YWluZXIgcXVlcnkgcGFyc2luZyBhbmQgZXZhbHVhdGlvbiBjb2Rl
IHNvIGl0IGNhbiBiZSB1c2VkIGZvciBtZWRpYSBxdWVyaWVzIHRvbyBpbiB0aGUgZnV0dXJlLgoK
VGhpcyBwYXRjaCBhZGRzIGdlbmVyaWMgcGFyc2VyIGFuZCBldmFsdWF0b3IgY2xhc3NlcyBhbmQg
bW92ZXMgY29uZGl0aW9uIGhhbmRsaW5nIHRoZXJlLgoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5LmNwcDoKKFdlYkNvcmU6OkNROjpzZXJpYWxpemUpOgoqIFNvdXJjZS9XZWJDb3JlL2Nz
cy9Db250YWluZXJRdWVyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBh
cnNlci5jcHA6CihXZWJDb3JlOjpDb250YWluZXJRdWVyeVBhcnNlcjo6Y29uc3VtZUNvbmRpdGlv
bik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmg6
CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6
IEFkZGVkLgooV2ViQ29yZTo6TVE6OkdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpjb25jcmV0
ZUV2YWx1YXRvciBjb25zdCk6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0
b3I8Q29uY3JldGVFdmFsdWF0b3I+OjpldmFsdWF0ZUNvbmRpdGlvbiBjb25zdCk6CihXZWJDb3Jl
OjpNUTo6b3BlcmF0b3ImKToKKFdlYkNvcmU6Ok1ROjpvcGVyYXRvciEpOgooV2ViQ29yZTo6TVE6
OnRvRXZhbHVhdGlvblJlc3VsdCk6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNN
ZWRpYVF1ZXJ5UGFyc2VyLmg6IEFkZGVkLgooV2ViQ29yZTo6TVE6OkdlbmVyaWNNZWRpYVF1ZXJ5
UGFyc2VyOjpjb25jcmV0ZVBhcnNlcik6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXI8Q29uY3JldGVQYXJzZXI+Ojpjb25zdW1lQ29uZGl0aW9uKToKKiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuaC4KKiBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpTdHlsZTo6Q29udGFpbmVy
UXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIGNvbnN0KToKKFdlYkNvcmU6OlN0eWxlOjpDb250YWlu
ZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVRdWVyeUluUGFyZW5zIGNvbnN0KToKKFdlYkNvcmU6
OlN0eWxlOjpDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVTaXplRmVhdHVyZSBjb25z
dCk6CihXZWJDb3JlOjpTdHlsZTo6Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlQ29u
ZGl0aW9uIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJR
dWVyeUV2YWx1YXRvci5oOgooV2ViQ29yZTo6U3R5bGU6OnRvRXZhbHVhdGlvblJlc3VsdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpTdHlsZTo6b3BlcmF0b3ImKTogRGVsZXRlZC4KKFdlYkNvcmU6OlN0
eWxlOjpvcGVyYXRvciEpOiBEZWxldGVkLgotLS0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiB8ICAyMCArKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFp
bmVyUXVlcnkuY3BwICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWlu
ZXJRdWVyeS5oICAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5UGFyc2VyLmNwcCAgIHwgIDU4IC0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
b250YWluZXJRdWVyeVBhcnNlci5oICAgICB8ICAgOCArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmlj
TWVkaWFRdWVyeUV2YWx1YXRvci5oICAgIHwgMTA3ICsrKysrKysrKysrKysrKysrKwogLi4uL2Nz
cy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oICAgICAgIHwgIDk3ICsrKysrKysrKysr
KysrKysKIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oICAgICAgICB8ICAz
MSArKysrKwogLi4uL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwIHwg
IDc5ICsrKystLS0tLS0tLS0KIC4uLi9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVh
dG9yLmggICB8ICA0MSArLS0tLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAyOTEgaW5zZXJ0aW9ucygr
KSwgMTU4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nz
cy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlU
eXBlcy5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGY5ZmYwMTA2NGIwZC4uODQ5MmI5YzFlODEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NTAzLDYgKzU1
MDMsOSBAQAogCQlFNEQ2OEVCNTE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZlRm9yRm9u
dFJhdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRE
NjhFQjMxN0I0REJEQzAwQ0JEQ0E4IC8qIFN0eWxlUmVzb2x2ZUZvckZvbnRSYXcuaCAqLzsgfTsK
IAkJRTREODZFNkQyNjQwMzk0QzAwQjYyNDI1IC8qIFN0eWxlU2NvcGVPcmRpbmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ4NkU2QjI2NDAzOTRD
MDBCNjI0MjUgLyogU3R5bGVTY29wZU9yZGluYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQ5ODhCNDE3QkZEMUY2MDA4NEZCODggLyogVGV4
dE5vZGVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0RDk4OEIzMTdCRkQxRjYwMDg0RkI4OCAvKiBUZXh0Tm9kZVRyYXZlcnNhbC5oICov
OyB9OworCQlFNERBNUUzNjI4OUQyNDIwMDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlQYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0REE1
RTM0Mjg5RDIzRjMwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oICovOyB9Owor
CQlFNERBNUUzRDI4QTI4MDU3MDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREQTVFMzUyODlE
MjNGRDAwODQ5QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCAqLzsgfTsKKwkJRTREQTVF
NDAyOEEyODhGODAwODQ5QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNERBNUUzRjI4QTI4OEY4
MDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaCAqLzsgfTsKIAkJRTREQUNF
NkExRDEyRTEwQjAwNzU5ODBGIC8qIFN0eWxlUGVuZGluZ1Jlc291cmNlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREQUNFNjkxRDEyRTEwQjAwNzU5
ODBGIC8qIFN0eWxlUGVuZGluZ1Jlc291cmNlcy5oICovOyB9OwogCQlFNERFQUExODE3QTkzREMz
MDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0REVBQTE2MTdBOTNEQzMwMDBFMDQzMCAvKiBTdHlsZVRy
ZWVSZXNvbHZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEUzOUFGQTEz
MzBFRkE4MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVyUG9vbC5oICovOyB9OwpAQCAtMTc4ODAs
NiArMTc4ODMsOSBAQAogCQlFNEQ4NkU2QjI2NDAzOTRDMDBCNjI0MjUgLyogU3R5bGVTY29wZU9y
ZGluYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVTY29wZU9yZGlu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTREOTg4QjMxN0JGRDFGNjAwODRG
Qjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHROb2RlVHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
RDk4OEI1MTdCRkVCMjEwMDg0RkI4OCAvKiBUZXh0Tm9kZVRyYXZlcnNhbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Tm9kZVRyYXZlcnNhbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0REE1RTM0Mjg5RDIzRjMwMDg0OUJDRiAvKiBHZW5l
cmljTWVkaWFRdWVyeVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljTWVkaWFRdWVyeVBh
cnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNERBNUUzNTI4OUQyM0ZEMDA4
NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmlj
TWVkaWFRdWVyeVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0REE1RTNG
MjhBMjg4RjgwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNERBQ0U2OTFEMTJFMTBCMDA3NTk4MEYgLyog
U3R5bGVQZW5kaW5nUmVzb3VyY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0eWxlUGVuZGluZ1Jlc291cmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NERBQ0U2QjFEMTJFMTE2MDA3NTk4MEYgLyogU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlUGVuZGluZ1Jlc291cmNlcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0REVBQTE1MTdBOTNEQzMwMDBFMDQz
MCAvKiBTdHlsZVRyZWVSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTdHlsZVRyZWVSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zMjAxOCw2ICszMjAyNCwxNiBAQAogCQkJcGF0aCA9IHVwZGF0aW5nOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRTREQTVFM0UyOEEyODY3MzAwODQ5QkNGIC8qIHF1
ZXJ5ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlFNERB
NUUzRjI4QTI4OEY4MDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaCAqLywK
KwkJCQlFNERBNUUzNDI4OUQyM0YzMDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIu
aCAqLywKKwkJCQlFNERBNUUzNTI4OUQyM0ZEMDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlU
eXBlcy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBxdWVyeTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCUU0RkI0QjFFMjM5NTM1NkYwMDNDMzM2QSAvKiBpbnRlZ3JhdGlvbiAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zMjE1NSw2ICsz
MjE3MSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCQ0YxNjQ0RDI2NjI5RjlBMDAwMkY3RUYg
LyogY2FsYyAqLywKIAkJCQk5NDZEMzcyNzFENkNCMjI1MDA3NzA4NEYgLyogcGFyc2VyICovLAor
CQkJCUU0REE1RTNFMjhBMjg2NzMwMDg0OUJDRiAvKiBxdWVyeSAqLywKIAkJCQk0QkFGRDBEQTIx
OTIxRUFEMDBDMEFCNjQgLyogdHlwZWRvbSAqLywKIAkJCQlGQkQ2QUY4NDE1RUYyMUQ0MDA4Qjcx
MTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJRkJENkFGODUxNUVGMjFENDAw
OEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuaCAqLywKQEAgLTM1MjY4LDYgKzM1Mjg1LDkg
QEAKIAkJCQlDMEMwNTRDQzExMThDOEU0MDBDRTI2MzYgLyogZ2VuZXJhdGUtYmluZGluZ3MucGwg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVk
SW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDAzMEY2MUI3RDMzQjUwMEVEM0FBQyAvKiBH
ZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUU0REE1RTQw
MjhBMjg4RjgwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTREQTVFMzYyODlEMjQyMDAwODQ5QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5
UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNERBNUUzRDI4QTI4MDU3MDA4NDlCQ0YgLyog
R2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQxNEY0
RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYy
NTE0RjREREU2MDAzRTdBNzEgLyogR2VvbG9jYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3NDZBRjI3MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1
ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5jcHAKaW5kZXggMDEz
NWJmYWI0YTcyLi42MDUyOWVkMTE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
b250YWluZXJRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5
LmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgc2VyaWFsaXplKFN0cmluZ0J1aWxkZXImIGJ1
aWxkZXIsIGNvbnN0IFNpemVGZWF0dXJlJiBzaXplRmVhdHVyZSkKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmRpdGlvblR5cGU+CiB2b2lkIHNlcmlhbGl6ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBj
b25zdCBDb25kaXRpb25UeXBlJiBjb25kaXRpb24pCiB7Ci0gICAgaWYgKGNvbmRpdGlvbi5xdWVy
aWVzLnNpemUoKSA9PSAxICYmIGNvbmRpdGlvbi5sb2dpY2FsT3BlcmF0b3IgPT0gTG9naWNhbE9w
ZXJhdG9yOjpOb3QpIHsKKyAgICBpZiAoY29uZGl0aW9uLnF1ZXJpZXMuc2l6ZSgpID09IDEgJiYg
Y29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvciA9PSBNUTo6TG9naWNhbE9wZXJhdG9yOjpOb3QpIHsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIm5vdCAiKTsKICAgICAgICAgc2VyaWFsaXplKGJ1aWxk
ZXIsIGNvbmRpdGlvbi5xdWVyaWVzLmZpcnN0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0xODEs
NyArMTgxLDcgQEAgdm9pZCBzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3Qg
Q29uZGl0aW9uVHlwZSYgY29uZGl0aW9uKQogCiAgICAgZm9yIChhdXRvJiBxdWVyeSA6IGNvbmRp
dGlvbi5xdWVyaWVzKSB7CiAgICAgICAgIGlmICgmcXVlcnkgIT0gJmNvbmRpdGlvbi5xdWVyaWVz
LmZpcnN0KCkpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjb25kaXRpb24ubG9naWNhbE9w
ZXJhdG9yID09IExvZ2ljYWxPcGVyYXRvcjo6QW5kID8gIiBhbmQgIiA6ICIgb3IgIik7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChjb25kaXRpb24ubG9naWNhbE9wZXJhdG9yID09IE1ROjpM
b2dpY2FsT3BlcmF0b3I6OkFuZCA/ICIgYW5kICIgOiAiIG9yICIpOwogICAgICAgICBzZXJpYWxp
emUoYnVpbGRlciwgcXVlcnkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Db250YWluZXJRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5
LmgKaW5kZXggZDExODI5M2IzZTA3Li5kM2I4MDdmNDQzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250
YWluZXJRdWVyeS5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcu
aD4KQEAgLTQ2LDEyICs0NywxMSBAQCBzdHJ1Y3QgVW5rbm93blF1ZXJ5IHsKIAogdXNpbmcgUXVl
cnlJblBhcmVucyA9IHN0ZDo6dmFyaWFudDxDb250YWluZXJDb25kaXRpb24sIFNpemVGZWF0dXJl
LCBVbmtub3duUXVlcnk+OwogCi1lbnVtIGNsYXNzIExvZ2ljYWxPcGVyYXRvciA6IHVpbnQ4X3Qg
eyBBbmQsIE9yLCBOb3QgfTsKIGVudW0gY2xhc3MgQ29tcGFyaXNvbk9wZXJhdG9yIDogdWludDhf
dCB7IExlc3NUaGFuLCBMZXNzVGhhbk9yRXF1YWwsIEVxdWFsLCBHcmVhdGVyVGhhbiwgR3JlYXRl
clRoYW5PckVxdWFsIH07CiBlbnVtIGNsYXNzIFN5bnRheCA6IHVpbnQ4X3QgeyBCb29sZWFuLCBD
b2xvbiwgUmFuZ2UgfTsKIAogc3RydWN0IENvbnRhaW5lckNvbmRpdGlvbiB7Ci0gICAgTG9naWNh
bE9wZXJhdG9yIGxvZ2ljYWxPcGVyYXRvciB7IExvZ2ljYWxPcGVyYXRvcjo6QW5kIH07CisgICAg
TVE6OkxvZ2ljYWxPcGVyYXRvciBsb2dpY2FsT3BlcmF0b3IgeyBNUTo6TG9naWNhbE9wZXJhdG9y
OjpBbmQgfTsKICAgICBWZWN0b3I8UXVlcnlJblBhcmVucz4gcXVlcmllczsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuY3BwCmluZGV4IDQ1ODliYWJhZDFk
MS4uZTM3MWM4OTY3NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVy
UXVlcnlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBh
cnNlci5jcHAKQEAgLTg3LDY0ICs4Nyw2IEBAIHN0ZDo6b3B0aW9uYWw8Q1E6OlF1ZXJ5SW5QYXJl
bnM+IENvbnRhaW5lclF1ZXJ5UGFyc2VyOjpjb25zdW1lUXVlcnlJblBhcmVucyhDU1NQCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlwZT4KLXN0ZDo6
b3B0aW9uYWw8Q29uZGl0aW9uVHlwZT4gQ29udGFpbmVyUXVlcnlQYXJzZXI6OmNvbnN1bWVDb25k
aXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCi17Ci0gICAgYXV0byBjb25zdW1lUXVl
cnkgPSBbJl0oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpIHsKLSAgICAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX3NhbWVfdjxDUTo6Q29udGFpbmVyQ29uZGl0aW9uLCBDb25kaXRpb25UeXBl
PikKLSAgICAgICAgICAgIHJldHVybiBjb25zdW1lUXVlcnlJblBhcmVucyhyYW5nZSk7Ci0gICAg
ICAgIC8vIFN0eWxlIHF1ZXJ5IHN1cHBvcnQgd291bGQgYmUgaGVyZS4KLSAgICB9OwotCi0gICAg
aWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgewotICAgICAgICBpZiAocmFu
Z2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3QpIHsKLSAgICAgICAgICAgIHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byBxdWVyeSA9IGNv
bnN1bWVRdWVyeShyYW5nZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvbmRpdGlvblR5cGUg
eyBDUTo6TG9naWNhbE9wZXJhdG9yOjpOb3QsIHsgKnF1ZXJ5IH0gfTsKLSAgICAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBDb25kaXRpb25UeXBlIGNvbmRpdGlv
bjsKLQotICAgIGF1dG8gcXVlcnkgPSBjb25zdW1lUXVlcnkocmFuZ2UpOwotICAgIGlmICghcXVl
cnkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBjb25kaXRpb24ucXVlcmllcy5hcHBlbmQo
KnF1ZXJ5KTsKLSAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwotCi0gICAgYXV0byBjb25z
dW1lT3BlcmF0b3IgPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPENROjpMb2dpY2FsT3BlcmF0b3I+
IHsKLSAgICAgICAgYXV0byBvcGVyYXRvclRva2VuID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKTsKLSAgICAgICAgaWYgKG9wZXJhdG9yVG9rZW4udHlwZSgpICE9IElkZW50VG9r
ZW4pCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAob3BlcmF0b3JUb2tlbi5p
ZCgpID09IENTU1ZhbHVlQW5kKQotICAgICAgICAgICAgcmV0dXJuIENROjpMb2dpY2FsT3BlcmF0
b3I6OkFuZDsKLSAgICAgICAgaWYgKG9wZXJhdG9yVG9rZW4uaWQoKSA9PSBDU1NWYWx1ZU9yKQot
ICAgICAgICAgICAgcmV0dXJuIENROjpMb2dpY2FsT3BlcmF0b3I6Ok9yOwotICAgICAgICByZXR1
cm4geyB9OwotICAgIH07Ci0KLSAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkpIHsKLSAgICAgICAg
YXV0byBvcCA9IGNvbnN1bWVPcGVyYXRvcigpOwotICAgICAgICBpZiAoIW9wKQotICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICAgICAgaWYgKGNvbmRpdGlvbi5xdWVyaWVzLnNpemUoKSA+IDEg
JiYgY29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvciAhPSAqb3ApCi0gICAgICAgICAgICByZXR1cm4g
eyB9OwotCi0gICAgICAgIGNvbmRpdGlvbi5sb2dpY2FsT3BlcmF0b3IgPSAqb3A7Ci0KLSAgICAg
ICAgYXV0byBxdWVyeSA9IGNvbnN1bWVRdWVyeShyYW5nZSk7Ci0gICAgICAgIGlmICghcXVlcnkp
Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGNvbmRpdGlvbi5xdWVyaWVzLmFw
cGVuZCgqcXVlcnkpOwotICAgICAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwotICAgIH0K
LQotICAgIHJldHVybiBjb25kaXRpb247Ci19Ci0KIHN0ZDo6b3B0aW9uYWw8Q1E6OlNpemVGZWF0
dXJlPiBDb250YWluZXJRdWVyeVBhcnNlcjo6Y29uc3VtZVNpemVGZWF0dXJlKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGF1dG8gY29uc3VtZSA9IFsmXSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5oCmluZGV4IGRlN2FkZDVjYjc4MS4uMTZkMDli
MTRkZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJz
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuaApAQCAt
MjcsMjQgKzI3LDI0IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IkNTU1BhcnNlclRva2VuLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyUXVlcnkuaCIKKyNpbmNsdWRl
ICJHZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIENTU1BhcnNlclRva2VuUmFuZ2U7CitjbGFzcyBDb250YWluZXJRdWVyeVBhcnNlcjsKIAot
Y2xhc3MgQ29udGFpbmVyUXVlcnlQYXJzZXIgeworY2xhc3MgQ29udGFpbmVyUXVlcnlQYXJzZXIg
OiBwdWJsaWMgTVE6OkdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyPENvbnRhaW5lclF1ZXJ5UGFyc2Vy
PiAgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENROjpDb250YWluZXJRdWVy
eT4gY29uc3VtZUNvbnRhaW5lclF1ZXJ5KENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0Jik7CiAKLXByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxDUTo6Q29udGFp
bmVyUXVlcnk+IGNvbnN1bWVDb250YWluZXJRdWVyeShDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAg
ICAgc3RkOjpvcHRpb25hbDxDUTo6UXVlcnlJblBhcmVucz4gY29uc3VtZVF1ZXJ5SW5QYXJlbnMo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbmRpdGlvblR5
cGU+IHN0ZDo6b3B0aW9uYWw8Q29uZGl0aW9uVHlwZT4gY29uc3VtZUNvbmRpdGlvbihDU1NQYXJz
ZXJUb2tlblJhbmdlJik7CiAgICAgc3RkOjpvcHRpb25hbDxDUTo6U2l6ZUZlYXR1cmU+IGNvbnN1
bWVTaXplRmVhdHVyZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAgICAgc3RkOjpvcHRpb25hbDxD
UTo6U2l6ZUZlYXR1cmU+IGNvbnN1bWVQbGFpblNpemVGZWF0dXJlKENTU1BhcnNlclRva2VuUmFu
Z2UmKTsKICAgICBzdGQ6Om9wdGlvbmFsPENROjpTaXplRmVhdHVyZT4gY29uc3VtZVJhbmdlU2l6
ZUZlYXR1cmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZVZhbHVlKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKIAorcHJpdmF0ZToKICAgICBDb250YWlu
ZXJRdWVyeVBhcnNlcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogICAgICAgICA6
IG1fY29udGV4dChjb250ZXh0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjJiMzcyZDIzZGRmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oCkBAIC0wLDAg
KzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTVEgeworCitlbnVtIGNsYXNzIEV2YWx1
YXRpb25SZXN1bHQgOiB1aW50OF90IHsgRmFsc2UsIFRydWUsIFVua25vd24gfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgQ29uY3JldGVFdmFsdWF0b3I+CitjbGFzcyBHZW5lcmljTWVkaWFRdWVyeUV2
YWx1YXRvciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlwZSwg
dHlwZW5hbWUgQ29udGV4dD4gRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZUNvbmRpdGlvbihjb25z
dCBDb25kaXRpb25UeXBlJiwgY29uc3QgQ29udGV4dCYpIGNvbnN0OworCitwcml2YXRlOgorICAg
IGNvbnN0IENvbmNyZXRlRXZhbHVhdG9yJiBjb25jcmV0ZUV2YWx1YXRvcigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IENvbmNyZXRlRXZhbHVhdG9yJj4oKnRoaXMpOyB9Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25jcmV0ZUV2YWx1YXRvcj4KK3RlbXBsYXRlPHR5cGVuYW1l
IENvbmRpdGlvblR5cGUsIHR5cGVuYW1lIENvbnRleHQ+CitFdmFsdWF0aW9uUmVzdWx0IEdlbmVy
aWNNZWRpYVF1ZXJ5RXZhbHVhdG9yPENvbmNyZXRlRXZhbHVhdG9yPjo6ZXZhbHVhdGVDb25kaXRp
b24oY29uc3QgQ29uZGl0aW9uVHlwZSYgY29uZGl0aW9uLCAgY29uc3QgQ29udGV4dCYgY29udGV4
dCkgY29uc3QKK3sKKyAgICBpZiAoY29uZGl0aW9uLnF1ZXJpZXMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKKworICAgIHN3aXRjaCAoY29uZGl0
aW9uLmxvZ2ljYWxPcGVyYXRvcikgeworICAgIGNhc2UgTG9naWNhbE9wZXJhdG9yOjpOb3Q6Cisg
ICAgICAgIHJldHVybiAhY29uY3JldGVFdmFsdWF0b3IoKS5ldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMo
Y29uZGl0aW9uLnF1ZXJpZXMuZmlyc3QoKSwgY29udGV4dCk7CisKKyAgICBjYXNlIExvZ2ljYWxP
cGVyYXRvcjo6QW5kOiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gRXZhbHVhdGlvblJlc3VsdDo6
VHJ1ZTsKKyAgICAgICAgZm9yIChhdXRvIHF1ZXJ5IDogY29uZGl0aW9uLnF1ZXJpZXMpIHsKKyAg
ICAgICAgICAgIGF1dG8gcXVlcnlSZXN1bHQgPSBjb25jcmV0ZUV2YWx1YXRvcigpLmV2YWx1YXRl
UXVlcnlJblBhcmVucyhxdWVyeSwgY29udGV4dCk7CisgICAgICAgICAgICBpZiAocXVlcnlSZXN1
bHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6RmFsc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIEV2
YWx1YXRpb25SZXN1bHQ6OkZhbHNlOworICAgICAgICAgICAgaWYgKHF1ZXJ5UmVzdWx0ID09IEV2
YWx1YXRpb25SZXN1bHQ6OlVua25vd24pCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gRXZhbHVh
dGlvblJlc3VsdDo6VW5rbm93bjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIGNhc2UgTG9naWNhbE9wZXJhdG9yOjpPcjogeworICAgICAgICBhdXRvIHJl
c3VsdCA9IEV2YWx1YXRpb25SZXN1bHQ6OkZhbHNlOworICAgICAgICBmb3IgKGF1dG8gcXVlcnkg
OiBjb25kaXRpb24ucXVlcmllcykgeworICAgICAgICAgICAgYXV0byBxdWVyeVJlc3VsdCA9IGNv
bmNyZXRlRXZhbHVhdG9yKCkuZXZhbHVhdGVRdWVyeUluUGFyZW5zKHF1ZXJ5LCBjb250ZXh0KTsK
KyAgICAgICAgICAgIGlmIChxdWVyeVJlc3VsdCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAgICAgICAg
ICAgaWYgKHF1ZXJ5UmVzdWx0ID09IEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd24pCisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworaW5saW5lIEV2YWx1YXRpb25SZXN1bHQgb3BlcmF0b3ImKEV2
YWx1YXRpb25SZXN1bHQgbGVmdCwgRXZhbHVhdGlvblJlc3VsdCByaWdodCkKK3sKKyAgICBpZiAo
bGVmdCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duIHx8IHJpZ2h0ID09IEV2YWx1YXRpb25S
ZXN1bHQ6OlVua25vd24pCisgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3du
OworICAgIGlmIChsZWZ0ID09IEV2YWx1YXRpb25SZXN1bHQ6OlRydWUgJiYgcmlnaHQgPT0gRXZh
bHVhdGlvblJlc3VsdDo6VHJ1ZSkKKyAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRy
dWU7CisgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OkZhbHNlOworfQorCitpbmxpbmUgRXZh
bHVhdGlvblJlc3VsdCBvcGVyYXRvciEoRXZhbHVhdGlvblJlc3VsdCByZXN1bHQpCit7CisgICAg
c3dpdGNoIChyZXN1bHQpIHsKKyAgICBjYXNlIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU6CisgICAg
ICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsKKyAgICBjYXNlIEV2YWx1YXRpb25S
ZXN1bHQ6OkZhbHNlOgorICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKyAg
ICBjYXNlIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd246CisgICAgICAgIHJldHVybiBFdmFsdWF0
aW9uUmVzdWx0OjpVbmtub3duOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCitpbmxpbmUgRXZhbHVhdGlvblJlc3VsdCB0b0V2YWx1YXRpb25SZXN1bHQoYm9v
bCBib29sZWFuKQoreworICAgIHJldHVybiBib29sZWFuID8gRXZhbHVhdGlvblJlc3VsdDo6VHJ1
ZSA6IEV2YWx1YXRpb25SZXN1bHQ6OkZhbHNlOworfQorCit9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWUxMWMwYzk1OGIzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmgKQEAg
LTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJU
b2tlbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIE1RIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29uY3JldGVQYXJz
ZXI+CitjbGFzcyBHZW5lcmljTWVkaWFRdWVyeVBhcnNlciB7CitwdWJsaWM6CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlwZT4gc3RkOjpvcHRpb25hbDxDb25kaXRpb25UeXBlPiBj
b25zdW1lQ29uZGl0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKworcHJpdmF0ZToKKyAgICBD
b25jcmV0ZVBhcnNlciYgY29uY3JldGVQYXJzZXIoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25j
cmV0ZVBhcnNlciY+KCp0aGlzKTsgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29uY3JldGVQ
YXJzZXI+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25kaXRpb25UeXBlPgorc3RkOjpvcHRpb25hbDxD
b25kaXRpb25UeXBlPiBHZW5lcmljTWVkaWFRdWVyeVBhcnNlcjxDb25jcmV0ZVBhcnNlcj46OmNv
bnN1bWVDb25kaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKHJh
bmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAgICBpZiAocmFuZ2UucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVOb3QpIHsKKyAgICAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBpZiAoYXV0byBxdWVyeSA9IGNvbmNyZXRl
UGFyc2VyKCkuY29uc3VtZVF1ZXJ5SW5QYXJlbnMocmFuZ2UpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBDb25kaXRpb25UeXBlIHsgTG9naWNhbE9wZXJhdG9yOjpOb3QsIHsgKnF1ZXJ5IH0gfTsK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBDb25kaXRp
b25UeXBlIGNvbmRpdGlvbjsKKworICAgIGF1dG8gcXVlcnkgPSBjb25jcmV0ZVBhcnNlcigpLmNv
bnN1bWVRdWVyeUluUGFyZW5zKHJhbmdlKTsKKyAgICBpZiAoIXF1ZXJ5KQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgY29uZGl0aW9uLnF1ZXJpZXMuYXBwZW5kKCpxdWVyeSk7CisgICAgcmFu
Z2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKKworICAgIGF1dG8gY29uc3VtZU9wZXJhdG9yID0gWyZd
KCkgLT4gc3RkOjpvcHRpb25hbDxMb2dpY2FsT3BlcmF0b3I+IHsKKyAgICAgICAgYXV0byBvcGVy
YXRvclRva2VuID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAg
aWYgKG9wZXJhdG9yVG9rZW4udHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICBpZiAob3BlcmF0b3JUb2tlbi5pZCgpID09IENTU1ZhbHVlQW5kKQor
ICAgICAgICAgICAgcmV0dXJuIExvZ2ljYWxPcGVyYXRvcjo6QW5kOworICAgICAgICBpZiAob3Bl
cmF0b3JUb2tlbi5pZCgpID09IENTU1ZhbHVlT3IpCisgICAgICAgICAgICByZXR1cm4gTG9naWNh
bE9wZXJhdG9yOjpPcjsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAgd2hpbGUg
KCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGF1dG8gb3AgPSBjb25zdW1lT3BlcmF0b3IoKTsK
KyAgICAgICAgaWYgKCFvcCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGlmIChj
b25kaXRpb24ucXVlcmllcy5zaXplKCkgPiAxICYmIGNvbmRpdGlvbi5sb2dpY2FsT3BlcmF0b3Ig
IT0gKm9wKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBjb25kaXRpb24ubG9n
aWNhbE9wZXJhdG9yID0gKm9wOworCisgICAgICAgIGF1dG8gcXVlcnkgPSBjb25jcmV0ZVBhcnNl
cigpLmNvbnN1bWVRdWVyeUluUGFyZW5zKHJhbmdlKTsKKyAgICAgICAgaWYgKCFxdWVyeSkKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgY29uZGl0aW9uLnF1ZXJpZXMuYXBwZW5k
KCpxdWVyeSk7CisgICAgICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIGNvbmRpdGlvbjsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5jYTRiNGU5NjI5ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oCkBAIC0wLDAgKzEsMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVz
cGFjZSBXZWJDb3JlOjpNUSB7CisKK2VudW0gY2xhc3MgTG9naWNhbE9wZXJhdG9yIDogdWludDhf
dCB7IEFuZCwgT3IsIE5vdCB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250
YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggNjE0NzRmZTg3ZDA0Li44Njk1N2QxNmM1Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5j
cHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVh
dGUoY29uc3QgQ1E6OkNvbnRhaW5lclF1ZXJ5JiBjb250YWluZXJRdWVyeSkKICAgICBpZiAoIWNv
bnRhaW5lcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGV2YWx1YXRlQ29u
ZGl0aW9uKGNvbnRhaW5lclF1ZXJ5LmNvbmRpdGlvbiwgKmNvbnRhaW5lcikgPT0gRXZhbHVhdGlv
blJlc3VsdDo6VHJ1ZTsKKyAgICByZXR1cm4gZXZhbHVhdGVDb25kaXRpb24oY29udGFpbmVyUXVl
cnkuY29uZGl0aW9uLCAqY29udGFpbmVyKSA9PSBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsK
IH0KIAogYXV0byBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6c2VsZWN0Q29udGFpbmVyKGNvbnN0
IENROjpDb250YWluZXJRdWVyeSYgY29udGFpbmVyUXVlcnkpIGNvbnN0IC0+IHN0ZDo6b3B0aW9u
YWw8U2VsZWN0ZWRDb250YWluZXI+CkBAIC0xNjQsNTIgKzE2NCwxNyBAQCBjb25zdCBFbGVtZW50
KiBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6c2VsZWN0Q29udGFpbmVyKE9wdGlvblNldDxDUTo6
QXhpcz4gYXhlcwogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQ29udGFpbmVyUXVlcnlFdmFs
dWF0b3I6OmV2YWx1YXRlUXVlcnlJblBhcmVucyhjb25zdCBDUTo6UXVlcnlJblBhcmVucyYgcXVl
cnlJblBhcmVucywgY29uc3QgU2VsZWN0ZWRDb250YWluZXImIGNvbnRhaW5lcikgY29uc3QgLT4g
RXZhbHVhdGlvblJlc3VsdAorYXV0byBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVR
dWVyeUluUGFyZW5zKGNvbnN0IENROjpRdWVyeUluUGFyZW5zJiBxdWVyeUluUGFyZW5zLCBjb25z
dCBTZWxlY3RlZENvbnRhaW5lciYgY29udGFpbmVyKSBjb25zdCAtPiBNUTo6RXZhbHVhdGlvblJl
c3VsdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKHF1ZXJ5SW5QYXJlbnMsIFsmXShjb25z
dCBDUTo6Q29udGFpbmVyQ29uZGl0aW9uJiBjb250YWluZXJDb25kaXRpb24pIHsKICAgICAgICAg
cmV0dXJuIGV2YWx1YXRlQ29uZGl0aW9uKGNvbnRhaW5lckNvbmRpdGlvbiwgY29udGFpbmVyKTsK
ICAgICB9LCBbJl0oY29uc3QgQ1E6OlNpemVGZWF0dXJlJiBzaXplRmVhdHVyZSkgewogICAgICAg
ICByZXR1cm4gZXZhbHVhdGVTaXplRmVhdHVyZShzaXplRmVhdHVyZSwgY29udGFpbmVyKTsKICAg
ICB9LCBbJl0oY29uc3QgQ1E6OlVua25vd25RdWVyeSYpIHsKLSAgICAgICAgcmV0dXJuIEV2YWx1
YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3Vs
dDo6VW5rbm93bjsKICAgICB9KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlw
ZT4KLWF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlQ29uZGl0aW9uKGNvbnN0
IENvbmRpdGlvblR5cGUmIGNvbmRpdGlvbiwgY29uc3QgU2VsZWN0ZWRDb250YWluZXImIGNvbnRh
aW5lcikgY29uc3QgLT4gRXZhbHVhdGlvblJlc3VsdAotewotICAgIGlmIChjb25kaXRpb24ucXVl
cmllcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3du
OwotCi0gICAgc3dpdGNoIChjb25kaXRpb24ubG9naWNhbE9wZXJhdG9yKSB7Ci0gICAgY2FzZSBD
UTo6TG9naWNhbE9wZXJhdG9yOjpOb3Q6Ci0gICAgICAgIHJldHVybiAhZXZhbHVhdGVRdWVyeUlu
UGFyZW5zKGNvbmRpdGlvbi5xdWVyaWVzLmZpcnN0KCksIGNvbnRhaW5lcik7Ci0gICAgY2FzZSBD
UTo6TG9naWNhbE9wZXJhdG9yOjpBbmQ6IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBFdmFsdWF0
aW9uUmVzdWx0OjpUcnVlOwotICAgICAgICBmb3IgKGF1dG8gcXVlcnkgOiBjb25kaXRpb24ucXVl
cmllcykgewotICAgICAgICAgICAgYXV0byBxdWVyeVJlc3VsdCA9IGV2YWx1YXRlUXVlcnlJblBh
cmVucyhxdWVyeSwgY29udGFpbmVyKTsKLSAgICAgICAgICAgIGlmIChxdWVyeVJlc3VsdCA9PSBF
dmFsdWF0aW9uUmVzdWx0OjpGYWxzZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlv
blJlc3VsdDo6RmFsc2U7Ci0gICAgICAgICAgICBpZiAocXVlcnlSZXN1bHQgPT0gRXZhbHVhdGlv
blJlc3VsdDo6VW5rbm93bikKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBFdmFsdWF0aW9uUmVz
dWx0OjpVbmtub3duOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
ICAgIGNhc2UgQ1E6OkxvZ2ljYWxPcGVyYXRvcjo6T3I6IHsKLSAgICAgICAgYXV0byByZXN1bHQg
PSBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsKLSAgICAgICAgZm9yIChhdXRvIHF1ZXJ5IDogY29u
ZGl0aW9uLnF1ZXJpZXMpIHsKLSAgICAgICAgICAgIGF1dG8gcXVlcnlSZXN1bHQgPSBldmFsdWF0
ZVF1ZXJ5SW5QYXJlbnMocXVlcnksIGNvbnRhaW5lcik7Ci0gICAgICAgICAgICBpZiAocXVlcnlS
ZXN1bHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKLSAgICAgICAgICAgIGlmIChxdWVyeVJlc3VsdCA9PSBF
dmFsdWF0aW9uUmVzdWx0OjpVbmtub3duKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IEV2YWx1
YXRpb25SZXN1bHQ6OlVua25vd247Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVTaXplKGNvbnN0IENTU1ZhbHVl
KiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEp
CiB7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQpAQCAtMjI3LDE0ICsx
OTIsMTQgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZVNpemUoY29u
c3QgQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0wKICAgICByZXR1cm4gcHJpbWl0aXZlVmFs
dWUuY29tcHV0ZUxlbmd0aDxMYXlvdXRVbml0Pihjb252ZXJzaW9uRGF0YSk7CiB9CiAKLWF1dG8g
Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlU2l6ZUZlYXR1cmUoY29uc3QgQ1E6OlNp
emVGZWF0dXJlJiBzaXplRmVhdHVyZSwgY29uc3QgU2VsZWN0ZWRDb250YWluZXImIGNvbnRhaW5l
cikgY29uc3QgLT4gRXZhbHVhdGlvblJlc3VsdAorYXV0byBDb250YWluZXJRdWVyeUV2YWx1YXRv
cjo6ZXZhbHVhdGVTaXplRmVhdHVyZShjb25zdCBDUTo6U2l6ZUZlYXR1cmUmIHNpemVGZWF0dXJl
LCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYgY29udGFpbmVyKSBjb25zdCAtPiBNUTo6RXZhbHVh
dGlvblJlc3VsdAogewogICAgIC8vICJJZiB0aGUgcXVlcnkgY29udGFpbmVyIGRvZXMgbm90IGhh
dmUgYSBwcmluY2lwYWwgYm94LCBvciB0aGUgcHJpbmNpcGFsIGJveCBpcyBub3QgYSBsYXlvdXQg
Y29udGFpbm1lbnQgYm94LAogICAgIC8vIG9yIHRoZSBxdWVyeSBjb250YWluZXIgZG9lcyBub3Qg
c3VwcG9ydCBjb250YWluZXIgc2l6ZSBxdWVyaWVzIG9uIHRoZSByZWxldmFudCBheGVzLCB0aGVu
IHRoZSByZXN1bHQgb2YKICAgICAvLyBldmFsdWF0aW5nIHRoZSBzaXplIGZlYXR1cmUgaXMgdW5r
bm93bi4iCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb250YWluLTMvI3Np
emUtY29udGFpbmVyCiAgICAgaWYgKCFjb250YWluZXIucmVuZGVyZXIpCi0gICAgICAgIHJldHVy
biBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICByZXR1cm4gTVE6OkV2YWx1YXRp
b25SZXN1bHQ6OlVua25vd247CiAKICAgICBhdXRvJiByZW5kZXJlciA9ICpjb250YWluZXIucmVu
ZGVyZXI7CiAKQEAgLTI1Myw3ICsyMTgsNyBAQCBhdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9y
OjpldmFsdWF0ZVNpemVGZWF0dXJlKGNvbnN0IENROjpTaXplRmVhdHVyZSYgc2l6ZUZlYQogICAg
IH07CiAKICAgICBpZiAoIWhhc0VsaWdpYmxlQ29udGFpbm1lbnQoKSkKLSAgICAgICAgcmV0dXJu
IEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlv
blJlc3VsdDo6VW5rbm93bjsKIAogICAgIGF1dG8gY29tcGFyZSA9IFtdKENROjpDb21wYXJpc29u
T3BlcmF0b3Igb3AsIGF1dG8gbGVmdCwgYXV0byByaWdodCkgewogICAgICAgICBzd2l0Y2ggKG9w
KSB7CkBAIC0yNzQsMTkgKzIzOSwxOSBAQCBhdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpl
dmFsdWF0ZVNpemVGZWF0dXJlKGNvbnN0IENROjpTaXplRmVhdHVyZSYgc2l6ZUZlYQogICAgIGVu
dW0gY2xhc3MgU2lkZSA6IHVpbnQ4X3QgeyBMZWZ0LCBSaWdodCB9OwogICAgIGF1dG8gZXZhbHVh
dGVTaXplQ29tcGFyaXNvbiA9IFsmXShMYXlvdXRVbml0IHNpemUsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8Q1E6OkNvbXBhcmlzb24+JiBjb21wYXJpc29uLCBTaWRlIHNpZGUpIHsKICAgICAgICAgaWYg
KCFjb21wYXJpc29uKQotICAgICAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7
CisgICAgICAgICAgICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CiAgICAgICAg
IGF1dG8gZXhwcmVzc2lvblNpemUgPSBjb21wdXRlU2l6ZShjb21wYXJpc29uLT52YWx1ZS5nZXQo
KSwgY29udGFpbmVyLmNvbnZlcnNpb25EYXRhKTsKICAgICAgICAgaWYgKCFleHByZXNzaW9uU2l6
ZSkKLSAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAg
ICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwogICAgICAgICBhdXRv
IGxlZnQgPSBzaWRlID09IFNpZGU6OkxlZnQgPyAqZXhwcmVzc2lvblNpemUgOiBzaXplOwogICAg
ICAgICBhdXRvIHJpZ2h0ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gc2l6ZSA6ICpleHByZXNzaW9u
U2l6ZTsKIAotICAgICAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVzdWx0KGNvbXBhcmUoY29tcGFy
aXNvbi0+b3AsIGxlZnQsIHJpZ2h0KSk7CisgICAgICAgIHJldHVybiBNUTo6dG9FdmFsdWF0aW9u
UmVzdWx0KGNvbXBhcmUoY29tcGFyaXNvbi0+b3AsIGxlZnQsIHJpZ2h0KSk7CiAgICAgfTsKIAog
ICAgIGF1dG8gZXZhbHVhdGVTaXplID0gWyZdKExheW91dFVuaXQgc2l6ZSkgewogICAgICAgICBp
ZiAoIXNpemVGZWF0dXJlLmxlZnRDb21wYXJpc29uICYmICFzaXplRmVhdHVyZS5yaWdodENvbXBh
cmlzb24pCi0gICAgICAgICAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVzdWx0KCEhc2l6ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gTVE6OnRvRXZhbHVhdGlvblJlc3VsdCghIXNpemUpOwogCiAgICAg
ICAgIGF1dG8gbGVmdFJlc3VsdCA9IGV2YWx1YXRlU2l6ZUNvbXBhcmlzb24oc2l6ZSwgc2l6ZUZl
YXR1cmUubGVmdENvbXBhcmlzb24sIFNpZGU6OkxlZnQpOwogICAgICAgICBhdXRvIHJpZ2h0UmVz
dWx0ID0gZXZhbHVhdGVTaXplQ29tcGFyaXNvbihzaXplLCBzaXplRmVhdHVyZS5yaWdodENvbXBh
cmlzb24sIFNpZGU6OlJpZ2h0KTsKQEAgLTI5NiwyNyArMjYxLDI3IEBAIGF1dG8gQ29udGFpbmVy
UXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlU2l6ZUZlYXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJl
JiBzaXplRmVhCiAKICAgICBhdXRvIGV2YWx1YXRlQXNwZWN0UmF0aW9Db21wYXJpc29uID0gWyZd
KGRvdWJsZSBhc3BlY3RSYXRpbywgY29uc3Qgc3RkOjpvcHRpb25hbDxDUTo6Q29tcGFyaXNvbj4m
IGNvbXBhcmlzb24sIFNpZGUgc2lkZSkgewogICAgICAgICBpZiAoIWNvbXBhcmlzb24pCi0gICAg
ICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKyAgICAgICAgICAgIHJldHVy
biBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKIAogICAgICAgICBpZiAoIWlzPENTU1ZhbHVl
TGlzdD4oY29tcGFyaXNvbi0+dmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25S
ZXN1bHQ6OlVua25vd247CisgICAgICAgICAgICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6
OlVua25vd247CiAKICAgICAgICAgYXV0byYgcmF0aW9MaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVM
aXN0PigqY29tcGFyaXNvbi0+dmFsdWUpOwogICAgICAgICBpZiAocmF0aW9MaXN0Lmxlbmd0aCgp
ICE9IDIpCi0gICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKKyAg
ICAgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIAogICAgICAg
ICBhdXRvIGZpcnN0ID0gZHluYW1pY0Rvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihyYXRpb0xp
c3QuaXRlbSgwKSk7CiAgICAgICAgIGF1dG8gc2Vjb25kID0gZHluYW1pY0Rvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPihyYXRpb0xpc3QuaXRlbSgxKSk7CiAKICAgICAgICAgaWYgKCFmaXJzdCB8
fCAhc2Vjb25kIHx8ICFmaXJzdC0+aXNOdW1iZXJPckludGVnZXIoKSB8fCAhc2Vjb25kLT5pc051
bWJlck9ySW50ZWdlcigpKQotICAgICAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVu
a25vd247CisgICAgICAgICAgICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247
CiAKICAgICAgICAgYXV0byBleHByZXNzaW9uUmF0aW8gPSBmaXJzdC0+ZG91YmxlVmFsdWUoKSAv
IHNlY29uZC0+ZG91YmxlVmFsdWUoKTsKIAogICAgICAgICBhdXRvIGxlZnQgPSBzaWRlID09IFNp
ZGU6OkxlZnQgPyBleHByZXNzaW9uUmF0aW8gOiBhc3BlY3RSYXRpbzsKICAgICAgICAgYXV0byBy
aWdodCA9IHNpZGUgPT0gU2lkZTo6TGVmdCA/IGFzcGVjdFJhdGlvIDogZXhwcmVzc2lvblJhdGlv
OwogCi0gICAgICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21wYXJpc29u
LT5vcCwgbGVmdCwgcmlnaHQpKTsKKyAgICAgICAgcmV0dXJuIE1ROjp0b0V2YWx1YXRpb25SZXN1
bHQoY29tcGFyZShjb21wYXJpc29uLT5vcCwgbGVmdCwgcmlnaHQpKTsKICAgICB9OwogCiAgICAg
aWYgKHNpemVGZWF0dXJlLm5hbWUgPT0gQ1E6OkZlYXR1cmVOYW1lczo6d2lkdGgoKSkKQEAgLTMz
NSw3ICszMDAsNyBAQCBhdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZVNpemVG
ZWF0dXJlKGNvbnN0IENROjpTaXplRmVhdHVyZSYgc2l6ZUZlYQogICAgICAgICBhdXRvIGJveFJh
dGlvID0gcmVuZGVyZXIuY29udGVudFdpZHRoKCkudG9Eb3VibGUoKSAvIHJlbmRlcmVyLmNvbnRl
bnRIZWlnaHQoKS50b0RvdWJsZSgpOwogICAgICAgICAKICAgICAgICAgaWYgKCFzaXplRmVhdHVy
ZS5sZWZ0Q29tcGFyaXNvbiAmJiAhc2l6ZUZlYXR1cmUucmlnaHRDb21wYXJpc29uKQotICAgICAg
ICAgICAgcmV0dXJuIHRvRXZhbHVhdGlvblJlc3VsdCghIWJveFJhdGlvKTsKKyAgICAgICAgICAg
IHJldHVybiBNUTo6dG9FdmFsdWF0aW9uUmVzdWx0KCEhYm94UmF0aW8pOwogCiAgICAgICAgIGF1
dG8gbGVmdFJlc3VsdCA9IGV2YWx1YXRlQXNwZWN0UmF0aW9Db21wYXJpc29uKGJveFJhdGlvLCBz
aXplRmVhdHVyZS5sZWZ0Q29tcGFyaXNvbiwgU2lkZTo6TGVmdCk7CiAgICAgICAgIGF1dG8gcmln
aHRSZXN1bHQgPSBldmFsdWF0ZUFzcGVjdFJhdGlvQ29tcGFyaXNvbihib3hSYXRpbywgc2l6ZUZl
YXR1cmUucmlnaHRDb21wYXJpc29uLCBTaWRlOjpSaWdodCk7CkBAIC0zNDUsMjUgKzMxMCwyNSBA
QCBhdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZVNpemVGZWF0dXJlKGNvbnN0
IENROjpTaXplRmVhdHVyZSYgc2l6ZUZlYQogCiAgICAgaWYgKHNpemVGZWF0dXJlLm5hbWUgPT0g
Q1E6OkZlYXR1cmVOYW1lczo6b3JpZW50YXRpb24oKSkgewogICAgICAgICBpZiAoIXNpemVGZWF0
dXJlLnJpZ2h0Q29tcGFyaXNvbikKLSAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0
OjpVbmtub3duOworICAgICAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtu
b3duOwogCiAgICAgICAgIGF1dG8mIGNvbXBhcmlzb24gPSAqc2l6ZUZlYXR1cmUucmlnaHRDb21w
YXJpc29uOwogCiAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KGNvbXBhcmlzb24u
dmFsdWUpIHx8IGNvbXBhcmlzb24ub3AgIT0gQ1E6OkNvbXBhcmlzb25PcGVyYXRvcjo6RXF1YWwp
Ci0gICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKKyAgICAgICAg
ICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIAogICAgICAgICBhdXRv
JiB2YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqc2l6ZUZlYXR1cmUucmlnaHRD
b21wYXJpc29uLT52YWx1ZSk7CiAKICAgICAgICAgYm9vbCBpc1BvcnRyYWl0ID0gcmVuZGVyZXIu
Y29udGVudEhlaWdodCgpID49IHJlbmRlcmVyLmNvbnRlbnRXaWR0aCgpOwogICAgICAgICBpZiAo
dmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlUG9ydHJhaXQpCi0gICAgICAgICAgICByZXR1cm4g
dG9FdmFsdWF0aW9uUmVzdWx0KGlzUG9ydHJhaXQpOworICAgICAgICAgICAgcmV0dXJuIE1ROjp0
b0V2YWx1YXRpb25SZXN1bHQoaXNQb3J0cmFpdCk7CiAgICAgICAgIGlmICh2YWx1ZS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVMYW5kc2NhcGUpCi0gICAgICAgICAgICByZXR1cm4gdG9FdmFsdWF0aW9u
UmVzdWx0KCFpc1BvcnRyYWl0KTsKKyAgICAgICAgICAgIHJldHVybiBNUTo6dG9FdmFsdWF0aW9u
UmVzdWx0KCFpc1BvcnRyYWl0KTsKIAotICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6
VW5rbm93bjsKKyAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwog
ICAgIH0KIAotICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgIHJldHVy
biBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgKaW5kZXggYzc3MTk5ZGI3NzQ1Li41
ZGIzODQxN2E5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1
ZXJ5RXZhbHVhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlF
dmFsdWF0b3IuaApAQCAtMjUsNiArMjUsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
b250YWluZXJRdWVyeS5oIgorI2luY2x1ZGUgIkdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgi
CiAjaW5jbHVkZSAiU2VsZWN0b3JNYXRjaGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29w
ZU9yZGluYWwuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0zNSw5ICszNiw3IEBAIGNsYXNz
IEVsZW1lbnQ7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLWVudW0gY2xhc3MgRXZhbHVhdGlvblJl
c3VsdCA6IHVpbnQ4X3QgeyBGYWxzZSwgVHJ1ZSwgVW5rbm93biB9OwotCi1jbGFzcyBDb250YWlu
ZXJRdWVyeUV2YWx1YXRvciB7CitjbGFzcyBDb250YWluZXJRdWVyeUV2YWx1YXRvciA6IHB1Ymxp
YyBNUTo6R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3I8Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I+
IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNlbGVjdGlvbk1vZGUgOiBib29sIHsgRWxlbWVu
dCwgUHNldWRvRWxlbWVudCB9OwogICAgIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yKGNvbnN0IEVs
ZW1lbnQmLCBTZWxlY3Rpb25Nb2RlLCBTY29wZU9yZGluYWwsIFNlbGVjdG9yTWF0Y2hpbmdTdGF0
ZSopOwpAQCAtNDYsMTMgKzQ1LDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBFbGVt
ZW50KiBzZWxlY3RDb250YWluZXIoT3B0aW9uU2V0PENROjpBeGlzPiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBFbGVtZW50JiwgU2VsZWN0aW9uTW9kZSA9IFNlbGVjdGlvbk1vZGU6OkVsZW1l
bnQsIFNjb3BlT3JkaW5hbCA9IFNjb3BlT3JkaW5hbDo6RWxlbWVudCwgY29uc3QgQ2FjaGVkUXVl
cnlDb250YWluZXJzKiA9IG51bGxwdHIpOwogCi1wcml2YXRlOgogICAgIHN0cnVjdCBTZWxlY3Rl
ZENvbnRhaW5lcjsKLSAgICBzdGQ6Om9wdGlvbmFsPFNlbGVjdGVkQ29udGFpbmVyPiBzZWxlY3RD
b250YWluZXIoY29uc3QgQ1E6OkNvbnRhaW5lclF1ZXJ5JikgY29uc3Q7CisgICAgTVE6OkV2YWx1
YXRpb25SZXN1bHQgZXZhbHVhdGVRdWVyeUluUGFyZW5zKGNvbnN0IENROjpRdWVyeUluUGFyZW5z
JiwgY29uc3QgU2VsZWN0ZWRDb250YWluZXImKSBjb25zdDsKKyAgICBNUTo6RXZhbHVhdGlvblJl
c3VsdCBldmFsdWF0ZVNpemVGZWF0dXJlKGNvbnN0IENROjpTaXplRmVhdHVyZSYsIGNvbnN0IFNl
bGVjdGVkQ29udGFpbmVyJikgY29uc3Q7CiAKLSAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRl
UXVlcnlJblBhcmVucyhjb25zdCBDUTo6UXVlcnlJblBhcmVucyYsIGNvbnN0IFNlbGVjdGVkQ29u
dGFpbmVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlwZT4gRXZh
bHVhdGlvblJlc3VsdCBldmFsdWF0ZUNvbmRpdGlvbihjb25zdCBDb25kaXRpb25UeXBlJiwgY29u
c3QgU2VsZWN0ZWRDb250YWluZXImKSBjb25zdDsKLSAgICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1
YXRlU2l6ZUZlYXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJlJiwgY29uc3QgU2VsZWN0ZWRDb250
YWluZXImKSBjb25zdDsKK3ByaXZhdGU6CisgICAgc3RkOjpvcHRpb25hbDxTZWxlY3RlZENvbnRh
aW5lcj4gc2VsZWN0Q29udGFpbmVyKGNvbnN0IENROjpDb250YWluZXJRdWVyeSYpIGNvbnN0Owog
CiAgICAgY29uc3QgUmVmPGNvbnN0IEVsZW1lbnQ+IG1fZWxlbWVudDsKICAgICBjb25zdCBTZWxl
Y3Rpb25Nb2RlIG1fc2VsZWN0aW9uTW9kZTsKQEAgLTYwLDMyICs1OCw1IEBAIHByaXZhdGU6CiAg
ICAgU2VsZWN0b3JNYXRjaGluZ1N0YXRlKiBtX3NlbGVjdG9yTWF0Y2hpbmdTdGF0ZTsKIH07CiAK
LWlubGluZSBFdmFsdWF0aW9uUmVzdWx0IHRvRXZhbHVhdGlvblJlc3VsdChib29sIGJvb2xlYW4p
Ci17Ci0gICAgcmV0dXJuIGJvb2xlYW4gPyBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlIDogRXZhbHVh
dGlvblJlc3VsdDo6RmFsc2U7Ci19OwotCi1pbmxpbmUgRXZhbHVhdGlvblJlc3VsdCBvcGVyYXRv
ciYoRXZhbHVhdGlvblJlc3VsdCBsZWZ0LCBFdmFsdWF0aW9uUmVzdWx0IHJpZ2h0KQotewotICAg
IGlmIChsZWZ0ID09IEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd24gfHwgcmlnaHQgPT0gRXZhbHVh
dGlvblJlc3VsdDo6VW5rbm93bikKLSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVu
a25vd247Ci0gICAgaWYgKGxlZnQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSAmJiByaWdodCA9
PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlKQotICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3Vs
dDo6VHJ1ZTsKLSAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6RmFsc2U7Ci19Ci0KLWlubGlu
ZSBFdmFsdWF0aW9uUmVzdWx0IG9wZXJhdG9yIShFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKLXsK
LSAgICBzd2l0Y2ggKHJlc3VsdCkgewotICAgIGNhc2UgRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZToK
LSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OkZhbHNlOwotICAgIGNhc2UgRXZhbHVh
dGlvblJlc3VsdDo6RmFsc2U6Ci0gICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVl
OwotICAgIGNhc2UgRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjoKLSAgICAgICAgcmV0dXJuIEV2
YWx1YXRpb25SZXN1bHQ6OlVua25vd247Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KIH0KIH0K
</data>
<flag name="commit-queue"
          id="490400"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461527</attachid>
            <date>2022-08-10 07:44:25 -0700</date>
            <delta_ts>2022-08-10 08:47:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243771-20220810174423.patch</filename>
            <type>text/plain</type>
            <size>35516</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSA3MTc1OGVmOTEwZTY1MjAwYWMxMjI4MGVlM2IwY2Y1ODIxMjUyMWYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDEwIEF1ZyAyMDIyIDExOjI3OjE5ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIGdl
bmVyaWMgbWVkaWEgcXVlcnkgcGFyc2VyIGFuZCBldmFsdWF0b3IKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM3NzEKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKR2VuZXJhbGl6ZSBjb250YWluZXIgcXVlcnkgcGFyc2luZyBhbmQgZXZhbHVhdGlvbiBjb2Rl
IHNvIGl0IGNhbiBiZSB1c2VkIGZvciBtZWRpYSBxdWVyaWVzIHRvbyBpbiB0aGUgZnV0dXJlLgoK
VGhpcyBwYXRjaCBhZGRzIGdlbmVyaWMgcGFyc2VyIGFuZCBldmFsdWF0b3IgY2xhc3NlcyBhbmQg
bW92ZXMgY29uZGl0aW9uIGhhbmRsaW5nIHRoZXJlLgoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5LmNwcDoKKFdlYkNvcmU6OkNROjpzZXJpYWxpemUpOgoqIFNvdXJjZS9XZWJDb3JlL2Nz
cy9Db250YWluZXJRdWVyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBh
cnNlci5jcHA6CihXZWJDb3JlOjpDb250YWluZXJRdWVyeVBhcnNlcjo6Y29uc3VtZUNvbmRpdGlv
bik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmg6
CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6
IEFkZGVkLgooV2ViQ29yZTo6TVE6OkdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpjb25jcmV0
ZUV2YWx1YXRvciBjb25zdCk6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0
b3I8Q29uY3JldGVFdmFsdWF0b3I+OjpldmFsdWF0ZUNvbmRpdGlvbiBjb25zdCk6CihXZWJDb3Jl
OjpNUTo6b3BlcmF0b3ImKToKKFdlYkNvcmU6Ok1ROjpvcGVyYXRvciEpOgooV2ViQ29yZTo6TVE6
OnRvRXZhbHVhdGlvblJlc3VsdCk6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNN
ZWRpYVF1ZXJ5UGFyc2VyLmg6IEFkZGVkLgooV2ViQ29yZTo6TVE6OkdlbmVyaWNNZWRpYVF1ZXJ5
UGFyc2VyOjpjb25jcmV0ZVBhcnNlcik6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXI8Q29uY3JldGVQYXJzZXI+Ojpjb25zdW1lQ29uZGl0aW9uKToKKiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuaC4KKiBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpTdHlsZTo6Q29udGFpbmVy
UXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIGNvbnN0KToKKFdlYkNvcmU6OlN0eWxlOjpDb250YWlu
ZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVRdWVyeUluUGFyZW5zIGNvbnN0KToKKFdlYkNvcmU6
OlN0eWxlOjpDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVTaXplRmVhdHVyZSBjb25z
dCk6CihXZWJDb3JlOjpTdHlsZTo6Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlQ29u
ZGl0aW9uIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJR
dWVyeUV2YWx1YXRvci5oOgooV2ViQ29yZTo6U3R5bGU6OnRvRXZhbHVhdGlvblJlc3VsdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpTdHlsZTo6b3BlcmF0b3ImKTogRGVsZXRlZC4KKFdlYkNvcmU6OlN0
eWxlOjpvcGVyYXRvciEpOiBEZWxldGVkLgotLS0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiB8ICAyMCArKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFp
bmVyUXVlcnkuY3BwICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWlu
ZXJRdWVyeS5oICAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5UGFyc2VyLmNwcCAgIHwgIDU4IC0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
b250YWluZXJRdWVyeVBhcnNlci5oICAgICB8ICAgOCArLQogLi4uL2Nzcy9xdWVyeS9HZW5lcmlj
TWVkaWFRdWVyeUV2YWx1YXRvci5oICAgIHwgMTA3ICsrKysrKysrKysrKysrKysrKwogLi4uL2Nz
cy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oICAgICAgIHwgIDk3ICsrKysrKysrKysr
KysrKysKIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oICAgICAgICB8ICAz
MSArKysrKwogLi4uL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwIHwg
IDc5ICsrKystLS0tLS0tLS0KIC4uLi9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVh
dG9yLmggICB8ICA0MSArLS0tLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAyOTEgaW5zZXJ0aW9ucygr
KSwgMTU4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nz
cy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmgKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlU
eXBlcy5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGY5ZmYwMTA2NGIwZC4uMTQ5Y2Y1M2ZiYjBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NTAzLDYgKzU1
MDMsOSBAQAogCQlFNEQ2OEVCNTE3QjREQkRDMDBDQkRDQTggLyogU3R5bGVSZXNvbHZlRm9yRm9u
dFJhdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRE
NjhFQjMxN0I0REJEQzAwQ0JEQ0E4IC8qIFN0eWxlUmVzb2x2ZUZvckZvbnRSYXcuaCAqLzsgfTsK
IAkJRTREODZFNkQyNjQwMzk0QzAwQjYyNDI1IC8qIFN0eWxlU2NvcGVPcmRpbmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ4NkU2QjI2NDAzOTRD
MDBCNjI0MjUgLyogU3R5bGVTY29wZU9yZGluYWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQ5ODhCNDE3QkZEMUY2MDA4NEZCODggLyogVGV4
dE5vZGVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0RDk4OEIzMTdCRkQxRjYwMDg0RkI4OCAvKiBUZXh0Tm9kZVRyYXZlcnNhbC5oICov
OyB9OworCQlFNERBNUUzNjI4OUQyNDIwMDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlQYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0REE1
RTM0Mjg5RDIzRjMwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oICovOyB9Owor
CQlFNERBNUUzRDI4QTI4MDU3MDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREQTVFMzUyODlE
MjNGRDAwODQ5QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNERBNUU0MDI4QTI4OEY4MDA4NDlC
Q0YgLyogR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0REE1RTNGMjhBMjg4RjgwMDg0OUJDRiAvKiBHZW5l
cmljTWVkaWFRdWVyeUV2YWx1YXRvci5oICovOyB9OwogCQlFNERBQ0U2QTFEMTJFMTBCMDA3NTk4
MEYgLyogU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNERBQ0U2OTFEMTJFMTBCMDA3NTk4MEYgLyogU3R5bGVQZW5k
aW5nUmVzb3VyY2VzLmggKi87IH07CiAJCUU0REVBQTE4MTdBOTNEQzMwMDBFMDQzMCAvKiBTdHls
ZVRyZWVSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTRERUFBMTYxN0E5M0RDMzAwMEUwNDMwIC8qIFN0eWxlVHJlZVJlc29sdmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRFMzlBRkIx
MzMwRUZBODAwM0FCMjc0IC8qIExlZ2FjeVRpbGVMYXllclBvb2wuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTM5QUZBMTMzMEVGQTgwMDNBQjI3NCAv
KiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggKi87IH07CkBAIC0xNzg4MCw2ICsxNzg4Myw5IEBACiAJ
CUU0RDg2RTZCMjY0MDM5NEMwMEI2MjQyNSAvKiBTdHlsZVNjb3BlT3JkaW5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVNjb3BlT3JkaW5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNEQ5ODhCMzE3QkZEMUY2MDA4NEZCODggLyogVGV4dE5vZGVU
cmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dE5vZGVUcmF2
ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTREOTg4QjUxN0JGRUIyMTAw
ODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRleHROb2RlVHJhdmVyc2FsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTREQTVFMzQyODlEMjNGMzAwODQ5QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5UGFy
c2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0REE1RTM1Mjg5RDIzRkQwMDg0OUJDRiAvKiBHZW5lcmlj
TWVkaWFRdWVyeVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTREQTVFM0YyOEEyODhGODAwODQ5QkNG
IC8qIEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0REFDRTY5MUQxMkUxMEIwMDc1OTgwRiAvKiBTdHlsZVBlbmRpbmdSZXNv
dXJjZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVQZW5kaW5nUmVz
b3VyY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0REFDRTZCMUQxMkUxMTYw
MDc1OTgwRiAvKiBTdHlsZVBlbmRpbmdSZXNvdXJjZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTRERUFBMTUxN0E5M0RDMzAwMEUwNDMwIC8qIFN0eWxlVHJlZVJl
c29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlVHJl
ZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyMDE4LDYgKzMy
MDI0LDE2IEBACiAJCQlwYXRoID0gdXBkYXRpbmc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQlFNERBNUUzRTI4QTI4NjczMDA4NDlCQ0YgLyogcXVlcnkgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUU0REE1RTNGMjhBMjg4RjgwMDg0
OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oICovLAorCQkJCUU0REE1RTM0Mjg5
RDIzRjMwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oICovLAorCQkJCUU0REE1
RTM1Mjg5RDIzRkQwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeVR5cGVzLmggKi8sCisJCQkp
OworCQkJcGF0aCA9IHF1ZXJ5OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
RTRGQjRCMUUyMzk1MzU2RjAwM0MzMzZBIC8qIGludGVncmF0aW9uICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTMyMTU1LDYgKzMyMTcxLDcgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCUJDRjE2NDREMjY2MjlGOUEwMDAyRjdFRiAvKiBjYWxjICovLAogCQkJ
CTk0NkQzNzI3MUQ2Q0IyMjUwMDc3MDg0RiAvKiBwYXJzZXIgKi8sCisJCQkJRTREQTVFM0UyOEEy
ODY3MzAwODQ5QkNGIC8qIHF1ZXJ5ICovLAogCQkJCTRCQUZEMERBMjE5MjFFQUQwMEMwQUI2NCAv
KiB0eXBlZG9tICovLAogCQkJCUZCRDZBRjg0MTVFRjIxRDQwMDhCNzExMCAvKiBCYXNpY1NoYXBl
RnVuY3Rpb25zLmNwcCAqLywKIAkJCQlGQkQ2QUY4NTE1RUYyMUQ0MDA4QjcxMTAgLyogQmFzaWNT
aGFwZUZ1bmN0aW9ucy5oICovLApAQCAtMzUyNjgsNiArMzUyODUsOSBAQAogCQkJCUMwQzA1NEND
MTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMjNGMERCMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTREQTVFNDAyOEEyODhGODAwODQ5QkNG
IC8qIEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNERB
NUUzNjI4OUQyNDIwMDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUU0REE1RTNEMjhBMjgwNTcwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVy
eVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNDE0RjREREU2MDAzRTdBNzAgLyog
R2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI1MTRGNERERTYwMDNFN0E3
MSAvKiBHZW9sb2NhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjcxNEY0
RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmNwcAppbmRleCAwMTM1YmZhYjRhNzIuLjYwNTI5
ZWQxMTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnkuY3BwCkBAIC0xNzMsNyAr
MTczLDcgQEAgdm9pZCBzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgU2l6
ZUZlYXR1cmUmIHNpemVGZWF0dXJlKQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlwZT4K
IHZvaWQgc2VyaWFsaXplKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENvbmRpdGlvblR5
cGUmIGNvbmRpdGlvbikKIHsKLSAgICBpZiAoY29uZGl0aW9uLnF1ZXJpZXMuc2l6ZSgpID09IDEg
JiYgY29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvciA9PSBMb2dpY2FsT3BlcmF0b3I6Ok5vdCkgewor
ICAgIGlmIChjb25kaXRpb24ucXVlcmllcy5zaXplKCkgPT0gMSAmJiBjb25kaXRpb24ubG9naWNh
bE9wZXJhdG9yID09IE1ROjpMb2dpY2FsT3BlcmF0b3I6Ok5vdCkgewogICAgICAgICBidWlsZGVy
LmFwcGVuZCgibm90ICIpOwogICAgICAgICBzZXJpYWxpemUoYnVpbGRlciwgY29uZGl0aW9uLnF1
ZXJpZXMuZmlyc3QoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lk
IHNlcmlhbGl6ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDb25kaXRpb25UeXBlJiBj
b25kaXRpb24pCiAKICAgICBmb3IgKGF1dG8mIHF1ZXJ5IDogY29uZGl0aW9uLnF1ZXJpZXMpIHsK
ICAgICAgICAgaWYgKCZxdWVyeSAhPSAmY29uZGl0aW9uLnF1ZXJpZXMuZmlyc3QoKSkKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvbmRpdGlvbi5sb2dpY2FsT3BlcmF0b3IgPT0gTG9naWNh
bE9wZXJhdG9yOjpBbmQgPyAiIGFuZCAiIDogIiBvciAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGNvbmRpdGlvbi5sb2dpY2FsT3BlcmF0b3IgPT0gTVE6OkxvZ2ljYWxPcGVyYXRvcjo6
QW5kID8gIiBhbmQgIiA6ICIgb3IgIik7CiAgICAgICAgIHNlcmlhbGl6ZShidWlsZGVyLCBxdWVy
eSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1
ZXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnkuaAppbmRleCBkMTE4Mjkz
YjNlMDcuLmQzYjgwN2Y0NDM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRh
aW5lclF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmgKQEAg
LTI0LDYgKzI0LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW5lcmljTWVkaWFR
dWVyeVR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgpAQCAtNDYsMTIgKzQ3
LDExIEBAIHN0cnVjdCBVbmtub3duUXVlcnkgewogCiB1c2luZyBRdWVyeUluUGFyZW5zID0gc3Rk
Ojp2YXJpYW50PENvbnRhaW5lckNvbmRpdGlvbiwgU2l6ZUZlYXR1cmUsIFVua25vd25RdWVyeT47
CiAKLWVudW0gY2xhc3MgTG9naWNhbE9wZXJhdG9yIDogdWludDhfdCB7IEFuZCwgT3IsIE5vdCB9
OwogZW51bSBjbGFzcyBDb21wYXJpc29uT3BlcmF0b3IgOiB1aW50OF90IHsgTGVzc1RoYW4sIExl
c3NUaGFuT3JFcXVhbCwgRXF1YWwsIEdyZWF0ZXJUaGFuLCBHcmVhdGVyVGhhbk9yRXF1YWwgfTsK
IGVudW0gY2xhc3MgU3ludGF4IDogdWludDhfdCB7IEJvb2xlYW4sIENvbG9uLCBSYW5nZSB9Owog
CiBzdHJ1Y3QgQ29udGFpbmVyQ29uZGl0aW9uIHsKLSAgICBMb2dpY2FsT3BlcmF0b3IgbG9naWNh
bE9wZXJhdG9yIHsgTG9naWNhbE9wZXJhdG9yOjpBbmQgfTsKKyAgICBNUTo6TG9naWNhbE9wZXJh
dG9yIGxvZ2ljYWxPcGVyYXRvciB7IE1ROjpMb2dpY2FsT3BlcmF0b3I6OkFuZCB9OwogICAgIFZl
Y3RvcjxRdWVyeUluUGFyZW5zPiBxdWVyaWVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
b250YWluZXJRdWVyeVBhcnNlci5jcHAKaW5kZXggNDU4OWJhYmFkMWQxLi5lMzcxYzg5Njc2OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmNwcApAQCAtODcs
NjQgKzg3LDYgQEAgc3RkOjpvcHRpb25hbDxDUTo6UXVlcnlJblBhcmVucz4gQ29udGFpbmVyUXVl
cnlQYXJzZXI6OmNvbnN1bWVRdWVyeUluUGFyZW5zKENTU1AKICAgICByZXR1cm4geyB9OwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDb25kaXRpb25UeXBlPgotc3RkOjpvcHRpb25hbDxDb25kaXRp
b25UeXBlPiBDb250YWluZXJRdWVyeVBhcnNlcjo6Y29uc3VtZUNvbmRpdGlvbihDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICBhdXRvIGNvbnN1bWVRdWVyeSA9IFsmXShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkgewotICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2Ft
ZV92PENROjpDb250YWluZXJDb25kaXRpb24sIENvbmRpdGlvblR5cGU+KQotICAgICAgICAgICAg
cmV0dXJuIGNvbnN1bWVRdWVyeUluUGFyZW5zKHJhbmdlKTsKLSAgICAgICAgLy8gU3R5bGUgcXVl
cnkgc3VwcG9ydCB3b3VsZCBiZSBoZXJlLgotICAgIH07Ci0KLSAgICBpZiAocmFuZ2UucGVlaygp
LnR5cGUoKSA9PSBJZGVudFRva2VuKSB7Ci0gICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZU5vdCkgewotICAgICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHF1ZXJ5ID0gY29uc3VtZVF1ZXJ5KHJhbmdl
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29uZGl0aW9uVHlwZSB7IENROjpMb2dpY2FsT3Bl
cmF0b3I6Ok5vdCwgeyAqcXVlcnkgfSB9OwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIENvbmRpdGlvblR5cGUgY29uZGl0aW9uOwotCi0gICAgYXV0byBx
dWVyeSA9IGNvbnN1bWVRdWVyeShyYW5nZSk7Ci0gICAgaWYgKCFxdWVyeSkKLSAgICAgICAgcmV0
dXJuIHsgfTsKLQotICAgIGNvbmRpdGlvbi5xdWVyaWVzLmFwcGVuZCgqcXVlcnkpOwotICAgIHJh
bmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7Ci0KLSAgICBhdXRvIGNvbnN1bWVPcGVyYXRvciA9IFsm
XSgpIC0+IHN0ZDo6b3B0aW9uYWw8Q1E6OkxvZ2ljYWxPcGVyYXRvcj4gewotICAgICAgICBhdXRv
IG9wZXJhdG9yVG9rZW4gPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwotICAg
ICAgICBpZiAob3BlcmF0b3JUb2tlbi50eXBlKCkgIT0gSWRlbnRUb2tlbikKLSAgICAgICAgICAg
IHJldHVybiB7IH07Ci0gICAgICAgIGlmIChvcGVyYXRvclRva2VuLmlkKCkgPT0gQ1NTVmFsdWVB
bmQpCi0gICAgICAgICAgICByZXR1cm4gQ1E6OkxvZ2ljYWxPcGVyYXRvcjo6QW5kOwotICAgICAg
ICBpZiAob3BlcmF0b3JUb2tlbi5pZCgpID09IENTU1ZhbHVlT3IpCi0gICAgICAgICAgICByZXR1
cm4gQ1E6OkxvZ2ljYWxPcGVyYXRvcjo6T3I7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfTsK
LQotICAgIHdoaWxlICghcmFuZ2UuYXRFbmQoKSkgewotICAgICAgICBhdXRvIG9wID0gY29uc3Vt
ZU9wZXJhdG9yKCk7Ci0gICAgICAgIGlmICghb3ApCi0gICAgICAgICAgICByZXR1cm4geyB9Owot
ICAgICAgICBpZiAoY29uZGl0aW9uLnF1ZXJpZXMuc2l6ZSgpID4gMSAmJiBjb25kaXRpb24ubG9n
aWNhbE9wZXJhdG9yICE9ICpvcCkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAg
Y29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvciA9ICpvcDsKLQotICAgICAgICBhdXRvIHF1ZXJ5ID0g
Y29uc3VtZVF1ZXJ5KHJhbmdlKTsKLSAgICAgICAgaWYgKCFxdWVyeSkKLSAgICAgICAgICAgIHJl
dHVybiB7IH07Ci0KLSAgICAgICAgY29uZGl0aW9uLnF1ZXJpZXMuYXBwZW5kKCpxdWVyeSk7Ci0g
ICAgICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNv
bmRpdGlvbjsKLX0KLQogc3RkOjpvcHRpb25hbDxDUTo6U2l6ZUZlYXR1cmU+IENvbnRhaW5lclF1
ZXJ5UGFyc2VyOjpjb25zdW1lU2l6ZUZlYXR1cmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
CiB7CiAgICAgYXV0byBjb25zdW1lID0gWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5UGFyc2VyLmgKaW5kZXggZGU3YWRkNWNiNzgxLi4xNmQwOWIxNGRlYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5oCkBAIC0yNywyNCArMjcsMjQgQEAK
ICNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW4u
aCIKICNpbmNsdWRlICJDb250YWluZXJRdWVyeS5oIgorI2luY2x1ZGUgIkdlbmVyaWNNZWRpYVF1
ZXJ5UGFyc2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTUGFyc2VyVG9r
ZW5SYW5nZTsKK2NsYXNzIENvbnRhaW5lclF1ZXJ5UGFyc2VyOwogCi1jbGFzcyBDb250YWluZXJR
dWVyeVBhcnNlciB7CitjbGFzcyBDb250YWluZXJRdWVyeVBhcnNlciA6IHB1YmxpYyBNUTo6R2Vu
ZXJpY01lZGlhUXVlcnlQYXJzZXI8Q29udGFpbmVyUXVlcnlQYXJzZXI+ICB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1E6OkNvbnRhaW5lclF1ZXJ5PiBjb25zdW1lQ29udGFp
bmVyUXVlcnkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsK
IAotcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPENROjpDb250YWluZXJRdWVyeT4gY29uc3Vt
ZUNvbnRhaW5lclF1ZXJ5KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKICAgICBzdGQ6Om9wdGlvbmFs
PENROjpRdWVyeUluUGFyZW5zPiBjb25zdW1lUXVlcnlJblBhcmVucyhDU1NQYXJzZXJUb2tlblJh
bmdlJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlwZT4gc3RkOjpvcHRpb25h
bDxDb25kaXRpb25UeXBlPiBjb25zdW1lQ29uZGl0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
ICAgICBzdGQ6Om9wdGlvbmFsPENROjpTaXplRmVhdHVyZT4gY29uc3VtZVNpemVGZWF0dXJlKENT
U1BhcnNlclRva2VuUmFuZ2UmKTsKICAgICBzdGQ6Om9wdGlvbmFsPENROjpTaXplRmVhdHVyZT4g
Y29uc3VtZVBsYWluU2l6ZUZlYXR1cmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogICAgIHN0ZDo6
b3B0aW9uYWw8Q1E6OlNpemVGZWF0dXJlPiBjb25zdW1lUmFuZ2VTaXplRmVhdHVyZShDU1NQYXJz
ZXJUb2tlblJhbmdlJik7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVmFsdWUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYpOwogCitwcml2YXRlOgogICAgIENvbnRhaW5lclF1ZXJ5UGFyc2VyKGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIDogbV9jb250ZXh0KGNvbnRl
eHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01l
ZGlhUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVk
aWFRdWVyeUV2YWx1YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMmIzNzJkMjNkZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBNUSB7CisKK2VudW0gY2xhc3MgRXZhbHVhdGlvblJlc3VsdCA6IHVp
bnQ4X3QgeyBGYWxzZSwgVHJ1ZSwgVW5rbm93biB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25j
cmV0ZUV2YWx1YXRvcj4KK2NsYXNzIEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsKK3B1Ymxp
YzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25kaXRpb25UeXBlLCB0eXBlbmFtZSBDb250ZXh0
PiBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlQ29uZGl0aW9uKGNvbnN0IENvbmRpdGlvblR5cGUm
LCBjb25zdCBDb250ZXh0JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3QgQ29uY3JldGVF
dmFsdWF0b3ImIGNvbmNyZXRlRXZhbHVhdG9yKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQ29uY3JldGVFdmFsdWF0b3ImPigqdGhpcyk7IH0KK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIENvbmNyZXRlRXZhbHVhdG9yPgordGVtcGxhdGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlwZSwg
dHlwZW5hbWUgQ29udGV4dD4KK0V2YWx1YXRpb25SZXN1bHQgR2VuZXJpY01lZGlhUXVlcnlFdmFs
dWF0b3I8Q29uY3JldGVFdmFsdWF0b3I+OjpldmFsdWF0ZUNvbmRpdGlvbihjb25zdCBDb25kaXRp
b25UeXBlJiBjb25kaXRpb24sICBjb25zdCBDb250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAg
IGlmIChjb25kaXRpb24ucXVlcmllcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFdmFsdWF0
aW9uUmVzdWx0OjpVbmtub3duOworCisgICAgc3dpdGNoIChjb25kaXRpb24ubG9naWNhbE9wZXJh
dG9yKSB7CisgICAgY2FzZSBMb2dpY2FsT3BlcmF0b3I6Ok5vdDoKKyAgICAgICAgcmV0dXJuICFj
b25jcmV0ZUV2YWx1YXRvcigpLmV2YWx1YXRlUXVlcnlJblBhcmVucyhjb25kaXRpb24ucXVlcmll
cy5maXJzdCgpLCBjb250ZXh0KTsKKworICAgIGNhc2UgTG9naWNhbE9wZXJhdG9yOjpBbmQ6IHsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAgICAgICBm
b3IgKGF1dG8gcXVlcnkgOiBjb25kaXRpb24ucXVlcmllcykgeworICAgICAgICAgICAgYXV0byBx
dWVyeVJlc3VsdCA9IGNvbmNyZXRlRXZhbHVhdG9yKCkuZXZhbHVhdGVRdWVyeUluUGFyZW5zKHF1
ZXJ5LCBjb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChxdWVyeVJlc3VsdCA9PSBFdmFsdWF0aW9u
UmVzdWx0OjpGYWxzZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6
RmFsc2U7CisgICAgICAgICAgICBpZiAocXVlcnlSZXN1bHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6
VW5rbm93bikKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBFdmFsdWF0aW9uUmVzdWx0OjpVbmtu
b3duOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgY2Fz
ZSBMb2dpY2FsT3BlcmF0b3I6Ok9yOiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gRXZhbHVhdGlv
blJlc3VsdDo6RmFsc2U7CisgICAgICAgIGZvciAoYXV0byBxdWVyeSA6IGNvbmRpdGlvbi5xdWVy
aWVzKSB7CisgICAgICAgICAgICBhdXRvIHF1ZXJ5UmVzdWx0ID0gY29uY3JldGVFdmFsdWF0b3Io
KS5ldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMocXVlcnksIGNvbnRleHQpOworICAgICAgICAgICAgaWYg
KHF1ZXJ5UmVzdWx0ID09IEV2YWx1YXRpb25SZXN1bHQ6OlRydWUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisgICAgICAgICAgICBpZiAocXVlcnlSZXN1
bHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bikKKyAgICAgICAgICAgICAgICByZXN1bHQg
PSBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICB9CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCitpbmxpbmUgRXZhbHVhdGlvblJlc3VsdCBvcGVyYXRvciYoRXZhbHVhdGlvblJlc3VsdCBs
ZWZ0LCBFdmFsdWF0aW9uUmVzdWx0IHJpZ2h0KQoreworICAgIGlmIChsZWZ0ID09IEV2YWx1YXRp
b25SZXN1bHQ6OlVua25vd24gfHwgcmlnaHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bikK
KyAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgaWYgKGxlZnQg
PT0gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSAmJiByaWdodCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpU
cnVlKQorICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKyAgICByZXR1cm4g
RXZhbHVhdGlvblJlc3VsdDo6RmFsc2U7Cit9CisKK2lubGluZSBFdmFsdWF0aW9uUmVzdWx0IG9w
ZXJhdG9yIShFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKK3sKKyAgICBzd2l0Y2ggKHJlc3VsdCkg
eworICAgIGNhc2UgRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZToKKyAgICAgICAgcmV0dXJuIEV2YWx1
YXRpb25SZXN1bHQ6OkZhbHNlOworICAgIGNhc2UgRXZhbHVhdGlvblJlc3VsdDo6RmFsc2U6Cisg
ICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAgIGNhc2UgRXZhbHVhdGlv
blJlc3VsdDo6VW5rbm93bjoKKyAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25v
d247CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2lubGlu
ZSBFdmFsdWF0aW9uUmVzdWx0IHRvRXZhbHVhdGlvblJlc3VsdChib29sIGJvb2xlYW4pCit7Cisg
ICAgcmV0dXJuIGJvb2xlYW4gPyBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlIDogRXZhbHVhdGlvblJl
c3VsdDo6RmFsc2U7Cit9CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5
L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lZTExYzBjOTU4YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaApAQCAtMCwwICsxLDk3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Q1NTUGFyc2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCisjaW5jbHVk
ZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgTVEgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25jcmV0ZVBhcnNlcj4KK2NsYXNzIEdlbmVy
aWNNZWRpYVF1ZXJ5UGFyc2VyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25k
aXRpb25UeXBlPiBzdGQ6Om9wdGlvbmFsPENvbmRpdGlvblR5cGU+IGNvbnN1bWVDb25kaXRpb24o
Q1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCitwcml2YXRlOgorICAgIENvbmNyZXRlUGFyc2VyJiBj
b25jcmV0ZVBhcnNlcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbmNyZXRlUGFyc2VyJj4oKnRo
aXMpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25jcmV0ZVBhcnNlcj4KK3RlbXBsYXRl
PHR5cGVuYW1lIENvbmRpdGlvblR5cGU+CitzdGQ6Om9wdGlvbmFsPENvbmRpdGlvblR5cGU+IEdl
bmVyaWNNZWRpYVF1ZXJ5UGFyc2VyPENvbmNyZXRlUGFyc2VyPjo6Y29uc3VtZUNvbmRpdGlvbihD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUo
KSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZU5vdCkgeworICAgICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KTsKKyAgICAgICAgICAgIGlmIChhdXRvIHF1ZXJ5ID0gY29uY3JldGVQYXJzZXIoKS5jb25zdW1l
UXVlcnlJblBhcmVucyhyYW5nZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIENvbmRpdGlvblR5
cGUgeyBMb2dpY2FsT3BlcmF0b3I6Ok5vdCwgeyAqcXVlcnkgfSB9OworICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIENvbmRpdGlvblR5cGUgY29uZGl0aW9u
OworCisgICAgYXV0byBxdWVyeSA9IGNvbmNyZXRlUGFyc2VyKCkuY29uc3VtZVF1ZXJ5SW5QYXJl
bnMocmFuZ2UpOworICAgIGlmICghcXVlcnkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBj
b25kaXRpb24ucXVlcmllcy5hcHBlbmQoKnF1ZXJ5KTsKKyAgICByYW5nZS5jb25zdW1lV2hpdGVz
cGFjZSgpOworCisgICAgYXV0byBjb25zdW1lT3BlcmF0b3IgPSBbJl0oKSAtPiBzdGQ6Om9wdGlv
bmFsPExvZ2ljYWxPcGVyYXRvcj4geworICAgICAgICBhdXRvIG9wZXJhdG9yVG9rZW4gPSByYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICBpZiAob3BlcmF0b3JUb2tl
bi50eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IGlmIChvcGVyYXRvclRva2VuLmlkKCkgPT0gQ1NTVmFsdWVBbmQpCisgICAgICAgICAgICByZXR1
cm4gTG9naWNhbE9wZXJhdG9yOjpBbmQ7CisgICAgICAgIGlmIChvcGVyYXRvclRva2VuLmlkKCkg
PT0gQ1NTVmFsdWVPcikKKyAgICAgICAgICAgIHJldHVybiBMb2dpY2FsT3BlcmF0b3I6Ok9yOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkp
IHsKKyAgICAgICAgYXV0byBvcCA9IGNvbnN1bWVPcGVyYXRvcigpOworICAgICAgICBpZiAoIW9w
KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKGNvbmRpdGlvbi5xdWVyaWVz
LnNpemUoKSA+IDEgJiYgY29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvciAhPSAqb3ApCisgICAgICAg
ICAgICByZXR1cm4geyB9OworCisgICAgICAgIGNvbmRpdGlvbi5sb2dpY2FsT3BlcmF0b3IgPSAq
b3A7CisKKyAgICAgICAgYXV0byBxdWVyeSA9IGNvbmNyZXRlUGFyc2VyKCkuY29uc3VtZVF1ZXJ5
SW5QYXJlbnMocmFuZ2UpOworICAgICAgICBpZiAoIXF1ZXJ5KQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgICAgICBjb25kaXRpb24ucXVlcmllcy5hcHBlbmQoKnF1ZXJ5KTsKKyAgICAg
ICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICB9CisKKyAgICByZXR1cm4gY29uZGl0
aW9uOworfQorCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2Vu
ZXJpY01lZGlhUXVlcnlUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNN
ZWRpYVF1ZXJ5VHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmNhNGI0ZTk2Mjk4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmU6Ok1R
IHsKKworZW51bSBjbGFzcyBMb2dpY2FsT3BlcmF0b3IgOiB1aW50OF90IHsgQW5kLCBPciwgTm90
IH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5
RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVh
dG9yLmNwcAppbmRleCA2MTQ3NGZlODdkMDQuLjg2OTU3ZDE2YzVjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNTksNyArNTks
NyBAQCBib29sIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZShjb25zdCBDUTo6Q29u
dGFpbmVyUXVlcnkmIGNvbnRhaW5lclF1ZXJ5KQogICAgIGlmICghY29udGFpbmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZXZhbHVhdGVDb25kaXRpb24oY29udGFpbmVy
UXVlcnkuY29uZGl0aW9uLCAqY29udGFpbmVyKSA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwor
ICAgIHJldHVybiBldmFsdWF0ZUNvbmRpdGlvbihjb250YWluZXJRdWVyeS5jb25kaXRpb24sICpj
b250YWluZXIpID09IE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwogfQogCiBhdXRvIENvbnRh
aW5lclF1ZXJ5RXZhbHVhdG9yOjpzZWxlY3RDb250YWluZXIoY29uc3QgQ1E6OkNvbnRhaW5lclF1
ZXJ5JiBjb250YWluZXJRdWVyeSkgY29uc3QgLT4gc3RkOjpvcHRpb25hbDxTZWxlY3RlZENvbnRh
aW5lcj4KQEAgLTE2NCw1MiArMTY0LDE3IEBAIGNvbnN0IEVsZW1lbnQqIENvbnRhaW5lclF1ZXJ5
RXZhbHVhdG9yOjpzZWxlY3RDb250YWluZXIoT3B0aW9uU2V0PENROjpBeGlzPiBheGVzCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotYXV0byBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVR
dWVyeUluUGFyZW5zKGNvbnN0IENROjpRdWVyeUluUGFyZW5zJiBxdWVyeUluUGFyZW5zLCBjb25z
dCBTZWxlY3RlZENvbnRhaW5lciYgY29udGFpbmVyKSBjb25zdCAtPiBFdmFsdWF0aW9uUmVzdWx0
CithdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMoY29u
c3QgQ1E6OlF1ZXJ5SW5QYXJlbnMmIHF1ZXJ5SW5QYXJlbnMsIGNvbnN0IFNlbGVjdGVkQ29udGFp
bmVyJiBjb250YWluZXIpIGNvbnN0IC0+IE1ROjpFdmFsdWF0aW9uUmVzdWx0CiB7CiAgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24ocXVlcnlJblBhcmVucywgWyZdKGNvbnN0IENROjpDb250YWluZXJD
b25kaXRpb24mIGNvbnRhaW5lckNvbmRpdGlvbikgewogICAgICAgICByZXR1cm4gZXZhbHVhdGVD
b25kaXRpb24oY29udGFpbmVyQ29uZGl0aW9uLCBjb250YWluZXIpOwogICAgIH0sIFsmXShjb25z
dCBDUTo6U2l6ZUZlYXR1cmUmIHNpemVGZWF0dXJlKSB7CiAgICAgICAgIHJldHVybiBldmFsdWF0
ZVNpemVGZWF0dXJlKHNpemVGZWF0dXJlLCBjb250YWluZXIpOwogICAgIH0sIFsmXShjb25zdCBD
UTo6VW5rbm93blF1ZXJ5JikgewotICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5r
bm93bjsKKyAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwogICAg
IH0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb25kaXRpb25UeXBlPgotYXV0byBDb250YWlu
ZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVDb25kaXRpb24oY29uc3QgQ29uZGl0aW9uVHlwZSYg
Y29uZGl0aW9uLCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYgY29udGFpbmVyKSBjb25zdCAtPiBF
dmFsdWF0aW9uUmVzdWx0Ci17Ci0gICAgaWYgKGNvbmRpdGlvbi5xdWVyaWVzLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247Ci0KLSAgICBzd2l0Y2gg
KGNvbmRpdGlvbi5sb2dpY2FsT3BlcmF0b3IpIHsKLSAgICBjYXNlIENROjpMb2dpY2FsT3BlcmF0
b3I6Ok5vdDoKLSAgICAgICAgcmV0dXJuICFldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMoY29uZGl0aW9u
LnF1ZXJpZXMuZmlyc3QoKSwgY29udGFpbmVyKTsKLSAgICBjYXNlIENROjpMb2dpY2FsT3BlcmF0
b3I6OkFuZDogewotICAgICAgICBhdXRvIHJlc3VsdCA9IEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7
Ci0gICAgICAgIGZvciAoYXV0byBxdWVyeSA6IGNvbmRpdGlvbi5xdWVyaWVzKSB7Ci0gICAgICAg
ICAgICBhdXRvIHF1ZXJ5UmVzdWx0ID0gZXZhbHVhdGVRdWVyeUluUGFyZW5zKHF1ZXJ5LCBjb250
YWluZXIpOwotICAgICAgICAgICAgaWYgKHF1ZXJ5UmVzdWx0ID09IEV2YWx1YXRpb25SZXN1bHQ6
OkZhbHNlKQotICAgICAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsK
LSAgICAgICAgICAgIGlmIChxdWVyeVJlc3VsdCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3du
KQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgY2FzZSBDUTo6TG9n
aWNhbE9wZXJhdG9yOjpPcjogewotICAgICAgICBhdXRvIHJlc3VsdCA9IEV2YWx1YXRpb25SZXN1
bHQ6OkZhbHNlOwotICAgICAgICBmb3IgKGF1dG8gcXVlcnkgOiBjb25kaXRpb24ucXVlcmllcykg
ewotICAgICAgICAgICAgYXV0byBxdWVyeVJlc3VsdCA9IGV2YWx1YXRlUXVlcnlJblBhcmVucyhx
dWVyeSwgY29udGFpbmVyKTsKLSAgICAgICAgICAgIGlmIChxdWVyeVJlc3VsdCA9PSBFdmFsdWF0
aW9uUmVzdWx0OjpUcnVlKQotICAgICAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0
OjpUcnVlOwotICAgICAgICAgICAgaWYgKHF1ZXJ5UmVzdWx0ID09IEV2YWx1YXRpb25SZXN1bHQ6
OlVua25vd24pCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gRXZhbHVhdGlvblJlc3VsdDo6VW5r
bm93bjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICB9Ci0g
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gY29tcHV0ZVNpemUoY29uc3QgQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkKIHsKICAgICBpZiAoIWlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCkBAIC0yMjcsMTQgKzE5MiwxNCBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlU2l6ZShjb25zdCBDU1NWYWx1ZSogdmFs
dWUsIGNvbnN0IENTU1RvTAogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3Ro
PExheW91dFVuaXQ+KGNvbnZlcnNpb25EYXRhKTsKIH0KIAotYXV0byBDb250YWluZXJRdWVyeUV2
YWx1YXRvcjo6ZXZhbHVhdGVTaXplRmVhdHVyZShjb25zdCBDUTo6U2l6ZUZlYXR1cmUmIHNpemVG
ZWF0dXJlLCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYgY29udGFpbmVyKSBjb25zdCAtPiBFdmFs
dWF0aW9uUmVzdWx0CithdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZVNpemVG
ZWF0dXJlKGNvbnN0IENROjpTaXplRmVhdHVyZSYgc2l6ZUZlYXR1cmUsIGNvbnN0IFNlbGVjdGVk
Q29udGFpbmVyJiBjb250YWluZXIpIGNvbnN0IC0+IE1ROjpFdmFsdWF0aW9uUmVzdWx0CiB7CiAg
ICAgLy8gIklmIHRoZSBxdWVyeSBjb250YWluZXIgZG9lcyBub3QgaGF2ZSBhIHByaW5jaXBhbCBi
b3gsIG9yIHRoZSBwcmluY2lwYWwgYm94IGlzIG5vdCBhIGxheW91dCBjb250YWlubWVudCBib3gs
CiAgICAgLy8gb3IgdGhlIHF1ZXJ5IGNvbnRhaW5lciBkb2VzIG5vdCBzdXBwb3J0IGNvbnRhaW5l
ciBzaXplIHF1ZXJpZXMgb24gdGhlIHJlbGV2YW50IGF4ZXMsIHRoZW4gdGhlIHJlc3VsdCBvZgog
ICAgIC8vIGV2YWx1YXRpbmcgdGhlIHNpemUgZmVhdHVyZSBpcyB1bmtub3duLiIKICAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbnRhaW4tMy8jc2l6ZS1jb250YWluZXIKICAg
ICBpZiAoIWNvbnRhaW5lci5yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1
bHQ6OlVua25vd247CisgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93
bjsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gKmNvbnRhaW5lci5yZW5kZXJlcjsKIApAQCAtMjUz
LDcgKzIxOCw3IEBAIGF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlU2l6ZUZl
YXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJlJiBzaXplRmVhCiAgICAgfTsKIAogICAgIGlmICgh
aGFzRWxpZ2libGVDb250YWlubWVudCgpKQotICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3Vs
dDo6VW5rbm93bjsKKyAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3du
OwogCiAgICAgYXV0byBjb21wYXJlID0gW10oQ1E6OkNvbXBhcmlzb25PcGVyYXRvciBvcCwgYXV0
byBsZWZ0LCBhdXRvIHJpZ2h0KSB7CiAgICAgICAgIHN3aXRjaCAob3ApIHsKQEAgLTI3NCwxOSAr
MjM5LDE5IEBAIGF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlU2l6ZUZlYXR1
cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJlJiBzaXplRmVhCiAgICAgZW51bSBjbGFzcyBTaWRlIDog
dWludDhfdCB7IExlZnQsIFJpZ2h0IH07CiAgICAgYXV0byBldmFsdWF0ZVNpemVDb21wYXJpc29u
ID0gWyZdKExheW91dFVuaXQgc2l6ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxDUTo6Q29tcGFyaXNv
bj4mIGNvbXBhcmlzb24sIFNpZGUgc2lkZSkgewogICAgICAgICBpZiAoIWNvbXBhcmlzb24pCi0g
ICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKyAgICAgICAgICAgIHJl
dHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKICAgICAgICAgYXV0byBleHByZXNzaW9u
U2l6ZSA9IGNvbXB1dGVTaXplKGNvbXBhcmlzb24tPnZhbHVlLmdldCgpLCBjb250YWluZXIuY29u
dmVyc2lvbkRhdGEpOwogICAgICAgICBpZiAoIWV4cHJlc3Npb25TaXplKQotICAgICAgICAgICAg
cmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgICAgICAgICByZXR1cm4gTVE6
OkV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiAgICAgICAgIGF1dG8gbGVmdCA9IHNpZGUgPT0g
U2lkZTo6TGVmdCA/ICpleHByZXNzaW9uU2l6ZSA6IHNpemU7CiAgICAgICAgIGF1dG8gcmlnaHQg
PSBzaWRlID09IFNpZGU6OkxlZnQgPyBzaXplIDogKmV4cHJlc3Npb25TaXplOwogCi0gICAgICAg
IHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21wYXJpc29uLT5vcCwgbGVmdCwg
cmlnaHQpKTsKKyAgICAgICAgcmV0dXJuIE1ROjp0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShj
b21wYXJpc29uLT5vcCwgbGVmdCwgcmlnaHQpKTsKICAgICB9OwogCiAgICAgYXV0byBldmFsdWF0
ZVNpemUgPSBbJl0oTGF5b3V0VW5pdCBzaXplKSB7CiAgICAgICAgIGlmICghc2l6ZUZlYXR1cmUu
bGVmdENvbXBhcmlzb24gJiYgIXNpemVGZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbikKLSAgICAgICAg
ICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoISFzaXplKTsKKyAgICAgICAgICAgIHJldHVy
biBNUTo6dG9FdmFsdWF0aW9uUmVzdWx0KCEhc2l6ZSk7CiAKICAgICAgICAgYXV0byBsZWZ0UmVz
dWx0ID0gZXZhbHVhdGVTaXplQ29tcGFyaXNvbihzaXplLCBzaXplRmVhdHVyZS5sZWZ0Q29tcGFy
aXNvbiwgU2lkZTo6TGVmdCk7CiAgICAgICAgIGF1dG8gcmlnaHRSZXN1bHQgPSBldmFsdWF0ZVNp
emVDb21wYXJpc29uKHNpemUsIHNpemVGZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbiwgU2lkZTo6Umln
aHQpOwpAQCAtMjk2LDI3ICsyNjEsMjcgQEAgYXV0byBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6
ZXZhbHVhdGVTaXplRmVhdHVyZShjb25zdCBDUTo6U2l6ZUZlYXR1cmUmIHNpemVGZWEKIAogICAg
IGF1dG8gZXZhbHVhdGVBc3BlY3RSYXRpb0NvbXBhcmlzb24gPSBbJl0oZG91YmxlIGFzcGVjdFJh
dGlvLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENROjpDb21wYXJpc29uPiYgY29tcGFyaXNvbiwgU2lk
ZSBzaWRlKSB7CiAgICAgICAgIGlmICghY29tcGFyaXNvbikKLSAgICAgICAgICAgIHJldHVybiBF
dmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAgICAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9u
UmVzdWx0OjpUcnVlOwogCiAgICAgICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0Pihjb21wYXJpc29u
LT52YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsK
KyAgICAgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIAogICAg
ICAgICBhdXRvJiByYXRpb0xpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCpjb21wYXJpc29u
LT52YWx1ZSk7CiAgICAgICAgIGlmIChyYXRpb0xpc3QubGVuZ3RoKCkgIT0gMikKLSAgICAgICAg
ICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICAgICAgcmV0dXJu
IE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwogCiAgICAgICAgIGF1dG8gZmlyc3QgPSBk
eW5hbWljRG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHJhdGlvTGlzdC5pdGVtKDApKTsKICAg
ICAgICAgYXV0byBzZWNvbmQgPSBkeW5hbWljRG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHJh
dGlvTGlzdC5pdGVtKDEpKTsKIAogICAgICAgICBpZiAoIWZpcnN0IHx8ICFzZWNvbmQgfHwgIWZp
cnN0LT5pc051bWJlck9ySW50ZWdlcigpIHx8ICFzZWNvbmQtPmlzTnVtYmVyT3JJbnRlZ2VyKCkp
Ci0gICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKKyAgICAgICAg
ICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIAogICAgICAgICBhdXRv
IGV4cHJlc3Npb25SYXRpbyA9IGZpcnN0LT5kb3VibGVWYWx1ZSgpIC8gc2Vjb25kLT5kb3VibGVW
YWx1ZSgpOwogCiAgICAgICAgIGF1dG8gbGVmdCA9IHNpZGUgPT0gU2lkZTo6TGVmdCA/IGV4cHJl
c3Npb25SYXRpbyA6IGFzcGVjdFJhdGlvOwogICAgICAgICBhdXRvIHJpZ2h0ID0gc2lkZSA9PSBT
aWRlOjpMZWZ0ID8gYXNwZWN0UmF0aW8gOiBleHByZXNzaW9uUmF0aW87CiAKLSAgICAgICAgcmV0
dXJuIHRvRXZhbHVhdGlvblJlc3VsdChjb21wYXJlKGNvbXBhcmlzb24tPm9wLCBsZWZ0LCByaWdo
dCkpOworICAgICAgICByZXR1cm4gTVE6OnRvRXZhbHVhdGlvblJlc3VsdChjb21wYXJlKGNvbXBh
cmlzb24tPm9wLCBsZWZ0LCByaWdodCkpOwogICAgIH07CiAKICAgICBpZiAoc2l6ZUZlYXR1cmUu
bmFtZSA9PSBDUTo6RmVhdHVyZU5hbWVzOjp3aWR0aCgpKQpAQCAtMzM1LDcgKzMwMCw3IEBAIGF1
dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlU2l6ZUZlYXR1cmUoY29uc3QgQ1E6
OlNpemVGZWF0dXJlJiBzaXplRmVhCiAgICAgICAgIGF1dG8gYm94UmF0aW8gPSByZW5kZXJlci5j
b250ZW50V2lkdGgoKS50b0RvdWJsZSgpIC8gcmVuZGVyZXIuY29udGVudEhlaWdodCgpLnRvRG91
YmxlKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIXNpemVGZWF0dXJlLmxlZnRDb21wYXJpc29u
ICYmICFzaXplRmVhdHVyZS5yaWdodENvbXBhcmlzb24pCi0gICAgICAgICAgICByZXR1cm4gdG9F
dmFsdWF0aW9uUmVzdWx0KCEhYm94UmF0aW8pOworICAgICAgICAgICAgcmV0dXJuIE1ROjp0b0V2
YWx1YXRpb25SZXN1bHQoISFib3hSYXRpbyk7CiAKICAgICAgICAgYXV0byBsZWZ0UmVzdWx0ID0g
ZXZhbHVhdGVBc3BlY3RSYXRpb0NvbXBhcmlzb24oYm94UmF0aW8sIHNpemVGZWF0dXJlLmxlZnRD
b21wYXJpc29uLCBTaWRlOjpMZWZ0KTsKICAgICAgICAgYXV0byByaWdodFJlc3VsdCA9IGV2YWx1
YXRlQXNwZWN0UmF0aW9Db21wYXJpc29uKGJveFJhdGlvLCBzaXplRmVhdHVyZS5yaWdodENvbXBh
cmlzb24sIFNpZGU6OlJpZ2h0KTsKQEAgLTM0NSwyNSArMzEwLDI1IEBAIGF1dG8gQ29udGFpbmVy
UXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlU2l6ZUZlYXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJl
JiBzaXplRmVhCiAKICAgICBpZiAoc2l6ZUZlYXR1cmUubmFtZSA9PSBDUTo6RmVhdHVyZU5hbWVz
OjpvcmllbnRhdGlvbigpKSB7CiAgICAgICAgIGlmICghc2l6ZUZlYXR1cmUucmlnaHRDb21wYXJp
c29uKQotICAgICAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAg
ICAgICAgICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiAKICAgICAgICAg
YXV0byYgY29tcGFyaXNvbiA9ICpzaXplRmVhdHVyZS5yaWdodENvbXBhcmlzb247CiAKICAgICAg
ICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oY29tcGFyaXNvbi52YWx1ZSkgfHwgY29tcGFy
aXNvbi5vcCAhPSBDUTo6Q29tcGFyaXNvbk9wZXJhdG9yOjpFcXVhbCkKLSAgICAgICAgICAgIHJl
dHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICAgICAgcmV0dXJuIE1ROjpF
dmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwogCiAgICAgICAgIGF1dG8mIHZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpzaXplRmVhdHVyZS5yaWdodENvbXBhcmlzb24tPnZhbHVl
KTsKIAogICAgICAgICBib29sIGlzUG9ydHJhaXQgPSByZW5kZXJlci5jb250ZW50SGVpZ2h0KCkg
Pj0gcmVuZGVyZXIuY29udGVudFdpZHRoKCk7CiAgICAgICAgIGlmICh2YWx1ZS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVQb3J0cmFpdCkKLSAgICAgICAgICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1
bHQoaXNQb3J0cmFpdCk7CisgICAgICAgICAgICByZXR1cm4gTVE6OnRvRXZhbHVhdGlvblJlc3Vs
dChpc1BvcnRyYWl0KTsKICAgICAgICAgaWYgKHZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxh
bmRzY2FwZSkKLSAgICAgICAgICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoIWlzUG9ydHJh
aXQpOworICAgICAgICAgICAgcmV0dXJuIE1ROjp0b0V2YWx1YXRpb25SZXN1bHQoIWlzUG9ydHJh
aXQpOwogCi0gICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAg
ICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiAgICAgfQogCi0gICAgcmV0
dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9u
UmVzdWx0OjpVbmtub3duOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFp
bmVyUXVlcnlFdmFsdWF0b3IuaAppbmRleCBjNzcxOTlkYjc3NDUuLjVkYjM4NDE3YTlkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5oCkBAIC0y
NSw2ICsyNSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbnRhaW5lclF1ZXJ5Lmgi
CisjaW5jbHVkZSAiR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJTZWxl
Y3Rvck1hdGNoaW5nU3RhdGUuaCIKICNpbmNsdWRlICJTdHlsZVNjb3BlT3JkaW5hbC5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTM1LDkgKzM2LDcgQEAgY2xhc3MgRWxlbWVudDsKIAogbmFt
ZXNwYWNlIFN0eWxlIHsKIAotZW51bSBjbGFzcyBFdmFsdWF0aW9uUmVzdWx0IDogdWludDhfdCB7
IEZhbHNlLCBUcnVlLCBVbmtub3duIH07Ci0KLWNsYXNzIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9y
IHsKK2NsYXNzIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yIDogcHVibGljIE1ROjpHZW5lcmljTWVk
aWFRdWVyeUV2YWx1YXRvcjxDb250YWluZXJRdWVyeUV2YWx1YXRvcj4gewogcHVibGljOgogICAg
IGVudW0gY2xhc3MgU2VsZWN0aW9uTW9kZSA6IGJvb2wgeyBFbGVtZW50LCBQc2V1ZG9FbGVtZW50
IH07CiAgICAgQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IoY29uc3QgRWxlbWVudCYsIFNlbGVjdGlv
bk1vZGUsIFNjb3BlT3JkaW5hbCwgU2VsZWN0b3JNYXRjaGluZ1N0YXRlKik7CkBAIC00NiwxMyAr
NDUsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IEVsZW1lbnQqIHNlbGVjdENvbnRh
aW5lcihPcHRpb25TZXQ8Q1E6OkF4aXM+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEVsZW1l
bnQmLCBTZWxlY3Rpb25Nb2RlID0gU2VsZWN0aW9uTW9kZTo6RWxlbWVudCwgU2NvcGVPcmRpbmFs
ID0gU2NvcGVPcmRpbmFsOjpFbGVtZW50LCBjb25zdCBDYWNoZWRRdWVyeUNvbnRhaW5lcnMqID0g
bnVsbHB0cik7CiAKLXByaXZhdGU6CiAgICAgc3RydWN0IFNlbGVjdGVkQ29udGFpbmVyOwotICAg
IHN0ZDo6b3B0aW9uYWw8U2VsZWN0ZWRDb250YWluZXI+IHNlbGVjdENvbnRhaW5lcihjb25zdCBD
UTo6Q29udGFpbmVyUXVlcnkmKSBjb25zdDsKKyAgICBNUTo6RXZhbHVhdGlvblJlc3VsdCBldmFs
dWF0ZVF1ZXJ5SW5QYXJlbnMoY29uc3QgQ1E6OlF1ZXJ5SW5QYXJlbnMmLCBjb25zdCBTZWxlY3Rl
ZENvbnRhaW5lciYpIGNvbnN0OworICAgIE1ROjpFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlU2l6
ZUZlYXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJlJiwgY29uc3QgU2VsZWN0ZWRDb250YWluZXIm
KSBjb25zdDsKIAotICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVRdWVyeUluUGFyZW5zKGNv
bnN0IENROjpRdWVyeUluUGFyZW5zJiwgY29uc3QgU2VsZWN0ZWRDb250YWluZXImKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25kaXRpb25UeXBlPiBFdmFsdWF0aW9uUmVzdWx0IGV2
YWx1YXRlQ29uZGl0aW9uKGNvbnN0IENvbmRpdGlvblR5cGUmLCBjb25zdCBTZWxlY3RlZENvbnRh
aW5lciYpIGNvbnN0OwotICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVTaXplRmVhdHVyZShj
b25zdCBDUTo6U2l6ZUZlYXR1cmUmLCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYpIGNvbnN0Owor
cHJpdmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPFNlbGVjdGVkQ29udGFpbmVyPiBzZWxlY3RDb250
YWluZXIoY29uc3QgQ1E6OkNvbnRhaW5lclF1ZXJ5JikgY29uc3Q7CiAKICAgICBjb25zdCBSZWY8
Y29uc3QgRWxlbWVudD4gbV9lbGVtZW50OwogICAgIGNvbnN0IFNlbGVjdGlvbk1vZGUgbV9zZWxl
Y3Rpb25Nb2RlOwpAQCAtNjAsMzIgKzU4LDUgQEAgcHJpdmF0ZToKICAgICBTZWxlY3Rvck1hdGNo
aW5nU3RhdGUqIG1fc2VsZWN0b3JNYXRjaGluZ1N0YXRlOwogfTsKIAotaW5saW5lIEV2YWx1YXRp
b25SZXN1bHQgdG9FdmFsdWF0aW9uUmVzdWx0KGJvb2wgYm9vbGVhbikKLXsKLSAgICByZXR1cm4g
Ym9vbGVhbiA/IEV2YWx1YXRpb25SZXN1bHQ6OlRydWUgOiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxz
ZTsKLX07Ci0KLWlubGluZSBFdmFsdWF0aW9uUmVzdWx0IG9wZXJhdG9yJihFdmFsdWF0aW9uUmVz
dWx0IGxlZnQsIEV2YWx1YXRpb25SZXN1bHQgcmlnaHQpCi17Ci0gICAgaWYgKGxlZnQgPT0gRXZh
bHVhdGlvblJlc3VsdDo6VW5rbm93biB8fCByaWdodCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpVbmtu
b3duKQotICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKLSAgICBpZiAo
bGVmdCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlICYmIHJpZ2h0ID09IEV2YWx1YXRpb25SZXN1
bHQ6OlRydWUpCi0gICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwotICAgIHJl
dHVybiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsKLX0KLQotaW5saW5lIEV2YWx1YXRpb25SZXN1
bHQgb3BlcmF0b3IhKEV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQotewotICAgIHN3aXRjaCAocmVz
dWx0KSB7Ci0gICAgY2FzZSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOgotICAgICAgICByZXR1cm4g
RXZhbHVhdGlvblJlc3VsdDo6RmFsc2U7Ci0gICAgY2FzZSBFdmFsdWF0aW9uUmVzdWx0OjpGYWxz
ZToKLSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7Ci0gICAgY2FzZSBFdmFs
dWF0aW9uUmVzdWx0OjpVbmtub3duOgotICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6
VW5rbm93bjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQog
fQogfQo=
</data>
<flag name="commit-queue"
          id="490403"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461528</attachid>
            <date>2022-08-10 08:17:50 -0700</date>
            <delta_ts>2022-08-10 09:30:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243771-20220810181749.patch</filename>
            <type>text/plain</type>
            <size>35987</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSA3YjBkNzA0ZTBkZDRkMzE2YzliNjI2MGYwOWEzZTg4NWFhNjQ5NWE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDEwIEF1ZyAyMDIyIDExOjI3OjE5ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIGdl
bmVyaWMgbWVkaWEgcXVlcnkgcGFyc2VyIGFuZCBldmFsdWF0b3IKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM3NzEKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKR2VuZXJhbGl6ZSBjb250YWluZXIgcXVlcnkgcGFyc2luZyBhbmQgZXZhbHVhdGlvbiBjb2Rl
IHNvIGl0IGNhbiBiZSB1c2VkIGZvciBtZWRpYSBxdWVyaWVzIHRvbyBpbiB0aGUgZnV0dXJlLgoK
VGhpcyBwYXRjaCBhZGRzIGdlbmVyaWMgcGFyc2VyIGFuZCBldmFsdWF0b3IgY2xhc3NlcyBhbmQg
bW92ZXMgY29uZGl0aW9uIGhhbmRsaW5nIHRoZXJlLgoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5LmNwcDoKKFdlYkNvcmU6OkNROjpzZXJpYWxpemUpOgoqIFNvdXJjZS9XZWJDb3JlL2Nz
cy9Db250YWluZXJRdWVyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBh
cnNlci5jcHA6CihXZWJDb3JlOjpDb250YWluZXJRdWVyeVBhcnNlcjo6Y29uc3VtZUNvbmRpdGlv
bik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmg6
CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6
IEFkZGVkLgooV2ViQ29yZTo6TVE6OkdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpjb25jcmV0
ZUV2YWx1YXRvciBjb25zdCk6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0
b3I8Q29uY3JldGVFdmFsdWF0b3I+OjpldmFsdWF0ZUNvbmRpdGlvbiBjb25zdCk6CihXZWJDb3Jl
OjpNUTo6b3BlcmF0b3ImKToKKFdlYkNvcmU6Ok1ROjpvcGVyYXRvciEpOgooV2ViQ29yZTo6TVE6
OnRvRXZhbHVhdGlvblJlc3VsdCk6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNN
ZWRpYVF1ZXJ5UGFyc2VyLmg6IEFkZGVkLgooV2ViQ29yZTo6TVE6OkdlbmVyaWNNZWRpYVF1ZXJ5
UGFyc2VyOjpjb25jcmV0ZVBhcnNlcik6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXI8Q29uY3JldGVQYXJzZXI+Ojpjb25zdW1lQ29uZGl0aW9uKToKKiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuaC4KKiBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpTdHlsZTo6Q29udGFpbmVy
UXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIGNvbnN0KToKKFdlYkNvcmU6OlN0eWxlOjpDb250YWlu
ZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVRdWVyeUluUGFyZW5zIGNvbnN0KToKKFdlYkNvcmU6
OlN0eWxlOjpDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVTaXplRmVhdHVyZSBjb25z
dCk6CihXZWJDb3JlOjpTdHlsZTo6Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlQ29u
ZGl0aW9uIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJR
dWVyeUV2YWx1YXRvci5oOgooV2ViQ29yZTo6U3R5bGU6OnRvRXZhbHVhdGlvblJlc3VsdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpTdHlsZTo6b3BlcmF0b3ImKTogRGVsZXRlZC4KKFdlYkNvcmU6OlN0
eWxlOjpvcGVyYXRvciEpOiBEZWxldGVkLgotLS0KIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgICAgICAgICAgICAgICAgICB8ICAgMiArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogfCAgMjAgKysrKwogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5LmNwcCAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVy
UXVlcnkuaCAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJR
dWVyeVBhcnNlci5jcHAgICB8ICA1OCAtLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ29u
dGFpbmVyUXVlcnlQYXJzZXIuaCAgICAgfCAgIDggKy0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01l
ZGlhUXVlcnlFdmFsdWF0b3IuaCAgICB8IDEwNyArKysrKysrKysrKysrKysrKysKIC4uLi9jc3Mv
cXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaCAgICAgICB8ICA5NyArKysrKysrKysrKysr
KysrCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCAgICAgICAgfCAgMzEg
KysrKysKIC4uLi9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcCB8ICA3
OSArKysrLS0tLS0tLS0tCiAuLi4vV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRv
ci5oICAgfCAgNDEgKy0tLS0tLQogMTEgZmlsZXMgY2hhbmdlZCwgMjkzIGluc2VydGlvbnMoKyks
IDE1OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9jc3Mv
cXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlw
ZXMuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDk1YWY1ZWE1MmUzNC4uZGVmYzcyMTY1NjYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKQEAgLTYwMiw2ICs2MDIsOCBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oCiAgICAg
Y3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlblJhbmdlLmgKIAorICAgIGNzcy9xdWVyeS9HZW5lcmlj
TWVkaWFRdWVyeVR5cGVzLmgKKwogICAgIGNzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKIAogICAg
IGRpc3BsYXkvRGlzcGxheVRyZWUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY5ZmYwMTA2NGIwZC4uMTQ5Y2Y1M2ZiYjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01NTAzLDYgKzU1MDMsOSBAQAogCQlFNEQ2OEVCNTE3QjREQkRDMDBDQkRDQTggLyogU3R5
bGVSZXNvbHZlRm9yRm9udFJhdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRENjhFQjMxN0I0REJEQzAwQ0JEQ0E4IC8qIFN0eWxlUmVzb2x2ZUZvckZv
bnRSYXcuaCAqLzsgfTsKIAkJRTREODZFNkQyNjQwMzk0QzAwQjYyNDI1IC8qIFN0eWxlU2NvcGVP
cmRpbmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEQ4NkU2QjI2NDAzOTRDMDBCNjI0MjUgLyogU3R5bGVTY29wZU9yZGluYWwuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQ5ODhCNDE3QkZEMUY2
MDA4NEZCODggLyogVGV4dE5vZGVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDk4OEIzMTdCRkQxRjYwMDg0RkI4OCAvKiBUZXh0Tm9k
ZVRyYXZlcnNhbC5oICovOyB9OworCQlFNERBNUUzNjI4OUQyNDIwMDA4NDlCQ0YgLyogR2VuZXJp
Y01lZGlhUXVlcnlQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0REE1RTM0Mjg5RDIzRjMwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeVBh
cnNlci5oICovOyB9OworCQlFNERBNUUzRDI4QTI4MDU3MDA4NDlCQ0YgLyogR2VuZXJpY01lZGlh
UXVlcnlUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTREQTVFMzUyODlEMjNGRDAwODQ5QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNERBNUU0
MDI4QTI4OEY4MDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0REE1RTNGMjhBMjg4Rjgw
MDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oICovOyB9OwogCQlFNERBQ0U2
QTFEMTJFMTBCMDA3NTk4MEYgLyogU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNERBQ0U2OTFEMTJFMTBCMDA3NTk4
MEYgLyogU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmggKi87IH07CiAJCUU0REVBQTE4MTdBOTNEQzMw
MDBFMDQzMCAvKiBTdHlsZVRyZWVSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRERUFBMTYxN0E5M0RDMzAwMEUwNDMwIC8qIFN0eWxlVHJl
ZVJlc29sdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTRFMzlBRkIxMzMwRUZBODAwM0FCMjc0IC8qIExlZ2FjeVRpbGVMYXllclBvb2wuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTM5QUZBMTMz
MEVGQTgwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggKi87IH07CkBAIC0xNzg4MCw2
ICsxNzg4Myw5IEBACiAJCUU0RDg2RTZCMjY0MDM5NEMwMEI2MjQyNSAvKiBTdHlsZVNjb3BlT3Jk
aW5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVNjb3BlT3JkaW5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQ5ODhCMzE3QkZEMUY2MDA4NEZC
ODggLyogVGV4dE5vZGVUcmF2ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dE5vZGVUcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRE
OTg4QjUxN0JGRUIyMTAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHROb2RlVHJhdmVyc2FsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTREQTVFMzQyODlEMjNGMzAwODQ5QkNGIC8qIEdlbmVy
aWNNZWRpYVF1ZXJ5UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNNZWRpYVF1ZXJ5UGFy
c2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0REE1RTM1Mjg5RDIzRkQwMDg0
OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNN
ZWRpYVF1ZXJ5VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTREQTVFM0Yy
OEEyODhGODAwODQ5QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0REFDRTY5MUQxMkUxMEIwMDc1OTgwRiAvKiBT
dHlsZVBlbmRpbmdSZXNvdXJjZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3R5bGVQZW5kaW5nUmVzb3VyY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
REFDRTZCMUQxMkUxMTYwMDc1OTgwRiAvKiBTdHlsZVBlbmRpbmdSZXNvdXJjZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRERUFBMTUxN0E5M0RDMzAwMEUwNDMw
IC8qIFN0eWxlVHJlZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0eWxlVHJlZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTMyMDE4LDYgKzMyMDI0LDE2IEBACiAJCQlwYXRoID0gdXBkYXRpbmc7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQlFNERBNUUzRTI4QTI4NjczMDA4NDlCQ0YgLyogcXVl
cnkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUU0REE1
RTNGMjhBMjg4RjgwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oICovLAor
CQkJCUU0REE1RTM0Mjg5RDIzRjMwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeVBhcnNlci5o
ICovLAorCQkJCUU0REE1RTM1Mjg5RDIzRkQwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeVR5
cGVzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IHF1ZXJ5OworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJRTRGQjRCMUUyMzk1MzU2RjAwM0MzMzZBIC8qIGludGVncmF0aW9uICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTMyMTU1LDYgKzMy
MTcxLDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDRjE2NDREMjY2MjlGOUEwMDAyRjdFRiAv
KiBjYWxjICovLAogCQkJCTk0NkQzNzI3MUQ2Q0IyMjUwMDc3MDg0RiAvKiBwYXJzZXIgKi8sCisJ
CQkJRTREQTVFM0UyOEEyODY3MzAwODQ5QkNGIC8qIHF1ZXJ5ICovLAogCQkJCTRCQUZEMERBMjE5
MjFFQUQwMEMwQUI2NCAvKiB0eXBlZG9tICovLAogCQkJCUZCRDZBRjg0MTVFRjIxRDQwMDhCNzEx
MCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCAqLywKIAkJCQlGQkQ2QUY4NTE1RUYyMUQ0MDA4
QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oICovLApAQCAtMzUyNjgsNiArMzUyODUsOSBA
QAogCQkJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBp
biBIZWFkZXJzICovLAogCQkJCUJDMjNGMERCMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTREQTVFNDAy
OEEyODhGODAwODQ5QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFNERBNUUzNjI4OUQyNDIwMDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0REE1RTNEMjhBMjgwNTcwMDg0OUJDRiAvKiBH
ZW5lcmljTWVkaWFRdWVyeVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNDE0RjRE
REU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI1
MTRGNERERTYwMDNFN0E3MSAvKiBHZW9sb2NhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTc0NkFGMjcxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVl
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmNwcAppbmRleCAwMTM1
YmZhYjRhNzIuLjYwNTI5ZWQxMTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Nv
bnRhaW5lclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnku
Y3BwCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgY29uc3QgU2l6ZUZlYXR1cmUmIHNpemVGZWF0dXJlKQogdGVtcGxhdGU8dHlwZW5hbWUg
Q29uZGl0aW9uVHlwZT4KIHZvaWQgc2VyaWFsaXplKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENvbmRpdGlvblR5cGUmIGNvbmRpdGlvbikKIHsKLSAgICBpZiAoY29uZGl0aW9uLnF1ZXJp
ZXMuc2l6ZSgpID09IDEgJiYgY29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvciA9PSBMb2dpY2FsT3Bl
cmF0b3I6Ok5vdCkgeworICAgIGlmIChjb25kaXRpb24ucXVlcmllcy5zaXplKCkgPT0gMSAmJiBj
b25kaXRpb24ubG9naWNhbE9wZXJhdG9yID09IE1ROjpMb2dpY2FsT3BlcmF0b3I6Ok5vdCkgewog
ICAgICAgICBidWlsZGVyLmFwcGVuZCgibm90ICIpOwogICAgICAgICBzZXJpYWxpemUoYnVpbGRl
ciwgY29uZGl0aW9uLnF1ZXJpZXMuZmlyc3QoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE4MSw3
ICsxODEsNyBAQCB2b2lkIHNlcmlhbGl6ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBD
b25kaXRpb25UeXBlJiBjb25kaXRpb24pCiAKICAgICBmb3IgKGF1dG8mIHF1ZXJ5IDogY29uZGl0
aW9uLnF1ZXJpZXMpIHsKICAgICAgICAgaWYgKCZxdWVyeSAhPSAmY29uZGl0aW9uLnF1ZXJpZXMu
Zmlyc3QoKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvbmRpdGlvbi5sb2dpY2FsT3Bl
cmF0b3IgPT0gTG9naWNhbE9wZXJhdG9yOjpBbmQgPyAiIGFuZCAiIDogIiBvciAiKTsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvbmRpdGlvbi5sb2dpY2FsT3BlcmF0b3IgPT0gTVE6Okxv
Z2ljYWxPcGVyYXRvcjo6QW5kID8gIiBhbmQgIiA6ICIgb3IgIik7CiAgICAgICAgIHNlcmlhbGl6
ZShidWlsZGVyLCBxdWVyeSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NvbnRhaW5lclF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnku
aAppbmRleCBkMTE4MjkzYjNlMDcuLmQzYjgwN2Y0NDM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRh
aW5lclF1ZXJ5LmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJHZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5o
PgpAQCAtNDYsMTIgKzQ3LDExIEBAIHN0cnVjdCBVbmtub3duUXVlcnkgewogCiB1c2luZyBRdWVy
eUluUGFyZW5zID0gc3RkOjp2YXJpYW50PENvbnRhaW5lckNvbmRpdGlvbiwgU2l6ZUZlYXR1cmUs
IFVua25vd25RdWVyeT47CiAKLWVudW0gY2xhc3MgTG9naWNhbE9wZXJhdG9yIDogdWludDhfdCB7
IEFuZCwgT3IsIE5vdCB9OwogZW51bSBjbGFzcyBDb21wYXJpc29uT3BlcmF0b3IgOiB1aW50OF90
IHsgTGVzc1RoYW4sIExlc3NUaGFuT3JFcXVhbCwgRXF1YWwsIEdyZWF0ZXJUaGFuLCBHcmVhdGVy
VGhhbk9yRXF1YWwgfTsKIGVudW0gY2xhc3MgU3ludGF4IDogdWludDhfdCB7IEJvb2xlYW4sIENv
bG9uLCBSYW5nZSB9OwogCiBzdHJ1Y3QgQ29udGFpbmVyQ29uZGl0aW9uIHsKLSAgICBMb2dpY2Fs
T3BlcmF0b3IgbG9naWNhbE9wZXJhdG9yIHsgTG9naWNhbE9wZXJhdG9yOjpBbmQgfTsKKyAgICBN
UTo6TG9naWNhbE9wZXJhdG9yIGxvZ2ljYWxPcGVyYXRvciB7IE1ROjpMb2dpY2FsT3BlcmF0b3I6
OkFuZCB9OwogICAgIFZlY3RvcjxRdWVyeUluUGFyZW5zPiBxdWVyaWVzOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5jcHAKaW5kZXggNDU4OWJhYmFkMWQx
Li5lMzcxYzg5Njc2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJR
dWVyeVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFy
c2VyLmNwcApAQCAtODcsNjQgKzg3LDYgQEAgc3RkOjpvcHRpb25hbDxDUTo6UXVlcnlJblBhcmVu
cz4gQ29udGFpbmVyUXVlcnlQYXJzZXI6OmNvbnN1bWVRdWVyeUluUGFyZW5zKENTU1AKICAgICBy
ZXR1cm4geyB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb25kaXRpb25UeXBlPgotc3RkOjpv
cHRpb25hbDxDb25kaXRpb25UeXBlPiBDb250YWluZXJRdWVyeVBhcnNlcjo6Y29uc3VtZUNvbmRp
dGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKLXsKLSAgICBhdXRvIGNvbnN1bWVRdWVy
eSA9IFsmXShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkgewotICAgICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6aXNfc2FtZV92PENROjpDb250YWluZXJDb25kaXRpb24sIENvbmRpdGlvblR5cGU+
KQotICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVRdWVyeUluUGFyZW5zKHJhbmdlKTsKLSAgICAg
ICAgLy8gU3R5bGUgcXVlcnkgc3VwcG9ydCB3b3VsZCBiZSBoZXJlLgotICAgIH07Ci0KLSAgICBp
ZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7Ci0gICAgICAgIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vdCkgewotICAgICAgICAgICAgcmFuZ2UuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHF1ZXJ5ID0gY29u
c3VtZVF1ZXJ5KHJhbmdlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ29uZGl0aW9uVHlwZSB7
IENROjpMb2dpY2FsT3BlcmF0b3I6Ok5vdCwgeyAqcXVlcnkgfSB9OwotICAgICAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIENvbmRpdGlvblR5cGUgY29uZGl0aW9u
OwotCi0gICAgYXV0byBxdWVyeSA9IGNvbnN1bWVRdWVyeShyYW5nZSk7Ci0gICAgaWYgKCFxdWVy
eSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGNvbmRpdGlvbi5xdWVyaWVzLmFwcGVuZCgq
cXVlcnkpOwotICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7Ci0KLSAgICBhdXRvIGNvbnN1
bWVPcGVyYXRvciA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8Q1E6OkxvZ2ljYWxPcGVyYXRvcj4g
ewotICAgICAgICBhdXRvIG9wZXJhdG9yVG9rZW4gPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpOwotICAgICAgICBpZiAob3BlcmF0b3JUb2tlbi50eXBlKCkgIT0gSWRlbnRUb2tl
bikKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGlmIChvcGVyYXRvclRva2VuLmlk
KCkgPT0gQ1NTVmFsdWVBbmQpCi0gICAgICAgICAgICByZXR1cm4gQ1E6OkxvZ2ljYWxPcGVyYXRv
cjo6QW5kOwotICAgICAgICBpZiAob3BlcmF0b3JUb2tlbi5pZCgpID09IENTU1ZhbHVlT3IpCi0g
ICAgICAgICAgICByZXR1cm4gQ1E6OkxvZ2ljYWxPcGVyYXRvcjo6T3I7Ci0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgfTsKLQotICAgIHdoaWxlICghcmFuZ2UuYXRFbmQoKSkgewotICAgICAgICBh
dXRvIG9wID0gY29uc3VtZU9wZXJhdG9yKCk7Ci0gICAgICAgIGlmICghb3ApCi0gICAgICAgICAg
ICByZXR1cm4geyB9OwotICAgICAgICBpZiAoY29uZGl0aW9uLnF1ZXJpZXMuc2l6ZSgpID4gMSAm
JiBjb25kaXRpb24ubG9naWNhbE9wZXJhdG9yICE9ICpvcCkKLSAgICAgICAgICAgIHJldHVybiB7
IH07Ci0KLSAgICAgICAgY29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvciA9ICpvcDsKLQotICAgICAg
ICBhdXRvIHF1ZXJ5ID0gY29uc3VtZVF1ZXJ5KHJhbmdlKTsKLSAgICAgICAgaWYgKCFxdWVyeSkK
LSAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgY29uZGl0aW9uLnF1ZXJpZXMuYXBw
ZW5kKCpxdWVyeSk7Ci0gICAgICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGNvbmRpdGlvbjsKLX0KLQogc3RkOjpvcHRpb25hbDxDUTo6U2l6ZUZlYXR1
cmU+IENvbnRhaW5lclF1ZXJ5UGFyc2VyOjpjb25zdW1lU2l6ZUZlYXR1cmUoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgYXV0byBjb25zdW1lID0gWyZdIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmgKaW5kZXggZGU3YWRkNWNiNzgxLi4xNmQwOWIx
NGRlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5oCkBAIC0y
NywyNCArMjcsMjQgQEAKICNpbmNsdWRlICJDU1NQYXJzZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAi
Q1NTUGFyc2VyVG9rZW4uaCIKICNpbmNsdWRlICJDb250YWluZXJRdWVyeS5oIgorI2luY2x1ZGUg
IkdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ1NTUGFyc2VyVG9rZW5SYW5nZTsKK2NsYXNzIENvbnRhaW5lclF1ZXJ5UGFyc2VyOwogCi1j
bGFzcyBDb250YWluZXJRdWVyeVBhcnNlciB7CitjbGFzcyBDb250YWluZXJRdWVyeVBhcnNlciA6
IHB1YmxpYyBNUTo6R2VuZXJpY01lZGlhUXVlcnlQYXJzZXI8Q29udGFpbmVyUXVlcnlQYXJzZXI+
ICB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1E6OkNvbnRhaW5lclF1ZXJ5
PiBjb25zdW1lQ29udGFpbmVyUXVlcnkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmKTsKIAotcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPENROjpDb250YWlu
ZXJRdWVyeT4gY29uc3VtZUNvbnRhaW5lclF1ZXJ5KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKICAg
ICBzdGQ6Om9wdGlvbmFsPENROjpRdWVyeUluUGFyZW5zPiBjb25zdW1lUXVlcnlJblBhcmVucyhD
U1NQYXJzZXJUb2tlblJhbmdlJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlw
ZT4gc3RkOjpvcHRpb25hbDxDb25kaXRpb25UeXBlPiBjb25zdW1lQ29uZGl0aW9uKENTU1BhcnNl
clRva2VuUmFuZ2UmKTsKICAgICBzdGQ6Om9wdGlvbmFsPENROjpTaXplRmVhdHVyZT4gY29uc3Vt
ZVNpemVGZWF0dXJlKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKICAgICBzdGQ6Om9wdGlvbmFsPENR
OjpTaXplRmVhdHVyZT4gY29uc3VtZVBsYWluU2l6ZUZlYXR1cmUoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYpOwogICAgIHN0ZDo6b3B0aW9uYWw8Q1E6OlNpemVGZWF0dXJlPiBjb25zdW1lUmFuZ2VTaXpl
RmVhdHVyZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lVmFsdWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogCitwcml2YXRlOgogICAgIENvbnRhaW5l
clF1ZXJ5UGFyc2VyKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIDog
bV9jb250ZXh0KGNvbnRleHQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9HZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uMmIzNzJkMjNkZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKQEAgLTAsMCAr
MSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBNUSB7CisKK2VudW0gY2xhc3MgRXZhbHVh
dGlvblJlc3VsdCA6IHVpbnQ4X3QgeyBGYWxzZSwgVHJ1ZSwgVW5rbm93biB9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25jcmV0ZUV2YWx1YXRvcj4KK2NsYXNzIEdlbmVyaWNNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25kaXRpb25UeXBlLCB0
eXBlbmFtZSBDb250ZXh0PiBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlQ29uZGl0aW9uKGNvbnN0
IENvbmRpdGlvblR5cGUmLCBjb25zdCBDb250ZXh0JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
Y29uc3QgQ29uY3JldGVFdmFsdWF0b3ImIGNvbmNyZXRlRXZhbHVhdG9yKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ29uY3JldGVFdmFsdWF0b3ImPigqdGhpcyk7IH0KK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIENvbmNyZXRlRXZhbHVhdG9yPgordGVtcGxhdGU8dHlwZW5hbWUg
Q29uZGl0aW9uVHlwZSwgdHlwZW5hbWUgQ29udGV4dD4KK0V2YWx1YXRpb25SZXN1bHQgR2VuZXJp
Y01lZGlhUXVlcnlFdmFsdWF0b3I8Q29uY3JldGVFdmFsdWF0b3I+OjpldmFsdWF0ZUNvbmRpdGlv
bihjb25zdCBDb25kaXRpb25UeXBlJiBjb25kaXRpb24sICBjb25zdCBDb250ZXh0JiBjb250ZXh0
KSBjb25zdAoreworICAgIGlmIChjb25kaXRpb24ucXVlcmllcy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworCisgICAgc3dpdGNoIChjb25kaXRp
b24ubG9naWNhbE9wZXJhdG9yKSB7CisgICAgY2FzZSBMb2dpY2FsT3BlcmF0b3I6Ok5vdDoKKyAg
ICAgICAgcmV0dXJuICFjb25jcmV0ZUV2YWx1YXRvcigpLmV2YWx1YXRlUXVlcnlJblBhcmVucyhj
b25kaXRpb24ucXVlcmllcy5maXJzdCgpLCBjb250ZXh0KTsKKworICAgIGNhc2UgTG9naWNhbE9w
ZXJhdG9yOjpBbmQ6IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBFdmFsdWF0aW9uUmVzdWx0OjpU
cnVlOworICAgICAgICBmb3IgKGF1dG8gcXVlcnkgOiBjb25kaXRpb24ucXVlcmllcykgeworICAg
ICAgICAgICAgYXV0byBxdWVyeVJlc3VsdCA9IGNvbmNyZXRlRXZhbHVhdG9yKCkuZXZhbHVhdGVR
dWVyeUluUGFyZW5zKHF1ZXJ5LCBjb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChxdWVyeVJlc3Vs
dCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRXZh
bHVhdGlvblJlc3VsdDo6RmFsc2U7CisgICAgICAgICAgICBpZiAocXVlcnlSZXN1bHQgPT0gRXZh
bHVhdGlvblJlc3VsdDo6VW5rbm93bikKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBFdmFsdWF0
aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgY2FzZSBMb2dpY2FsT3BlcmF0b3I6Ok9yOiB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gRXZhbHVhdGlvblJlc3VsdDo6RmFsc2U7CisgICAgICAgIGZvciAoYXV0byBxdWVyeSA6
IGNvbmRpdGlvbi5xdWVyaWVzKSB7CisgICAgICAgICAgICBhdXRvIHF1ZXJ5UmVzdWx0ID0gY29u
Y3JldGVFdmFsdWF0b3IoKS5ldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMocXVlcnksIGNvbnRleHQpOwor
ICAgICAgICAgICAgaWYgKHF1ZXJ5UmVzdWx0ID09IEV2YWx1YXRpb25SZXN1bHQ6OlRydWUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisgICAgICAgICAg
ICBpZiAocXVlcnlSZXN1bHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bikKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCitpbmxpbmUgRXZhbHVhdGlvblJlc3VsdCBvcGVyYXRvciYoRXZh
bHVhdGlvblJlc3VsdCBsZWZ0LCBFdmFsdWF0aW9uUmVzdWx0IHJpZ2h0KQoreworICAgIGlmIChs
ZWZ0ID09IEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd24gfHwgcmlnaHQgPT0gRXZhbHVhdGlvblJl
c3VsdDo6VW5rbm93bikKKyAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247
CisgICAgaWYgKGxlZnQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSAmJiByaWdodCA9PSBFdmFs
dWF0aW9uUmVzdWx0OjpUcnVlKQorICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1
ZTsKKyAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6RmFsc2U7Cit9CisKK2lubGluZSBFdmFs
dWF0aW9uUmVzdWx0IG9wZXJhdG9yIShFdmFsdWF0aW9uUmVzdWx0IHJlc3VsdCkKK3sKKyAgICBz
d2l0Y2ggKHJlc3VsdCkgeworICAgIGNhc2UgRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZToKKyAgICAg
ICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OkZhbHNlOworICAgIGNhc2UgRXZhbHVhdGlvblJl
c3VsdDo6RmFsc2U6CisgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAg
IGNhc2UgRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjoKKyAgICAgICAgcmV0dXJuIEV2YWx1YXRp
b25SZXN1bHQ6OlVua25vd247CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK2lubGluZSBFdmFsdWF0aW9uUmVzdWx0IHRvRXZhbHVhdGlvblJlc3VsdChib29s
IGJvb2xlYW4pCit7CisgICAgcmV0dXJuIGJvb2xlYW4gPyBFdmFsdWF0aW9uUmVzdWx0OjpUcnVl
IDogRXZhbHVhdGlvblJlc3VsdDo6RmFsc2U7Cit9CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZTExYzBjOTU4YjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaApAQCAt
MCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ1NTUGFyc2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRv
a2VuLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgTVEgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25jcmV0ZVBhcnNl
cj4KK2NsYXNzIEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb25kaXRpb25UeXBlPiBzdGQ6Om9wdGlvbmFsPENvbmRpdGlvblR5cGU+IGNv
bnN1bWVDb25kaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCitwcml2YXRlOgorICAgIENv
bmNyZXRlUGFyc2VyJiBjb25jcmV0ZVBhcnNlcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbmNy
ZXRlUGFyc2VyJj4oKnRoaXMpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25jcmV0ZVBh
cnNlcj4KK3RlbXBsYXRlPHR5cGVuYW1lIENvbmRpdGlvblR5cGU+CitzdGQ6Om9wdGlvbmFsPENv
bmRpdGlvblR5cGU+IEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyPENvbmNyZXRlUGFyc2VyPjo6Y29u
c3VtZUNvbmRpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAocmFu
Z2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7CisgICAgICAgIGlmIChyYW5nZS5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZU5vdCkgeworICAgICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1
ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIHF1ZXJ5ID0gY29uY3JldGVQ
YXJzZXIoKS5jb25zdW1lUXVlcnlJblBhcmVucyhyYW5nZSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIENvbmRpdGlvblR5cGUgeyBMb2dpY2FsT3BlcmF0b3I6Ok5vdCwgeyAqcXVlcnkgfSB9Owor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIENvbmRpdGlv
blR5cGUgY29uZGl0aW9uOworCisgICAgYXV0byBxdWVyeSA9IGNvbmNyZXRlUGFyc2VyKCkuY29u
c3VtZVF1ZXJ5SW5QYXJlbnMocmFuZ2UpOworICAgIGlmICghcXVlcnkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBjb25kaXRpb24ucXVlcmllcy5hcHBlbmQoKnF1ZXJ5KTsKKyAgICByYW5n
ZS5jb25zdW1lV2hpdGVzcGFjZSgpOworCisgICAgYXV0byBjb25zdW1lT3BlcmF0b3IgPSBbJl0o
KSAtPiBzdGQ6Om9wdGlvbmFsPExvZ2ljYWxPcGVyYXRvcj4geworICAgICAgICBhdXRvIG9wZXJh
dG9yVG9rZW4gPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICBp
ZiAob3BlcmF0b3JUb2tlbi50eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIGlmIChvcGVyYXRvclRva2VuLmlkKCkgPT0gQ1NTVmFsdWVBbmQpCisg
ICAgICAgICAgICByZXR1cm4gTG9naWNhbE9wZXJhdG9yOjpBbmQ7CisgICAgICAgIGlmIChvcGVy
YXRvclRva2VuLmlkKCkgPT0gQ1NTVmFsdWVPcikKKyAgICAgICAgICAgIHJldHVybiBMb2dpY2Fs
T3BlcmF0b3I6Ok9yOworICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICB3aGlsZSAo
IXJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgYXV0byBvcCA9IGNvbnN1bWVPcGVyYXRvcigpOwor
ICAgICAgICBpZiAoIW9wKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgaWYgKGNv
bmRpdGlvbi5xdWVyaWVzLnNpemUoKSA+IDEgJiYgY29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvciAh
PSAqb3ApCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGNvbmRpdGlvbi5sb2dp
Y2FsT3BlcmF0b3IgPSAqb3A7CisKKyAgICAgICAgYXV0byBxdWVyeSA9IGNvbmNyZXRlUGFyc2Vy
KCkuY29uc3VtZVF1ZXJ5SW5QYXJlbnMocmFuZ2UpOworICAgICAgICBpZiAoIXF1ZXJ5KQorICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBjb25kaXRpb24ucXVlcmllcy5hcHBlbmQo
KnF1ZXJ5KTsKKyAgICAgICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gY29uZGl0aW9uOworfQorCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmNhNGI0ZTk2Mjk4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgKQEAgLTAsMCArMSwzMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNw
YWNlIFdlYkNvcmU6Ok1RIHsKKworZW51bSBjbGFzcyBMb2dpY2FsT3BlcmF0b3IgOiB1aW50OF90
IHsgQW5kLCBPciwgTm90IH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRh
aW5lclF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCA2MTQ3NGZlODdkMDQuLjg2OTU3ZDE2YzVjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNw
cApAQCAtNTksNyArNTksNyBAQCBib29sIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0
ZShjb25zdCBDUTo6Q29udGFpbmVyUXVlcnkmIGNvbnRhaW5lclF1ZXJ5KQogICAgIGlmICghY29u
dGFpbmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZXZhbHVhdGVDb25k
aXRpb24oY29udGFpbmVyUXVlcnkuY29uZGl0aW9uLCAqY29udGFpbmVyKSA9PSBFdmFsdWF0aW9u
UmVzdWx0OjpUcnVlOworICAgIHJldHVybiBldmFsdWF0ZUNvbmRpdGlvbihjb250YWluZXJRdWVy
eS5jb25kaXRpb24sICpjb250YWluZXIpID09IE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwog
fQogCiBhdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpzZWxlY3RDb250YWluZXIoY29uc3Qg
Q1E6OkNvbnRhaW5lclF1ZXJ5JiBjb250YWluZXJRdWVyeSkgY29uc3QgLT4gc3RkOjpvcHRpb25h
bDxTZWxlY3RlZENvbnRhaW5lcj4KQEAgLTE2NCw1MiArMTY0LDE3IEBAIGNvbnN0IEVsZW1lbnQq
IENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpzZWxlY3RDb250YWluZXIoT3B0aW9uU2V0PENROjpB
eGlzPiBheGVzCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBDb250YWluZXJRdWVyeUV2YWx1
YXRvcjo6ZXZhbHVhdGVRdWVyeUluUGFyZW5zKGNvbnN0IENROjpRdWVyeUluUGFyZW5zJiBxdWVy
eUluUGFyZW5zLCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYgY29udGFpbmVyKSBjb25zdCAtPiBF
dmFsdWF0aW9uUmVzdWx0CithdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZVF1
ZXJ5SW5QYXJlbnMoY29uc3QgQ1E6OlF1ZXJ5SW5QYXJlbnMmIHF1ZXJ5SW5QYXJlbnMsIGNvbnN0
IFNlbGVjdGVkQ29udGFpbmVyJiBjb250YWluZXIpIGNvbnN0IC0+IE1ROjpFdmFsdWF0aW9uUmVz
dWx0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24ocXVlcnlJblBhcmVucywgWyZdKGNvbnN0
IENROjpDb250YWluZXJDb25kaXRpb24mIGNvbnRhaW5lckNvbmRpdGlvbikgewogICAgICAgICBy
ZXR1cm4gZXZhbHVhdGVDb25kaXRpb24oY29udGFpbmVyQ29uZGl0aW9uLCBjb250YWluZXIpOwog
ICAgIH0sIFsmXShjb25zdCBDUTo6U2l6ZUZlYXR1cmUmIHNpemVGZWF0dXJlKSB7CiAgICAgICAg
IHJldHVybiBldmFsdWF0ZVNpemVGZWF0dXJlKHNpemVGZWF0dXJlLCBjb250YWluZXIpOwogICAg
IH0sIFsmXShjb25zdCBDUTo6VW5rbm93blF1ZXJ5JikgewotICAgICAgICByZXR1cm4gRXZhbHVh
dGlvblJlc3VsdDo6VW5rbm93bjsKKyAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0
OjpVbmtub3duOwogICAgIH0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb25kaXRpb25UeXBl
PgotYXV0byBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVDb25kaXRpb24oY29uc3Qg
Q29uZGl0aW9uVHlwZSYgY29uZGl0aW9uLCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYgY29udGFp
bmVyKSBjb25zdCAtPiBFdmFsdWF0aW9uUmVzdWx0Ci17Ci0gICAgaWYgKGNvbmRpdGlvbi5xdWVy
aWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247
Ci0KLSAgICBzd2l0Y2ggKGNvbmRpdGlvbi5sb2dpY2FsT3BlcmF0b3IpIHsKLSAgICBjYXNlIENR
OjpMb2dpY2FsT3BlcmF0b3I6Ok5vdDoKLSAgICAgICAgcmV0dXJuICFldmFsdWF0ZVF1ZXJ5SW5Q
YXJlbnMoY29uZGl0aW9uLnF1ZXJpZXMuZmlyc3QoKSwgY29udGFpbmVyKTsKLSAgICBjYXNlIENR
OjpMb2dpY2FsT3BlcmF0b3I6OkFuZDogewotICAgICAgICBhdXRvIHJlc3VsdCA9IEV2YWx1YXRp
b25SZXN1bHQ6OlRydWU7Ci0gICAgICAgIGZvciAoYXV0byBxdWVyeSA6IGNvbmRpdGlvbi5xdWVy
aWVzKSB7Ci0gICAgICAgICAgICBhdXRvIHF1ZXJ5UmVzdWx0ID0gZXZhbHVhdGVRdWVyeUluUGFy
ZW5zKHF1ZXJ5LCBjb250YWluZXIpOwotICAgICAgICAgICAgaWYgKHF1ZXJ5UmVzdWx0ID09IEV2
YWx1YXRpb25SZXN1bHQ6OkZhbHNlKQotICAgICAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9u
UmVzdWx0OjpGYWxzZTsKLSAgICAgICAgICAgIGlmIChxdWVyeVJlc3VsdCA9PSBFdmFsdWF0aW9u
UmVzdWx0OjpVbmtub3duKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IEV2YWx1YXRpb25SZXN1
bHQ6OlVua25vd247Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0g
ICAgY2FzZSBDUTo6TG9naWNhbE9wZXJhdG9yOjpPcjogewotICAgICAgICBhdXRvIHJlc3VsdCA9
IEV2YWx1YXRpb25SZXN1bHQ6OkZhbHNlOwotICAgICAgICBmb3IgKGF1dG8gcXVlcnkgOiBjb25k
aXRpb24ucXVlcmllcykgewotICAgICAgICAgICAgYXV0byBxdWVyeVJlc3VsdCA9IGV2YWx1YXRl
UXVlcnlJblBhcmVucyhxdWVyeSwgY29udGFpbmVyKTsKLSAgICAgICAgICAgIGlmIChxdWVyeVJl
c3VsdCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlKQotICAgICAgICAgICAgICAgIHJldHVybiBF
dmFsdWF0aW9uUmVzdWx0OjpUcnVlOwotICAgICAgICAgICAgaWYgKHF1ZXJ5UmVzdWx0ID09IEV2
YWx1YXRpb25SZXN1bHQ6OlVua25vd24pCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gRXZhbHVh
dGlvblJlc3VsdDo6VW5rbm93bjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZVNpemUoY29uc3QgQ1NTVmFsdWUq
IHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkK
IHsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCkBAIC0yMjcsMTQgKzE5
MiwxNCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlU2l6ZShjb25z
dCBDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTAogICAgIHJldHVybiBwcmltaXRpdmVWYWx1
ZS5jb21wdXRlTGVuZ3RoPExheW91dFVuaXQ+KGNvbnZlcnNpb25EYXRhKTsKIH0KIAotYXV0byBD
b250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVTaXplRmVhdHVyZShjb25zdCBDUTo6U2l6
ZUZlYXR1cmUmIHNpemVGZWF0dXJlLCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYgY29udGFpbmVy
KSBjb25zdCAtPiBFdmFsdWF0aW9uUmVzdWx0CithdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9y
OjpldmFsdWF0ZVNpemVGZWF0dXJlKGNvbnN0IENROjpTaXplRmVhdHVyZSYgc2l6ZUZlYXR1cmUs
IGNvbnN0IFNlbGVjdGVkQ29udGFpbmVyJiBjb250YWluZXIpIGNvbnN0IC0+IE1ROjpFdmFsdWF0
aW9uUmVzdWx0CiB7CiAgICAgLy8gIklmIHRoZSBxdWVyeSBjb250YWluZXIgZG9lcyBub3QgaGF2
ZSBhIHByaW5jaXBhbCBib3gsIG9yIHRoZSBwcmluY2lwYWwgYm94IGlzIG5vdCBhIGxheW91dCBj
b250YWlubWVudCBib3gsCiAgICAgLy8gb3IgdGhlIHF1ZXJ5IGNvbnRhaW5lciBkb2VzIG5vdCBz
dXBwb3J0IGNvbnRhaW5lciBzaXplIHF1ZXJpZXMgb24gdGhlIHJlbGV2YW50IGF4ZXMsIHRoZW4g
dGhlIHJlc3VsdCBvZgogICAgIC8vIGV2YWx1YXRpbmcgdGhlIHNpemUgZmVhdHVyZSBpcyB1bmtu
b3duLiIKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbnRhaW4tMy8jc2l6
ZS1jb250YWluZXIKICAgICBpZiAoIWNvbnRhaW5lci5yZW5kZXJlcikKLSAgICAgICAgcmV0dXJu
IEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlv
blJlc3VsdDo6VW5rbm93bjsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gKmNvbnRhaW5lci5yZW5k
ZXJlcjsKIApAQCAtMjUzLDcgKzIxOCw3IEBAIGF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6
OmV2YWx1YXRlU2l6ZUZlYXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJlJiBzaXplRmVhCiAgICAg
fTsKIAogICAgIGlmICghaGFzRWxpZ2libGVDb250YWlubWVudCgpKQotICAgICAgICByZXR1cm4g
RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKKyAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9u
UmVzdWx0OjpVbmtub3duOwogCiAgICAgYXV0byBjb21wYXJlID0gW10oQ1E6OkNvbXBhcmlzb25P
cGVyYXRvciBvcCwgYXV0byBsZWZ0LCBhdXRvIHJpZ2h0KSB7CiAgICAgICAgIHN3aXRjaCAob3Ap
IHsKQEAgLTI3NCwxOSArMjM5LDE5IEBAIGF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2
YWx1YXRlU2l6ZUZlYXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJlJiBzaXplRmVhCiAgICAgZW51
bSBjbGFzcyBTaWRlIDogdWludDhfdCB7IExlZnQsIFJpZ2h0IH07CiAgICAgYXV0byBldmFsdWF0
ZVNpemVDb21wYXJpc29uID0gWyZdKExheW91dFVuaXQgc2l6ZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxDUTo6Q29tcGFyaXNvbj4mIGNvbXBhcmlzb24sIFNpZGUgc2lkZSkgewogICAgICAgICBpZiAo
IWNvbXBhcmlzb24pCi0gICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsK
KyAgICAgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKICAgICAgICAg
YXV0byBleHByZXNzaW9uU2l6ZSA9IGNvbXB1dGVTaXplKGNvbXBhcmlzb24tPnZhbHVlLmdldCgp
LCBjb250YWluZXIuY29udmVyc2lvbkRhdGEpOwogICAgICAgICBpZiAoIWV4cHJlc3Npb25TaXpl
KQotICAgICAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgICAg
ICAgICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiAgICAgICAgIGF1dG8g
bGVmdCA9IHNpZGUgPT0gU2lkZTo6TGVmdCA/ICpleHByZXNzaW9uU2l6ZSA6IHNpemU7CiAgICAg
ICAgIGF1dG8gcmlnaHQgPSBzaWRlID09IFNpZGU6OkxlZnQgPyBzaXplIDogKmV4cHJlc3Npb25T
aXplOwogCi0gICAgICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21wYXJp
c29uLT5vcCwgbGVmdCwgcmlnaHQpKTsKKyAgICAgICAgcmV0dXJuIE1ROjp0b0V2YWx1YXRpb25S
ZXN1bHQoY29tcGFyZShjb21wYXJpc29uLT5vcCwgbGVmdCwgcmlnaHQpKTsKICAgICB9OwogCiAg
ICAgYXV0byBldmFsdWF0ZVNpemUgPSBbJl0oTGF5b3V0VW5pdCBzaXplKSB7CiAgICAgICAgIGlm
ICghc2l6ZUZlYXR1cmUubGVmdENvbXBhcmlzb24gJiYgIXNpemVGZWF0dXJlLnJpZ2h0Q29tcGFy
aXNvbikKLSAgICAgICAgICAgIHJldHVybiB0b0V2YWx1YXRpb25SZXN1bHQoISFzaXplKTsKKyAg
ICAgICAgICAgIHJldHVybiBNUTo6dG9FdmFsdWF0aW9uUmVzdWx0KCEhc2l6ZSk7CiAKICAgICAg
ICAgYXV0byBsZWZ0UmVzdWx0ID0gZXZhbHVhdGVTaXplQ29tcGFyaXNvbihzaXplLCBzaXplRmVh
dHVyZS5sZWZ0Q29tcGFyaXNvbiwgU2lkZTo6TGVmdCk7CiAgICAgICAgIGF1dG8gcmlnaHRSZXN1
bHQgPSBldmFsdWF0ZVNpemVDb21wYXJpc29uKHNpemUsIHNpemVGZWF0dXJlLnJpZ2h0Q29tcGFy
aXNvbiwgU2lkZTo6UmlnaHQpOwpAQCAtMjk2LDI3ICsyNjEsMjcgQEAgYXV0byBDb250YWluZXJR
dWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVTaXplRmVhdHVyZShjb25zdCBDUTo6U2l6ZUZlYXR1cmUm
IHNpemVGZWEKIAogICAgIGF1dG8gZXZhbHVhdGVBc3BlY3RSYXRpb0NvbXBhcmlzb24gPSBbJl0o
ZG91YmxlIGFzcGVjdFJhdGlvLCBjb25zdCBzdGQ6Om9wdGlvbmFsPENROjpDb21wYXJpc29uPiYg
Y29tcGFyaXNvbiwgU2lkZSBzaWRlKSB7CiAgICAgICAgIGlmICghY29tcGFyaXNvbikKLSAgICAg
ICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOworICAgICAgICAgICAgcmV0dXJu
IE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwogCiAgICAgICAgIGlmICghaXM8Q1NTVmFsdWVM
aXN0Pihjb21wYXJpc29uLT52YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJl
c3VsdDo6VW5rbm93bjsKKyAgICAgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6
VW5rbm93bjsKIAogICAgICAgICBhdXRvJiByYXRpb0xpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KCpjb21wYXJpc29uLT52YWx1ZSk7CiAgICAgICAgIGlmIChyYXRpb0xpc3QubGVuZ3RoKCkg
IT0gMikKLSAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAg
ICAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwogCiAgICAgICAg
IGF1dG8gZmlyc3QgPSBkeW5hbWljRG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHJhdGlvTGlz
dC5pdGVtKDApKTsKICAgICAgICAgYXV0byBzZWNvbmQgPSBkeW5hbWljRG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHJhdGlvTGlzdC5pdGVtKDEpKTsKIAogICAgICAgICBpZiAoIWZpcnN0IHx8
ICFzZWNvbmQgfHwgIWZpcnN0LT5pc051bWJlck9ySW50ZWdlcigpIHx8ICFzZWNvbmQtPmlzTnVt
YmVyT3JJbnRlZ2VyKCkpCi0gICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5r
bm93bjsKKyAgICAgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsK
IAogICAgICAgICBhdXRvIGV4cHJlc3Npb25SYXRpbyA9IGZpcnN0LT5kb3VibGVWYWx1ZSgpIC8g
c2Vjb25kLT5kb3VibGVWYWx1ZSgpOwogCiAgICAgICAgIGF1dG8gbGVmdCA9IHNpZGUgPT0gU2lk
ZTo6TGVmdCA/IGV4cHJlc3Npb25SYXRpbyA6IGFzcGVjdFJhdGlvOwogICAgICAgICBhdXRvIHJp
Z2h0ID0gc2lkZSA9PSBTaWRlOjpMZWZ0ID8gYXNwZWN0UmF0aW8gOiBleHByZXNzaW9uUmF0aW87
CiAKLSAgICAgICAgcmV0dXJuIHRvRXZhbHVhdGlvblJlc3VsdChjb21wYXJlKGNvbXBhcmlzb24t
Pm9wLCBsZWZ0LCByaWdodCkpOworICAgICAgICByZXR1cm4gTVE6OnRvRXZhbHVhdGlvblJlc3Vs
dChjb21wYXJlKGNvbXBhcmlzb24tPm9wLCBsZWZ0LCByaWdodCkpOwogICAgIH07CiAKICAgICBp
ZiAoc2l6ZUZlYXR1cmUubmFtZSA9PSBDUTo6RmVhdHVyZU5hbWVzOjp3aWR0aCgpKQpAQCAtMzM1
LDcgKzMwMCw3IEBAIGF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlU2l6ZUZl
YXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJlJiBzaXplRmVhCiAgICAgICAgIGF1dG8gYm94UmF0
aW8gPSByZW5kZXJlci5jb250ZW50V2lkdGgoKS50b0RvdWJsZSgpIC8gcmVuZGVyZXIuY29udGVu
dEhlaWdodCgpLnRvRG91YmxlKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIXNpemVGZWF0dXJl
LmxlZnRDb21wYXJpc29uICYmICFzaXplRmVhdHVyZS5yaWdodENvbXBhcmlzb24pCi0gICAgICAg
ICAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVzdWx0KCEhYm94UmF0aW8pOworICAgICAgICAgICAg
cmV0dXJuIE1ROjp0b0V2YWx1YXRpb25SZXN1bHQoISFib3hSYXRpbyk7CiAKICAgICAgICAgYXV0
byBsZWZ0UmVzdWx0ID0gZXZhbHVhdGVBc3BlY3RSYXRpb0NvbXBhcmlzb24oYm94UmF0aW8sIHNp
emVGZWF0dXJlLmxlZnRDb21wYXJpc29uLCBTaWRlOjpMZWZ0KTsKICAgICAgICAgYXV0byByaWdo
dFJlc3VsdCA9IGV2YWx1YXRlQXNwZWN0UmF0aW9Db21wYXJpc29uKGJveFJhdGlvLCBzaXplRmVh
dHVyZS5yaWdodENvbXBhcmlzb24sIFNpZGU6OlJpZ2h0KTsKQEAgLTM0NSwyNSArMzEwLDI1IEBA
IGF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlU2l6ZUZlYXR1cmUoY29uc3Qg
Q1E6OlNpemVGZWF0dXJlJiBzaXplRmVhCiAKICAgICBpZiAoc2l6ZUZlYXR1cmUubmFtZSA9PSBD
UTo6RmVhdHVyZU5hbWVzOjpvcmllbnRhdGlvbigpKSB7CiAgICAgICAgIGlmICghc2l6ZUZlYXR1
cmUucmlnaHRDb21wYXJpc29uKQotICAgICAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6
OlVua25vd247CisgICAgICAgICAgICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlVua25v
d247CiAKICAgICAgICAgYXV0byYgY29tcGFyaXNvbiA9ICpzaXplRmVhdHVyZS5yaWdodENvbXBh
cmlzb247CiAKICAgICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oY29tcGFyaXNvbi52
YWx1ZSkgfHwgY29tcGFyaXNvbi5vcCAhPSBDUTo6Q29tcGFyaXNvbk9wZXJhdG9yOjpFcXVhbCkK
LSAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICAg
ICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwogCiAgICAgICAgIGF1dG8m
IHZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpzaXplRmVhdHVyZS5yaWdodENv
bXBhcmlzb24tPnZhbHVlKTsKIAogICAgICAgICBib29sIGlzUG9ydHJhaXQgPSByZW5kZXJlci5j
b250ZW50SGVpZ2h0KCkgPj0gcmVuZGVyZXIuY29udGVudFdpZHRoKCk7CiAgICAgICAgIGlmICh2
YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVQb3J0cmFpdCkKLSAgICAgICAgICAgIHJldHVybiB0
b0V2YWx1YXRpb25SZXN1bHQoaXNQb3J0cmFpdCk7CisgICAgICAgICAgICByZXR1cm4gTVE6OnRv
RXZhbHVhdGlvblJlc3VsdChpc1BvcnRyYWl0KTsKICAgICAgICAgaWYgKHZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUxhbmRzY2FwZSkKLSAgICAgICAgICAgIHJldHVybiB0b0V2YWx1YXRpb25S
ZXN1bHQoIWlzUG9ydHJhaXQpOworICAgICAgICAgICAgcmV0dXJuIE1ROjp0b0V2YWx1YXRpb25S
ZXN1bHQoIWlzUG9ydHJhaXQpOwogCi0gICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpV
bmtub3duOworICAgICAgICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiAg
ICAgfQogCi0gICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgcmV0dXJu
IE1ROjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5oIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuaAppbmRleCBjNzcxOTlkYjc3NDUuLjVk
YjM4NDE3YTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVl
cnlFdmFsdWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2
YWx1YXRvci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNv
bnRhaW5lclF1ZXJ5LmgiCisjaW5jbHVkZSAiR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3IuaCIK
ICNpbmNsdWRlICJTZWxlY3Rvck1hdGNoaW5nU3RhdGUuaCIKICNpbmNsdWRlICJTdHlsZVNjb3Bl
T3JkaW5hbC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTM1LDkgKzM2LDcgQEAgY2xhc3Mg
RWxlbWVudDsKIAogbmFtZXNwYWNlIFN0eWxlIHsKIAotZW51bSBjbGFzcyBFdmFsdWF0aW9uUmVz
dWx0IDogdWludDhfdCB7IEZhbHNlLCBUcnVlLCBVbmtub3duIH07Ci0KLWNsYXNzIENvbnRhaW5l
clF1ZXJ5RXZhbHVhdG9yIHsKK2NsYXNzIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yIDogcHVibGlj
IE1ROjpHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvcjxDb250YWluZXJRdWVyeUV2YWx1YXRvcj4g
ewogcHVibGljOgogICAgIGVudW0gY2xhc3MgU2VsZWN0aW9uTW9kZSA6IGJvb2wgeyBFbGVtZW50
LCBQc2V1ZG9FbGVtZW50IH07CiAgICAgQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IoY29uc3QgRWxl
bWVudCYsIFNlbGVjdGlvbk1vZGUsIFNjb3BlT3JkaW5hbCwgU2VsZWN0b3JNYXRjaGluZ1N0YXRl
Kik7CkBAIC00NiwxMyArNDUsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IEVsZW1l
bnQqIHNlbGVjdENvbnRhaW5lcihPcHRpb25TZXQ8Q1E6OkF4aXM+LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IEVsZW1lbnQmLCBTZWxlY3Rpb25Nb2RlID0gU2VsZWN0aW9uTW9kZTo6RWxlbWVu
dCwgU2NvcGVPcmRpbmFsID0gU2NvcGVPcmRpbmFsOjpFbGVtZW50LCBjb25zdCBDYWNoZWRRdWVy
eUNvbnRhaW5lcnMqID0gbnVsbHB0cik7CiAKLXByaXZhdGU6CiAgICAgc3RydWN0IFNlbGVjdGVk
Q29udGFpbmVyOwotICAgIHN0ZDo6b3B0aW9uYWw8U2VsZWN0ZWRDb250YWluZXI+IHNlbGVjdENv
bnRhaW5lcihjb25zdCBDUTo6Q29udGFpbmVyUXVlcnkmKSBjb25zdDsKKyAgICBNUTo6RXZhbHVh
dGlvblJlc3VsdCBldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMoY29uc3QgQ1E6OlF1ZXJ5SW5QYXJlbnMm
LCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYpIGNvbnN0OworICAgIE1ROjpFdmFsdWF0aW9uUmVz
dWx0IGV2YWx1YXRlU2l6ZUZlYXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJlJiwgY29uc3QgU2Vs
ZWN0ZWRDb250YWluZXImKSBjb25zdDsKIAotICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVR
dWVyeUluUGFyZW5zKGNvbnN0IENROjpRdWVyeUluUGFyZW5zJiwgY29uc3QgU2VsZWN0ZWRDb250
YWluZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25kaXRpb25UeXBlPiBFdmFs
dWF0aW9uUmVzdWx0IGV2YWx1YXRlQ29uZGl0aW9uKGNvbnN0IENvbmRpdGlvblR5cGUmLCBjb25z
dCBTZWxlY3RlZENvbnRhaW5lciYpIGNvbnN0OwotICAgIEV2YWx1YXRpb25SZXN1bHQgZXZhbHVh
dGVTaXplRmVhdHVyZShjb25zdCBDUTo6U2l6ZUZlYXR1cmUmLCBjb25zdCBTZWxlY3RlZENvbnRh
aW5lciYpIGNvbnN0OworcHJpdmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPFNlbGVjdGVkQ29udGFp
bmVyPiBzZWxlY3RDb250YWluZXIoY29uc3QgQ1E6OkNvbnRhaW5lclF1ZXJ5JikgY29uc3Q7CiAK
ICAgICBjb25zdCBSZWY8Y29uc3QgRWxlbWVudD4gbV9lbGVtZW50OwogICAgIGNvbnN0IFNlbGVj
dGlvbk1vZGUgbV9zZWxlY3Rpb25Nb2RlOwpAQCAtNjAsMzIgKzU4LDUgQEAgcHJpdmF0ZToKICAg
ICBTZWxlY3Rvck1hdGNoaW5nU3RhdGUqIG1fc2VsZWN0b3JNYXRjaGluZ1N0YXRlOwogfTsKIAot
aW5saW5lIEV2YWx1YXRpb25SZXN1bHQgdG9FdmFsdWF0aW9uUmVzdWx0KGJvb2wgYm9vbGVhbikK
LXsKLSAgICByZXR1cm4gYm9vbGVhbiA/IEV2YWx1YXRpb25SZXN1bHQ6OlRydWUgOiBFdmFsdWF0
aW9uUmVzdWx0OjpGYWxzZTsKLX07Ci0KLWlubGluZSBFdmFsdWF0aW9uUmVzdWx0IG9wZXJhdG9y
JihFdmFsdWF0aW9uUmVzdWx0IGxlZnQsIEV2YWx1YXRpb25SZXN1bHQgcmlnaHQpCi17Ci0gICAg
aWYgKGxlZnQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93biB8fCByaWdodCA9PSBFdmFsdWF0
aW9uUmVzdWx0OjpVbmtub3duKQotICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5r
bm93bjsKLSAgICBpZiAobGVmdCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlICYmIHJpZ2h0ID09
IEV2YWx1YXRpb25SZXN1bHQ6OlRydWUpCi0gICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0
OjpUcnVlOwotICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsKLX0KLQotaW5saW5l
IEV2YWx1YXRpb25SZXN1bHQgb3BlcmF0b3IhKEV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQotewot
ICAgIHN3aXRjaCAocmVzdWx0KSB7Ci0gICAgY2FzZSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOgot
ICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6RmFsc2U7Ci0gICAgY2FzZSBFdmFsdWF0
aW9uUmVzdWx0OjpGYWxzZToKLSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7
Ci0gICAgY2FzZSBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOgotICAgICAgICByZXR1cm4gRXZh
bHVhdGlvblJlc3VsdDo6VW5rbm93bjsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQogfQogfQo=
</data>
<flag name="commit-queue"
          id="490406"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461529</attachid>
            <date>2022-08-10 09:06:06 -0700</date>
            <delta_ts>2022-08-10 09:58:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243771-20220810190605.patch</filename>
            <type>text/plain</type>
            <size>36525</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAyNzU4NGIwY2VkY2I0MWVlODdiMzJlMjViMWRjMjgxNmI3NDhkYTJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDEwIEF1ZyAyMDIyIDExOjI3OjE5ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIGdl
bmVyaWMgbWVkaWEgcXVlcnkgcGFyc2VyIGFuZCBldmFsdWF0b3IKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM3NzEKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKR2VuZXJhbGl6ZSBjb250YWluZXIgcXVlcnkgcGFyc2luZyBhbmQgZXZhbHVhdGlvbiBjb2Rl
IHNvIGl0IGNhbiBiZSB1c2VkIGZvciBtZWRpYSBxdWVyaWVzIHRvbyBpbiB0aGUgZnV0dXJlLgoK
VGhpcyBwYXRjaCBhZGRzIGdlbmVyaWMgcGFyc2VyIGFuZCBldmFsdWF0b3IgY2xhc3NlcyBhbmQg
bW92ZXMgY29uZGl0aW9uIGhhbmRsaW5nIHRoZXJlLgoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5LmNwcDoKKFdlYkNvcmU6OkNROjpzZXJpYWxpemUpOgoqIFNvdXJjZS9XZWJDb3JlL2Nz
cy9Db250YWluZXJRdWVyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBh
cnNlci5jcHA6CihXZWJDb3JlOjpDb250YWluZXJRdWVyeVBhcnNlcjo6Y29uc3VtZUNvbmRpdGlv
bik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmg6
CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6
IEFkZGVkLgooV2ViQ29yZTo6TVE6OkdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpjb25jcmV0
ZUV2YWx1YXRvciBjb25zdCk6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0
b3I8Q29uY3JldGVFdmFsdWF0b3I+OjpldmFsdWF0ZUNvbmRpdGlvbiBjb25zdCk6CihXZWJDb3Jl
OjpNUTo6b3BlcmF0b3ImKToKKFdlYkNvcmU6Ok1ROjpvcGVyYXRvciEpOgooV2ViQ29yZTo6TVE6
OnRvRXZhbHVhdGlvblJlc3VsdCk6CiogU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNN
ZWRpYVF1ZXJ5UGFyc2VyLmg6IEFkZGVkLgooV2ViQ29yZTo6TVE6OkdlbmVyaWNNZWRpYVF1ZXJ5
UGFyc2VyOjpjb25jcmV0ZVBhcnNlcik6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXI8Q29uY3JldGVQYXJzZXI+Ojpjb25zdW1lQ29uZGl0aW9uKToKKiBTb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuaC4KKiBTb3VyY2UvV2ViQ29yZS9zdHls
ZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpTdHlsZTo6Q29udGFpbmVy
UXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIGNvbnN0KToKKFdlYkNvcmU6OlN0eWxlOjpDb250YWlu
ZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVRdWVyeUluUGFyZW5zIGNvbnN0KToKKFdlYkNvcmU6
OlN0eWxlOjpDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVTaXplRmVhdHVyZSBjb25z
dCk6CihXZWJDb3JlOjpTdHlsZTo6Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlQ29u
ZGl0aW9uIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJR
dWVyeUV2YWx1YXRvci5oOgooV2ViQ29yZTo6U3R5bGU6OnRvRXZhbHVhdGlvblJlc3VsdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpTdHlsZTo6b3BlcmF0b3ImKTogRGVsZXRlZC4KKFdlYkNvcmU6OlN0
eWxlOjpvcGVyYXRvciEpOiBEZWxldGVkLgotLS0KIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0ICAgICAgICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
ICAgICAgICAgICAgICAgICAgfCAgIDIgKwogLi4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIHwgIDIwICsrKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJR
dWVyeS5jcHAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1
ZXJ5LmggICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVl
cnlQYXJzZXIuY3BwICAgfCAgNTggLS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRh
aW5lclF1ZXJ5UGFyc2VyLmggICAgIHwgICA4ICstCiAuLi4vY3NzL3F1ZXJ5L0dlbmVyaWNNZWRp
YVF1ZXJ5RXZhbHVhdG9yLmggICAgfCAxMDcgKysrKysrKysrKysrKysrKysrCiAuLi4vY3NzL3F1
ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmggICAgICAgfCAgOTcgKysrKysrKysrKysrKysr
KwogLi4uL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmggICAgICAgIHwgIDMxICsr
KysrCiAuLi4vV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAgfCAgNzkg
KysrKy0tLS0tLS0tLQogLi4uL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3Iu
aCAgIHwgIDQxICstLS0tLS0KIDEyIGZpbGVzIGNoYW5nZWQsIDI5NCBpbnNlcnRpb25zKCspLCAx
NTggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvY3NzL3F1
ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVz
LmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGY3Y2Y2MzYzMjA4MC4uYjZmMjZiNWUxN2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODcsNiArODcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vY3NzIgogICAgICIke1dF
QkNPUkVfRElSfS9jc3MvY2FsYyIKICAgICAiJHtXRUJDT1JFX0RJUn0vY3NzL3BhcnNlciIKKyAg
ICAiJHtXRUJDT1JFX0RJUn0vY3NzL3F1ZXJ5IgogICAgICIke1dFQkNPUkVfRElSfS9jc3MvdHlw
ZWRvbSIKICAgICAiJHtXRUJDT1JFX0RJUn0vY3NzL3R5cGVkb20vY29sb3IiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L2Nzcy90eXBlZG9tL251bWVyaWMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA5NWFm
NWVhNTJlMzQuLmRlZmM3MjE2NTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02MDIsNiArNjAy
LDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9wYXJz
ZXIvQ1NTUGFyc2VyVG9rZW4uaAogICAgIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW5SYW5nZS5o
CiAKKyAgICBjc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oCisKICAgICBjc3NqaXQv
Q29tcGlsZWRTZWxlY3Rvci5oCiAKICAgICBkaXNwbGF5L0Rpc3BsYXlUcmVlLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmOWZm
MDEwNjRiMGQuLjE0OWNmNTNmYmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTUwMyw2ICs1NTAzLDkgQEAKIAkJRTRENjhF
QjUxN0I0REJEQzAwQ0JEQ0E4IC8qIFN0eWxlUmVzb2x2ZUZvckZvbnRSYXcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDY4RUIzMTdCNERCREMwMENC
RENBOCAvKiBTdHlsZVJlc29sdmVGb3JGb250UmF3LmggKi87IH07CiAJCUU0RDg2RTZEMjY0MDM5
NEMwMEI2MjQyNSAvKiBTdHlsZVNjb3BlT3JkaW5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTREODZFNkIyNjQwMzk0QzAwQjYyNDI1IC8qIFN0eWxl
U2NvcGVPcmRpbmFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTREOTg4QjQxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ5ODhCMzE3
QkZEMUY2MDA4NEZCODggLyogVGV4dE5vZGVUcmF2ZXJzYWwuaCAqLzsgfTsKKwkJRTREQTVFMzYy
ODlEMjQyMDAwODQ5QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNERBNUUzNDI4OUQyM0YzMDA4NDlC
Q0YgLyogR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaCAqLzsgfTsKKwkJRTREQTVFM0QyOEEyODA1
NzAwODQ5QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0REE1RTM1Mjg5RDIzRkQwMDg0OUJDRiAvKiBH
ZW5lcmljTWVkaWFRdWVyeVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRTREQTVFNDAyOEEyODhGODAwODQ5QkNGIC8qIEdlbmVyaWNNZWRp
YVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNERBNUUzRjI4QTI4OEY4MDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlFdmFs
dWF0b3IuaCAqLzsgfTsKIAkJRTREQUNFNkExRDEyRTEwQjAwNzU5ODBGIC8qIFN0eWxlUGVuZGlu
Z1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTREQUNFNjkxRDEyRTEwQjAwNzU5ODBGIC8qIFN0eWxlUGVuZGluZ1Jlc291cmNlcy5oICov
OyB9OwogCQlFNERFQUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVUcmVlUmVzb2x2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0REVBQTE2MTdB
OTNEQzMwMDBFMDQzMCAvKiBTdHlsZVRyZWVSZXNvbHZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTM5QUZCMTMzMEVGQTgwMDNBQjI3NCAv
KiBMZWdhY3lUaWxlTGF5ZXJQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEUzOUFGQTEzMzBFRkE4MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVy
UG9vbC5oICovOyB9OwpAQCAtMTc4ODAsNiArMTc4ODMsOSBAQAogCQlFNEQ4NkU2QjI2NDAzOTRD
MDBCNjI0MjUgLyogU3R5bGVTY29wZU9yZGluYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3R5bGVTY29wZU9yZGluYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTREOTg4QjMxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2RlVHJhdmVyc2FsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHROb2RlVHJhdmVyc2FsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RDk4OEI1MTdCRkVCMjEwMDg0RkI4OCAvKiBUZXh0Tm9k
ZVRyYXZlcnNhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0
Tm9kZVRyYXZlcnNhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0REE1RTM0
Mjg5RDIzRjMwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFNERBNUUzNTI4OUQyM0ZEMDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW5lcmljTWVkaWFRdWVyeVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUU0REE1RTNGMjhBMjg4RjgwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFR
dWVyeUV2YWx1YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmlj
TWVkaWFRdWVyeUV2YWx1YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNERB
Q0U2OTFEMTJFMTBCMDA3NTk4MEYgLyogU3R5bGVQZW5kaW5nUmVzb3VyY2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlUGVuZGluZ1Jlc291cmNlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNERBQ0U2QjFEMTJFMTE2MDA3NTk4MEYgLyogU3R5bGVQ
ZW5kaW5nUmVzb3VyY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0eWxlUGVuZGluZ1Jlc291cmNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0REVBQTE1MTdBOTNEQzMwMDBFMDQzMCAvKiBTdHlsZVRyZWVSZXNvbHZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZVRyZWVSZXNvbHZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjAxOCw2ICszMjAyNCwxNiBAQAogCQkJcGF0
aCA9IHVwZGF0aW5nOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRTREQTVF
M0UyOEEyODY3MzAwODQ5QkNGIC8qIHF1ZXJ5ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlFNERBNUUzRjI4QTI4OEY4MDA4NDlCQ0YgLyogR2VuZXJpY01l
ZGlhUXVlcnlFdmFsdWF0b3IuaCAqLywKKwkJCQlFNERBNUUzNDI4OUQyM0YzMDA4NDlCQ0YgLyog
R2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaCAqLywKKwkJCQlFNERBNUUzNTI4OUQyM0ZEMDA4NDlC
Q0YgLyogR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBxdWVy
eTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUU0RkI0QjFFMjM5NTM1NkYw
MDNDMzM2QSAvKiBpbnRlZ3JhdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0zMjE1NSw2ICszMjE3MSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlC
Q0YxNjQ0RDI2NjI5RjlBMDAwMkY3RUYgLyogY2FsYyAqLywKIAkJCQk5NDZEMzcyNzFENkNCMjI1
MDA3NzA4NEYgLyogcGFyc2VyICovLAorCQkJCUU0REE1RTNFMjhBMjg2NzMwMDg0OUJDRiAvKiBx
dWVyeSAqLywKIAkJCQk0QkFGRDBEQTIxOTIxRUFEMDBDMEFCNjQgLyogdHlwZWRvbSAqLywKIAkJ
CQlGQkQ2QUY4NDE1RUYyMUQ0MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgKi8s
CiAJCQkJRkJENkFGODUxNUVGMjFENDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuaCAq
LywKQEAgLTM1MjY4LDYgKzM1Mjg1LDkgQEAKIAkJCQlDMEMwNTRDQzExMThDOEU0MDBDRTI2MzYg
LyogZ2VuZXJhdGUtYmluZGluZ3MucGwgaW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRjBEQjBEQUZG
NEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDAz
MEY2MUI3RDMzQjUwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCUU0REE1RTQwMjhBMjg4RjgwMDg0OUJDRiAvKiBHZW5lcmljTWVkaWFR
dWVyeUV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTREQTVFMzYyODlEMjQyMDAwODQ5
QkNGIC8qIEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNERB
NUUzRDI4QTI4MDU3MDA4NDlCQ0YgLyogR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTc0NkFGMjQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNTE0RjREREU2MDAzRTdBNzEgLyogR2VvbG9jYXRpb25D
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI3MTRGNERERTYwMDNFN0E3MCAvKiBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250
YWluZXJRdWVyeS5jcHAKaW5kZXggMDEzNWJmYWI0YTcyLi42MDUyOWVkMTE0MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgc2Vy
aWFsaXplKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFNpemVGZWF0dXJlJiBzaXplRmVh
dHVyZSkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmRpdGlvblR5cGU+CiB2b2lkIHNlcmlhbGl6ZShT
dHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDb25kaXRpb25UeXBlJiBjb25kaXRpb24pCiB7
Ci0gICAgaWYgKGNvbmRpdGlvbi5xdWVyaWVzLnNpemUoKSA9PSAxICYmIGNvbmRpdGlvbi5sb2dp
Y2FsT3BlcmF0b3IgPT0gTG9naWNhbE9wZXJhdG9yOjpOb3QpIHsKKyAgICBpZiAoY29uZGl0aW9u
LnF1ZXJpZXMuc2l6ZSgpID09IDEgJiYgY29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvciA9PSBNUTo6
TG9naWNhbE9wZXJhdG9yOjpOb3QpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIm5vdCAiKTsK
ICAgICAgICAgc2VyaWFsaXplKGJ1aWxkZXIsIGNvbmRpdGlvbi5xdWVyaWVzLmZpcnN0KCkpOwog
ICAgICAgICByZXR1cm47CkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBzZXJpYWxpemUoU3RyaW5n
QnVpbGRlciYgYnVpbGRlciwgY29uc3QgQ29uZGl0aW9uVHlwZSYgY29uZGl0aW9uKQogCiAgICAg
Zm9yIChhdXRvJiBxdWVyeSA6IGNvbmRpdGlvbi5xdWVyaWVzKSB7CiAgICAgICAgIGlmICgmcXVl
cnkgIT0gJmNvbmRpdGlvbi5xdWVyaWVzLmZpcnN0KCkpCi0gICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChjb25kaXRpb24ubG9naWNhbE9wZXJhdG9yID09IExvZ2ljYWxPcGVyYXRvcjo6QW5kID8g
IiBhbmQgIiA6ICIgb3IgIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjb25kaXRpb24u
bG9naWNhbE9wZXJhdG9yID09IE1ROjpMb2dpY2FsT3BlcmF0b3I6OkFuZCA/ICIgYW5kICIgOiAi
IG9yICIpOwogICAgICAgICBzZXJpYWxpemUoYnVpbGRlciwgcXVlcnkpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5LmgKaW5kZXggZDExODI5M2IzZTA3Li5kM2I4MDdmNDQz
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeS5oCkBAIC0yNCw2ICsyNCw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR2VuZXJpY01lZGlhUXVlcnlUeXBlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KQEAgLTQ2LDEyICs0NywxMSBAQCBzdHJ1Y3QgVW5r
bm93blF1ZXJ5IHsKIAogdXNpbmcgUXVlcnlJblBhcmVucyA9IHN0ZDo6dmFyaWFudDxDb250YWlu
ZXJDb25kaXRpb24sIFNpemVGZWF0dXJlLCBVbmtub3duUXVlcnk+OwogCi1lbnVtIGNsYXNzIExv
Z2ljYWxPcGVyYXRvciA6IHVpbnQ4X3QgeyBBbmQsIE9yLCBOb3QgfTsKIGVudW0gY2xhc3MgQ29t
cGFyaXNvbk9wZXJhdG9yIDogdWludDhfdCB7IExlc3NUaGFuLCBMZXNzVGhhbk9yRXF1YWwsIEVx
dWFsLCBHcmVhdGVyVGhhbiwgR3JlYXRlclRoYW5PckVxdWFsIH07CiBlbnVtIGNsYXNzIFN5bnRh
eCA6IHVpbnQ4X3QgeyBCb29sZWFuLCBDb2xvbiwgUmFuZ2UgfTsKIAogc3RydWN0IENvbnRhaW5l
ckNvbmRpdGlvbiB7Ci0gICAgTG9naWNhbE9wZXJhdG9yIGxvZ2ljYWxPcGVyYXRvciB7IExvZ2lj
YWxPcGVyYXRvcjo6QW5kIH07CisgICAgTVE6OkxvZ2ljYWxPcGVyYXRvciBsb2dpY2FsT3BlcmF0
b3IgeyBNUTo6TG9naWNhbE9wZXJhdG9yOjpBbmQgfTsKICAgICBWZWN0b3I8UXVlcnlJblBhcmVu
cz4gcXVlcmllczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWlu
ZXJRdWVyeVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJz
ZXIuY3BwCmluZGV4IDQ1ODliYWJhZDFkMS4uZTM3MWM4OTY3NjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5jcHAKQEAgLTg3LDY0ICs4Nyw2IEBAIHN0ZDo6
b3B0aW9uYWw8Q1E6OlF1ZXJ5SW5QYXJlbnM+IENvbnRhaW5lclF1ZXJ5UGFyc2VyOjpjb25zdW1l
UXVlcnlJblBhcmVucyhDU1NQCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgQ29uZGl0aW9uVHlwZT4KLXN0ZDo6b3B0aW9uYWw8Q29uZGl0aW9uVHlwZT4gQ29udGFpbmVy
UXVlcnlQYXJzZXI6OmNvbnN1bWVDb25kaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
Ci17Ci0gICAgYXV0byBjb25zdW1lUXVlcnkgPSBbJl0oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UpIHsKLSAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxDUTo6Q29udGFpbmVy
Q29uZGl0aW9uLCBDb25kaXRpb25UeXBlPikKLSAgICAgICAgICAgIHJldHVybiBjb25zdW1lUXVl
cnlJblBhcmVucyhyYW5nZSk7Ci0gICAgICAgIC8vIFN0eWxlIHF1ZXJ5IHN1cHBvcnQgd291bGQg
YmUgaGVyZS4KLSAgICB9OwotCi0gICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRU
b2tlbikgewotICAgICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3QpIHsK
LSAgICAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBxdWVyeSA9IGNvbnN1bWVRdWVyeShyYW5nZSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIENvbmRpdGlvblR5cGUgeyBDUTo6TG9naWNhbE9wZXJhdG9yOjpOb3QsIHsgKnF1
ZXJ5IH0gfTsKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBDb25kaXRpb25UeXBlIGNvbmRpdGlvbjsKLQotICAgIGF1dG8gcXVlcnkgPSBjb25zdW1lUXVl
cnkocmFuZ2UpOwotICAgIGlmICghcXVlcnkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBj
b25kaXRpb24ucXVlcmllcy5hcHBlbmQoKnF1ZXJ5KTsKLSAgICByYW5nZS5jb25zdW1lV2hpdGVz
cGFjZSgpOwotCi0gICAgYXV0byBjb25zdW1lT3BlcmF0b3IgPSBbJl0oKSAtPiBzdGQ6Om9wdGlv
bmFsPENROjpMb2dpY2FsT3BlcmF0b3I+IHsKLSAgICAgICAgYXV0byBvcGVyYXRvclRva2VuID0g
cmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKLSAgICAgICAgaWYgKG9wZXJhdG9y
VG9rZW4udHlwZSgpICE9IElkZW50VG9rZW4pCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICBpZiAob3BlcmF0b3JUb2tlbi5pZCgpID09IENTU1ZhbHVlQW5kKQotICAgICAgICAgICAg
cmV0dXJuIENROjpMb2dpY2FsT3BlcmF0b3I6OkFuZDsKLSAgICAgICAgaWYgKG9wZXJhdG9yVG9r
ZW4uaWQoKSA9PSBDU1NWYWx1ZU9yKQotICAgICAgICAgICAgcmV0dXJuIENROjpMb2dpY2FsT3Bl
cmF0b3I6Ok9yOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH07Ci0KLSAgICB3aGlsZSAoIXJh
bmdlLmF0RW5kKCkpIHsKLSAgICAgICAgYXV0byBvcCA9IGNvbnN1bWVPcGVyYXRvcigpOwotICAg
ICAgICBpZiAoIW9wKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgaWYgKGNvbmRp
dGlvbi5xdWVyaWVzLnNpemUoKSA+IDEgJiYgY29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvciAhPSAq
b3ApCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGNvbmRpdGlvbi5sb2dpY2Fs
T3BlcmF0b3IgPSAqb3A7Ci0KLSAgICAgICAgYXV0byBxdWVyeSA9IGNvbnN1bWVRdWVyeShyYW5n
ZSk7Ci0gICAgICAgIGlmICghcXVlcnkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAg
ICAgIGNvbmRpdGlvbi5xdWVyaWVzLmFwcGVuZCgqcXVlcnkpOwotICAgICAgICByYW5nZS5jb25z
dW1lV2hpdGVzcGFjZSgpOwotICAgIH0KLQotICAgIHJldHVybiBjb25kaXRpb247Ci19Ci0KIHN0
ZDo6b3B0aW9uYWw8Q1E6OlNpemVGZWF0dXJlPiBDb250YWluZXJRdWVyeVBhcnNlcjo6Y29uc3Vt
ZVNpemVGZWF0dXJlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGF1dG8gY29u
c3VtZSA9IFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVl
cnlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5oCmlu
ZGV4IGRlN2FkZDVjYjc4MS4uMTZkMDliMTRkZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29u
dGFpbmVyUXVlcnlQYXJzZXIuaApAQCAtMjcsMjQgKzI3LDI0IEBACiAjaW5jbHVkZSAiQ1NTUGFy
c2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCiAjaW5jbHVkZSAiQ29u
dGFpbmVyUXVlcnkuaCIKKyNpbmNsdWRlICJHZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU1BhcnNlclRva2VuUmFuZ2U7CitjbGFzcyBD
b250YWluZXJRdWVyeVBhcnNlcjsKIAotY2xhc3MgQ29udGFpbmVyUXVlcnlQYXJzZXIgeworY2xh
c3MgQ29udGFpbmVyUXVlcnlQYXJzZXIgOiBwdWJsaWMgTVE6OkdlbmVyaWNNZWRpYVF1ZXJ5UGFy
c2VyPENvbnRhaW5lclF1ZXJ5UGFyc2VyPiAgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPENROjpDb250YWluZXJRdWVyeT4gY29uc3VtZUNvbnRhaW5lclF1ZXJ5KENTU1BhcnNl
clRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CiAKLXByaXZhdGU6CiAgICAg
c3RkOjpvcHRpb25hbDxDUTo6Q29udGFpbmVyUXVlcnk+IGNvbnN1bWVDb250YWluZXJRdWVyeShD
U1NQYXJzZXJUb2tlblJhbmdlJik7CiAgICAgc3RkOjpvcHRpb25hbDxDUTo6UXVlcnlJblBhcmVu
cz4gY29uc3VtZVF1ZXJ5SW5QYXJlbnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENvbmRpdGlvblR5cGU+IHN0ZDo6b3B0aW9uYWw8Q29uZGl0aW9uVHlwZT4g
Y29uc3VtZUNvbmRpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAgICAgc3RkOjpvcHRpb25h
bDxDUTo6U2l6ZUZlYXR1cmU+IGNvbnN1bWVTaXplRmVhdHVyZShDU1NQYXJzZXJUb2tlblJhbmdl
Jik7CiAgICAgc3RkOjpvcHRpb25hbDxDUTo6U2l6ZUZlYXR1cmU+IGNvbnN1bWVQbGFpblNpemVG
ZWF0dXJlKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKICAgICBzdGQ6Om9wdGlvbmFsPENROjpTaXpl
RmVhdHVyZT4gY29uc3VtZVJhbmdlU2l6ZUZlYXR1cmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwog
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVZhbHVlKENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
IAorcHJpdmF0ZToKICAgICBDb250YWluZXJRdWVyeVBhcnNlcihjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0KQogICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJiMzcyZDIzZGRmMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFR
dWVyeUV2YWx1YXRvci5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
TVEgeworCitlbnVtIGNsYXNzIEV2YWx1YXRpb25SZXN1bHQgOiB1aW50OF90IHsgRmFsc2UsIFRy
dWUsIFVua25vd24gfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29uY3JldGVFdmFsdWF0b3I+Citj
bGFzcyBHZW5lcmljTWVkaWFRdWVyeUV2YWx1YXRvciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZGl0aW9uVHlwZSwgdHlwZW5hbWUgQ29udGV4dD4gRXZhbHVhdGlvblJlc3Vs
dCBldmFsdWF0ZUNvbmRpdGlvbihjb25zdCBDb25kaXRpb25UeXBlJiwgY29uc3QgQ29udGV4dCYp
IGNvbnN0OworCitwcml2YXRlOgorICAgIGNvbnN0IENvbmNyZXRlRXZhbHVhdG9yJiBjb25jcmV0
ZUV2YWx1YXRvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENvbmNyZXRlRXZh
bHVhdG9yJj4oKnRoaXMpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25jcmV0ZUV2YWx1
YXRvcj4KK3RlbXBsYXRlPHR5cGVuYW1lIENvbmRpdGlvblR5cGUsIHR5cGVuYW1lIENvbnRleHQ+
CitFdmFsdWF0aW9uUmVzdWx0IEdlbmVyaWNNZWRpYVF1ZXJ5RXZhbHVhdG9yPENvbmNyZXRlRXZh
bHVhdG9yPjo6ZXZhbHVhdGVDb25kaXRpb24oY29uc3QgQ29uZGl0aW9uVHlwZSYgY29uZGl0aW9u
LCAgY29uc3QgQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBpZiAoY29uZGl0aW9uLnF1
ZXJpZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93
bjsKKworICAgIHN3aXRjaCAoY29uZGl0aW9uLmxvZ2ljYWxPcGVyYXRvcikgeworICAgIGNhc2Ug
TG9naWNhbE9wZXJhdG9yOjpOb3Q6CisgICAgICAgIHJldHVybiAhY29uY3JldGVFdmFsdWF0b3Io
KS5ldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMoY29uZGl0aW9uLnF1ZXJpZXMuZmlyc3QoKSwgY29udGV4
dCk7CisKKyAgICBjYXNlIExvZ2ljYWxPcGVyYXRvcjo6QW5kOiB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKyAgICAgICAgZm9yIChhdXRvIHF1ZXJ5IDog
Y29uZGl0aW9uLnF1ZXJpZXMpIHsKKyAgICAgICAgICAgIGF1dG8gcXVlcnlSZXN1bHQgPSBjb25j
cmV0ZUV2YWx1YXRvcigpLmV2YWx1YXRlUXVlcnlJblBhcmVucyhxdWVyeSwgY29udGV4dCk7Cisg
ICAgICAgICAgICBpZiAocXVlcnlSZXN1bHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6RmFsc2UpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OkZhbHNlOworICAgICAgICAg
ICAgaWYgKHF1ZXJ5UmVzdWx0ID09IEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd24pCisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGNhc2UgTG9naWNhbE9wZXJhdG9y
OjpPcjogeworICAgICAgICBhdXRvIHJlc3VsdCA9IEV2YWx1YXRpb25SZXN1bHQ6OkZhbHNlOwor
ICAgICAgICBmb3IgKGF1dG8gcXVlcnkgOiBjb25kaXRpb24ucXVlcmllcykgeworICAgICAgICAg
ICAgYXV0byBxdWVyeVJlc3VsdCA9IGNvbmNyZXRlRXZhbHVhdG9yKCkuZXZhbHVhdGVRdWVyeUlu
UGFyZW5zKHF1ZXJ5LCBjb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChxdWVyeVJlc3VsdCA9PSBF
dmFsdWF0aW9uUmVzdWx0OjpUcnVlKQorICAgICAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9u
UmVzdWx0OjpUcnVlOworICAgICAgICAgICAgaWYgKHF1ZXJ5UmVzdWx0ID09IEV2YWx1YXRpb25S
ZXN1bHQ6OlVua25vd24pCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gRXZhbHVhdGlvblJlc3Vs
dDo6VW5rbm93bjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworaW5saW5lIEV2YWx1
YXRpb25SZXN1bHQgb3BlcmF0b3ImKEV2YWx1YXRpb25SZXN1bHQgbGVmdCwgRXZhbHVhdGlvblJl
c3VsdCByaWdodCkKK3sKKyAgICBpZiAobGVmdCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3du
IHx8IHJpZ2h0ID09IEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd24pCisgICAgICAgIHJldHVybiBF
dmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgIGlmIChsZWZ0ID09IEV2YWx1YXRpb25SZXN1
bHQ6OlRydWUgJiYgcmlnaHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSkKKyAgICAgICAgcmV0
dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6
OkZhbHNlOworfQorCitpbmxpbmUgRXZhbHVhdGlvblJlc3VsdCBvcGVyYXRvciEoRXZhbHVhdGlv
blJlc3VsdCByZXN1bHQpCit7CisgICAgc3dpdGNoIChyZXN1bHQpIHsKKyAgICBjYXNlIEV2YWx1
YXRpb25SZXN1bHQ6OlRydWU6CisgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpGYWxz
ZTsKKyAgICBjYXNlIEV2YWx1YXRpb25SZXN1bHQ6OkZhbHNlOgorICAgICAgICByZXR1cm4gRXZh
bHVhdGlvblJlc3VsdDo6VHJ1ZTsKKyAgICBjYXNlIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd246
CisgICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgIH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitpbmxpbmUgRXZhbHVhdGlvblJlc3Vs
dCB0b0V2YWx1YXRpb25SZXN1bHQoYm9vbCBib29sZWFuKQoreworICAgIHJldHVybiBib29sZWFu
ID8gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSA6IEV2YWx1YXRpb25SZXN1bHQ6OkZhbHNlOworfQor
Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlh
UXVlcnlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVy
eVBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWUxMWMw
Yzk1OGIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVy
aWNNZWRpYVF1ZXJ5UGFyc2VyLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRleHQu
aCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2Vu
UmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIE1RIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgQ29uY3JldGVQYXJzZXI+CitjbGFzcyBHZW5lcmljTWVkaWFRdWVyeVBhcnNl
ciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlwZT4gc3RkOjpv
cHRpb25hbDxDb25kaXRpb25UeXBlPiBjb25zdW1lQ29uZGl0aW9uKENTU1BhcnNlclRva2VuUmFu
Z2UmKTsKKworcHJpdmF0ZToKKyAgICBDb25jcmV0ZVBhcnNlciYgY29uY3JldGVQYXJzZXIoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25jcmV0ZVBhcnNlciY+KCp0aGlzKTsgfQorfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgQ29uY3JldGVQYXJzZXI+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb25kaXRp
b25UeXBlPgorc3RkOjpvcHRpb25hbDxDb25kaXRpb25UeXBlPiBHZW5lcmljTWVkaWFRdWVyeVBh
cnNlcjxDb25jcmV0ZVBhcnNlcj46OmNvbnN1bWVDb25kaXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCit7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikg
eworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3QpIHsKKyAgICAg
ICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICBp
ZiAoYXV0byBxdWVyeSA9IGNvbmNyZXRlUGFyc2VyKCkuY29uc3VtZVF1ZXJ5SW5QYXJlbnMocmFu
Z2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBDb25kaXRpb25UeXBlIHsgTG9naWNhbE9wZXJh
dG9yOjpOb3QsIHsgKnF1ZXJ5IH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBDb25kaXRpb25UeXBlIGNvbmRpdGlvbjsKKworICAgIGF1dG8gcXVl
cnkgPSBjb25jcmV0ZVBhcnNlcigpLmNvbnN1bWVRdWVyeUluUGFyZW5zKHJhbmdlKTsKKyAgICBp
ZiAoIXF1ZXJ5KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgY29uZGl0aW9uLnF1ZXJpZXMu
YXBwZW5kKCpxdWVyeSk7CisgICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKKworICAgIGF1
dG8gY29uc3VtZU9wZXJhdG9yID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxMb2dpY2FsT3BlcmF0
b3I+IHsKKyAgICAgICAgYXV0byBvcGVyYXRvclRva2VuID0gcmFuZ2UuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKG9wZXJhdG9yVG9rZW4udHlwZSgpICE9IElkZW50
VG9rZW4pCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBpZiAob3BlcmF0b3JUb2tl
bi5pZCgpID09IENTU1ZhbHVlQW5kKQorICAgICAgICAgICAgcmV0dXJuIExvZ2ljYWxPcGVyYXRv
cjo6QW5kOworICAgICAgICBpZiAob3BlcmF0b3JUb2tlbi5pZCgpID09IENTU1ZhbHVlT3IpCisg
ICAgICAgICAgICByZXR1cm4gTG9naWNhbE9wZXJhdG9yOjpPcjsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9OworCisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGF1dG8g
b3AgPSBjb25zdW1lT3BlcmF0b3IoKTsKKyAgICAgICAgaWYgKCFvcCkKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgIGlmIChjb25kaXRpb24ucXVlcmllcy5zaXplKCkgPiAxICYmIGNv
bmRpdGlvbi5sb2dpY2FsT3BlcmF0b3IgIT0gKm9wKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgICAgICBjb25kaXRpb24ubG9naWNhbE9wZXJhdG9yID0gKm9wOworCisgICAgICAgIGF1
dG8gcXVlcnkgPSBjb25jcmV0ZVBhcnNlcigpLmNvbnN1bWVRdWVyeUluUGFyZW5zKHJhbmdlKTsK
KyAgICAgICAgaWYgKCFxdWVyeSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAg
Y29uZGl0aW9uLnF1ZXJpZXMuYXBwZW5kKCpxdWVyeSk7CisgICAgICAgIHJhbmdlLmNvbnN1bWVX
aGl0ZXNwYWNlKCk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbmRpdGlvbjsKK30KKworfQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1ZXJ5VHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVR5cGVzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYTRiNGU5NjI5ODEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVl
cnlUeXBlcy5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlOjpNUSB7CisKK2VudW0gY2xhc3Mg
TG9naWNhbE9wZXJhdG9yIDogdWludDhfdCB7IEFuZCwgT3IsIE5vdCB9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggNjE0
NzRmZTg3ZDA0Li44Njk1N2QxNmM1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9D
b250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBDb250YWlu
ZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgQ1E6OkNvbnRhaW5lclF1ZXJ5JiBjb250
YWluZXJRdWVyeSkKICAgICBpZiAoIWNvbnRhaW5lcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIGV2YWx1YXRlQ29uZGl0aW9uKGNvbnRhaW5lclF1ZXJ5LmNvbmRpdGlvbiwg
KmNvbnRhaW5lcikgPT0gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKKyAgICByZXR1cm4gZXZhbHVh
dGVDb25kaXRpb24oY29udGFpbmVyUXVlcnkuY29uZGl0aW9uLCAqY29udGFpbmVyKSA9PSBNUTo6
RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKIH0KIAogYXV0byBDb250YWluZXJRdWVyeUV2YWx1YXRv
cjo6c2VsZWN0Q29udGFpbmVyKGNvbnN0IENROjpDb250YWluZXJRdWVyeSYgY29udGFpbmVyUXVl
cnkpIGNvbnN0IC0+IHN0ZDo6b3B0aW9uYWw8U2VsZWN0ZWRDb250YWluZXI+CkBAIC0xNjQsNTIg
KzE2NCwxNyBAQCBjb25zdCBFbGVtZW50KiBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6c2VsZWN0
Q29udGFpbmVyKE9wdGlvblNldDxDUTo6QXhpcz4gYXhlcwogICAgIHJldHVybiB7IH07CiB9CiAK
LWF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlUXVlcnlJblBhcmVucyhjb25z
dCBDUTo6UXVlcnlJblBhcmVucyYgcXVlcnlJblBhcmVucywgY29uc3QgU2VsZWN0ZWRDb250YWlu
ZXImIGNvbnRhaW5lcikgY29uc3QgLT4gRXZhbHVhdGlvblJlc3VsdAorYXV0byBDb250YWluZXJR
dWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVRdWVyeUluUGFyZW5zKGNvbnN0IENROjpRdWVyeUluUGFy
ZW5zJiBxdWVyeUluUGFyZW5zLCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYgY29udGFpbmVyKSBj
b25zdCAtPiBNUTo6RXZhbHVhdGlvblJlc3VsdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KHF1ZXJ5SW5QYXJlbnMsIFsmXShjb25zdCBDUTo6Q29udGFpbmVyQ29uZGl0aW9uJiBjb250YWlu
ZXJDb25kaXRpb24pIHsKICAgICAgICAgcmV0dXJuIGV2YWx1YXRlQ29uZGl0aW9uKGNvbnRhaW5l
ckNvbmRpdGlvbiwgY29udGFpbmVyKTsKICAgICB9LCBbJl0oY29uc3QgQ1E6OlNpemVGZWF0dXJl
JiBzaXplRmVhdHVyZSkgewogICAgICAgICByZXR1cm4gZXZhbHVhdGVTaXplRmVhdHVyZShzaXpl
RmVhdHVyZSwgY29udGFpbmVyKTsKICAgICB9LCBbJl0oY29uc3QgQ1E6OlVua25vd25RdWVyeSYp
IHsKLSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgICAgIHJl
dHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKICAgICB9KTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZGl0aW9uVHlwZT4KLWF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6
OmV2YWx1YXRlQ29uZGl0aW9uKGNvbnN0IENvbmRpdGlvblR5cGUmIGNvbmRpdGlvbiwgY29uc3Qg
U2VsZWN0ZWRDb250YWluZXImIGNvbnRhaW5lcikgY29uc3QgLT4gRXZhbHVhdGlvblJlc3VsdAot
ewotICAgIGlmIChjb25kaXRpb24ucXVlcmllcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBF
dmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwotCi0gICAgc3dpdGNoIChjb25kaXRpb24ubG9naWNh
bE9wZXJhdG9yKSB7Ci0gICAgY2FzZSBDUTo6TG9naWNhbE9wZXJhdG9yOjpOb3Q6Ci0gICAgICAg
IHJldHVybiAhZXZhbHVhdGVRdWVyeUluUGFyZW5zKGNvbmRpdGlvbi5xdWVyaWVzLmZpcnN0KCks
IGNvbnRhaW5lcik7Ci0gICAgY2FzZSBDUTo6TG9naWNhbE9wZXJhdG9yOjpBbmQ6IHsKLSAgICAg
ICAgYXV0byByZXN1bHQgPSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwotICAgICAgICBmb3IgKGF1
dG8gcXVlcnkgOiBjb25kaXRpb24ucXVlcmllcykgewotICAgICAgICAgICAgYXV0byBxdWVyeVJl
c3VsdCA9IGV2YWx1YXRlUXVlcnlJblBhcmVucyhxdWVyeSwgY29udGFpbmVyKTsKLSAgICAgICAg
ICAgIGlmIChxdWVyeVJlc3VsdCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6RmFsc2U7Ci0gICAgICAgICAgICBpZiAo
cXVlcnlSZXN1bHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bikKLSAgICAgICAgICAgICAg
ICByZXN1bHQgPSBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIGNhc2UgQ1E6OkxvZ2ljYWxPcGVyYXRvcjo6T3I6
IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBFdmFsdWF0aW9uUmVzdWx0OjpGYWxzZTsKLSAgICAg
ICAgZm9yIChhdXRvIHF1ZXJ5IDogY29uZGl0aW9uLnF1ZXJpZXMpIHsKLSAgICAgICAgICAgIGF1
dG8gcXVlcnlSZXN1bHQgPSBldmFsdWF0ZVF1ZXJ5SW5QYXJlbnMocXVlcnksIGNvbnRhaW5lcik7
Ci0gICAgICAgICAgICBpZiAocXVlcnlSZXN1bHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKLSAgICAgICAg
ICAgIGlmIChxdWVyeVJlc3VsdCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duKQotICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNv
bXB1dGVTaXplKGNvbnN0IENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKQpAQCAtMjI3LDE0ICsxOTIsMTQgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gY29tcHV0ZVNpemUoY29uc3QgQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0wK
ICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMYXlvdXRVbml0Pihjb252
ZXJzaW9uRGF0YSk7CiB9CiAKLWF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRl
U2l6ZUZlYXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJlJiBzaXplRmVhdHVyZSwgY29uc3QgU2Vs
ZWN0ZWRDb250YWluZXImIGNvbnRhaW5lcikgY29uc3QgLT4gRXZhbHVhdGlvblJlc3VsdAorYXV0
byBDb250YWluZXJRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGVTaXplRmVhdHVyZShjb25zdCBDUTo6
U2l6ZUZlYXR1cmUmIHNpemVGZWF0dXJlLCBjb25zdCBTZWxlY3RlZENvbnRhaW5lciYgY29udGFp
bmVyKSBjb25zdCAtPiBNUTo6RXZhbHVhdGlvblJlc3VsdAogewogICAgIC8vICJJZiB0aGUgcXVl
cnkgY29udGFpbmVyIGRvZXMgbm90IGhhdmUgYSBwcmluY2lwYWwgYm94LCBvciB0aGUgcHJpbmNp
cGFsIGJveCBpcyBub3QgYSBsYXlvdXQgY29udGFpbm1lbnQgYm94LAogICAgIC8vIG9yIHRoZSBx
dWVyeSBjb250YWluZXIgZG9lcyBub3Qgc3VwcG9ydCBjb250YWluZXIgc2l6ZSBxdWVyaWVzIG9u
IHRoZSByZWxldmFudCBheGVzLCB0aGVuIHRoZSByZXN1bHQgb2YKICAgICAvLyBldmFsdWF0aW5n
IHRoZSBzaXplIGZlYXR1cmUgaXMgdW5rbm93bi4iCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy1jb250YWluLTMvI3NpemUtY29udGFpbmVyCiAgICAgaWYgKCFjb250YWluZXIu
cmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAg
ICAgICByZXR1cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiAKICAgICBhdXRvJiBy
ZW5kZXJlciA9ICpjb250YWluZXIucmVuZGVyZXI7CiAKQEAgLTI1Myw3ICsyMTgsNyBAQCBhdXRv
IENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZVNpemVGZWF0dXJlKGNvbnN0IENROjpT
aXplRmVhdHVyZSYgc2l6ZUZlYQogICAgIH07CiAKICAgICBpZiAoIWhhc0VsaWdpYmxlQ29udGFp
bm1lbnQoKSkKLSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAg
ICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKIAogICAgIGF1dG8gY29t
cGFyZSA9IFtdKENROjpDb21wYXJpc29uT3BlcmF0b3Igb3AsIGF1dG8gbGVmdCwgYXV0byByaWdo
dCkgewogICAgICAgICBzd2l0Y2ggKG9wKSB7CkBAIC0yNzQsMTkgKzIzOSwxOSBAQCBhdXRvIENv
bnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZVNpemVGZWF0dXJlKGNvbnN0IENROjpTaXpl
RmVhdHVyZSYgc2l6ZUZlYQogICAgIGVudW0gY2xhc3MgU2lkZSA6IHVpbnQ4X3QgeyBMZWZ0LCBS
aWdodCB9OwogICAgIGF1dG8gZXZhbHVhdGVTaXplQ29tcGFyaXNvbiA9IFsmXShMYXlvdXRVbml0
IHNpemUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q1E6OkNvbXBhcmlzb24+JiBjb21wYXJpc29uLCBT
aWRlIHNpZGUpIHsKICAgICAgICAgaWYgKCFjb21wYXJpc29uKQotICAgICAgICAgICAgcmV0dXJu
IEV2YWx1YXRpb25SZXN1bHQ6OlRydWU7CisgICAgICAgICAgICByZXR1cm4gTVE6OkV2YWx1YXRp
b25SZXN1bHQ6OlRydWU7CiAgICAgICAgIGF1dG8gZXhwcmVzc2lvblNpemUgPSBjb21wdXRlU2l6
ZShjb21wYXJpc29uLT52YWx1ZS5nZXQoKSwgY29udGFpbmVyLmNvbnZlcnNpb25EYXRhKTsKICAg
ICAgICAgaWYgKCFleHByZXNzaW9uU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBFdmFsdWF0aW9u
UmVzdWx0OjpVbmtub3duOworICAgICAgICAgICAgcmV0dXJuIE1ROjpFdmFsdWF0aW9uUmVzdWx0
OjpVbmtub3duOwogICAgICAgICBhdXRvIGxlZnQgPSBzaWRlID09IFNpZGU6OkxlZnQgPyAqZXhw
cmVzc2lvblNpemUgOiBzaXplOwogICAgICAgICBhdXRvIHJpZ2h0ID0gc2lkZSA9PSBTaWRlOjpM
ZWZ0ID8gc2l6ZSA6ICpleHByZXNzaW9uU2l6ZTsKIAotICAgICAgICByZXR1cm4gdG9FdmFsdWF0
aW9uUmVzdWx0KGNvbXBhcmUoY29tcGFyaXNvbi0+b3AsIGxlZnQsIHJpZ2h0KSk7CisgICAgICAg
IHJldHVybiBNUTo6dG9FdmFsdWF0aW9uUmVzdWx0KGNvbXBhcmUoY29tcGFyaXNvbi0+b3AsIGxl
ZnQsIHJpZ2h0KSk7CiAgICAgfTsKIAogICAgIGF1dG8gZXZhbHVhdGVTaXplID0gWyZdKExheW91
dFVuaXQgc2l6ZSkgewogICAgICAgICBpZiAoIXNpemVGZWF0dXJlLmxlZnRDb21wYXJpc29uICYm
ICFzaXplRmVhdHVyZS5yaWdodENvbXBhcmlzb24pCi0gICAgICAgICAgICByZXR1cm4gdG9FdmFs
dWF0aW9uUmVzdWx0KCEhc2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gTVE6OnRvRXZhbHVhdGlv
blJlc3VsdCghIXNpemUpOwogCiAgICAgICAgIGF1dG8gbGVmdFJlc3VsdCA9IGV2YWx1YXRlU2l6
ZUNvbXBhcmlzb24oc2l6ZSwgc2l6ZUZlYXR1cmUubGVmdENvbXBhcmlzb24sIFNpZGU6OkxlZnQp
OwogICAgICAgICBhdXRvIHJpZ2h0UmVzdWx0ID0gZXZhbHVhdGVTaXplQ29tcGFyaXNvbihzaXpl
LCBzaXplRmVhdHVyZS5yaWdodENvbXBhcmlzb24sIFNpZGU6OlJpZ2h0KTsKQEAgLTI5NiwyNyAr
MjYxLDI3IEBAIGF1dG8gQ29udGFpbmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlU2l6ZUZlYXR1
cmUoY29uc3QgQ1E6OlNpemVGZWF0dXJlJiBzaXplRmVhCiAKICAgICBhdXRvIGV2YWx1YXRlQXNw
ZWN0UmF0aW9Db21wYXJpc29uID0gWyZdKGRvdWJsZSBhc3BlY3RSYXRpbywgY29uc3Qgc3RkOjpv
cHRpb25hbDxDUTo6Q29tcGFyaXNvbj4mIGNvbXBhcmlzb24sIFNpZGUgc2lkZSkgewogICAgICAg
ICBpZiAoIWNvbXBhcmlzb24pCi0gICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6
VHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKIAog
ICAgICAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4oY29tcGFyaXNvbi0+dmFsdWUpKQotICAgICAg
ICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgICAgICAgICByZXR1
cm4gTVE6OkV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiAKICAgICAgICAgYXV0byYgcmF0aW9M
aXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqY29tcGFyaXNvbi0+dmFsdWUpOwogICAgICAg
ICBpZiAocmF0aW9MaXN0Lmxlbmd0aCgpICE9IDIpCi0gICAgICAgICAgICByZXR1cm4gRXZhbHVh
dGlvblJlc3VsdDo6VW5rbm93bjsKKyAgICAgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJl
c3VsdDo6VW5rbm93bjsKIAogICAgICAgICBhdXRvIGZpcnN0ID0gZHluYW1pY0Rvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPihyYXRpb0xpc3QuaXRlbSgwKSk7CiAgICAgICAgIGF1dG8gc2Vjb25k
ID0gZHluYW1pY0Rvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihyYXRpb0xpc3QuaXRlbSgxKSk7
CiAKICAgICAgICAgaWYgKCFmaXJzdCB8fCAhc2Vjb25kIHx8ICFmaXJzdC0+aXNOdW1iZXJPcklu
dGVnZXIoKSB8fCAhc2Vjb25kLT5pc051bWJlck9ySW50ZWdlcigpKQotICAgICAgICAgICAgcmV0
dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247CisgICAgICAgICAgICByZXR1cm4gTVE6OkV2
YWx1YXRpb25SZXN1bHQ6OlVua25vd247CiAKICAgICAgICAgYXV0byBleHByZXNzaW9uUmF0aW8g
PSBmaXJzdC0+ZG91YmxlVmFsdWUoKSAvIHNlY29uZC0+ZG91YmxlVmFsdWUoKTsKIAogICAgICAg
ICBhdXRvIGxlZnQgPSBzaWRlID09IFNpZGU6OkxlZnQgPyBleHByZXNzaW9uUmF0aW8gOiBhc3Bl
Y3RSYXRpbzsKICAgICAgICAgYXV0byByaWdodCA9IHNpZGUgPT0gU2lkZTo6TGVmdCA/IGFzcGVj
dFJhdGlvIDogZXhwcmVzc2lvblJhdGlvOwogCi0gICAgICAgIHJldHVybiB0b0V2YWx1YXRpb25S
ZXN1bHQoY29tcGFyZShjb21wYXJpc29uLT5vcCwgbGVmdCwgcmlnaHQpKTsKKyAgICAgICAgcmV0
dXJuIE1ROjp0b0V2YWx1YXRpb25SZXN1bHQoY29tcGFyZShjb21wYXJpc29uLT5vcCwgbGVmdCwg
cmlnaHQpKTsKICAgICB9OwogCiAgICAgaWYgKHNpemVGZWF0dXJlLm5hbWUgPT0gQ1E6OkZlYXR1
cmVOYW1lczo6d2lkdGgoKSkKQEAgLTMzNSw3ICszMDAsNyBAQCBhdXRvIENvbnRhaW5lclF1ZXJ5
RXZhbHVhdG9yOjpldmFsdWF0ZVNpemVGZWF0dXJlKGNvbnN0IENROjpTaXplRmVhdHVyZSYgc2l6
ZUZlYQogICAgICAgICBhdXRvIGJveFJhdGlvID0gcmVuZGVyZXIuY29udGVudFdpZHRoKCkudG9E
b3VibGUoKSAvIHJlbmRlcmVyLmNvbnRlbnRIZWlnaHQoKS50b0RvdWJsZSgpOwogICAgICAgICAK
ICAgICAgICAgaWYgKCFzaXplRmVhdHVyZS5sZWZ0Q29tcGFyaXNvbiAmJiAhc2l6ZUZlYXR1cmUu
cmlnaHRDb21wYXJpc29uKQotICAgICAgICAgICAgcmV0dXJuIHRvRXZhbHVhdGlvblJlc3VsdCgh
IWJveFJhdGlvKTsKKyAgICAgICAgICAgIHJldHVybiBNUTo6dG9FdmFsdWF0aW9uUmVzdWx0KCEh
Ym94UmF0aW8pOwogCiAgICAgICAgIGF1dG8gbGVmdFJlc3VsdCA9IGV2YWx1YXRlQXNwZWN0UmF0
aW9Db21wYXJpc29uKGJveFJhdGlvLCBzaXplRmVhdHVyZS5sZWZ0Q29tcGFyaXNvbiwgU2lkZTo6
TGVmdCk7CiAgICAgICAgIGF1dG8gcmlnaHRSZXN1bHQgPSBldmFsdWF0ZUFzcGVjdFJhdGlvQ29t
cGFyaXNvbihib3hSYXRpbywgc2l6ZUZlYXR1cmUucmlnaHRDb21wYXJpc29uLCBTaWRlOjpSaWdo
dCk7CkBAIC0zNDUsMjUgKzMxMCwyNSBAQCBhdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpl
dmFsdWF0ZVNpemVGZWF0dXJlKGNvbnN0IENROjpTaXplRmVhdHVyZSYgc2l6ZUZlYQogCiAgICAg
aWYgKHNpemVGZWF0dXJlLm5hbWUgPT0gQ1E6OkZlYXR1cmVOYW1lczo6b3JpZW50YXRpb24oKSkg
ewogICAgICAgICBpZiAoIXNpemVGZWF0dXJlLnJpZ2h0Q29tcGFyaXNvbikKLSAgICAgICAgICAg
IHJldHVybiBFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOworICAgICAgICAgICAgcmV0dXJuIE1R
OjpFdmFsdWF0aW9uUmVzdWx0OjpVbmtub3duOwogCiAgICAgICAgIGF1dG8mIGNvbXBhcmlzb24g
PSAqc2l6ZUZlYXR1cmUucmlnaHRDb21wYXJpc29uOwogCiAgICAgICAgIGlmICghaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KGNvbXBhcmlzb24udmFsdWUpIHx8IGNvbXBhcmlzb24ub3AgIT0gQ1E6OkNv
bXBhcmlzb25PcGVyYXRvcjo6RXF1YWwpCi0gICAgICAgICAgICByZXR1cm4gRXZhbHVhdGlvblJl
c3VsdDo6VW5rbm93bjsKKyAgICAgICAgICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6
VW5rbm93bjsKIAogICAgICAgICBhdXRvJiB2YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqc2l6ZUZlYXR1cmUucmlnaHRDb21wYXJpc29uLT52YWx1ZSk7CiAKICAgICAgICAgYm9v
bCBpc1BvcnRyYWl0ID0gcmVuZGVyZXIuY29udGVudEhlaWdodCgpID49IHJlbmRlcmVyLmNvbnRl
bnRXaWR0aCgpOwogICAgICAgICBpZiAodmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlUG9ydHJh
aXQpCi0gICAgICAgICAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVzdWx0KGlzUG9ydHJhaXQpOwor
ICAgICAgICAgICAgcmV0dXJuIE1ROjp0b0V2YWx1YXRpb25SZXN1bHQoaXNQb3J0cmFpdCk7CiAg
ICAgICAgIGlmICh2YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMYW5kc2NhcGUpCi0gICAgICAg
ICAgICByZXR1cm4gdG9FdmFsdWF0aW9uUmVzdWx0KCFpc1BvcnRyYWl0KTsKKyAgICAgICAgICAg
IHJldHVybiBNUTo6dG9FdmFsdWF0aW9uUmVzdWx0KCFpc1BvcnRyYWl0KTsKIAotICAgICAgICBy
ZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsKKyAgICAgICAgcmV0dXJuIE1ROjpFdmFs
dWF0aW9uUmVzdWx0OjpVbmtub3duOwogICAgIH0KIAotICAgIHJldHVybiBFdmFsdWF0aW9uUmVz
dWx0OjpVbmtub3duOworICAgIHJldHVybiBNUTo6RXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bjsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlF
dmFsdWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9y
LmgKaW5kZXggYzc3MTk5ZGI3NzQ1Li41ZGIzODQxN2E5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuaApAQCAtMjUsNiArMjUsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb250YWluZXJRdWVyeS5oIgorI2luY2x1ZGUgIkdlbmVy
aWNNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JNYXRjaGluZ1N0YXRl
LmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZU9yZGluYWwuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+
CkBAIC0zNSw5ICszNiw3IEBAIGNsYXNzIEVsZW1lbnQ7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAK
LWVudW0gY2xhc3MgRXZhbHVhdGlvblJlc3VsdCA6IHVpbnQ4X3QgeyBGYWxzZSwgVHJ1ZSwgVW5r
bm93biB9OwotCi1jbGFzcyBDb250YWluZXJRdWVyeUV2YWx1YXRvciB7CitjbGFzcyBDb250YWlu
ZXJRdWVyeUV2YWx1YXRvciA6IHB1YmxpYyBNUTo6R2VuZXJpY01lZGlhUXVlcnlFdmFsdWF0b3I8
Q29udGFpbmVyUXVlcnlFdmFsdWF0b3I+IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNlbGVj
dGlvbk1vZGUgOiBib29sIHsgRWxlbWVudCwgUHNldWRvRWxlbWVudCB9OwogICAgIENvbnRhaW5l
clF1ZXJ5RXZhbHVhdG9yKGNvbnN0IEVsZW1lbnQmLCBTZWxlY3Rpb25Nb2RlLCBTY29wZU9yZGlu
YWwsIFNlbGVjdG9yTWF0Y2hpbmdTdGF0ZSopOwpAQCAtNDYsMTMgKzQ1LDEyIEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBjb25zdCBFbGVtZW50KiBzZWxlY3RDb250YWluZXIoT3B0aW9uU2V0PENR
OjpBeGlzPiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBFbGVtZW50JiwgU2VsZWN0aW9uTW9k
ZSA9IFNlbGVjdGlvbk1vZGU6OkVsZW1lbnQsIFNjb3BlT3JkaW5hbCA9IFNjb3BlT3JkaW5hbDo6
RWxlbWVudCwgY29uc3QgQ2FjaGVkUXVlcnlDb250YWluZXJzKiA9IG51bGxwdHIpOwogCi1wcml2
YXRlOgogICAgIHN0cnVjdCBTZWxlY3RlZENvbnRhaW5lcjsKLSAgICBzdGQ6Om9wdGlvbmFsPFNl
bGVjdGVkQ29udGFpbmVyPiBzZWxlY3RDb250YWluZXIoY29uc3QgQ1E6OkNvbnRhaW5lclF1ZXJ5
JikgY29uc3Q7CisgICAgTVE6OkV2YWx1YXRpb25SZXN1bHQgZXZhbHVhdGVRdWVyeUluUGFyZW5z
KGNvbnN0IENROjpRdWVyeUluUGFyZW5zJiwgY29uc3QgU2VsZWN0ZWRDb250YWluZXImKSBjb25z
dDsKKyAgICBNUTo6RXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZVNpemVGZWF0dXJlKGNvbnN0IENR
OjpTaXplRmVhdHVyZSYsIGNvbnN0IFNlbGVjdGVkQ29udGFpbmVyJikgY29uc3Q7CiAKLSAgICBF
dmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlUXVlcnlJblBhcmVucyhjb25zdCBDUTo6UXVlcnlJblBh
cmVucyYsIGNvbnN0IFNlbGVjdGVkQ29udGFpbmVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ29uZGl0aW9uVHlwZT4gRXZhbHVhdGlvblJlc3VsdCBldmFsdWF0ZUNvbmRpdGlvbihj
b25zdCBDb25kaXRpb25UeXBlJiwgY29uc3QgU2VsZWN0ZWRDb250YWluZXImKSBjb25zdDsKLSAg
ICBFdmFsdWF0aW9uUmVzdWx0IGV2YWx1YXRlU2l6ZUZlYXR1cmUoY29uc3QgQ1E6OlNpemVGZWF0
dXJlJiwgY29uc3QgU2VsZWN0ZWRDb250YWluZXImKSBjb25zdDsKK3ByaXZhdGU6CisgICAgc3Rk
OjpvcHRpb25hbDxTZWxlY3RlZENvbnRhaW5lcj4gc2VsZWN0Q29udGFpbmVyKGNvbnN0IENROjpD
b250YWluZXJRdWVyeSYpIGNvbnN0OwogCiAgICAgY29uc3QgUmVmPGNvbnN0IEVsZW1lbnQ+IG1f
ZWxlbWVudDsKICAgICBjb25zdCBTZWxlY3Rpb25Nb2RlIG1fc2VsZWN0aW9uTW9kZTsKQEAgLTYw
LDMyICs1OCw1IEBAIHByaXZhdGU6CiAgICAgU2VsZWN0b3JNYXRjaGluZ1N0YXRlKiBtX3NlbGVj
dG9yTWF0Y2hpbmdTdGF0ZTsKIH07CiAKLWlubGluZSBFdmFsdWF0aW9uUmVzdWx0IHRvRXZhbHVh
dGlvblJlc3VsdChib29sIGJvb2xlYW4pCi17Ci0gICAgcmV0dXJuIGJvb2xlYW4gPyBFdmFsdWF0
aW9uUmVzdWx0OjpUcnVlIDogRXZhbHVhdGlvblJlc3VsdDo6RmFsc2U7Ci19OwotCi1pbmxpbmUg
RXZhbHVhdGlvblJlc3VsdCBvcGVyYXRvciYoRXZhbHVhdGlvblJlc3VsdCBsZWZ0LCBFdmFsdWF0
aW9uUmVzdWx0IHJpZ2h0KQotewotICAgIGlmIChsZWZ0ID09IEV2YWx1YXRpb25SZXN1bHQ6OlVu
a25vd24gfHwgcmlnaHQgPT0gRXZhbHVhdGlvblJlc3VsdDo6VW5rbm93bikKLSAgICAgICAgcmV0
dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247Ci0gICAgaWYgKGxlZnQgPT0gRXZhbHVhdGlv
blJlc3VsdDo6VHJ1ZSAmJiByaWdodCA9PSBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlKQotICAgICAg
ICByZXR1cm4gRXZhbHVhdGlvblJlc3VsdDo6VHJ1ZTsKLSAgICByZXR1cm4gRXZhbHVhdGlvblJl
c3VsdDo6RmFsc2U7Ci19Ci0KLWlubGluZSBFdmFsdWF0aW9uUmVzdWx0IG9wZXJhdG9yIShFdmFs
dWF0aW9uUmVzdWx0IHJlc3VsdCkKLXsKLSAgICBzd2l0Y2ggKHJlc3VsdCkgewotICAgIGNhc2Ug
RXZhbHVhdGlvblJlc3VsdDo6VHJ1ZToKLSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6
OkZhbHNlOwotICAgIGNhc2UgRXZhbHVhdGlvblJlc3VsdDo6RmFsc2U6Ci0gICAgICAgIHJldHVy
biBFdmFsdWF0aW9uUmVzdWx0OjpUcnVlOwotICAgIGNhc2UgRXZhbHVhdGlvblJlc3VsdDo6VW5r
bm93bjoKLSAgICAgICAgcmV0dXJuIEV2YWx1YXRpb25SZXN1bHQ6OlVua25vd247Ci0gICAgfQot
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIH0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>