<?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>247124</bug_id>
          
          <creation_ts>2022-10-27 06:12:46 -0700</creation_ts>
          <short_desc>[MQ4] Use the new parser and evaluator in mediaAttributeMatches() functions</short_desc>
          <delta_ts>2022-10-28 04:38:06 -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>247118</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</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>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youssefdevelops</cc>
    
    <cc>y_soliman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1908691</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-27 06:12:46 -0700</bug_when>
    <thetext>In HTMLMetaElement and HTMLLinkElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908693</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-10-27 06:15:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/101631539&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908738</commentid>
    <comment_count>2</comment_count>
      <attachid>463274</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-27 09:11:59 -0700</bug_when>
    <thetext>Created attachment 463274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908813</commentid>
    <comment_count>3</comment_count>
      <attachid>463274</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-10-27 13:23:44 -0700</bug_when>
    <thetext>Comment on attachment 463274
Patch

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

&gt; Source/WebCore/css/query/GenericMediaQueryParser.h:31
&gt; +#include &quot;MediaQueryParserContext.h&quot;

Doesn’t seem like we need to include this header to compile references to the type. Would a forward declaration suffice?

&gt; Source/WebCore/css/query/MediaQueryParser.cpp:53
&gt; +    auto range = tokenizer-&gt;tokenRange();

I don’t think we need a local variable for this.

&gt; Source/WebCore/css/query/MediaQueryParser.h:35
&gt; +    MediaQueryParser(const MediaQueryParserContext&amp;);

Maybe this constructor should be explicit.

&gt; Source/WebCore/css/query/MediaQueryParser.h:37
&gt; +    static MediaQueryList parse(const String&amp;, const MediaQueryParserContext&amp;);

Some day we should make these be StringView. Right now, though, I am guessing this uses a parser that requires an actual String.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:524
&gt; +    MQ::MediaQueryEvaluator evaluator(AtomString(document().frame()-&gt;view()-&gt;mediaType()), document(), documentStyle ? &amp;*documentStyle : nullptr);

Surprised this isn’t already an AtomString. Maybe we should change that to save a little memory and make this a little faster?

&gt; Source/WebCore/html/HTMLMetaElement.cpp:80
&gt; +            mediaType = AtomString(frameView-&gt;mediaType());

More of the same.

&gt; Source/WebCore/html/HTMLMetaElement.h:26
&gt; +#include &quot;MediaQuery.h&quot;

A little sad to have to include this header. We could have used std::unique_ptr to pay a little more cost at runtime but less at compile time. I’ll assume this is the right tradeoff, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908937</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-28 00:45:53 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/css/query/MediaQueryParser.cpp:53
&gt; &gt; +    auto range = tokenizer-&gt;tokenRange();
&gt; 
&gt; I don’t think we need a local variable for this.

tokenRange() returns a temporary and the reference can&apos;t bind to it.

Not that the token range type is small, the actual tokens are owned by the tokenizer.
 
&gt; Surprised this isn’t already an AtomString. Maybe we should change that to
&gt; save a little memory and make this a little faster?

Me too. Better to be fixed separately.
 
&gt; &gt; Source/WebCore/html/HTMLMetaElement.h:26
&gt; &gt; +#include &quot;MediaQuery.h&quot;
&gt; 
&gt; A little sad to have to include this header. We could have used
&gt; std::unique_ptr to pay a little more cost at runtime but less at compile
&gt; time. I’ll assume this is the right tradeoff, though.

There is unlikely be any practical cost in using unique_ptr but std::optional feels better semantically. I agree that that the include is annoying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908960</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-28 03:01:31 -0700</bug_when>
    <thetext>&gt; Some day we should make these be StringView. Right now, though, I am
&gt; guessing this uses a parser that requires an actual String.

Yeah, CSSTokenizer takes a String&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908961</commentid>
    <comment_count>6</comment_count>
      <attachid>463291</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-28 03:21:29 -0700</bug_when>
    <thetext>Created attachment 463291
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1908972</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-28 04:38:02 -0700</bug_when>
    <thetext>Committed 256093@main (7bceda660698): &lt;https://commits.webkit.org/256093@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 463291.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463274</attachid>
            <date>2022-10-27 09:11:59 -0700</date>
            <delta_ts>2022-10-28 03:21:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-247124-20221027191157.patch</filename>
            <type>text/plain</type>
            <size>13865</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSBlNzYwZDhiZjRhN2M2NGQwN2E4YjAwZjY4YWRkMTA5MmNkZDFkNjRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDI3IE9jdCAyMDIyIDE2OjIwOjE3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW01RNF0g
