<?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>154287</bug_id>
          
          <creation_ts>2016-02-16 04:49:09 -0800</creation_ts>
          <short_desc>Factor id mutation style invalidation code into a class</short_desc>
          <delta_ts>2016-02-16 09:24:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kling</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1165117</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-16 04:49:09 -0800</bug_when>
    <thetext>Not a recommended dynamic styling hook but for completeness sake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165126</commentid>
    <comment_count>1</comment_count>
      <attachid>271427</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-16 06:45:20 -0800</bug_when>
    <thetext>Created attachment 271427
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165131</commentid>
    <comment_count>2</comment_count>
      <attachid>271427</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-02-16 08:31:05 -0800</bug_when>
    <thetext>Comment on attachment 271427
patch

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

r=me

&gt; Source/WebCore/ChangeLog:12
&gt; +        However dynamic id changes are not common enought (nor recommended) to pay the memory cost of
&gt; +        the required data structures.

Strongly agree with this.
Also s/enought/enough/

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:10555
&gt; -		83D35AEF1C718D8400F70D5A /* JSXMLHttpRequestEventTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSXMLHttpRequestEventTarget.cpp; path = JSXMLHttpRequestEventTarget.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; -		83D35AF01C718D8400F70D5A /* JSXMLHttpRequestEventTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSXMLHttpRequestEventTarget.h; path = JSXMLHttpRequestEventTarget.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		83D35AEF1C718D8400F70D5A /* JSXMLHttpRequestEventTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSXMLHttpRequestEventTarget.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		83D35AF01C718D8400F70D5A /* JSXMLHttpRequestEventTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSXMLHttpRequestEventTarget.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		83E359A01BB1031D002CEB98 /* JSHTMLTimeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLTimeElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };

I don&apos;t know what these are about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165144</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-16 09:24:17 -0800</bug_when>
    <thetext>https://trac.webkit.org/r196636</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271427</attachid>
            <date>2016-02-16 06:45:20 -0800</date>
            <delta_ts>2016-02-16 08:31:05 -0800</delta_ts>
            <desc>patch</desc>
            <filename>id-change-invalidation-2.patch</filename>
            <type>text/plain</type>
            <size>28615</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjYzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE2LTAyLTE2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgaWQgbXV0YXRpb24g
c3R5bGUgaW52YWxpZGF0aW9uIGNvZGUgaW50byBhIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIGFkZCBhIGJhc2ljIG9wdGltaXphdGlv
biB0aGF0IGF2b2lkcyBkZXNjZW5kYW50IGludmFsaWRhdGlvbiBpZiB0aGV5IGNhbiBub3QgYmUg
YWZmZWN0ZWQuCisKKyAgICAgICAgSXQgd291bGQgYmUgZWFzeSB0byBpbXBsZW1lbnQgZmluZSBn
cmFpbmVkIGludmFsaWRhdGlvbiBsaWtlIHdpdGggY2xhc3NlcyBhbmQgYXR0cmlidXRlIHNlbGVj
dG9ycy4KKyAgICAgICAgSG93ZXZlciBkeW5hbWljIGlkIGNoYW5nZXMgYXJlIG5vdCBjb21tb24g
ZW5vdWdodCAobm9yIHJlY29tbWVuZGVkKSB0byBwYXkgdGhlIG1lbW9yeSBjb3N0IG9mCisgICAg
ICAgIHRoZSByZXF1aXJlZCBkYXRhIHN0cnVjdHVyZXMuCisKKyAgICAgICAgVGVzdDogZmFzdC9j
c3Mvc3R5bGUtaW52YWxpZGF0aW9uLWlkLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZl
YXR1cmVTZXQ6OmNsZWFyKToKKyAgICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuaDoKKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlSWRGb3JTdHlsZVJlc29s
dXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JJZENoYW5nZSk6
IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpJZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxp
ZGF0ZVN0eWxlKToKKyAgICAgICAgKiBzdHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpJZENoYW5nZUludmFsaWRhdGlvbjo6SWRDaGFu
Z2VJbnZhbGlkYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OklkQ2hhbmdlSW52YWxp
ZGF0aW9uOjp+SWRDaGFuZ2VJbnZhbGlkYXRpb24pOgorCiAyMDE2LTAyLTE2ICBBbmRyZWFzIEts
aW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0eWxlUmVzb2x2ZXIgYW5k
IFNlbGVjdG9yUXVlcnlDYWNoZSB3aGVuIGVudGVyaW5nIFBhZ2VDYWNoZS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTY2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjYzMiw2ICsyNjMyLDcgQEAgc2V0KFdlYkNvcmVf
U09VUkNFUwogCiAgICAgc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogICAg
IHN0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAorICAgIHN0eWxlL0lkQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcAogICAgIHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKICAgICBzdHls
ZS9SZW5kZXJUcmVlUG9zaXRpb24uY3BwCiAgICAgc3R5bGUvU3R5bGVDaGFuZ2UuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJl
dmlzaW9uIDE5NjYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5Mjk3LDYgKzE5Mjk3LDcgQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHN0b3JhZ2VcU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHN0eWxlXEF0dHJpYnV0ZUNoYW5nZUludmFs
aWRhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzdHlsZVxDbGFzc0No
YW5nZUludmFsaWRhdGlvbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzdHls
ZVxJZENoYW5nZUludmFsaWRhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxzdHlsZVxJbmxpbmVUZXh0Qm94U3R5bGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cc3R5bGVcUmVuZGVyVHJlZVBvc2l0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHN0eWxlXFN0eWxlQ2hhbmdlLmNwcCIgLz4KQEAgLTIyODY4LDYgKzIyODY5LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN0b3JhZ2VcU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzdHlsZVxBdHRyaWJ1dGVD
aGFuZ2VJbnZhbGlkYXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN0eWxl
XENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxzdHlsZVxJZENoYW5nZUludmFsaWRhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cc3R5bGVcSW5saW5lVGV4dEJveFN0eWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxzdHlsZVxSZW5kZXJUcmVlUG9zaXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHN0eWxlXFN0eWxlQ2hhbmdlLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTY2Mjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTY2MzksNiArNjYzOSw4IEBACiAJCUU0QTgxNEQ2MUM2REVFOEQwMEJG
ODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEE4MTRENTFDNkRFRThEMDBCRjg1QUMgLyogQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovOyB9OwogCQlFNEE4MTREODFDNzBFMTA1MDBCRjg1
QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBB
dHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovOyB9OwogCQlFNEE4MTREQTFDNzBFMTBE
MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMg
LyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CisJCUU0QTgxNERFMUM3MzM4
RDEwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEE4MTRERDFDNzMzOEQxMDBCRjg1QUMgLyog
SWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovOyB9OworCQlFNEE4MTRFMDFDNzMzOEVCMDBCRjg1
QUMgLyogSWRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTgxNERGMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUlu
dmFsaWRhdGlvbi5oICovOyB9OwogCQlFNEFFN0MxNjE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVu
dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRBRTdDMUExN0QyMzIz
NTAwMDlGQjMxIC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFFN0MxOTE3RDIzMjM1MDAwOUZCMzEgLyog
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFNEFGQ0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRkNG
QTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAqLzsgfTsKQEAgLTEwNTQ4LDggKzEw
NTUwLDggQEAKIAkJODNEMjZEM0QxQUZEQ0M1MDAwMUIzODczIC8qIFBhcmVudE5vZGUuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBhcmVudE5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0QzNUFF
QTFDNzE4N0VEMDBGNzBENUEgLyogWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRDM1QUVCMUM3MTg3RUQwMEY3MEQ1QSAvKiBY
TUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxI
dHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODNEMzVBRUYxQzcxOEQ4NDAwRjcwRDVBIC8qIEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1hNTEh0dHBSZXF1ZXN0
RXZlbnRUYXJnZXQuY3BwOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODNEMzVBRjAxQzcxOEQ4NDAwRjcwRDVBIC8q
IEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaDsgcGF0aCA9IEpTWE1MSHR0cFJl
cXVlc3RFdmVudFRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0QzNUFF
RjFDNzE4RDg0MDBGNzBENUEgLyogSlNYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MSHR0cFJlcXVlc3RFdmVudFRh
cmdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzRDM1QUYwMUM3MThEODQw
MEY3MEQ1QSAvKiBKU1hNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRTM1OUEwMUJCMTAzMUQwMDJDRUI5OCAvKiBKU0hUTUxU
aW1lRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxUaW1l
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0UzNTlBMTFCQjEwMzFE
MDAyQ0VCOTggLyogSlNIVE1MVGltZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNIVE1MVGltZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0U5NTlFMTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVOb2RlRmlsdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDY0Nyw2ICsxNDY0OSw4IEBACiAJCUU0QTgx
NEQ1MUM2REVFOEQwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QTgxNEQ3MUM3MEUxMDUwMEJGODVB
QyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBODE0RDkxQzcwRTEwRDAwQkY4NUFDIC8qIEF0dHJp
YnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTRBODE0REQxQzczMzhEMTAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElkQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBODE0REYxQzczMzhFQjAw
QkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElkQ2hhbmdlSW52YWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0QUU3QzE1MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudEl0ZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUU3QzE5MTdEMjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50
QW5jZXN0b3JJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVt
ZW50QW5jZXN0b3JJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFG
Q0ZBNDBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVbml0QmV6aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMzQ0MSw2ICsyMzQ0NSw4IEBACiAJCQkJRTRBODE0RDkxQzcwRTEwRDAwQkY4NUFDIC8qIEF0
dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oICovLAogCQkJCUU0QTgxNEQ1MUM2REVFOEQwMEJG
ODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCiAJCQkJRTRBODE0RDMxQzZE
RUM0MDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCisJCQkJRTRBODE0
REQxQzczMzhEMTAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKKwkJCQlF
NEE4MTRERjFDNzMzOEVCMDBCRjg1QUMgLyogSWRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJ
CQkxQzAxMDZGRTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCAqLywK
IAkJCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi8s
CiAJCQkJNTgyNEFCQTgxQUU4NDlDODAwOTA3NEI3IC8qIFJlbmRlclRyZWVQb3NpdGlvbi5jcHAg
Ki8sCkBAIC0yNzg2Niw2ICsyNzg3Miw3IEBACiAJCQkJOTM5M0U2MDUxNTFBOUExODAwMDY2RjA2
IC8qIFN0eWxlQ2FjaGVkSW1hZ2VTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0MDFFMEE0MUMz
QzBCODMwMEYzNEQxMCAvKiBTdHlsZUNoYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOURBQzdD
NTcxQUYyQ0I2NDAwNDM3QzQ0IC8qIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUU0QTgxNEUwMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzlFMTcxQkIyMjdDQTAwQ0FBOEJGIC8qIFN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjY3RjBFODFE
NEE3MDBCMjU5NjUgLyogU3R5bGVEYXNoYm9hcmRSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4QzRBN0ZEMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTMwNDg3LDYgKzMwNDk0LDcgQEAKIAkJCQlCMkZBM0Q1QTBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdDbGlwUGF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNENUMw
QUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJG
QTNENUUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTRBODE0REUxQzczMzhEMTAwQkY4NUFDIC8q
IElkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDYwMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR0N1cnNvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJGQTNENjIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRGVmc0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjJGQTNENjQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRGVzY0VsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAJ
KHJldmlzaW9uIDE5NjYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDExIEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnJl
Y3Vyc2l2ZWx5Q29sbGVjdEYKIHsKICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSAm
Zmlyc3RTZWxlY3RvcjsKICAgICBkbyB7Ci0gICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9
PSBDU1NTZWxlY3Rvcjo6SWQpCisgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NT
ZWxlY3Rvcjo6SWQpIHsKICAgICAgICAgICAgIGlkc0luUnVsZXMuYWRkKHNlbGVjdG9yLT52YWx1
ZSgpLmltcGwoKSk7Ci0gICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yLT5tYXRjaCgpID09IENTU1Nl
bGVjdG9yOjpDbGFzcykgeworICAgICAgICAgICAgaWYgKG1hdGNoZXNBbmNlc3RvcikKKyAgICAg
ICAgICAgICAgICBpZHNNYXRjaGluZ0FuY2VzdG9yc0luUnVsZXMuYWRkKHNlbGVjdG9yLT52YWx1
ZSgpLmltcGwoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NT
U2VsZWN0b3I6OkNsYXNzKSB7CiAgICAgICAgICAgICBjbGFzc2VzSW5SdWxlcy5hZGQoc2VsZWN0
b3ItPnZhbHVlKCkuaW1wbCgpKTsKICAgICAgICAgICAgIGlmIChtYXRjaGVzQW5jZXN0b3IpCiAg
ICAgICAgICAgICAgICAgc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzTWF0Y2hpbmdBbmNlc3RvcnMu
YXBwZW5kKHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSk7CkBAIC0xMTgsNiArMTIwLDcgQEAgdm9p
ZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbgogdm9pZCBSdWxlRmVhdHVyZVNl
dDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKIHsKICAgICBpZHNJblJ1bGVzLmFk
ZChvdGhlci5pZHNJblJ1bGVzLmJlZ2luKCksIG90aGVyLmlkc0luUnVsZXMuZW5kKCkpOworICAg
IGlkc01hdGNoaW5nQW5jZXN0b3JzSW5SdWxlcy5hZGQob3RoZXIuaWRzTWF0Y2hpbmdBbmNlc3Rv
cnNJblJ1bGVzLmJlZ2luKCksIG90aGVyLmlkc01hdGNoaW5nQW5jZXN0b3JzSW5SdWxlcy5lbmQo
KSk7CiAgICAgY2xhc3Nlc0luUnVsZXMuYWRkKG90aGVyLmNsYXNzZXNJblJ1bGVzLmJlZ2luKCks
IG90aGVyLmNsYXNzZXNJblJ1bGVzLmVuZCgpKTsKICAgICBhdHRyaWJ1dGVDYW5vbmljYWxMb2Nh
bE5hbWVzSW5SdWxlcy5hZGQob3RoZXIuYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVs
ZXMuYmVnaW4oKSwgb3RoZXIuYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMuZW5k
KCkpOwogICAgIGF0dHJpYnV0ZUxvY2FsTmFtZXNJblJ1bGVzLmFkZChvdGhlci5hdHRyaWJ1dGVM
b2NhbE5hbWVzSW5SdWxlcy5iZWdpbigpLCBvdGhlci5hdHRyaWJ1dGVMb2NhbE5hbWVzSW5SdWxl
cy5lbmQoKSk7CkBAIC0xNDYsNiArMTQ5LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNv
bnN0IFJ1bGVGZWF0dQogdm9pZCBSdWxlRmVhdHVyZVNldDo6Y2xlYXIoKQogewogICAgIGlkc0lu
UnVsZXMuY2xlYXIoKTsKKyAgICBpZHNNYXRjaGluZ0FuY2VzdG9yc0luUnVsZXMuY2xlYXIoKTsK
ICAgICBjbGFzc2VzSW5SdWxlcy5jbGVhcigpOwogICAgIGF0dHJpYnV0ZUNhbm9uaWNhbExvY2Fs
TmFtZXNJblJ1bGVzLmNsZWFyKCk7CiAgICAgYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXMuY2xl
YXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5oCShyZXZpc2lvbiAxOTY2MjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NiArNTIsNyBAQCBzdHJ1Y3QgUnVsZUZlYXR1cmVTZXQgewogICAgIHZvaWQgY29sbGVjdEZlYXR1
cmVzKGNvbnN0IFJ1bGVEYXRhJik7CiAKICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBp
ZHNJblJ1bGVzOworICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IGlkc01hdGNoaW5nQW5j
ZXN0b3JzSW5SdWxlczsKICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBjbGFzc2VzSW5S
dWxlczsKICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBhdHRyaWJ1dGVDYW5vbmljYWxM
b2NhbE5hbWVzSW5SdWxlczsKICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBhdHRyaWJ1
dGVMb2NhbE5hbWVzSW5SdWxlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE5NjYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNs
dWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJJZENoYW5nZUludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIklkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRl
ICJNYWluRnJhbWUuaCIKQEAgLTEyMTYsMjUgKzEyMTcsMTAgQEAgc3RhdGljIGlubGluZSBBdG9t
aWNTdHJpbmcgbWFrZUlkRm9yU3R5bAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotc3RhdGljIGJv
b2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9ySWRDaGFuZ2UoY29uc3QgQXRvbWljU3Ry
aW5nJiBvbGRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdJZCwgU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlcikKLXsKLSAgICBBU1NFUlQobmV3SWQgIT0gb2xkSWQpOwotICAgIGlmICghb2xk
SWQuaXNFbXB0eSgpICYmIHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9ySWQob2xkSWQpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIW5ld0lkLmlzRW1wdHkoKSAmJiBzdHlsZVJl
c29sdmVyLT5oYXNTZWxlY3RvckZvcklkKG5ld0lkKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKQog
ewogICAgIGJvb2wgdmFsdWVJc1NhbWVBc0JlZm9yZSA9IG9sZFZhbHVlID09IG5ld1ZhbHVlOwog
Ci0gICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGRvY3VtZW50KCkuc3R5bGVSZXNv
bHZlcklmRXhpc3RzKCk7Ci0gICAgYm9vbCB0ZXN0U2hvdWxkSW52YWxpZGF0ZVN0eWxlID0gaW5S
ZW5kZXJlZERvY3VtZW50KCkgJiYgc3R5bGVSZXNvbHZlciAmJiBzdHlsZUNoYW5nZVR5cGUoKSA8
IEZ1bGxTdHlsZUNoYW5nZTsKLQotICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVN0eWxlID0gZmFs
c2U7Ci0KICAgICBpZiAoIXZhbHVlSXNTYW1lQXNCZWZvcmUpIHsKICAgICAgICAgaWYgKG5hbWUg
PT0gSFRNTE5hbWVzOjppZEF0dHIpIHsKICAgICAgICAgICAgIGlmICghb2xkVmFsdWUuaXNFbXB0
eSgpKQpAQCAtMTI0NSwxNSArMTIzMSwxNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhCiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgb2xkSWQgPSBlbGVtZW50RGF0
YSgpLT5pZEZvclN0eWxlUmVzb2x1dGlvbigpOwogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG5l
d0lkID0gbWFrZUlkRm9yU3R5bGVSZXNvbHV0aW9uKG5ld1ZhbHVlLCBkb2N1bWVudCgpLmluUXVp
cmtzTW9kZSgpKTsKICAgICAgICAgICAgIGlmIChuZXdJZCAhPSBvbGRJZCkgeworICAgICAgICAg
ICAgICAgIFN0eWxlOjpJZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhp
cywgb2xkSWQsIG5ld0lkKTsKICAgICAgICAgICAgICAgICBlbGVtZW50RGF0YSgpLT5zZXRJZEZv
clN0eWxlUmVzb2x1dGlvbihuZXdJZCk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkSW52YWxpZGF0
ZVN0eWxlID0gdGVzdFNob3VsZEludmFsaWRhdGVTdHlsZSAmJiBjaGVja05lZWRzU3R5bGVJbnZh
bGlkYXRpb25Gb3JJZENoYW5nZShvbGRJZCwgbmV3SWQsIHN0eWxlUmVzb2x2ZXIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY2xhc3NBdHRyKQogICAgICAgICAg
ICAgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKG5ld1ZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAobmFt
ZSA9PSBIVE1MTmFtZXM6Om5hbWVBdHRyKQogICAgICAgICAgICAgZWxlbWVudERhdGEoKS0+c2V0
SGFzTmFtZUF0dHJpYnV0ZSghbmV3VmFsdWUuaXNOdWxsKCkpOwotICAgICAgICBlbHNlIGlmIChu
YW1lID09IEhUTUxOYW1lczo6cHNldWRvQXR0cikKLSAgICAgICAgICAgIHNob3VsZEludmFsaWRh
dGVTdHlsZSB8PSB0ZXN0U2hvdWxkSW52YWxpZGF0ZVN0eWxlICYmIGlzSW5TaGFkb3dUcmVlKCk7
CisgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpwc2V1ZG9BdHRyKSB7CisgICAg
ICAgICAgICBpZiAobmVlZHNTdHlsZUludmFsaWRhdGlvbigpICYmIGlzSW5TaGFkb3dUcmVlKCkp
CisgICAgICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOwor
ICAgICAgICB9CiAjaWYgRU5BQkxFKFNIQURPV19ET00pIHx8IEVOQUJMRShERVRBSUxTX0VMRU1F
TlQpCiAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpzbG90QXR0cikgewogICAg
ICAgICAgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKSkgewpAQCAtMTI3Myw5
ICsxMjYxLDYgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YQogCiAg
ICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlc0luQW5jZXN0b3JzKCZuYW1l
LCB0aGlzKTsKIAotICAgIGlmIChzaG91bGRJbnZhbGlkYXRlU3R5bGUpCi0gICAgICAgIHNldE5l
ZWRzU3R5bGVSZWNhbGMoKTsKLQogICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3Vt
ZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAgIGNhY2hlLT5oYW5kbGVBdHRy
aWJ1dGVDaGFuZ2VkKG5hbWUsIHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUv
SWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklk
Q2hhbmdlSW52YWxpZGF0aW9uLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudFJ1bGVTZXRzLmgiCisj
aW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CisKK3ZvaWQgSWRD
aGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZShjb25zdCBBdG9taWNTdHJpbmcmIGNo
YW5nZWRJZCkKK3sKKyAgICBBU1NFUlQoIWNoYW5nZWRJZC5pc0VtcHR5KCkpOworCisgICAgYXV0
byYgcnVsZVNldHMgPSBtX2VsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCk7CisKKyAg
ICBib29sIG1heUFmZmVjdFN0eWxlID0gcnVsZVNldHMuZmVhdHVyZXMoKS5pZHNJblJ1bGVzLmNv
bnRhaW5zKGNoYW5nZWRJZC5pbXBsKCkpOworICAgIGlmICghbWF5QWZmZWN0U3R5bGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChtX2VsZW1lbnQuc2hhZG93Um9vdCgpICYmIHJ1bGVTZXRz
LmF1dGhvclN0eWxlKCktPmhhc1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcygpKSB7CisgICAgICAg
IG1fZWxlbWVudC5zZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGlzIGNvdWxkIGJlIGVhc2lseSBvcHRpbWl6ZWQg
Zm9yIGZpbmUtZ3JhaW5lZCBkZXNjZW5kYW50IGludmFsaWRhdGlvbiBzaW1pbGFyIHRvIENsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uLgorICAgIC8vIEhvd2V2ZXIgdXNpbmcgaWRzIGZvciBkeW5hbWlj
IHN0eWxpbmcgaXMgcmFyZSBhbmQgdGhpcyBpcyBwcm9iYWJseSBub3Qgd29ydGggdGhlIG1lbW9y
eSBjb3N0IG9mIHRoZSByZXF1aXJlZCBkYXRhIHN0cnVjdHVyZXMuCisgICAgYm9vbCBtYXlBZmZl
Y3REZXNjZW5kYW50U3R5bGUgPSBydWxlU2V0cy5mZWF0dXJlcygpLmlkc01hdGNoaW5nQW5jZXN0
b3JzSW5SdWxlcy5jb250YWlucyhjaGFuZ2VkSWQuaW1wbCgpKTsKKyAgICBpZiAobWF5QWZmZWN0
RGVzY2VuZGFudFN0eWxlKQorICAgICAgICBtX2VsZW1lbnQuc2V0TmVlZHNTdHlsZVJlY2FsYyhG
dWxsU3R5bGVDaGFuZ2UpOworICAgIGVsc2UKKyAgICAgICAgbV9lbGVtZW50LnNldE5lZWRzU3R5
bGVSZWNhbGMoSW5saW5lU3R5bGVDaGFuZ2UpOworfQorCit9Cit9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElkQ2hhbmdlSW52YWxpZGF0aW9u
X2gKKyNkZWZpbmUgSWRDaGFuZ2VJbnZhbGlkYXRpb25faAorCisjaW5jbHVkZSAiRWxlbWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBTdHlsZSB7CisKK2NsYXNzIElk
Q2hhbmdlSW52YWxpZGF0aW9uIHsKK3B1YmxpYzoKKyAgICBJZENoYW5nZUludmFsaWRhdGlvbihF
bGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdJZCk7CisgICAgfklkQ2hhbmdlSW52YWxpZGF0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBpbnZhbGlkYXRlU3R5bGUoY29uc3QgQXRvbWljU3RyaW5nJik7CisKKyAgICBjb25zdCBib29s
IG1faXNFbmFibGVkOworICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKKworICAgIEF0b21pY1N0cmlu
ZyBtX25ld0lkOworfTsKKworaW5saW5lIElkQ2hhbmdlSW52YWxpZGF0aW9uOjpJZENoYW5nZUlu
dmFsaWRhdGlvbihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5ld0lkKQorICAgIDogbV9pc0VuYWJsZWQoZWxlbWVudC5uZWVk
c1N0eWxlSW52YWxpZGF0aW9uKCkpCisgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKK3sKKyAgICBp
ZiAoIW1faXNFbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG9sZElkID09IG5ld0lk
KQorICAgICAgICByZXR1cm47CisgICAgbV9uZXdJZCA9IG5ld0lkOworICAgIGlmIChvbGRJZC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbnZhbGlkYXRlU3R5bGUob2xkSWQpOwor
fQorCitpbmxpbmUgSWRDaGFuZ2VJbnZhbGlkYXRpb246On5JZENoYW5nZUludmFsaWRhdGlvbigp
Cit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX25l
d0lkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGludmFsaWRhdGVTdHlsZShtX25l
d0lkKTsKK30KKworfQorfQorCisjZW5kaWYKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2NjI5KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTYtMDItMTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAg
IEZhY3RvciBpZCBtdXRhdGlvbiBzdHlsZSBpbnZhbGlkYXRpb24gY29kZSBpbnRvIGEgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDI4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9j
c3Mvc3R5bGUtaW52YWxpZGF0aW9uLWlkLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1pZC1jaGFuZ2Ut
ZGVzY2VuZGFudHMuaHRtbDogQWRkZWQuCisKIDIwMTYtMDItMTUgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIHN0eWxlIGludmFsaWRhdGlvbnMg
Zm9yIGF0dHJpYnV0ZSBzZWxlY3RvcnMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxl
LWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24tYXR0
cmlidXRlLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5NjYyOSkK
KysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hh
bmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLVRlc3QgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBlbGVtZW50IHN1YnRyZWUgbWluaW1hbGx5
IG9uIGNsYXNzIGF0dHJpYnV0ZSBjaGFuZ2UKK1Rlc3QgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBl
bGVtZW50IHN1YnRyZWUgbWluaW1hbGx5IG9uIGF0dHJpYnV0ZSBjaGFuZ2UKIAogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZh
bGlkYXRpb24tYXR0cmlidXRlLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdl
LWRlc2NlbmRhbnRzLmh0bWwJKHJldmlzaW9uIDE5NjYyOSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAKIDwvYm9keT4KIDxzY3JpcHQ+CiAKLWRl
c2NyaXB0aW9uKCdUZXN0IHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgZWxlbWVudCBzdWJ0cmVlIG1p
bmltYWxseSBvbiBjbGFzcyBhdHRyaWJ1dGUgY2hhbmdlJyk7CitkZXNjcmlwdGlvbignVGVzdCB0
aGF0IHdlIGludmFsaWRhdGUgdGhlIGVsZW1lbnQgc3VidHJlZSBtaW5pbWFsbHkgb24gYXR0cmli
dXRlIGNoYW5nZScpOwogCiBmdW5jdGlvbiB0ZXN0U3R5bGVDaGFuZ2VUeXBlKHRhZywgdHlwZSkK
IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1pZC1jaGFu
Z2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1pZC1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0
aW9uLWlkLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1NiBAQAorVGVzdCBiYXNpYyBzdHlsZSBpbnZhbGlkYXRpb24gb3B0aW1pemF0aW9u
IG9uIGlkIG11dGF0aW9uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGhh
c0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorTm9TdHlsZUNoYW5nZQorTm9TdHlsZUNoYW5nZQorUEFT
UyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitT
ZXR0aW5nIGlkIE5vdFRoZXJlCitOb1N0eWxlQ2hhbmdlCitOb1N0eWxlQ2hhbmdlCitQQVNTIHRl
c3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1NldHRp
bmcgaWQgaWQxCitGdWxsU3R5bGVDaGFuZ2UKK0Z1bGxTdHlsZUNoYW5nZQorUEFTUyB0ZXN0U3R5
bGVDaGFuZ2VUeXBlKCJyb290IiwgIkZ1bGxTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFz
RXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGlkIGlkMgorRnVsbFN0eWxlQ2hhbmdlCitG
dWxsU3R5bGVDaGFuZ2UKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJGdWxsU3R5
bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGlu
ZyBpZCBpZDEKK0Z1bGxTdHlsZUNoYW5nZQorRnVsbFN0eWxlQ2hhbmdlCitQQVNTIHRlc3RTdHls
ZUNoYW5nZVR5cGUoInJvb3QiLCAiRnVsbFN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNF
eHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgaWQgaWQzCitGdWxsU3R5bGVDaGFuZ2UKK0Z1
bGxTdHlsZUNoYW5nZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIkZ1bGxTdHls
ZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5n
IGlkIGlkNAorSW5saW5lU3R5bGVDaGFuZ2UKK0lubGluZVN0eWxlQ2hhbmdlCitQQVNTIHRlc3RT
dHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNT
IGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBpZCBpZDQKK05vU3R5bGVDaGFuZ2UK
K05vU3R5bGVDaGFuZ2UKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxl
Q2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcg
aWQgTm90VGhlcmUKK0lubGluZVN0eWxlQ2hhbmdlCitJbmxpbmVTdHlsZUNoYW5nZQorUEFTUyB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQor
U2V0dGluZyBpZCBpZDEKK0Z1bGxTdHlsZUNoYW5nZQorRnVsbFN0eWxlQ2hhbmdlCitQQVNTIHRl
c3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiRnVsbFN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFT
UyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1p
bnZhbGlkYXRpb24taWQtY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWlkLWNoYW5nZS1kZXNjZW5kYW50
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxp
ZGF0aW9uLWlkLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyogewor
ICAgIGNvbG9yOiBibGFjazsKK30KKyNpZDEgdGFyZ2V0IHsKKyAgICBjb2xvcjogcmdiKDEsIDEs
IDEpOworfQorCisjaWQyID4gaW5lcnQgdGFyZ2V0IHsKKyAgICBjb2xvcjogcmdiKDIsIDIsIDIp
OworfQorCisjaWQzIHsKKyAgICBjb2xvcjogcmdiKDMsIDMsIDMpOworfQorCisjaWQ0IHsKKyAg
ICBjb2xvcjogcmdiKDQsIDQsIDQpOworfQorCisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8cm9vdD4KKyAgICAgICAgPCEtLSBXaXRoIHJlbmRlcmVyIC0tPgorICAgICAgICA8aW5l
cnQ+CisgICAgICAgICAgICA8aW5lcnQ+CisgICAgICAgICAgICAgICAgPGluZXJ0PjwvaW5lcnQ+
CisgICAgICAgICAgICAgICAgPHRhcmdldD4KKyAgICAgICAgICAgICAgICAgICAgPGluZXJ0Pjwv
aW5lcnQ+CisgICAgICAgICAgICAgICAgICAgIDx0YXJnZXQ+PC90YXJnZXQ+CisgICAgICAgICAg
ICAgICAgPC90YXJnZXQ+CisgICAgICAgICAgICA8L2luZXJ0PgorICAgICAgICAgICAgPHRhcmdl
dD48L3RhcmdldD4KKyAgICAgICAgICAgIDxpbmVydD48L2luZXJ0PgorICAgICAgICA8L2luZXJ0
PgorICAgIDwvcm9vdD4KKyAgICA8cm9vdCBzdHlsZT0iZGlzcGxheTpub25lOyI+CisgICAgICAg
IDwhLS0gV2l0aG91dCByZW5kZXJlciAtLT4KKyAgICAgICAgPGluZXJ0PgorICAgICAgICAgICAg
PGluZXJ0PgorICAgICAgICAgICAgICAgIDxpbmVydD48L2luZXJ0PgorICAgICAgICAgICAgICAg
IDx0YXJnZXQ+CisgICAgICAgICAgICAgICAgICAgIDxpbmVydD48L2luZXJ0PgorICAgICAgICAg
ICAgICAgICAgICA8dGFyZ2V0PjwvdGFyZ2V0PgorICAgICAgICAgICAgICAgIDwvdGFyZ2V0Pgor
ICAgICAgICAgICAgPC9pbmVydD4KKyAgICAgICAgICAgIDx0YXJnZXQ+PC90YXJnZXQ+CisgICAg
ICAgICAgICA8aW5lcnQ+PC9pbmVydD4KKyAgICAgICAgPC9pbmVydD4KKyAgICA8L3Jvb3Q+Cis8
L2JvZHk+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCBiYXNpYyBzdHlsZSBpbnZhbGlk
YXRpb24gb3B0aW1pemF0aW9uIG9uIGlkIG11dGF0aW9uJyk7CisKK2Z1bmN0aW9uIHRlc3RTdHls
ZUNoYW5nZVR5cGUodGFnLCB0eXBlKQoreworICAgIHZhciBlbGVtZW50cyA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwodGFnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgIGRlYnVnKHdpbmRvdy5pbnRlcm5hbHMuc3R5bGVDaGFuZ2VU
eXBlKGVsZW1lbnRzW2ldKSk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLnN0eWxlQ2hh
bmdlVHlwZShlbGVtZW50c1tpXSkgIT0gdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHlsZUludmFsaWRh
dGlvbihleHBlY3RlZERlc2NlbmRhbnRTdHlsZUNoYW5nZSkgeworICAgIHNob3VsZEJlVHJ1ZSgn
dGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICInICsgZXhwZWN0ZWREZXNjZW5kYW50U3R5bGVD
aGFuZ2UgKyciKScpOworfQorCitmdW5jdGlvbiBzZXRJZChuYW1lKSB7CisgICAgZGVidWcoIlNl
dHRpbmcgaWQgIiArIG5hbWUpOworICAgIHZhciBhbGxSb290cyA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoInJvb3QiKTsKKyAgICBhbGxSb290c1swXS5pZCA9IG5hbWU7CisgICAgYWxsUm9v
dHNbMV0uaWQgPSBuYW1lCit9CisKK2Z1bmN0aW9uIGNoZWNrU3R5bGUobikgeworICAgIGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICBoYXNFeHBlY3RlZFN0eWxlID0g
dHJ1ZTsKKyAgICBleHBlY3RlZENvbG9yID0gJ3JnYignK24rJywgJytuKycsICcrbisnKSc7Cisg
ICAgdmFyIHRhcmdldHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0YXJnZXQiKTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaGFz
RXhwZWN0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUodGFyZ2V0c1tpXSkuY29sb3IgPT0gZXhw
ZWN0ZWRDb2xvcjsKKyAgICAgICAgaWYgKCFoYXNFeHBlY3RlZFN0eWxlKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHNob3VsZEJlVHJ1ZSgiaGFzRXhwZWN0ZWRTdHlsZSIpOworfQor
CitjaGVja1N0eWxlKDApOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7
CisKK3NldElkKCdOb3RUaGVyZScpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hh
bmdlIik7CisKK3NldElkKCdpZDEnKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiRnVsbFN0eWxl
Q2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCitzZXRJZCgnaWQyJyk7Cit0ZXN0U3R5bGVJbnZh
bGlkYXRpb24oIkZ1bGxTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgyKTsKKworc2V0SWQoJ2lk
MScpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJGdWxsU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5
bGUoMSk7CisKK3NldElkKCdpZDMnKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiRnVsbFN0eWxl
Q2hhbmdlIik7CitjaGVja1N0eWxlKDApOworCitzZXRJZCgnaWQ0Jyk7Cit0ZXN0U3R5bGVJbnZh
bGlkYXRpb24oIklubGluZVN0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDApOworCitzZXRJZCgn
aWQ0Jyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5
bGUoMCk7CisKK3NldElkKCdOb3RUaGVyZScpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxp
bmVTdHlsZUNoYW5nZSIpOworCitzZXRJZCgnaWQxJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24o
IkZ1bGxTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgxKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+
Cg==
</data>
<flag name="review"
          id="296241"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>