VXNlIHRoZSBuZXcgcGFyc2VyIGFuZCBldmFsdWF0b3IgaW4KIG1lZGlhQXR0cmlidXRlTWF0Y2hl
cygpIGZ1bmN0aW9ucwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
NzEyNCByZGFyOi8vMTAxNjMxNTM5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClN0YXJ0
IHVzaW5nIHRoZSBuZXcgY29kZSBpbiBzb21lIGNhc2VzLgoKKiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRh
aW5lclF1ZXJ5UGFyc2VyLmNwcDoKKFdlYkNvcmU6OkNvbnRhaW5lclF1ZXJ5UGFyc2VyOjpjb25z
dW1lQ29udGFpbmVyUXVlcnkpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBh
cnNlci5oOgooV2ViQ29yZTo6Q29udGFpbmVyUXVlcnlQYXJzZXI6OkNvbnRhaW5lclF1ZXJ5UGFy
c2VyKToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIu
aDoKKFdlYkNvcmU6Ok1ROjpHZW5lcmljTWVkaWFRdWVyeVBhcnNlckJhc2U6OkdlbmVyaWNNZWRp
YVF1ZXJ5UGFyc2VyQmFzZSk6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlQYXJzZXI6
OkdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyKToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVk
aWFRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpNUTo6TWVkaWFRdWVyeUV2YWx1YXRvcjo6
ZXZhbHVhdGUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFy
c2VyLmNwcDoKKFdlYkNvcmU6Ok1ROjpNZWRpYVF1ZXJ5UGFyc2VyOjpNZWRpYVF1ZXJ5UGFyc2Vy
KToKKFdlYkNvcmU6Ok1ROjpNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZSk6CiogU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHA6CihXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Om1lZGlhQXR0cmli
dXRlTWF0Y2hlcyBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQu
Y3BwOgooV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50OjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMpOgoo
V2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CiogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaDoKLS0tCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogfCAgMiArLQogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5UGFyc2VyLmNwcCAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5UGFyc2VyLmggICAgIHwgIDUgKystLS0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlh
UXVlcnlQYXJzZXIuaCAgICAgICB8ICA3ICsrKystLS0KIC4uLi9XZWJDb3JlL2Nzcy9xdWVyeS9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCB8ICA1ICsrKystCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvTWVkaWFRdWVyeVBhcnNlci5jcHAgfCAxNSArKysrKysrKysrKysrLQogU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuaCAgIHwgIDQgKysrLQogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwICAgICAgIHwgIDkgKysrKysrLS0tCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAgICAgICAgfCAyMCArKysrKysrKysrLS0t
LS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5oICAgICAgICAgfCAg
NCArKy0tCiAxMCBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMmUxOGE0MjM5ZGRmLi5kNjNlNGZlYjZhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1MjUsNyArNTUyNSw3
IEBACiAJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGlu
ZUNvbnRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0NTFDNjMzMjM5NDA1OEUwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRl
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
NDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjky
IC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJRTQ1NUE1NzEyOEZENzNGMzAwQjZFQTc2IC8q
IE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0NTVBNTcwMjhGRDczRjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmggKi87IH07Ci0JCUU0NTVBNTgyMjhGRThEOEQwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDU1QTU4MTI4
RkU4RDhEMDBCNkVBNzYgLyogTWVkaWFRdWVyeS5oICovOyB9OworCQlFNDU1QTU4MjI4RkU4RDhE
MDBCNkVBNzYgLyogTWVkaWFRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8qIE1lZGlhUXVlcnkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDU1QTU5
NDI5MDI4Nzg5MDBCNkVBNzYgLyogQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1NUE1OTMyOTAyODc4ODAwQjZF
QTc2IC8qIENvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCAqLzsgfTsKIAkJRTQ1NUE1QkEyOTA3QTg5
QTAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1NUE1QjkyOTA3QTg5OTAwQjZFQTc2IC8qIE1lZGlh
UXVlcnlGZWF0dXJlcy5oICovOyB9OwogCQlFNDVBNkM3NzI0MTdCQTU5MDA2RTRDRDUgLyogUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0NUE2Qzc2MjQxN0JBNTkwMDZFNENENSAvKiBQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbi5oICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWlu
ZXJRdWVyeVBhcnNlci5jcHAKaW5kZXggM2FlZmQ3NjA5MjExLi5iZTM1MWJjMzc1YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmNwcApAQCAtNDUsOSArNDUs
OSBAQCBWZWN0b3I8Y29uc3QgRmVhdHVyZVNjaGVtYSo+IENvbnRhaW5lclF1ZXJ5UGFyc2VyOjpm
ZWF0dXJlU2NoZW1hcygpCiAgICAgfTsKIH0KIAotc3RkOjpvcHRpb25hbDxDUTo6Q29udGFpbmVy
UXVlcnk+IENvbnRhaW5lclF1ZXJ5UGFyc2VyOjpjb25zdW1lQ29udGFpbmVyUXVlcnkoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCitz
dGQ6Om9wdGlvbmFsPENROjpDb250YWluZXJRdWVyeT4gQ29udGFpbmVyUXVlcnlQYXJzZXI6OmNv
bnN1bWVDb250YWluZXJRdWVyeShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgTWVk
aWFRdWVyeVBhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgQ29udGFpbmVyUXVlcnlQYXJz
ZXIgcGFyc2VyKGNvbnRleHQpOworICAgIENvbnRhaW5lclF1ZXJ5UGFyc2VyIHBhcnNlcih7IGNv
bnRleHQgfSk7CiAgICAgcmV0dXJuIHBhcnNlci5jb25zdW1lQ29udGFpbmVyUXVlcnkocmFuZ2Up
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5oCmluZGV4IDM0
NTMwNTliYjA4Zi4uYTg2NzBjYmU4MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q29udGFpbmVyUXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVy
UXVlcnlQYXJzZXIuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBDb250YWluZXJRdWVyeVBhcnNl
cjsKIAogY2xhc3MgQ29udGFpbmVyUXVlcnlQYXJzZXIgOiBwdWJsaWMgTVE6OkdlbmVyaWNNZWRp
YVF1ZXJ5UGFyc2VyPENvbnRhaW5lclF1ZXJ5UGFyc2VyPiAgewogcHVibGljOgotICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPENROjpDb250YWluZXJRdWVyeT4gY29uc3VtZUNvbnRhaW5lclF1ZXJ5
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Q1E6OkNvbnRhaW5lclF1ZXJ5PiBjb25zdW1lQ29udGFpbmVyUXVl
cnkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0Jik7
CiAKICAgICBzdGF0aWMgVmVjdG9yPGNvbnN0IE1ROjpGZWF0dXJlU2NoZW1hKj4gZmVhdHVyZVNj
aGVtYXMoKTsKICAgICBzdGF0aWMgYm9vbCByZWplY3RJbnZhbGlkRmVhdHVyZXMoKSB7IHJldHVy
biBmYWxzZTsgfQpAQCAtNDMsOSArNDMsOCBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxD
UTo6Q29udGFpbmVyUXVlcnk+IGNvbnN1bWVDb250YWluZXJRdWVyeShDU1NQYXJzZXJUb2tlblJh
bmdlJik7CiAgICAgc3RkOjpvcHRpb25hbDxNUTo6RmVhdHVyZT4gY29uc3VtZUZlYXR1cmUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOwogCi0KIHByaXZhdGU6Ci0gICAgQ29udGFpbmVyUXVlcnlQYXJz
ZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKKyAgICBDb250YWluZXJRdWVyeVBh
cnNlcihjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgOiBH
ZW5lcmljTWVkaWFRdWVyeVBhcnNlcihjb250ZXh0KSB7IH0KIAogICAgIE9wdGlvblNldDxDUTo6
QXhpcz4gbV9yZXF1aXJlZEF4ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9H
ZW5lcmljTWVkaWFRdWVyeVBhcnNlci5oCmluZGV4IGZmNmFiZjVmN2Q5Mi4uNDM5ZDk3MGQyMjg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuLmgiCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgogI2luY2x1ZGUgIkdlbmVyaWNNZWRpYVF1
ZXJ5VHlwZXMuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Z0hhc2guaD4KIApAQCAtMzYsNyArMzcsNyBAQCBuYW1lc3BhY2UgTVEgewogCiBjbGFzcyBHZW5l
cmljTWVkaWFRdWVyeVBhcnNlckJhc2UgewogcHVibGljOgotICAgIEdlbmVyaWNNZWRpYVF1ZXJ5
UGFyc2VyQmFzZShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorICAgIEdlbmVyaWNN
ZWRpYVF1ZXJ5UGFyc2VyQmFzZShjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCYgY29udGV4
dCkKICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICB7IH0KIApAQCAtNDgsMTMgKzQ5
LDEzIEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgdmFsaWRhdGVGZWF0dXJlQWdhaW5zdFNjaGVt
YShGZWF0dXJlJiwgY29uc3QgRmVhdHVyZVNjaGVtYSYpOwogCi0gICAgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgbV9jb250ZXh0OworICAgIGNvbnN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0JiBt
X2NvbnRleHQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25jcmV0ZVBhcnNlcj4KIGNsYXNz
IEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyIDogcHVibGljIEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2Vy
QmFzZSB7CiBwdWJsaWM6Ci0gICAgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIoY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCkKKyAgICBHZW5lcmljTWVkaWFRdWVyeVBhcnNlcihjb25zdCBN
ZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgOiBHZW5lcmljTWVkaWFR
dWVyeVBhcnNlckJhc2UoY29udGV4dCkKICAgICB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGNjNDczZTViNjQxNi4uNmI4
NDk4ZTA4MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVy
eUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlF
dmFsdWF0b3IuY3BwCkBAIC00NCw2ICs0NCw5IEBAIE1lZGlhUXVlcnlFdmFsdWF0b3I6Ok1lZGlh
UXVlcnlFdmFsdWF0b3IoY29uc3QgQXRvbVN0cmluZyYgbWVkaWFUeXBlLCBjb25zdCBEb2N1CiAK
IGJvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeUxpc3Qm
IGxpc3QpIGNvbnN0CiB7CisgICAgaWYgKGxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKwogICAgIGZvciAoYXV0byYgcXVlcnkgOiBsaXN0KSB7CiAgICAgICAgIGlmIChldmFs
dWF0ZShxdWVyeSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY4LDcgKzcxLDcgQEAg
Ym9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5JiBxdWVy
eSkgY29uc3QKIAogICAgIGF1dG8gY29uZGl0aW9uTWF0Y2hlcyA9IFsmXSB7CiAgICAgICAgIGlm
ICghcXVlcnkuY29uZGl0aW9uKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKCFtX2RvY3VtZW50LnZpZXcoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVy
eS9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1
ZXJ5UGFyc2VyLmNwcAppbmRleCAwYjg0NGJlOTA5MjUuLmI4MjA2MjVkYmFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXIuaCIKIAogI2luY2x1ZGUgIkNTU01hcmt1
cC5oIgorI2luY2x1ZGUgIkNTU1Rva2VuaXplci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKICNpbmNsdWRlICJHZW5lcmljTWVkaWFRdWVyeVNlcmlhbGl6YXRpb24uaCIKICNpbmNs
dWRlICJNZWRpYVF1ZXJ5RmVhdHVyZXMuaCIKQEAgLTMzLDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBNUSB7CiAKLU1lZGlhUXVlcnlQYXJzZXI6Ok1lZGlhUXVlcnlQ
YXJzZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK01lZGlhUXVlcnlQYXJzZXI6
Ok1lZGlhUXVlcnlQYXJzZXIoY29uc3QgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQmIGNvbnRleHQp
CiAgICAgOiBHZW5lcmljTWVkaWFRdWVyeVBhcnNlcihjb250ZXh0KQogewogfQpAQCAtNDMsNiAr
NDQsMTggQEAgVmVjdG9yPGNvbnN0IEZlYXR1cmVTY2hlbWEqPiBNZWRpYVF1ZXJ5UGFyc2VyOjpm
ZWF0dXJlU2NoZW1hcygpCiAgICAgcmV0dXJuIEZlYXR1cmVzOjphbGxTY2hlbWFzKCk7CiB9CiAK
K01lZGlhUXVlcnlMaXN0IE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBhdXRv
IHRva2VuaXplciA9IENTU1Rva2VuaXplcjo6dHJ5Q3JlYXRlKHN0cmluZyk7CisgICAgaWYgKCF0
b2tlbml6ZXIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHJhbmdlID0gdG9rZW5p
emVyLT50b2tlblJhbmdlKCk7CisKKyAgICBNZWRpYVF1ZXJ5UGFyc2VyIHBhcnNlciB7IGNvbnRl
eHQgfTsKKyAgICByZXR1cm4gcGFyc2VyLmNvbnN1bWVNZWRpYVF1ZXJ5TGlzdChyYW5nZSk7Cit9
CisKIE1lZGlhUXVlcnlMaXN0IE1lZGlhUXVlcnlQYXJzZXI6OmNvbnN1bWVNZWRpYVF1ZXJ5TGlz
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBNZWRpYVF1ZXJ5TGlzdCBsaXN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmgKaW5kZXggZmQx
Yjg0ZThhMWI5Li42ODUxY2NkY2JjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9x
dWVyeS9NZWRpYVF1ZXJ5UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01l
ZGlhUXVlcnlQYXJzZXIuaApAQCAtMzIsNyArMzIsOSBAQCBuYW1lc3BhY2UgTVEgewogCiBjbGFz
cyBNZWRpYVF1ZXJ5UGFyc2VyIDogcHVibGljIEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyPE1lZGlh
UXVlcnlQYXJzZXI+ICB7CiBwdWJsaWM6Ci0gICAgTWVkaWFRdWVyeVBhcnNlcihjb25zdCBDU1NQ
YXJzZXJDb250ZXh0Jik7CisgICAgTWVkaWFRdWVyeVBhcnNlcihjb25zdCBNZWRpYVF1ZXJ5UGFy
c2VyQ29udGV4dCYpOworCisgICAgc3RhdGljIE1lZGlhUXVlcnlMaXN0IHBhcnNlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0Jik7CiAKICAgICBNZWRpYVF1ZXJ5
TGlzdCBjb25zdW1lTWVkaWFRdWVyeUxpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogICAgIHN0
ZDo6b3B0aW9uYWw8TWVkaWFRdWVyeT4gY29uc3VtZU1lZGlhUXVlcnkoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGQ2MmJk
NTlmZGM2My4uYWFhNDBlNTcwOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwCkBAIC00OCw5ICs0OCwxMCBAQAogI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgot
I2luY2x1ZGUgIkxlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRv
ci5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXIuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5
UGFyc2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYXJz
ZWRDb250ZW50VHlwZS5oIgpAQCAtNTE3LDkgKzUxOCwxMSBAQCBib29sIEhUTUxMaW5rRWxlbWVu
dDo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKCkgY29uc3QKICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRl
clN0eWxlPiBkb2N1bWVudFN0eWxlOwogICAgIGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1JlbmRl
clRyZWUoKSkKICAgICAgICAgZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9jdW1l
bnQoZG9jdW1lbnQoKSk7Ci0gICAgYXV0byBtZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZSht
X21lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCgpKSk7CisgICAgYXV0byBt
ZWRpYVF1ZXJ5TGlzdCA9IE1ROjpNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZShtX21lZGlhLCB7IGRv
Y3VtZW50KCkgfSk7CiAgICAgTE9HKE1lZGlhUXVlcmllcywgIkhUTUxMaW5rRWxlbWVudDo6bWVk
aWFBdHRyaWJ1dGVNYXRjaGVzIik7Ci0gICAgcmV0dXJuIExlZ2FjeU1lZGlhUXVlcnlFdmFsdWF0
b3IoZG9jdW1lbnQoKS5mcmFtZSgpLT52aWV3KCktPm1lZGlhVHlwZSgpLCBkb2N1bWVudCgpLCBk
b2N1bWVudFN0eWxlID8gJipkb2N1bWVudFN0eWxlIDogbnVsbHB0cikuZXZhbHVhdGUobWVkaWEu
Z2V0KCkpOworCisgICAgTVE6Ok1lZGlhUXVlcnlFdmFsdWF0b3IgZXZhbHVhdG9yKEF0b21TdHJp
bmcoZG9jdW1lbnQoKS5mcmFtZSgpLT52aWV3KCktPm1lZGlhVHlwZSgpKSwgZG9jdW1lbnQoKSwg
ZG9jdW1lbnRTdHlsZSA/ICYqZG9jdW1lbnRTdHlsZSA6IG51bGxwdHIpOworICAgIHJldHVybiBl
dmFsdWF0b3IuZXZhbHVhdGUobWVkaWFRdWVyeUxpc3QpOwogfQogCiB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6bGlua0xvYWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAK
aW5kZXggZDliMTU0NDg3Mzc3Li4xZTRkMDQyOTk1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZXRhRWxlbWVudC5jcHAKQEAgLTMyLDkgKzMyLDggQEAKICNpbmNsdWRlICJIVE1MSGVhZEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCi0jaW5jbHVkZSAiTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oIgotI2luY2x1ZGUg
Ik1lZGlhTGlzdC5oIgotI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXJDb250ZXh0LmgiCisjaW5j
bHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXIu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaCIKQEAgLTY2LDIwICs2NSwyMyBAQCBib29s
IEhUTUxNZXRhRWxlbWVudDo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKCkKIHsKICAgICBhdXRvJiBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAKLSAgICBpZiAoIW1fbWVkaWEpCi0gICAgICAg
IG1fbWVkaWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihtZWRpYUF0dHIpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIE1lZGlhUXVlcnlQ
YXJzZXJDb250ZXh0KGRvY3VtZW50KSk7CisgICAgaWYgKCFtX21lZGlhUXVlcnlMaXN0KSB7Cisg
ICAgICAgIGF1dG8gbWVkaWFUZXh0ID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbiht
ZWRpYUF0dHIpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgICAgIG1fbWVkaWFRdWVy
eUxpc3QgPSBNUTo6TWVkaWFRdWVyeVBhcnNlcjo6cGFyc2UobWVkaWFUZXh0LCB7IGRvY3VtZW50
IH0pOworICAgIH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5
bGU7CiAgICAgaWYgKGRvY3VtZW50Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgZG9j
dW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQoZG9jdW1lbnQpOwogCi0gICAg
U3RyaW5nIG1lZGlhVHlwZTsKKyAgICBBdG9tU3RyaW5nIG1lZGlhVHlwZTsKICAgICBpZiAoYXV0
byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZVZp
ZXcgPSBmcmFtZS0+dmlldygpKQotICAgICAgICAgICAgbWVkaWFUeXBlID0gZnJhbWVWaWV3LT5t
ZWRpYVR5cGUoKTsKKyAgICAgICAgICAgIG1lZGlhVHlwZSA9IEF0b21TdHJpbmcoZnJhbWVWaWV3
LT5tZWRpYVR5cGUoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIExlZ2FjeU1lZGlhUXVlcnlFdmFs
dWF0b3IobWVkaWFUeXBlLCBkb2N1bWVudCwgZG9jdW1lbnRTdHlsZSA/ICYqZG9jdW1lbnRTdHls
ZSA6IG51bGxwdHIpLmV2YWx1YXRlKCptX21lZGlhKTsKKyAgICBhdXRvIGV2YWx1YXRvciA9IE1R
OjpNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgbWVkaWFUeXBlLCBkb2N1bWVudCwgZG9jdW1lbnRTdHls
ZSA/ICYqZG9jdW1lbnRTdHlsZSA6IG51bGxwdHIgfTsKKyAgICByZXR1cm4gZXZhbHVhdG9yLmV2
YWx1YXRlKCptX21lZGlhUXVlcnlMaXN0KTsKIH0KIAogY29uc3QgQ29sb3ImIEhUTUxNZXRhRWxl
bWVudDo6Y29udGVudENvbG9yKCkKQEAgLTEyMiw3ICsxMjQsNyBAQCB2b2lkIEhUTUxNZXRhRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0cmluZwogICAgIH0KIAogICAgIGlmIChuYW1lID09IG1lZGlhQXR0cikgewotICAgICAgICBt
X21lZGlhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tZWRpYVF1ZXJ5TGlzdCA9IHsgfTsKICAgICAg
ICAgcHJvY2VzcygpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1ldGFFbGVtZW50LmgKaW5kZXggZWI2MTU4YTRlYTJmLi4wZmYxNjZhNGU3MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaApAQCAtMjMsMTEgKzIzLDExIEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgTWVkaWFRdWVy
eVNldDsKIAogY2xhc3MgSFRNTE1ldGFFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxNZXRhRWxlbWVudCk7CkBAIC01NCw3
ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHByb2Nlc3MoKTsKIAotICAgIFJlZlB0cjxN
ZWRpYVF1ZXJ5U2V0PiBtX21lZGlhOworICAgIHN0ZDo6b3B0aW9uYWw8TVE6Ok1lZGlhUXVlcnlM
aXN0PiBtX21lZGlhUXVlcnlMaXN0OwogCiAgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gbV9jb250
ZW50Q29sb3I7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463291</attachid>
            <date>2022-10-28 03:21:29 -0700</date>
            <delta_ts>2022-10-28 04:38:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-247124-20221028132127.patch</filename>
            <type>text/plain</type>
            <size>14710</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSBkZjUyYzhjMTljOGMwMDg2NmU4MTA3YmIxNzZlMzIxNWUyYTdhZTQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDI3IE9jdCAyMDIyIDE2OjIwOjE3ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gW01RNF0g
VXNlIHRoZSBuZXcgcGFyc2VyIGFuZCBldmFsdWF0b3IgaW4KIG1lZGlhQXR0cmlidXRlTWF0Y2hl
cygpIGZ1bmN0aW9ucwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
NzEyNCByZGFyOi8vMTAxNjMxNTM5CgpSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KClN0YXJ0IHVz
aW5nIHRoZSBuZXcgY29kZSBpbiBzb21lIGNhc2VzLgoKKiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5l
clF1ZXJ5UGFyc2VyLmNwcDoKKFdlYkNvcmU6OkNvbnRhaW5lclF1ZXJ5UGFyc2VyOjpjb25zdW1l
Q29udGFpbmVyUXVlcnkpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNl
ci5oOgooV2ViQ29yZTo6Q29udGFpbmVyUXVlcnlQYXJzZXI6OkNvbnRhaW5lclF1ZXJ5UGFyc2Vy
KToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaDoK
KFdlYkNvcmU6Ok1ROjpHZW5lcmljTWVkaWFRdWVyeVBhcnNlckJhc2U6OkdlbmVyaWNNZWRpYVF1
ZXJ5UGFyc2VyQmFzZSk6CihXZWJDb3JlOjpNUTo6R2VuZXJpY01lZGlhUXVlcnlQYXJzZXI6Okdl
bmVyaWNNZWRpYVF1ZXJ5UGFyc2VyKToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpNUTo6TWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZh
bHVhdGUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5UGFyc2Vy
LmNwcDoKKFdlYkNvcmU6Ok1ROjpNZWRpYVF1ZXJ5UGFyc2VyOjpNZWRpYVF1ZXJ5UGFyc2VyKToK
KFdlYkNvcmU6Ok1ROjpNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZSk6CiogU291cmNlL1dlYkNvcmUv
Y3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuaDoKKiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHA6CihXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Om1lZGlhQXR0cmlidXRl
TWF0Y2hlcyBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3Bw
OgooV2ViQ29yZTo6SFRNTE1ldGFFbGVtZW50OjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMpOgooV2Vi
Q29yZTo6SFRNTE1ldGFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CiogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0YUVsZW1lbnQuaDoKLS0tCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogfCAgMiArLQogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1
ZXJ5UGFyc2VyLmNwcCAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1
ZXJ5UGFyc2VyLmggICAgIHwgIDUgKystLS0KIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVl
cnlQYXJzZXIuY3BwICAgICB8ICAxICsKIC4uLi9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQ
YXJzZXIuaCAgICAgICB8ICA5ICsrKysrKy0tLQogLi4uL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlh
UXVlcnlFdmFsdWF0b3IuY3BwIHwgIDkgKysrKysrLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvTWVkaWFRdWVyeVBhcnNlci5jcHAgfCAxNSArKysrKysrKysrKysrLQogU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuaCAgIHwgIDQgKysrLQogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwICAgICAgIHwgIDkgKysrKysrLS0tCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAgICAgICAgfCAyMCArKysrKysrKysrLS0t
LS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5oICAgICAgICAgfCAg
NCArKy0tCiAxMSBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMmUxOGE0MjM5ZGRmLi5kNjNlNGZlYjZhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1MjUsNyArNTUyNSw3
IEBACiAJCUU0NTFDNjM0MjM5NDA1OEYwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGlu
ZUNvbnRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0NTFDNjMzMjM5NDA1OEUwMDk5MzE5MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRl
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
NDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjky
IC8qIFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJRTQ1NUE1NzEyOEZENzNGMzAwQjZFQTc2IC8q
IE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0NTVBNTcwMjhGRDczRjMwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmggKi87IH07Ci0JCUU0NTVBNTgyMjhGRThEOEQwMEI2RUE3NiAvKiBNZWRpYVF1ZXJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDU1QTU4MTI4
RkU4RDhEMDBCNkVBNzYgLyogTWVkaWFRdWVyeS5oICovOyB9OworCQlFNDU1QTU4MjI4RkU4RDhE
MDBCNkVBNzYgLyogTWVkaWFRdWVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQ1NUE1ODEyOEZFOEQ4RDAwQjZFQTc2IC8qIE1lZGlhUXVlcnkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDU1QTU5
NDI5MDI4Nzg5MDBCNkVBNzYgLyogQ29udGFpbmVyUXVlcnlGZWF0dXJlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1NUE1OTMyOTAyODc4ODAwQjZF
QTc2IC8qIENvbnRhaW5lclF1ZXJ5RmVhdHVyZXMuaCAqLzsgfTsKIAkJRTQ1NUE1QkEyOTA3QTg5
QTAwQjZFQTc2IC8qIE1lZGlhUXVlcnlGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1NUE1QjkyOTA3QTg5OTAwQjZFQTc2IC8qIE1lZGlh
UXVlcnlGZWF0dXJlcy5oICovOyB9OwogCQlFNDVBNkM3NzI0MTdCQTU5MDA2RTRDRDUgLyogUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0NUE2Qzc2MjQxN0JBNTkwMDZFNENENSAvKiBQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbi5oICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWlu
ZXJRdWVyeVBhcnNlci5jcHAKaW5kZXggM2FlZmQ3NjA5MjExLi5iZTM1MWJjMzc1YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NvbnRhaW5lclF1ZXJ5UGFyc2VyLmNwcApAQCAtNDUsOSArNDUs
OSBAQCBWZWN0b3I8Y29uc3QgRmVhdHVyZVNjaGVtYSo+IENvbnRhaW5lclF1ZXJ5UGFyc2VyOjpm
ZWF0dXJlU2NoZW1hcygpCiAgICAgfTsKIH0KIAotc3RkOjpvcHRpb25hbDxDUTo6Q29udGFpbmVy
UXVlcnk+IENvbnRhaW5lclF1ZXJ5UGFyc2VyOjpjb25zdW1lQ29udGFpbmVyUXVlcnkoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCitz
dGQ6Om9wdGlvbmFsPENROjpDb250YWluZXJRdWVyeT4gQ29udGFpbmVyUXVlcnlQYXJzZXI6OmNv
bnN1bWVDb250YWluZXJRdWVyeShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgTWVk
aWFRdWVyeVBhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgQ29udGFpbmVyUXVlcnlQYXJz
ZXIgcGFyc2VyKGNvbnRleHQpOworICAgIENvbnRhaW5lclF1ZXJ5UGFyc2VyIHBhcnNlcih7IGNv
bnRleHQgfSk7CiAgICAgcmV0dXJuIHBhcnNlci5jb25zdW1lQ29udGFpbmVyUXVlcnkocmFuZ2Up
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVyUXVlcnlQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db250YWluZXJRdWVyeVBhcnNlci5oCmluZGV4IDM0
NTMwNTliYjA4Zi4uYTg2NzBjYmU4MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q29udGFpbmVyUXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ29udGFpbmVy
UXVlcnlQYXJzZXIuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBDb250YWluZXJRdWVyeVBhcnNl
cjsKIAogY2xhc3MgQ29udGFpbmVyUXVlcnlQYXJzZXIgOiBwdWJsaWMgTVE6OkdlbmVyaWNNZWRp
YVF1ZXJ5UGFyc2VyPENvbnRhaW5lclF1ZXJ5UGFyc2VyPiAgewogcHVibGljOgotICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPENROjpDb250YWluZXJRdWVyeT4gY29uc3VtZUNvbnRhaW5lclF1ZXJ5
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Q1E6OkNvbnRhaW5lclF1ZXJ5PiBjb25zdW1lQ29udGFpbmVyUXVl
cnkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0Jik7
CiAKICAgICBzdGF0aWMgVmVjdG9yPGNvbnN0IE1ROjpGZWF0dXJlU2NoZW1hKj4gZmVhdHVyZVNj
aGVtYXMoKTsKICAgICBzdGF0aWMgYm9vbCByZWplY3RJbnZhbGlkRmVhdHVyZXMoKSB7IHJldHVy
biBmYWxzZTsgfQpAQCAtNDMsOSArNDMsOCBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxD
UTo6Q29udGFpbmVyUXVlcnk+IGNvbnN1bWVDb250YWluZXJRdWVyeShDU1NQYXJzZXJUb2tlblJh
bmdlJik7CiAgICAgc3RkOjpvcHRpb25hbDxNUTo6RmVhdHVyZT4gY29uc3VtZUZlYXR1cmUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOwogCi0KIHByaXZhdGU6Ci0gICAgQ29udGFpbmVyUXVlcnlQYXJz
ZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKKyAgICBDb250YWluZXJRdWVyeVBh
cnNlcihjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgOiBH
ZW5lcmljTWVkaWFRdWVyeVBhcnNlcihjb250ZXh0KSB7IH0KIAogICAgIE9wdGlvblNldDxDUTo6
QXhpcz4gbV9yZXF1aXJlZEF4ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVl
cnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5
L0dlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyLmNwcAppbmRleCBiYjE1NDJlNzVjOTEuLjlmMjNlNTlh
ZDZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L0dlbmVyaWNNZWRpYVF1
ZXJ5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlh
UXVlcnlQYXJzZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIk1lZGlh
UXVlcnlQYXJzZXJDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBN
USB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVl
cnlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9xdWVyeS9HZW5lcmljTWVkaWFRdWVyeVBh
cnNlci5oCmluZGV4IGZmNmFiZjVmN2Q5Mi4uNWQ5YmIxMTQ1NmYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcXVlcnkvR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIuaApAQCAtMzIsMTEg
KzMyLDE0IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQ7CisKIG5hbWVz
cGFjZSBNUSB7CiAKIGNsYXNzIEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyQmFzZSB7CiBwdWJsaWM6
Ci0gICAgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXJCYXNlKGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCisgICAgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXJCYXNlKGNvbnN0IE1lZGlhUXVl
cnlQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQog
ICAgIHsgfQogCkBAIC00OCwxMyArNTEsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB2YWxp
ZGF0ZUZlYXR1cmVBZ2FpbnN0U2NoZW1hKEZlYXR1cmUmLCBjb25zdCBGZWF0dXJlU2NoZW1hJik7
CiAKLSAgICBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBtX2NvbnRleHQ7CisgICAgY29uc3QgTWVk
aWFRdWVyeVBhcnNlckNvbnRleHQmIG1fY29udGV4dDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmNyZXRlUGFyc2VyPgogY2xhc3MgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXIgOiBwdWJsaWMg
R2VuZXJpY01lZGlhUXVlcnlQYXJzZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBHZW5lcmljTWVkaWFR
dWVyeVBhcnNlcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorICAgIEdlbmVyaWNN
ZWRpYVF1ZXJ5UGFyc2VyKGNvbnN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0JiBjb250ZXh0KQog
ICAgICAgICA6IEdlbmVyaWNNZWRpYVF1ZXJ5UGFyc2VyQmFzZShjb250ZXh0KQogICAgIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAK
aW5kZXggY2M0NzNlNWI2NDE2Li4xZDVjNDYwNDM0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9xdWVyeS9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcXVlcnkvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTQ0LDYgKzQ0LDkgQEAgTWVk
aWFRdWVyeUV2YWx1YXRvcjo6TWVkaWFRdWVyeUV2YWx1YXRvcihjb25zdCBBdG9tU3RyaW5nJiBt
ZWRpYVR5cGUsIGNvbnN0IERvY3UKIAogYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0
ZShjb25zdCBNZWRpYVF1ZXJ5TGlzdCYgbGlzdCkgY29uc3QKIHsKKyAgICBpZiAobGlzdC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgZm9yIChhdXRvJiBxdWVyeSA6IGxp
c3QpIHsKICAgICAgICAgaWYgKGV2YWx1YXRlKHF1ZXJ5KSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtNTgsOSArNjEsOSBAQCBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRl
KGNvbnN0IE1lZGlhUXVlcnkmIHF1ZXJ5KSBjb25zdAogICAgIGF1dG8gbWVkaWFUeXBlTWF0Y2hl
cyA9IFsmXSB7CiAgICAgICAgIGlmIChxdWVyeS5tZWRpYVR5cGUuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChxdWVyeS5tZWRpYVR5cGUgPT0gImFsbCJf
cykKKyAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHF1ZXJ5Lm1lZGlh
VHlwZSwgImFsbCJfcykpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
IHF1ZXJ5Lm1lZGlhVHlwZSA9PSBtX21lZGlhVHlwZTsKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UocXVlcnkubWVkaWFUeXBlLCBtX21lZGlhVHlwZSk7CiAgICAgfSgpOwog
CiAgICAgaWYgKCFtZWRpYVR5cGVNYXRjaGVzKQpAQCAtNjgsNyArNzEsNyBAQCBib29sIE1lZGlh
UXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnkmIHF1ZXJ5KSBjb25zdAog
CiAgICAgYXV0byBjb25kaXRpb25NYXRjaGVzID0gWyZdIHsKICAgICAgICAgaWYgKCFxdWVyeS5j
b25kaXRpb24pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgICAgICBpZiAoIW1fZG9jdW1lbnQudmlldygpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVl
cnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIu
Y3BwCmluZGV4IDBiODQ0YmU5MDkyNS4uYjgyMDYyNWRiYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgogCiAjaW5jbHVkZSAiQ1NTTWFya3VwLmgiCisjaW5j
bHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lu
Y2x1ZGUgIkdlbmVyaWNNZWRpYVF1ZXJ5U2VyaWFsaXphdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlh
UXVlcnlGZWF0dXJlcy5oIgpAQCAtMzMsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIE1RIHsKIAotTWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeVBhcnNlcihjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorTWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVy
eVBhcnNlcihjb25zdCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICA6IEdl
bmVyaWNNZWRpYVF1ZXJ5UGFyc2VyKGNvbnRleHQpCiB7CiB9CkBAIC00Myw2ICs0NCwxOCBAQCBW
ZWN0b3I8Y29uc3QgRmVhdHVyZVNjaGVtYSo+IE1lZGlhUXVlcnlQYXJzZXI6OmZlYXR1cmVTY2hl
bWFzKCkKICAgICByZXR1cm4gRmVhdHVyZXM6OmFsbFNjaGVtYXMoKTsKIH0KIAorTWVkaWFRdWVy
eUxpc3QgTWVkaWFRdWVyeVBhcnNlcjo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGF1dG8gdG9rZW5pemVy
ID0gQ1NTVG9rZW5pemVyOjp0cnlDcmVhdGUoc3RyaW5nKTsKKyAgICBpZiAoIXRva2VuaXplcikK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gcmFuZ2UgPSB0b2tlbml6ZXItPnRva2Vu
UmFuZ2UoKTsKKworICAgIE1lZGlhUXVlcnlQYXJzZXIgcGFyc2VyIHsgY29udGV4dCB9OworICAg
IHJldHVybiBwYXJzZXIuY29uc3VtZU1lZGlhUXVlcnlMaXN0KHJhbmdlKTsKK30KKwogTWVkaWFR
dWVyeUxpc3QgTWVkaWFRdWVyeVBhcnNlcjo6Y29uc3VtZU1lZGlhUXVlcnlMaXN0KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIE1lZGlhUXVlcnlMaXN0IGxpc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBhcnNlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlhUXVlcnlQYXJzZXIuaAppbmRleCBmZDFiODRlOGExYjku
LjY4NTFjY2RjYmM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3F1ZXJ5L01lZGlh
UXVlcnlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcXVlcnkvTWVkaWFRdWVyeVBh
cnNlci5oCkBAIC0zMiw3ICszMiw5IEBAIG5hbWVzcGFjZSBNUSB7CiAKIGNsYXNzIE1lZGlhUXVl
cnlQYXJzZXIgOiBwdWJsaWMgR2VuZXJpY01lZGlhUXVlcnlQYXJzZXI8TWVkaWFRdWVyeVBhcnNl
cj4gIHsKIHB1YmxpYzoKLSAgICBNZWRpYVF1ZXJ5UGFyc2VyKGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmKTsKKyAgICBNZWRpYVF1ZXJ5UGFyc2VyKGNvbnN0IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0
Jik7CisKKyAgICBzdGF0aWMgTWVkaWFRdWVyeUxpc3QgcGFyc2UoY29uc3QgU3RyaW5nJiwgY29u
c3QgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQmKTsKIAogICAgIE1lZGlhUXVlcnlMaXN0IGNvbnN1
bWVNZWRpYVF1ZXJ5TGlzdChDU1NQYXJzZXJUb2tlblJhbmdlJik7CiAgICAgc3RkOjpvcHRpb25h
bDxNZWRpYVF1ZXJ5PiBjb25zdW1lTWVkaWFRdWVyeShDU1NQYXJzZXJUb2tlblJhbmdlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggZDYyYmQ1OWZkYzYzLi5h
YWE0MGU1NzA5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAg
LTQ4LDkgKzQ4LDEwIEBACiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCi0jaW5jbHVkZSAi
TGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJNZWRpYUxpc3QuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5j
bHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlQYXJzZXJDb250
ZXh0LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRU
eXBlLmgiCkBAIC01MTcsOSArNTE4LDExIEBAIGJvb2wgSFRNTExpbmtFbGVtZW50OjptZWRpYUF0
dHJpYnV0ZU1hdGNoZXMoKSBjb25zdAogICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRv
Y3VtZW50U3R5bGU7CiAgICAgaWYgKGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQog
ICAgICAgICBkb2N1bWVudFN0eWxlID0gU3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudChkb2N1bWVu
dCgpKTsKLSAgICBhdXRvIG1lZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEsIE1l
ZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KCkpKTsKKyAgICBhdXRvIG1lZGlhUXVlcnlM
aXN0ID0gTVE6Ok1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlKG1fbWVkaWEsIHsgZG9jdW1lbnQoKSB9
KTsKICAgICBMT0coTWVkaWFRdWVyaWVzLCAiSFRNTExpbmtFbGVtZW50OjptZWRpYUF0dHJpYnV0
ZU1hdGNoZXMiKTsKLSAgICByZXR1cm4gTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvcihkb2N1bWVu
dCgpLmZyYW1lKCktPnZpZXcoKS0+bWVkaWFUeXBlKCksIGRvY3VtZW50KCksIGRvY3VtZW50U3R5
bGUgPyAmKmRvY3VtZW50U3R5bGUgOiBudWxscHRyKS5ldmFsdWF0ZShtZWRpYS5nZXQoKSk7CisK
KyAgICBNUTo6TWVkaWFRdWVyeUV2YWx1YXRvciBldmFsdWF0b3IoQXRvbVN0cmluZyhkb2N1bWVu
dCgpLmZyYW1lKCktPnZpZXcoKS0+bWVkaWFUeXBlKCkpLCBkb2N1bWVudCgpLCBkb2N1bWVudFN0
eWxlID8gJipkb2N1bWVudFN0eWxlIDogbnVsbHB0cik7CisgICAgcmV0dXJuIGV2YWx1YXRvci5l
dmFsdWF0ZShtZWRpYVF1ZXJ5TGlzdCk7CiB9CiAKIHZvaWQgSFRNTExpbmtFbGVtZW50OjpsaW5r
TG9hZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAppbmRleCBkOWIx
NTQ0ODczNzcuLjFlNGQwNDI5OTVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWV0YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVt
ZW50LmNwcApAQCAtMzIsOSArMzIsOCBAQAogI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNp
bmNsdWRlICJMZWdhY3lNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCi0jaW5jbHVkZSAiTWVkaWFMaXN0
LmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlckNvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRp
YVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgogI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHls
ZVJlc29sdmVGb3JEb2N1bWVudC5oIgpAQCAtNjYsMjAgKzY1LDIzIEBAIGJvb2wgSFRNTE1ldGFF
bGVtZW50OjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKQogewogICAgIGF1dG8mIGRvY3VtZW50ID0g
dGhpcy0+ZG9jdW1lbnQoKTsKIAotICAgIGlmICghbV9tZWRpYSkKLSAgICAgICAgbV9tZWRpYSA9
IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1l
ZGlhQXR0cikuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgTWVkaWFRdWVyeVBhcnNlckNvbnRl
eHQoZG9jdW1lbnQpKTsKKyAgICBpZiAoIW1fbWVkaWFRdWVyeUxpc3QpIHsKKyAgICAgICAgYXV0
byBtZWRpYVRleHQgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1lZGlhQXR0ciku
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICAgICAgbV9tZWRpYVF1ZXJ5TGlzdCA9IE1R
OjpNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZShtZWRpYVRleHQsIHsgZG9jdW1lbnQgfSk7CisgICAg
fQogCiAgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZTsKICAgICBp
ZiAoZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQogICAgICAgICBkb2N1bWVudFN0eWxl
ID0gU3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudChkb2N1bWVudCk7CiAKLSAgICBTdHJpbmcgbWVk
aWFUeXBlOworICAgIEF0b21TdHJpbmcgbWVkaWFUeXBlOwogICAgIGlmIChhdXRvKiBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lVmlldyA9IGZyYW1l
LT52aWV3KCkpCi0gICAgICAgICAgICBtZWRpYVR5cGUgPSBmcmFtZVZpZXctPm1lZGlhVHlwZSgp
OworICAgICAgICAgICAgbWVkaWFUeXBlID0gQXRvbVN0cmluZyhmcmFtZVZpZXctPm1lZGlhVHlw
ZSgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gTGVnYWN5TWVkaWFRdWVyeUV2YWx1YXRvcihtZWRp
YVR5cGUsIGRvY3VtZW50LCBkb2N1bWVudFN0eWxlID8gJipkb2N1bWVudFN0eWxlIDogbnVsbHB0
cikuZXZhbHVhdGUoKm1fbWVkaWEpOworICAgIGF1dG8gZXZhbHVhdG9yID0gTVE6Ok1lZGlhUXVl
cnlFdmFsdWF0b3IgeyBtZWRpYVR5cGUsIGRvY3VtZW50LCBkb2N1bWVudFN0eWxlID8gJipkb2N1
bWVudFN0eWxlIDogbnVsbHB0ciB9OworICAgIHJldHVybiBldmFsdWF0b3IuZXZhbHVhdGUoKm1f
bWVkaWFRdWVyeUxpc3QpOwogfQogCiBjb25zdCBDb2xvciYgSFRNTE1ldGFFbGVtZW50Ojpjb250
ZW50Q29sb3IoKQpAQCAtMTIyLDcgKzEyNCw3IEBAIHZvaWQgSFRNTE1ldGFFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nCiAg
ICAgfQogCiAgICAgaWYgKG5hbWUgPT0gbWVkaWFBdHRyKSB7Ci0gICAgICAgIG1fbWVkaWEgPSBu
dWxscHRyOworICAgICAgICBtX21lZGlhUXVlcnlMaXN0ID0geyB9OwogICAgICAgICBwcm9jZXNz
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1l
bnQuaAppbmRleCBlYjYxNThhNGVhMmYuLjBmZjE2NmE0ZTczMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZXRhRWxlbWVudC5oCkBAIC0yMywxMSArMjMsMTEgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBNZWRpYVF1ZXJ5U2V0OwogCiBj
bGFzcyBIVE1MTWV0YUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTE1ldGFFbGVtZW50KTsKQEAgLTU0LDcgKzU0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcHJvY2VzcygpOwogCi0gICAgUmVmUHRyPE1lZGlhUXVlcnlT
ZXQ+IG1fbWVkaWE7CisgICAgc3RkOjpvcHRpb25hbDxNUTo6TWVkaWFRdWVyeUxpc3Q+IG1fbWVk
aWFRdWVyeUxpc3Q7CiAKICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBtX2NvbnRlbnRDb2xvcjsK
IH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>