<?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>204351</bug_id>
          
          <creation_ts>2019-11-19 06:24:54 -0800</creation_ts>
          <short_desc>Move RuleData to a file of its own</short_desc>
          <delta_ts>2019-11-19 08:11:18 -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>InRadar</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>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1591505</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-19 06:24:54 -0800</bug_when>
    <thetext>From RuleSet.h/cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591506</commentid>
    <comment_count>1</comment_count>
      <attachid>383863</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-19 06:39:35 -0800</bug_when>
    <thetext>Created attachment 383863
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591507</commentid>
    <comment_count>2</comment_count>
      <attachid>383864</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-11-19 06:45:04 -0800</bug_when>
    <thetext>Created attachment 383864
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591526</commentid>
    <comment_count>3</comment_count>
      <attachid>383864</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-19 08:10:47 -0800</bug_when>
    <thetext>Comment on attachment 383864
patch

Clearing flags on attachment: 383864

Committed r252629: &lt;https://trac.webkit.org/changeset/252629&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591527</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-19 08:10:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591528</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-19 08:11:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/57322391&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383863</attachid>
            <date>2019-11-19 06:39:35 -0800</date>
            <delta_ts>2019-11-19 06:45:04 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ruledata-file.patch</filename>
            <type>text/plain</type>
            <size>16120</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1Y2Q0ZWZjODExNC4uNjdjY2RiMTVhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxOS0xMS0xOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBSdWxlRGF0YSB0byBhIGZpbGUgb2YgaXRzIG93bgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3R5
bGUvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tcHV0ZU1hdGNoQmFz
ZWRPblJ1bGVIYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpzZWxlY3Rv
ckNhbk1hdGNoUHNldWRvRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6aXNDb21tb25BdHRyaWJ1dGVTZWxlY3RvckF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6Y29tcHV0ZUNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rv
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZGV0ZXJtaW5lUHJvcGVydHlX
aGl0ZWxpc3RUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0
YTo6UnVsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHN0eWxlL1J1bGVTZXQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0YTo6cG9zaXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpydWxlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0YTo6c2VsZWN0b3IgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpzZWxlY3RvckluZGV4IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0YTo6c2VsZWN0
b3JMaXN0SW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1
bGVEYXRhOjpjYW5NYXRjaFBzZXVkb0VsZW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjptYXRjaEJhc2VkT25SdWxlSGFzaCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OmNvbnRhaW5zVW5jb21t
b25BdHRyaWJ1dGVTZWxlY3RvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6UnVsZURhdGE6OmxpbmtNYXRjaFR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpkZXNjZW5kYW50U2Vs
ZWN0b3JJZGVudGlmaWVySGFzaGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpSdWxlRGF0YTo6ZGlzYWJsZVNlbGVjdG9yRmlsdGVyaW5nKTogRGVsZXRlZC4KKwog
MjAxOS0xMS0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
TW92ZSBSdWxlU2V0IHRvIFN0eWxlIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4OWI4MjA1
YjgyYi4uMTQwNzk5ZWRjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMzQ0LDYgKzIzNDQsNyBAQCBz
dHlsZS9JZENoYW5nZUludmFsaWRhdGlvbi5jcHAKIHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKIHN0eWxlL01hdGNoZWREZWNsYXJhdGlvbnNDYWNoZS5jcHAKIHN0eWxlL1Byb3BlcnR5Q2Fz
Y2FkZS5jcHAKK3N0eWxlL1J1bGVEYXRhLmNwcAogc3R5bGUvUnVsZUZlYXR1cmUuY3BwCiBzdHls
ZS9SdWxlU2V0LmNwcAogc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZmM0ODgwMGVhMy4u
MGZhOTkyZTFjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTQ4NDEsNiArNDg0MSw3IEBACiAJCUU0N0UyNzY1MTYwMzZFRDIw
MEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RTI3NjQxNjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVu
c2lvblN0eWxlU2hlZXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTQ4MTM3QjkxREIzQjUyNjAwNUM1OUJGIC8qIFN0eWxlVmFsaWRpdHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODEzN0I4MURC
M0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ4NEEzM0UyMzA1NTMyNTAwOUFERTZBIC8qIExp
bmVMYXlvdXRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0ODRBMzNCMjMwNTUzMDMwMDlBREU2QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2Fs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTQ4
NjNDRkUyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDg2M0NGRDIzODQyRTlFMDA5NzIxNTggLyogUnVs
ZURhdGEuaCAqLzsgfTsKIAkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVM
YXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
ODk0NEExMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5MTZGRjcxOTVERjZBMDAw
NUFCMzQ5IC8qIExheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDkxNkZGNjE5NURGNkEwMDA1QUIzNDkgLyogTGF5
ZXJGbHVzaFRocm90dGxlU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFNDk0NkVBRjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1w
b3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDk0
NkVBRDE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MTg3LDYgKzE1MTg4LDggQEAK
IAkJRTQ4MTM3QjgxREIzQjUyNjAwNUM1OUJGIC8qIFN0eWxlVmFsaWRpdHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVWYWxpZGl0eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFNDg0QTMzQjIzMDU1MzAzMDA5QURFNkEgLyogTGluZUxheW91dFRyYXZl
cnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lTGF5b3V0VHJhdmVy
c2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0ODRBMzNEMjMwNTUzMDMwMDlB
REU2QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFNDg2M0NGQTIzODQyRTg3MDA5NzIxNTggLyogUnVsZURhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUnVsZURhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFNDg2M0NGRDIzODQyRTlFMDA5NzIxNTggLyogUnVsZURhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVsZURhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4OTQ0QTAxODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxp
bmVMYXlvdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxl
TGluZUxheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0ODk0NEExMTgw
QjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQ5MTZGRjYxOTVERjZBMDAwNUFCMzQ5IC8qIExheWVyRmx1c2hUaHJvdHRsZVN0YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheWVyRmx1c2hUaHJvdHRsZVN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzAyNyw2ICsyNzAzMCw4IEBA
CiAJCQkJRTQ1QkE2QTgyMzc0OTI2QjAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNo
ZS5oICovLAogCQkJCUU0QUJBQkU1MjM2MUEzNDIwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUu
Y3BwICovLAogCQkJCUU0QUJBQkUyMjM2MUEzMjkwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUu
aCAqLywKKwkJCQlFNDg2M0NGQTIzODQyRTg3MDA5NzIxNTggLyogUnVsZURhdGEuY3BwICovLAor
CQkJCUU0ODYzQ0ZEMjM4NDJFOUUwMDk3MjE1OCAvKiBSdWxlRGF0YS5oICovLAogCQkJCUE3OUJB
RDlEMTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlRmVhdHVyZS5jcHAgKi8sCiAJCQkJQTc5QkFEOUUx
NjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVGZWF0dXJlLmggKi8sCiAJCQkJQTc5QkFEOUYxNjFFN0Yz
RjAwQzJFNjUyIC8qIFJ1bGVTZXQuY3BwICovLApAQCAtMzEyMTgsNiArMzEyMjMsNyBAQAogCQkJ
CUU0NUJBNkFBMjM3NDkyNkMwMDRERkMwNyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUZBQkU3MkY1MTA1OUMxRUIwMEQ4ODhDQyAvKiBNYXRoTUxBbm5v
dGF0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjUxMDU5QzFFQjAwRDk5
OUREIC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0ODYzQ0ZFMjM4NDJF
OUUwMDk3MjE1OCAvKiBSdWxlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUMxMkRG
QjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwQkNGODNGNzEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGQUJFNzJGOTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
UnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAppbmRleCAxOTgw
Zjk1MjU4Yi4uZDQwMWI2Nzg3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDQtMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBj
YXJld29sZi5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgTmljaG9sYXMgU2hhbmtz
ICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxl
eGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3
LnRvcmNobW9iaWxlLmNvbS8pCkBAIC01MywxMjEgKzUzLDYgQEAgbmFtZXNwYWNlIFN0eWxlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotc3RhdGljIGlu
bGluZSBNYXRjaEJhc2VkT25SdWxlSGFzaCBjb21wdXRlTWF0Y2hCYXNlZE9uUnVsZUhhc2goY29u
c3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yKQotewotICAgIGlmIChzZWxlY3Rvci50YWdIaXN0b3J5
KCkpCi0gICAgICAgIHJldHVybiBNYXRjaEJhc2VkT25SdWxlSGFzaDo6Tm9uZTsKLQotICAgIGlm
IChzZWxlY3Rvci5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpUYWcpIHsKLSAgICAgICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnUXVhbGlmaWVkTmFtZSA9IHNlbGVjdG9yLnRhZ1FOYW1lKCk7Ci0g
ICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIHNlbGVjdG9yTmFtZXNwYWNlID0gdGFnUXVhbGlmaWVk
TmFtZS5uYW1lc3BhY2VVUkkoKTsKLSAgICAgICAgaWYgKHNlbGVjdG9yTmFtZXNwYWNlID09IHN0
YXJBdG9tKCkgfHwgc2VsZWN0b3JOYW1lc3BhY2UgPT0geGh0bWxOYW1lc3BhY2VVUkkpIHsKLSAg
ICAgICAgICAgIGlmICh0YWdRdWFsaWZpZWROYW1lID09IGFueVFOYW1lKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpVbml2ZXJzYWw7Ci0gICAgICAgICAg
ICByZXR1cm4gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNzQzsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6Ok5vbmU7Ci0gICAgfQotICAgIGlmIChTZWxl
Y3RvckNoZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvcigmc2VsZWN0b3IpKQotICAg
ICAgICByZXR1cm4gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNzQjsKLSAgICBpZiAoc2VsZWN0
b3IubWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6SWQpCi0gICAgICAgIHJldHVybiBNYXRjaEJhc2Vk
T25SdWxlSGFzaDo6Q2xhc3NBOwotICAgIGlmIChzZWxlY3Rvci5tYXRjaCgpID09IENTU1NlbGVj
dG9yOjpDbGFzcykKLSAgICAgICAgcmV0dXJuIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpDbGFzc0I7
Ci0gICAgcmV0dXJuIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpOb25lOwotfQotCi1zdGF0aWMgYm9v
bCBzZWxlY3RvckNhbk1hdGNoUHNldWRvRWxlbWVudChjb25zdCBDU1NTZWxlY3RvciYgcm9vdFNl
bGVjdG9yKQotewotICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9ICZyb290U2VsZWN0
b3I7Ci0gICAgZG8gewotICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoZXNQc2V1ZG9FbGVtZW50
KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBpZiAoY29uc3QgQ1NTU2Vs
ZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCkpIHsKLSAg
ICAgICAgICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHN1YlNlbGVjdG9yID0gc2VsZWN0b3JM
aXN0LT5maXJzdCgpOyBzdWJTZWxlY3Rvcjsgc3ViU2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6
Om5leHQoc3ViU2VsZWN0b3IpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yQ2FuTWF0
Y2hQc2V1ZG9FbGVtZW50KCpzdWJTZWxlY3RvcikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc2VsZWN0b3IgPSBz
ZWxlY3Rvci0+dGFnSGlzdG9yeSgpOwotICAgIH0gd2hpbGUgKHNlbGVjdG9yKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbW1vbkF0dHJpYnV0ZVNlbGVj
dG9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKLXsKLSAgICAvLyBU
aGVzZSBhcmUgZXhwbGljaXRseSB0ZXN0ZWQgZm9yIGVxdWFsaXR5IGluIGNhblNoYXJlU3R5bGVX
aXRoRWxlbWVudC4KLSAgICByZXR1cm4gYXR0cmlidXRlID09IHR5cGVBdHRyIHx8IGF0dHJpYnV0
ZSA9PSByZWFkb25seUF0dHI7Ci19Ci0KLXN0YXRpYyBib29sIGNvbXB1dGVDb250YWluc1VuY29t
bW9uQXR0cmlidXRlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImIHJvb3RTZWxlY3RvciwgYm9v
bCBtYXRjaGVzUmlnaHRtb3N0RWxlbWVudCA9IHRydWUpCi17Ci0gICAgY29uc3QgQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yID0gJnJvb3RTZWxlY3RvcjsKLSAgICBkbyB7Ci0gICAgICAgIGlmIChzZWxl
Y3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogY29u
c2lkZXJpbmcgbm9uLXJpZ2h0bW9zdCBzaW1wbGUgc2VsZWN0b3JzIGlzIG5lY2Vzc2FyeSBiZWNh
dXNlIG9mIHRoZSBzdHlsZSBzaGFyaW5nIG9mIGNvdXNpbnMuCi0gICAgICAgICAgICAvLyBJdCBp
cyBhIHByaW1pdGl2ZSBzb2x1dGlvbiB3aGljaCBkaXNhYmxlIGEgbG90IG9mIHN0eWxlIHNoYXJp
bmcgb24gcGFnZXMgdGhhdCByZWx5IG9uIGF0dHJpYnV0ZXMgZm9yIHN0eWxpbmcuCi0gICAgICAg
ICAgICAvLyBXZSBzaG91bGQgaW52ZXN0aWdhdGUgYmV0dGVyIHdheXMgb2YgZG9pbmcgdGhpcy4K
LSAgICAgICAgICAgIGlmICghaXNDb21tb25BdHRyaWJ1dGVTZWxlY3RvckF0dHJpYnV0ZShzZWxl
Y3Rvci0+YXR0cmlidXRlKCkpIHx8ICFtYXRjaGVzUmlnaHRtb3N0RWxlbWVudCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb25zdCBDU1NT
ZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKSkgewot
ICAgICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc3ViU2VsZWN0b3IgPSBzZWxlY3Rv
ckxpc3QtPmZpcnN0KCk7IHN1YlNlbGVjdG9yOyBzdWJTZWxlY3RvciA9IENTU1NlbGVjdG9yTGlz
dDo6bmV4dChzdWJTZWxlY3RvcikpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29tcHV0ZUNvbnRh
aW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcigqc3ViU2VsZWN0b3IsIG1hdGNoZXNSaWdodG1v
c3RFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NT
U2VsZWN0b3I6OlN1YnNlbGVjdG9yKQotICAgICAgICAgICAgbWF0Y2hlc1JpZ2h0bW9zdEVsZW1l
bnQgPSBmYWxzZTsKLQotICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7
Ci0gICAgfSB3aGlsZSAoc2VsZWN0b3IpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGlj
IGlubGluZSBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxpc3RU
eXBlKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKLXsKLSAgICBmb3IgKGNvbnN0IENTU1Nl
bGVjdG9yKiBjb21wb25lbnQgPSBzZWxlY3RvcjsgY29tcG9uZW50OyBjb21wb25lbnQgPSBjb21w
b25lbnQtPnRhZ0hpc3RvcnkoKSkgewotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICAgICAg
aWYgKGNvbXBvbmVudC0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiAo
Y29tcG9uZW50LT5wc2V1ZG9FbGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVt
ZW50Q3VlIHx8IGNvbXBvbmVudC0+dmFsdWUoKSA9PSBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1Bz
ZXVkb0lkKCkpKQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5V2hpdGVsaXN0Q3VlOwotI2Vu
ZGlmCi0gICAgICAgIGlmIChjb21wb25lbnQtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnQgJiYgY29tcG9uZW50LT5wc2V1ZG9FbGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50TWFya2VyKQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5V2hpdGVs
aXN0TWFya2VyOwotCi0gICAgICAgIGlmIChjb25zdCBhdXRvKiBzZWxlY3Rvckxpc3QgPSBzZWxl
Y3Rvci0+c2VsZWN0b3JMaXN0KCkpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byogc3Vi
U2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QtPmZpcnN0KCk7IHN1YlNlbGVjdG9yOyBzdWJTZWxlY3Rv
ciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzdWJTZWxlY3RvcikpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIHdoaXRlbGlzdFR5cGUgPSBkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoc3Vi
U2VsZWN0b3IpOwotICAgICAgICAgICAgICAgIGlmICh3aGl0ZWxpc3RUeXBlICE9IFByb3BlcnR5
V2hpdGVsaXN0Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdoaXRlbGlzdFR5cGU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIFByb3BlcnR5V2hp
dGVsaXN0Tm9uZTsKLX0KLQotUnVsZURhdGE6OlJ1bGVEYXRhKFN0eWxlUnVsZSogcnVsZSwgdW5z
aWduZWQgc2VsZWN0b3JJbmRleCwgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgsIHVuc2lnbmVk
IHBvc2l0aW9uKQotICAgIDogbV9ydWxlKHJ1bGUpCi0gICAgLCBtX3NlbGVjdG9ySW5kZXgoc2Vs
ZWN0b3JJbmRleCkKLSAgICAsIG1fc2VsZWN0b3JMaXN0SW5kZXgoc2VsZWN0b3JMaXN0SW5kZXgp
Ci0gICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQotICAgICwgbV9tYXRjaEJhc2VkT25SdWxlSGFz
aChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29tcHV0ZU1hdGNoQmFzZWRPblJ1bGVIYXNoKCpzZWxl
Y3RvcigpKSkpCi0gICAgLCBtX2Nhbk1hdGNoUHNldWRvRWxlbWVudChzZWxlY3RvckNhbk1hdGNo
UHNldWRvRWxlbWVudCgqc2VsZWN0b3IoKSkpCi0gICAgLCBtX2NvbnRhaW5zVW5jb21tb25BdHRy
aWJ1dGVTZWxlY3Rvcihjb21wdXRlQ29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCpz
ZWxlY3RvcigpKSkKLSAgICAsIG1fbGlua01hdGNoVHlwZShTZWxlY3RvckNoZWNrZXI6OmRldGVy
bWluZUxpbmtNYXRjaFR5cGUoc2VsZWN0b3IoKSkpCi0gICAgLCBtX3Byb3BlcnR5V2hpdGVsaXN0
VHlwZShkZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoc2VsZWN0b3IoKSkpCi0gICAgLCBt
X2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXMoU2VsZWN0b3JGaWx0ZXI6OmNvbGxl
Y3RIYXNoZXMoKnNlbGVjdG9yKCkpKQotewotICAgIEFTU0VSVChtX3Bvc2l0aW9uID09IHBvc2l0
aW9uKTsKLSAgICBBU1NFUlQobV9zZWxlY3RvckluZGV4ID09IHNlbGVjdG9ySW5kZXgpOwotfQot
CiBSdWxlU2V0OjpSdWxlU2V0KCkgPSBkZWZhdWx0OwogCiBSdWxlU2V0Ojp+UnVsZVNldCgpID0g
ZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAppbmRleCA3ZmFkZmE2NWE0ZC4uM2I5NjU4MTQw
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIxLDYgKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJS
dWxlRGF0YS5oIgogI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JD
b21waWxlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVyLmgiCkBAIC0zMyw3NiArMzQsMTMg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTU2VsZWN0b3I7Ci1jbGFzcyBDb250
YWluZXJOb2RlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKLWNsYXNzIE5vZGU7CiBjbGFz
cyBTdHlsZVNoZWV0Q29udGVudHM7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKIGNsYXNzIFJlc29s
dmVyOwogCi1lbnVtIFByb3BlcnR5V2hpdGVsaXN0VHlwZSB7Ci0gICAgUHJvcGVydHlXaGl0ZWxp
c3ROb25lICAgPSAwLAotICAgIFByb3BlcnR5V2hpdGVsaXN0TWFya2VyLAotI2lmIEVOQUJMRShW
SURFT19UUkFDSykKLSAgICBQcm9wZXJ0eVdoaXRlbGlzdEN1ZQotI2VuZGlmCi19OwotCi1lbnVt
IGNsYXNzIE1hdGNoQmFzZWRPblJ1bGVIYXNoIDogdW5zaWduZWQgewotICAgIE5vbmUsCi0gICAg
VW5pdmVyc2FsLAotICAgIENsYXNzQSwKLSAgICBDbGFzc0IsCi0gICAgQ2xhc3NDCi19OwotCi1j
bGFzcyBSdWxlRGF0YSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGlt
dW1TZWxlY3RvckNvbXBvbmVudENvdW50ID0gODE5MjsKLQotICAgIFJ1bGVEYXRhKFN0eWxlUnVs
ZSosIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4LCB1
bnNpZ25lZCBwb3NpdGlvbik7Ci0KLSAgICB1bnNpZ25lZCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb247IH0KLSAgICBTdHlsZVJ1bGUqIHJ1bGUoKSBjb25zdCB7IHJldHVybiBt
X3J1bGUuZ2V0KCk7IH0KLSAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3J1bGUtPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yQXQobV9zZWxlY3RvckluZGV4
KTsgfQotICAgIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3NlbGVj
dG9ySW5kZXg7IH0KLSAgICB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VsZWN0b3JMaXN0SW5kZXg7IH0KLQotICAgIGJvb2wgY2FuTWF0Y2hQc2V1ZG9FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jYW5NYXRjaFBzZXVkb0VsZW1lbnQ7IH0KLSAgICBNYXRj
aEJhc2VkT25SdWxlSGFzaCBtYXRjaEJhc2VkT25SdWxlSGFzaCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PE1hdGNoQmFzZWRPblJ1bGVIYXNoPihtX21hdGNoQmFzZWRPblJ1bGVIYXNoKTsg
fQotICAgIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3I7IH0KLSAgICB1bnNpZ25l
ZCBsaW5rTWF0Y2hUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9saW5rTWF0Y2hUeXBlOyB9Ci0gICAg
UHJvcGVydHlXaGl0ZWxpc3RUeXBlIHByb3BlcnR5V2hpdGVsaXN0VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFByb3BlcnR5V2hpdGVsaXN0VHlwZT4obV9wcm9wZXJ0eVdoaXRlbGlz
dFR5cGUpOyB9Ci0gICAgY29uc3QgU2VsZWN0b3JGaWx0ZXI6Okhhc2hlcyYgZGVzY2VuZGFudFNl
bGVjdG9ySWRlbnRpZmllckhhc2hlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY2VuZGFudFNlbGVj
dG9ySWRlbnRpZmllckhhc2hlczsgfQotCi0gICAgdm9pZCBkaXNhYmxlU2VsZWN0b3JGaWx0ZXJp
bmcoKSB7IG1fZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlc1swXSA9IDA7IH0KLQot
cHJpdmF0ZToKLSAgICBSZWZQdHI8U3R5bGVSdWxlPiBtX3J1bGU7Ci0gICAgdW5zaWduZWQgbV9z
ZWxlY3RvckluZGV4IDogMTY7Ci0gICAgdW5zaWduZWQgbV9zZWxlY3Rvckxpc3RJbmRleCA6IDE2
OwotICAgIC8vIFRoaXMgbnVtYmVyIHdhcyBwaWNrZWQgZmFpcmx5IGFyYml0cmFyaWx5LiBXZSBj
YW4gcHJvYmFibHkgbG93ZXIgaXQgaWYgd2UgbmVlZCB0by4KLSAgICAvLyBTb21lIHNpbXBsZSB0
ZXN0aW5nIHNob3dlZCA8MTAwLDAwMCBSdWxlRGF0YSdzIG9uIGxhcmdlIHNpdGVzLgotICAgIHVu
c2lnbmVkIG1fcG9zaXRpb24gOiAxODsKLSAgICB1bnNpZ25lZCBtX21hdGNoQmFzZWRPblJ1bGVI
YXNoIDogMzsKLSAgICB1bnNpZ25lZCBtX2Nhbk1hdGNoUHNldWRvRWxlbWVudCA6IDE7Ci0gICAg
dW5zaWduZWQgbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IgOiAxOwotICAgIHVu
c2lnbmVkIG1fbGlua01hdGNoVHlwZSA6IDI7IC8vICBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRj
aE1hc2sKLSAgICB1bnNpZ25lZCBtX3Byb3BlcnR5V2hpdGVsaXN0VHlwZSA6IDI7Ci0gICAgU2Vs
ZWN0b3JGaWx0ZXI6Okhhc2hlcyBtX2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXM7
Ci19OwotICAgIAotc3RydWN0IFNhbWVTaXplQXNSdWxlRGF0YSB7Ci0gICAgdm9pZCogYTsKLSAg
ICB1bnNpZ25lZCBiOwotICAgIHVuc2lnbmVkIGM7Ci0gICAgdW5zaWduZWQgZFs0XTsKLX07Ci0K
LUNPTVBJTEVfQVNTRVJUKHNpemVvZihSdWxlRGF0YSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSdWxl
RGF0YSksIFJ1bGVEYXRhX3Nob3VsZF9zdGF5X3NtYWxsKTsKLQogY2xhc3MgUnVsZVNldCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVsZVNldCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgpAQCAtMTkyLDEwICsxMzAsMyBAQCBpbmxpbmUgY29uc3QgUnVsZVNldDo6UnVs
ZURhdGFWZWN0b3IqIFJ1bGVTZXQ6OnRhZ1J1bGVzKGNvbnN0IEF0b21TdHJpbmcmIGtleSwgYgog
CiB9IC8vIG5hbWVzcGFjZSBTdHlsZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotLy8gUnVsZURhdGEgaXMgc2ltcGxlIGVub3VnaCB0aGF0IGluaXRpYWxpemlu
ZyB0byAwIGFuZCBtb3Zpbmcgd2l0aCBtZW1jcHkgd2lsbCB0b3RhbGx5IHdvcmsuCi10ZW1wbGF0
ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhPiA6IFNpbXBs
ZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383864</attachid>
            <date>2019-11-19 06:45:04 -0800</date>
            <delta_ts>2019-11-19 08:10:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ruledata-file-2.patch</filename>
            <type>text/plain</type>
            <size>28686</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1Y2Q0ZWZjODExNC4uNjI4ZWMxNTRmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxOS0xMS0xOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBSdWxlRGF0YSB0byBhIGZpbGUgb2YgaXRzIG93bgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHN0eWxlL1J1bGVEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29t
cHV0ZU1hdGNoQmFzZWRPblJ1bGVIYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpzZWxl
Y3RvckNhbk1hdGNoUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aXND
b21tb25BdHRyaWJ1dGVTZWxlY3RvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6Y29tcHV0ZUNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6ZGV0ZXJtaW5lUHJvcGVydHlXaGl0ZWxpc3RUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0YTo6UnVsZURhdGEpOgorICAgICAgICAqIHN0eWxlL1J1
bGVEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpwb3Np
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OnJ1bGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpzZWxlY3RvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OnNlbGVjdG9ySW5kZXggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpzZWxlY3Rvckxpc3RJbmRleCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OmNhbk1hdGNoUHNldWRv
RWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6Om1hdGNo
QmFzZWRPblJ1bGVIYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0
YTo6Y29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpSdWxlRGF0YTo6bGlua01hdGNoVHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OnByb3BlcnR5V2hpdGVsaXN0VHlwZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OmRlc2NlbmRhbnRTZWxlY3RvcklkZW50
aWZpZXJIYXNoZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpk
aXNhYmxlU2VsZWN0b3JGaWx0ZXJpbmcpOgorICAgICAgICAqIHN0eWxlL1J1bGVTZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmNvbXB1dGVNYXRjaEJhc2VkT25SdWxlSGFzaCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6c2VsZWN0b3JDYW5NYXRjaFBzZXVkb0Vs
ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmlzQ29tbW9uQXR0cmli
dXRlU2VsZWN0b3JBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OmNvbXB1dGVDb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OmRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlwZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OlJ1bGVEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBzdHlsZS9SdWxlU2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6UnVsZURhdGE6OnBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpSdWxlRGF0YTo6cnVsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UnVsZURhdGE6OnNlbGVjdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpSdWxlRGF0YTo6c2VsZWN0b3JJbmRleCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6OnNlbGVjdG9yTGlzdEluZGV4IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0YTo6Y2FuTWF0Y2hQ
c2V1ZG9FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
dWxlRGF0YTo6bWF0Y2hCYXNlZE9uUnVsZUhhc2ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjpjb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0
b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVEYXRhOjps
aW5rTWF0Y2hUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpS
dWxlRGF0YTo6cHJvcGVydHlXaGl0ZWxpc3RUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0YTo6ZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhh
c2hlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZURhdGE6
OmRpc2FibGVTZWxlY3RvckZpbHRlcmluZyk6IERlbGV0ZWQuCisKIDIwMTktMTEtMTggIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgUnVsZVNldCB0byBT
dHlsZSBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggODliODIwNWI4MmIuLjE0MDc5OWVkY2Vk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjM0NCw2ICsyMzQ0LDcgQEAgc3R5bGUvSWRDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwCiBzdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCiBzdHlsZS9NYXRjaGVk
RGVjbGFyYXRpb25zQ2FjaGUuY3BwCiBzdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCitzdHlsZS9S
dWxlRGF0YS5jcHAKIHN0eWxlL1J1bGVGZWF0dXJlLmNwcAogc3R5bGUvUnVsZVNldC5jcHAKIHN0
eWxlL1N0eWxlQWRqdXN0ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmZjNDg4MDBlYTMuLjBmYTk5MmUxY2Y4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC00ODQxLDYgKzQ4NDEsNyBAQAogCQlFNDdFMjc2NTE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5z
aW9uU3R5bGVTaGVldHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0ODEz
N0I5MURCM0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDgxMzdCODFEQjNCNTI2MDA1QzU5QkYgLyog
U3R5bGVWYWxpZGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUU0ODRBMzNFMjMwNTUzMjUwMDlBREU2QSAvKiBMaW5lTGF5b3V0VHJhdmVyc2Fs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDg0QTMz
QjIzMDU1MzAzMDA5QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNhbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0ODYzQ0ZFMjM4NDJFOUUwMDk3
MjE1OCAvKiBSdWxlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ4NjNDRkQyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggKi87IH07CiAJ
CUU0ODk0NEEzMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDg5NDRBMTE4MEI1N0Q4MDBG
MTY1RDggLyogU2ltcGxlTGluZUxheW91dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUU0OTE2RkY3MTk1REY2QTAwMDVBQjM0OSAvKiBMYXllckZs
dXNoVGhyb3R0bGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTQ5MTZGRjYxOTVERjZBMDAwNUFCMzQ5IC8qIExheWVyRmx1c2hUaHJvdHRsZVN0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTQ5NDZFQUYxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5NDZFQUQxNTZFNjRERDAwRDMy
OTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xNTE4Nyw2ICsxNTE4OCw4IEBACiAJCUU0ODEzN0I4MURCM0I1
MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0eWxlVmFsaWRpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4
NEEzM0IyMzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUxheW91dFRyYXZlcnNhbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNDg0QTMzRDIzMDU1MzAzMDA5QURFNkEgLyogTGluZUxheW91
dFRyYXZlcnNhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5l
TGF5b3V0VHJhdmVyc2FsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTQ4NjND
RkEyMzg0MkU4NzAwOTcyMTU4IC8qIFJ1bGVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJ1bGVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTQ4NjNDRkQyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0ODk0NEEwMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDg5NDRBMTE4MEI1N0Q4MDBGMTY1RDggLyog
U2ltcGxlTGluZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1w
bGVMaW5lTGF5b3V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OTE2RkY2MTk1
REY2QTAwMDVBQjM0OSAvKiBMYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjcwMjcsNiArMjcwMzAsOCBAQAogCQkJCUU0NUJBNkE4MjM3
NDkyNkIwMDRERkMwNyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCAqLywKIAkJCQlFNEFC
QUJFNTIzNjFBMzQyMDBGQTQzNDUgLyogUHJvcGVydHlDYXNjYWRlLmNwcCAqLywKIAkJCQlFNEFC
QUJFMjIzNjFBMzI5MDBGQTQzNDUgLyogUHJvcGVydHlDYXNjYWRlLmggKi8sCisJCQkJRTQ4NjND
RkEyMzg0MkU4NzAwOTcyMTU4IC8qIFJ1bGVEYXRhLmNwcCAqLywKKwkJCQlFNDg2M0NGRDIzODQy
RTlFMDA5NzIxNTggLyogUnVsZURhdGEuaCAqLywKIAkJCQlBNzlCQUQ5RDE2MUU3RjNGMDBDMkU2
NTIgLyogUnVsZUZlYXR1cmUuY3BwICovLAogCQkJCUE3OUJBRDlFMTYxRTdGM0YwMEMyRTY1MiAv
KiBSdWxlRmVhdHVyZS5oICovLAogCQkJCUE3OUJBRDlGMTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxl
U2V0LmNwcCAqLywKQEAgLTMxMjE4LDYgKzMxMjIzLDcgQEAKIAkJCQlFNDVCQTZBQTIzNzQ5MjZD
MDA0REZDMDcgLyogTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGQUJFNzJGNTEwNTlDMUVCMDBEODg4Q0MgLyogTWF0aE1MQW5ub3RhdGlvbkVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDg2M0NGRTIzODQyRTlFMDA5NzIxNTggLyogUnVs
ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBN
YXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEJDRjgzRjcxMDU5QzFF
QjAwRDk5OUREIC8qIE1hdGhNTEZyYWN0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkFCRTcyRjkxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTE1hdGhFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uZjM0NGRiOTk2MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SdWxlRGF0YS5jcHAKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykg
MjAwNC0yMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNrc2hhbmtz
LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3
ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAq
IENvcHlyaWdodCAoYykgMjAxMSwgQ29kZSBBdXJvcmEgRm9ydW0uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJ1bGVEYXRh
LmgiCisKKyNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NLZXlmcmFt
ZXNSdWxlLmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rv
ckxpc3QuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZh
bHVhdG9yLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZWxlY3Rv
ckNoZWNrZXIuaCIKKyNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5oIgorI2luY2x1ZGUgIlN0eWxl
UmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKKyNpbmNsdWRlICJTdHlsZVJ1bGVJ
bXBvcnQuaCIKKyNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKKyNpbmNsdWRlICJWaWV3
cG9ydFN0eWxlUmVzb2x2ZXIuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRl
ICJUZXh0VHJhY2tDdWUuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgU3R5bGUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitzdHJ1Y3QgU2FtZVNp
emVBc1J1bGVEYXRhIHsKKyAgICB2b2lkKiBhOworICAgIHVuc2lnbmVkIGI7CisgICAgdW5zaWdu
ZWQgYzsKKyAgICB1bnNpZ25lZCBkWzRdOworfTsKKworQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJ1
bGVEYXRhKSA9PSBzaXplb2YoU2FtZVNpemVBc1J1bGVEYXRhKSwgUnVsZURhdGFfc2hvdWxkX3N0
YXlfc21hbGwpOworCitzdGF0aWMgaW5saW5lIE1hdGNoQmFzZWRPblJ1bGVIYXNoIGNvbXB1dGVN
YXRjaEJhc2VkT25SdWxlSGFzaChjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IpCit7CisgICAg
aWYgKHNlbGVjdG9yLnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgcmV0dXJuIE1hdGNoQmFzZWRPblJ1
bGVIYXNoOjpOb25lOworCisgICAgaWYgKHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6
OlRhZykgeworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRdWFsaWZpZWROYW1lID0g
c2VsZWN0b3IudGFnUU5hbWUoKTsKKyAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgc2VsZWN0b3JO
YW1lc3BhY2UgPSB0YWdRdWFsaWZpZWROYW1lLm5hbWVzcGFjZVVSSSgpOworICAgICAgICBpZiAo
c2VsZWN0b3JOYW1lc3BhY2UgPT0gc3RhckF0b20oKSB8fCBzZWxlY3Rvck5hbWVzcGFjZSA9PSB4
aHRtbE5hbWVzcGFjZVVSSSkgeworICAgICAgICAgICAgaWYgKHRhZ1F1YWxpZmllZE5hbWUgPT0g
YW55UU5hbWUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6
OlVuaXZlcnNhbDsKKyAgICAgICAgICAgIHJldHVybiBNYXRjaEJhc2VkT25SdWxlSGFzaDo6Q2xh
c3NDOworICAgICAgICB9CisgICAgICAgIHJldHVybiBNYXRjaEJhc2VkT25SdWxlSGFzaDo6Tm9u
ZTsKKyAgICB9CisgICAgaWYgKFNlbGVjdG9yQ2hlY2tlcjo6aXNDb21tb25Qc2V1ZG9DbGFzc1Nl
bGVjdG9yKCZzZWxlY3RvcikpCisgICAgICAgIHJldHVybiBNYXRjaEJhc2VkT25SdWxlSGFzaDo6
Q2xhc3NCOworICAgIGlmIChzZWxlY3Rvci5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpJZCkKKyAg
ICAgICAgcmV0dXJuIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpDbGFzc0E7CisgICAgaWYgKHNlbGVj
dG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OkNsYXNzKQorICAgICAgICByZXR1cm4gTWF0Y2hC
YXNlZE9uUnVsZUhhc2g6OkNsYXNzQjsKKyAgICByZXR1cm4gTWF0Y2hCYXNlZE9uUnVsZUhhc2g6
Ok5vbmU7Cit9CisKK3N0YXRpYyBib29sIHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9FbGVtZW50KGNv
bnN0IENTU1NlbGVjdG9yJiByb290U2VsZWN0b3IpCit7CisgICAgY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yID0gJnJvb3RTZWxlY3RvcjsKKyAgICBkbyB7CisgICAgICAgIGlmIChzZWxlY3Rv
ci0+bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgICAgIGlmIChjb25zdCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCA9IHNlbGVjdG9y
LT5zZWxlY3Rvckxpc3QoKSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciog
c3ViU2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QtPmZpcnN0KCk7IHN1YlNlbGVjdG9yOyBzdWJTZWxl
Y3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzdWJTZWxlY3RvcikpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoc2VsZWN0b3JDYW5NYXRjaFBzZXVkb0VsZW1lbnQoKnN1YlNlbGVjdG9yKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7CisgICAgfSB3aGls
ZSAoc2VsZWN0b3IpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBib29s
IGlzQ29tbW9uQXR0cmlidXRlU2VsZWN0b3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlKQoreworICAgIC8vIFRoZXNlIGFyZSBleHBsaWNpdGx5IHRlc3RlZCBmb3IgZXF1
YWxpdHkgaW4gY2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50LgorICAgIHJldHVybiBhdHRyaWJ1dGUg
PT0gdHlwZUF0dHIgfHwgYXR0cmlidXRlID09IHJlYWRvbmx5QXR0cjsKK30KKworc3RhdGljIGJv
b2wgY29tcHV0ZUNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBDU1NTZWxl
Y3RvciYgcm9vdFNlbGVjdG9yLCBib29sIG1hdGNoZXNSaWdodG1vc3RFbGVtZW50ID0gdHJ1ZSkK
K3sKKyAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSAmcm9vdFNlbGVjdG9yOworICAg
IGRvIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBjb25zaWRlcmluZyBub24tcmlnaHRtb3N0IHNpbXBsZSBzZWxl
Y3RvcnMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgdGhlIHN0eWxlIHNoYXJpbmcgb2YgY291c2lu
cy4KKyAgICAgICAgICAgIC8vIEl0IGlzIGEgcHJpbWl0aXZlIHNvbHV0aW9uIHdoaWNoIGRpc2Fi
bGUgYSBsb3Qgb2Ygc3R5bGUgc2hhcmluZyBvbiBwYWdlcyB0aGF0IHJlbHkgb24gYXR0cmlidXRl
cyBmb3Igc3R5bGluZy4KKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBiZXR0
ZXIgd2F5cyBvZiBkb2luZyB0aGlzLgorICAgICAgICAgICAgaWYgKCFpc0NvbW1vbkF0dHJpYnV0
ZVNlbGVjdG9yQXR0cmlidXRlKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSkgfHwgIW1hdGNoZXNSaWdo
dG1vc3RFbGVtZW50KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0ID0gc2VsZWN0
b3ItPnNlbGVjdG9yTGlzdCgpKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9y
KiBzdWJTZWxlY3RvciA9IHNlbGVjdG9yTGlzdC0+Zmlyc3QoKTsgc3ViU2VsZWN0b3I7IHN1YlNl
bGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YlNlbGVjdG9yKSkgeworICAgICAgICAg
ICAgICAgIGlmIChjb21wdXRlQ29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCpzdWJT
ZWxlY3RvciwgbWF0Y2hlc1JpZ2h0bW9zdEVsZW1lbnQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZWxl
Y3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3IpCisgICAgICAgICAg
ICBtYXRjaGVzUmlnaHRtb3N0RWxlbWVudCA9IGZhbHNlOworCisgICAgICAgIHNlbGVjdG9yID0g
c2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKKyAgICB9IHdoaWxlIChzZWxlY3Rvcik7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBkZXRl
cm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQor
eworICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBvbmVudCA9IHNlbGVjdG9yOyBjb21w
b25lbnQ7IGNvbXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlzdG9yeSgpKSB7CisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorICAgICAgICBpZiAoY29tcG9uZW50LT5tYXRjaCgpID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9FbGVtZW50ICYmIChjb21wb25lbnQtPnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRDdWUgfHwgY29tcG9uZW50LT52YWx1ZSgpID09IFRl
eHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSkpCisgICAgICAgICAgICByZXR1cm4gUHJv
cGVydHlXaGl0ZWxpc3RDdWU7CisjZW5kaWYKKyAgICAgICAgaWYgKGNvbXBvbmVudC0+bWF0Y2go
KSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiBjb21wb25lbnQtPnBzZXVkb0VsZW1l
bnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRNYXJrZXIpCisgICAgICAgICAg
ICByZXR1cm4gUHJvcGVydHlXaGl0ZWxpc3RNYXJrZXI7CisKKyAgICAgICAgaWYgKGNvbnN0IGF1
dG8qIHNlbGVjdG9yTGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKSkgeworICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvKiBzdWJTZWxlY3RvciA9IHNlbGVjdG9yTGlzdC0+Zmlyc3QoKTsg
c3ViU2VsZWN0b3I7IHN1YlNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YlNlbGVj
dG9yKSkgeworICAgICAgICAgICAgICAgIGF1dG8gd2hpdGVsaXN0VHlwZSA9IGRldGVybWluZVBy
b3BlcnR5V2hpdGVsaXN0VHlwZShzdWJTZWxlY3Rvcik7CisgICAgICAgICAgICAgICAgaWYgKHdo
aXRlbGlzdFR5cGUgIT0gUHJvcGVydHlXaGl0ZWxpc3ROb25lKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gd2hpdGVsaXN0VHlwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gUHJvcGVydHlXaGl0ZWxpc3ROb25lOworfQorCitSdWxlRGF0YTo6UnVsZURh
dGEoU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxl
Y3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pCisgICAgOiBtX3J1bGUocnVsZSkKKyAg
ICAsIG1fc2VsZWN0b3JJbmRleChzZWxlY3RvckluZGV4KQorICAgICwgbV9zZWxlY3Rvckxpc3RJ
bmRleChzZWxlY3Rvckxpc3RJbmRleCkKKyAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAg
LCBtX21hdGNoQmFzZWRPblJ1bGVIYXNoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb21wdXRlTWF0
Y2hCYXNlZE9uUnVsZUhhc2goKnNlbGVjdG9yKCkpKSkKKyAgICAsIG1fY2FuTWF0Y2hQc2V1ZG9F
bGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCpzZWxlY3RvcigpKSkKKyAgICAs
IG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKGNvbXB1dGVDb250YWluc1VuY29t
bW9uQXR0cmlidXRlU2VsZWN0b3IoKnNlbGVjdG9yKCkpKQorICAgICwgbV9saW5rTWF0Y2hUeXBl
KFNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJtaW5lTGlua01hdGNoVHlwZShzZWxlY3RvcigpKSkKKyAg
ICAsIG1fcHJvcGVydHlXaGl0ZWxpc3RUeXBlKGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0VHlw
ZShzZWxlY3RvcigpKSkKKyAgICAsIG1fZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hl
cyhTZWxlY3RvckZpbHRlcjo6Y29sbGVjdEhhc2hlcygqc2VsZWN0b3IoKSkpCit7CisgICAgQVNT
RVJUKG1fcG9zaXRpb24gPT0gcG9zaXRpb24pOworICAgIEFTU0VSVChtX3NlbGVjdG9ySW5kZXgg
PT0gc2VsZWN0b3JJbmRleCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFN0eWxlCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMDEyNWZhZTMxYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIKKyNpbmNsdWRlICJTdHlsZVJ1bGUuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bVN0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFN0eWxlIHsK
KworZW51bSBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgeworICAgIFByb3BlcnR5V2hpdGVsaXN0Tm9u
ZSAgID0gMCwKKyAgICBQcm9wZXJ0eVdoaXRlbGlzdE1hcmtlciwKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisgICAgUHJvcGVydHlXaGl0ZWxpc3RDdWUKKyNlbmRpZgorfTsKKworZW51bSBjbGFz
cyBNYXRjaEJhc2VkT25SdWxlSGFzaCA6IHVuc2lnbmVkIHsKKyAgICBOb25lLAorICAgIFVuaXZl
cnNhbCwKKyAgICBDbGFzc0EsCisgICAgQ2xhc3NCLAorICAgIENsYXNzQworfTsKKworY2xhc3Mg
UnVsZURhdGEgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtU2Vs
ZWN0b3JDb21wb25lbnRDb3VudCA9IDgxOTI7CisKKyAgICBSdWxlRGF0YShTdHlsZVJ1bGUqLCB1
bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCwgdW5zaWdu
ZWQgcG9zaXRpb24pOworCisgICAgdW5zaWduZWQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uOyB9CisgICAgU3R5bGVSdWxlKiBydWxlKCkgY29uc3QgeyByZXR1cm4gbV9ydWxl
LmdldCgpOyB9CisgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9ydWxlLT5zZWxlY3Rvckxpc3QoKS5zZWxlY3RvckF0KG1fc2VsZWN0b3JJbmRleCk7IH0K
KyAgICB1bnNpZ25lZCBzZWxlY3RvckluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvcklu
ZGV4OyB9CisgICAgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXgoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdG9yTGlzdEluZGV4OyB9CisKKyAgICBib29sIGNhbk1hdGNoUHNldWRvRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FuTWF0Y2hQc2V1ZG9FbGVtZW50OyB9CisgICAgTWF0Y2hCYXNl
ZE9uUnVsZUhhc2ggbWF0Y2hCYXNlZE9uUnVsZUhhc2goKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxNYXRjaEJhc2VkT25SdWxlSGFzaD4obV9tYXRjaEJhc2VkT25SdWxlSGFzaCk7IH0KKyAg
ICBib29sIGNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yOyB9CisgICAgdW5zaWduZWQgbGlu
a01hdGNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlua01hdGNoVHlwZTsgfQorICAgIFByb3Bl
cnR5V2hpdGVsaXN0VHlwZSBwcm9wZXJ0eVdoaXRlbGlzdFR5cGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxQcm9wZXJ0eVdoaXRlbGlzdFR5cGU+KG1fcHJvcGVydHlXaGl0ZWxpc3RUeXBl
KTsgfQorICAgIGNvbnN0IFNlbGVjdG9yRmlsdGVyOjpIYXNoZXMmIGRlc2NlbmRhbnRTZWxlY3Rv
cklkZW50aWZpZXJIYXNoZXMoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbmRhbnRTZWxlY3Rvcklk
ZW50aWZpZXJIYXNoZXM7IH0KKworICAgIHZvaWQgZGlzYWJsZVNlbGVjdG9yRmlsdGVyaW5nKCkg
eyBtX2Rlc2NlbmRhbnRTZWxlY3RvcklkZW50aWZpZXJIYXNoZXNbMF0gPSAwOyB9CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPFN0eWxlUnVsZT4gbV9ydWxlOworICAgIHVuc2lnbmVkIG1fc2VsZWN0
b3JJbmRleCA6IDE2OworICAgIHVuc2lnbmVkIG1fc2VsZWN0b3JMaXN0SW5kZXggOiAxNjsKKyAg
ICAvLyBUaGlzIG51bWJlciB3YXMgcGlja2VkIGZhaXJseSBhcmJpdHJhcmlseS4gV2UgY2FuIHBy
b2JhYmx5IGxvd2VyIGl0IGlmIHdlIG5lZWQgdG8uCisgICAgLy8gU29tZSBzaW1wbGUgdGVzdGlu
ZyBzaG93ZWQgPDEwMCwwMDAgUnVsZURhdGEncyBvbiBsYXJnZSBzaXRlcy4KKyAgICB1bnNpZ25l
ZCBtX3Bvc2l0aW9uIDogMTg7CisgICAgdW5zaWduZWQgbV9tYXRjaEJhc2VkT25SdWxlSGFzaCA6
IDM7CisgICAgdW5zaWduZWQgbV9jYW5NYXRjaFBzZXVkb0VsZW1lbnQgOiAxOworICAgIHVuc2ln
bmVkIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yIDogMTsKKyAgICB1bnNpZ25l
ZCBtX2xpbmtNYXRjaFR5cGUgOiAyOyAvLyAgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNr
CisgICAgdW5zaWduZWQgbV9wcm9wZXJ0eVdoaXRlbGlzdFR5cGUgOiAyOworICAgIFNlbGVjdG9y
RmlsdGVyOjpIYXNoZXMgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgU3R5bGUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNw
YWNlIFdURiB7CisKKy8vIFJ1bGVEYXRhIGlzIHNpbXBsZSBlbm91Z2ggdGhhdCBpbml0aWFsaXpp
bmcgdG8gMCBhbmQgbW92aW5nIHdpdGggbWVtY3B5IHdpbGwgdG90YWxseSB3b3JrLgordGVtcGxh
dGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OlN0eWxlOjpSdWxlRGF0YT4gOiBTaW1w
bGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVTZXQuY3BwCmluZGV4IDE5ODBmOTUyNThiLi5kNDAxYjY3ODc3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZVNldC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwNC0yMDA1IEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKICAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNrc2hhbmtzLmNvbSkKLSAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3Jn
PgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKQEAgLTUzLDEyMSAr
NTMsNiBAQCBuYW1lc3BhY2UgU3R5bGUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1zdGF0aWMgaW5saW5lIE1hdGNoQmFzZWRPblJ1bGVIYXNoIGNvbXB1
dGVNYXRjaEJhc2VkT25SdWxlSGFzaChjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IpCi17Ci0g
ICAgaWYgKHNlbGVjdG9yLnRhZ0hpc3RvcnkoKSkKLSAgICAgICAgcmV0dXJuIE1hdGNoQmFzZWRP
blJ1bGVIYXNoOjpOb25lOwotCi0gICAgaWYgKHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0
b3I6OlRhZykgewotICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRdWFsaWZpZWROYW1l
ID0gc2VsZWN0b3IudGFnUU5hbWUoKTsKLSAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgc2VsZWN0
b3JOYW1lc3BhY2UgPSB0YWdRdWFsaWZpZWROYW1lLm5hbWVzcGFjZVVSSSgpOwotICAgICAgICBp
ZiAoc2VsZWN0b3JOYW1lc3BhY2UgPT0gc3RhckF0b20oKSB8fCBzZWxlY3Rvck5hbWVzcGFjZSA9
PSB4aHRtbE5hbWVzcGFjZVVSSSkgewotICAgICAgICAgICAgaWYgKHRhZ1F1YWxpZmllZE5hbWUg
PT0gYW55UU5hbWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTWF0Y2hCYXNlZE9uUnVsZUhh
c2g6OlVuaXZlcnNhbDsKLSAgICAgICAgICAgIHJldHVybiBNYXRjaEJhc2VkT25SdWxlSGFzaDo6
Q2xhc3NDOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBNYXRjaEJhc2VkT25SdWxlSGFzaDo6
Tm9uZTsKLSAgICB9Ci0gICAgaWYgKFNlbGVjdG9yQ2hlY2tlcjo6aXNDb21tb25Qc2V1ZG9DbGFz
c1NlbGVjdG9yKCZzZWxlY3RvcikpCi0gICAgICAgIHJldHVybiBNYXRjaEJhc2VkT25SdWxlSGFz
aDo6Q2xhc3NCOwotICAgIGlmIChzZWxlY3Rvci5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpJZCkK
LSAgICAgICAgcmV0dXJuIE1hdGNoQmFzZWRPblJ1bGVIYXNoOjpDbGFzc0E7Ci0gICAgaWYgKHNl
bGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OkNsYXNzKQotICAgICAgICByZXR1cm4gTWF0
Y2hCYXNlZE9uUnVsZUhhc2g6OkNsYXNzQjsKLSAgICByZXR1cm4gTWF0Y2hCYXNlZE9uUnVsZUhh
c2g6Ok5vbmU7Ci19Ci0KLXN0YXRpYyBib29sIHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9FbGVtZW50
KGNvbnN0IENTU1NlbGVjdG9yJiByb290U2VsZWN0b3IpCi17Ci0gICAgY29uc3QgQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yID0gJnJvb3RTZWxlY3RvcjsKLSAgICBkbyB7Ci0gICAgICAgIGlmIChzZWxl
Y3Rvci0+bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgICAgIGlmIChjb25zdCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCA9IHNlbGVj
dG9yLT5zZWxlY3Rvckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rv
ciogc3ViU2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QtPmZpcnN0KCk7IHN1YlNlbGVjdG9yOyBzdWJT
ZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzdWJTZWxlY3RvcikpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoc2VsZWN0b3JDYW5NYXRjaFBzZXVkb0VsZW1lbnQoKnN1YlNlbGVjdG9yKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7Ci0gICAgfSB3
aGlsZSAoc2VsZWN0b3IpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGlubGluZSBi
b29sIGlzQ29tbW9uQXR0cmlidXRlU2VsZWN0b3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlKQotewotICAgIC8vIFRoZXNlIGFyZSBleHBsaWNpdGx5IHRlc3RlZCBmb3Ig
ZXF1YWxpdHkgaW4gY2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50LgotICAgIHJldHVybiBhdHRyaWJ1
dGUgPT0gdHlwZUF0dHIgfHwgYXR0cmlidXRlID09IHJlYWRvbmx5QXR0cjsKLX0KLQotc3RhdGlj
IGJvb2wgY29tcHV0ZUNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3Rvcihjb25zdCBDU1NT
ZWxlY3RvciYgcm9vdFNlbGVjdG9yLCBib29sIG1hdGNoZXNSaWdodG1vc3RFbGVtZW50ID0gdHJ1
ZSkKLXsKLSAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSAmcm9vdFNlbGVjdG9yOwot
ICAgIGRvIHsKLSAgICAgICAgaWYgKHNlbGVjdG9yLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBjb25zaWRlcmluZyBub24tcmlnaHRtb3N0IHNpbXBsZSBz
ZWxlY3RvcnMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgdGhlIHN0eWxlIHNoYXJpbmcgb2YgY291
c2lucy4KLSAgICAgICAgICAgIC8vIEl0IGlzIGEgcHJpbWl0aXZlIHNvbHV0aW9uIHdoaWNoIGRp
c2FibGUgYSBsb3Qgb2Ygc3R5bGUgc2hhcmluZyBvbiBwYWdlcyB0aGF0IHJlbHkgb24gYXR0cmli
dXRlcyBmb3Igc3R5bGluZy4KLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBi
ZXR0ZXIgd2F5cyBvZiBkb2luZyB0aGlzLgotICAgICAgICAgICAgaWYgKCFpc0NvbW1vbkF0dHJp
YnV0ZVNlbGVjdG9yQXR0cmlidXRlKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSkgfHwgIW1hdGNoZXNS
aWdodG1vc3RFbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0ID0gc2Vs
ZWN0b3ItPnNlbGVjdG9yTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IENTU1NlbGVj
dG9yKiBzdWJTZWxlY3RvciA9IHNlbGVjdG9yTGlzdC0+Zmlyc3QoKTsgc3ViU2VsZWN0b3I7IHN1
YlNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YlNlbGVjdG9yKSkgewotICAgICAg
ICAgICAgICAgIGlmIChjb21wdXRlQ29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKCpz
dWJTZWxlY3RvciwgbWF0Y2hlc1JpZ2h0bW9zdEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChz
ZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3IpCi0gICAgICAg
ICAgICBtYXRjaGVzUmlnaHRtb3N0RWxlbWVudCA9IGZhbHNlOwotCi0gICAgICAgIHNlbGVjdG9y
ID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKLSAgICB9IHdoaWxlIChzZWxlY3Rvcik7Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgaW5saW5lIFByb3BlcnR5V2hpdGVsaXN0VHlwZSBk
ZXRlcm1pbmVQcm9wZXJ0eVdoaXRlbGlzdFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
KQotewotICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBvbmVudCA9IHNlbGVjdG9yOyBj
b21wb25lbnQ7IGNvbXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlzdG9yeSgpKSB7Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgICAgICBpZiAoY29tcG9uZW50LT5tYXRjaCgpID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIChjb21wb25lbnQtPnBzZXVkb0VsZW1lbnRUeXBlKCkg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRDdWUgfHwgY29tcG9uZW50LT52YWx1ZSgpID09
IFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSkpCi0gICAgICAgICAgICByZXR1cm4g
UHJvcGVydHlXaGl0ZWxpc3RDdWU7Ci0jZW5kaWYKLSAgICAgICAgaWYgKGNvbXBvbmVudC0+bWF0
Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiBjb21wb25lbnQtPnBzZXVkb0Vs
ZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRNYXJrZXIpCi0gICAgICAg
ICAgICByZXR1cm4gUHJvcGVydHlXaGl0ZWxpc3RNYXJrZXI7Ci0KLSAgICAgICAgaWYgKGNvbnN0
IGF1dG8qIHNlbGVjdG9yTGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKSkgewotICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvKiBzdWJTZWxlY3RvciA9IHNlbGVjdG9yTGlzdC0+Zmlyc3Qo
KTsgc3ViU2VsZWN0b3I7IHN1YlNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YlNl
bGVjdG9yKSkgewotICAgICAgICAgICAgICAgIGF1dG8gd2hpdGVsaXN0VHlwZSA9IGRldGVybWlu
ZVByb3BlcnR5V2hpdGVsaXN0VHlwZShzdWJTZWxlY3Rvcik7Ci0gICAgICAgICAgICAgICAgaWYg
KHdoaXRlbGlzdFR5cGUgIT0gUHJvcGVydHlXaGl0ZWxpc3ROb25lKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gd2hpdGVsaXN0VHlwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gUHJvcGVydHlXaGl0ZWxpc3ROb25lOwotfQotCi1SdWxlRGF0YTo6UnVs
ZURhdGEoU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBz
ZWxlY3Rvckxpc3RJbmRleCwgdW5zaWduZWQgcG9zaXRpb24pCi0gICAgOiBtX3J1bGUocnVsZSkK
LSAgICAsIG1fc2VsZWN0b3JJbmRleChzZWxlY3RvckluZGV4KQotICAgICwgbV9zZWxlY3Rvckxp
c3RJbmRleChzZWxlY3Rvckxpc3RJbmRleCkKLSAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCi0g
ICAgLCBtX21hdGNoQmFzZWRPblJ1bGVIYXNoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb21wdXRl
TWF0Y2hCYXNlZE9uUnVsZUhhc2goKnNlbGVjdG9yKCkpKSkKLSAgICAsIG1fY2FuTWF0Y2hQc2V1
ZG9FbGVtZW50KHNlbGVjdG9yQ2FuTWF0Y2hQc2V1ZG9FbGVtZW50KCpzZWxlY3RvcigpKSkKLSAg
ICAsIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKGNvbXB1dGVDb250YWluc1Vu
Y29tbW9uQXR0cmlidXRlU2VsZWN0b3IoKnNlbGVjdG9yKCkpKQotICAgICwgbV9saW5rTWF0Y2hU
eXBlKFNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJtaW5lTGlua01hdGNoVHlwZShzZWxlY3RvcigpKSkK
LSAgICAsIG1fcHJvcGVydHlXaGl0ZWxpc3RUeXBlKGRldGVybWluZVByb3BlcnR5V2hpdGVsaXN0
VHlwZShzZWxlY3RvcigpKSkKLSAgICAsIG1fZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhh
c2hlcyhTZWxlY3RvckZpbHRlcjo6Y29sbGVjdEhhc2hlcygqc2VsZWN0b3IoKSkpCi17Ci0gICAg
QVNTRVJUKG1fcG9zaXRpb24gPT0gcG9zaXRpb24pOwotICAgIEFTU0VSVChtX3NlbGVjdG9ySW5k
ZXggPT0gc2VsZWN0b3JJbmRleCk7Ci19Ci0KIFJ1bGVTZXQ6OlJ1bGVTZXQoKSA9IGRlZmF1bHQ7
CiAKIFJ1bGVTZXQ6On5SdWxlU2V0KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvUnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCmlu
ZGV4IDdmYWRmYTY1YTRkLi4zYjk2NTgxNDA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNiArMjEsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlJ1bGVEYXRhLmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1
cmUuaCIKICNpbmNsdWRlICJTZWxlY3RvckNvbXBpbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JG
aWx0ZXIuaCIKQEAgLTMzLDc2ICszNCwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDU1NTZWxlY3RvcjsKLWNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBNZWRpYVF1ZXJ5RXZh
bHVhdG9yOwotY2xhc3MgTm9kZTsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAogbmFtZXNw
YWNlIFN0eWxlIHsKIAogY2xhc3MgUmVzb2x2ZXI7CiAKLWVudW0gUHJvcGVydHlXaGl0ZWxpc3RU
eXBlIHsKLSAgICBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUgICA9IDAsCi0gICAgUHJvcGVydHlXaGl0
ZWxpc3RNYXJrZXIsCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFByb3BlcnR5V2hpdGVs
aXN0Q3VlCi0jZW5kaWYKLX07Ci0KLWVudW0gY2xhc3MgTWF0Y2hCYXNlZE9uUnVsZUhhc2ggOiB1
bnNpZ25lZCB7Ci0gICAgTm9uZSwKLSAgICBVbml2ZXJzYWwsCi0gICAgQ2xhc3NBLAotICAgIENs
YXNzQiwKLSAgICBDbGFzc0MKLX07Ci0KLWNsYXNzIFJ1bGVEYXRhIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQgPSA4MTky
OwotCi0gICAgUnVsZURhdGEoU3R5bGVSdWxlKiwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgdW5z
aWduZWQgc2VsZWN0b3JMaXN0SW5kZXgsIHVuc2lnbmVkIHBvc2l0aW9uKTsKLQotICAgIHVuc2ln
bmVkIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIFN0eWxlUnVs
ZSogcnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZS5nZXQoKTsgfQotICAgIGNvbnN0IENTU1Nl
bGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZS0+c2VsZWN0b3JMaXN0KCku
c2VsZWN0b3JBdChtX3NlbGVjdG9ySW5kZXgpOyB9Ci0gICAgdW5zaWduZWQgc2VsZWN0b3JJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JJbmRleDsgfQotICAgIHVuc2lnbmVkIHNlbGVj
dG9yTGlzdEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvckxpc3RJbmRleDsgfQotCi0g
ICAgYm9vbCBjYW5NYXRjaFBzZXVkb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Nhbk1hdGNo
UHNldWRvRWxlbWVudDsgfQotICAgIE1hdGNoQmFzZWRPblJ1bGVIYXNoIG1hdGNoQmFzZWRPblJ1
bGVIYXNoKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0Y2hCYXNlZE9uUnVsZUhhc2g+
KG1fbWF0Y2hCYXNlZE9uUnVsZUhhc2gpOyB9Ci0gICAgYm9vbCBjb250YWluc1VuY29tbW9uQXR0
cmlidXRlU2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zVW5jb21tb25BdHRyaWJ1
dGVTZWxlY3RvcjsgfQotICAgIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2xpbmtNYXRjaFR5cGU7IH0KLSAgICBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgcHJvcGVydHlX
aGl0ZWxpc3RUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvcGVydHlXaGl0ZWxp
c3RUeXBlPihtX3Byb3BlcnR5V2hpdGVsaXN0VHlwZSk7IH0KLSAgICBjb25zdCBTZWxlY3RvckZp
bHRlcjo6SGFzaGVzJiBkZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzOyB9Ci0KLSAgICB2
b2lkIGRpc2FibGVTZWxlY3RvckZpbHRlcmluZygpIHsgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVu
dGlmaWVySGFzaGVzWzBdID0gMDsgfQotCi1wcml2YXRlOgotICAgIFJlZlB0cjxTdHlsZVJ1bGU+
IG1fcnVsZTsKLSAgICB1bnNpZ25lZCBtX3NlbGVjdG9ySW5kZXggOiAxNjsKLSAgICB1bnNpZ25l
ZCBtX3NlbGVjdG9yTGlzdEluZGV4IDogMTY7Ci0gICAgLy8gVGhpcyBudW1iZXIgd2FzIHBpY2tl
ZCBmYWlybHkgYXJiaXRyYXJpbHkuIFdlIGNhbiBwcm9iYWJseSBsb3dlciBpdCBpZiB3ZSBuZWVk
IHRvLgotICAgIC8vIFNvbWUgc2ltcGxlIHRlc3Rpbmcgc2hvd2VkIDwxMDAsMDAwIFJ1bGVEYXRh
J3Mgb24gbGFyZ2Ugc2l0ZXMuCi0gICAgdW5zaWduZWQgbV9wb3NpdGlvbiA6IDE4OwotICAgIHVu
c2lnbmVkIG1fbWF0Y2hCYXNlZE9uUnVsZUhhc2ggOiAzOwotICAgIHVuc2lnbmVkIG1fY2FuTWF0
Y2hQc2V1ZG9FbGVtZW50IDogMTsKLSAgICB1bnNpZ25lZCBtX2NvbnRhaW5zVW5jb21tb25BdHRy
aWJ1dGVTZWxlY3RvciA6IDE7Ci0gICAgdW5zaWduZWQgbV9saW5rTWF0Y2hUeXBlIDogMjsgLy8g
IFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzawotICAgIHVuc2lnbmVkIG1fcHJvcGVydHlX
aGl0ZWxpc3RUeXBlIDogMjsKLSAgICBTZWxlY3RvckZpbHRlcjo6SGFzaGVzIG1fZGVzY2VuZGFu
dFNlbGVjdG9ySWRlbnRpZmllckhhc2hlczsKLX07Ci0gICAgCi1zdHJ1Y3QgU2FtZVNpemVBc1J1
bGVEYXRhIHsKLSAgICB2b2lkKiBhOwotICAgIHVuc2lnbmVkIGI7Ci0gICAgdW5zaWduZWQgYzsK
LSAgICB1bnNpZ25lZCBkWzRdOwotfTsKLQotQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJ1bGVEYXRh
KSA9PSBzaXplb2YoU2FtZVNpemVBc1J1bGVEYXRhKSwgUnVsZURhdGFfc2hvdWxkX3N0YXlfc21h
bGwpOwotCiBjbGFzcyBSdWxlU2V0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdWxlU2V0
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xOTIsMTAgKzEzMCwzIEBA
IGlubGluZSBjb25zdCBSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciogUnVsZVNldDo6dGFnUnVsZXMo
Y29uc3QgQXRvbVN0cmluZyYga2V5LCBiCiAKIH0gLy8gbmFtZXNwYWNlIFN0eWxlCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi0vLyBSdWxlRGF0YSBpcyBzaW1w
bGUgZW5vdWdoIHRoYXQgaW5pdGlhbGl6aW5nIHRvIDAgYW5kIG1vdmluZyB3aXRoIG1lbWNweSB3
aWxsIHRvdGFsbHkgd29yay4KLXRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxXZWJDb3Jl
OjpTdHlsZTo6UnVsZURhdGE+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwotCi19IC8v
IG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
      

    </bug>

</bugzilla>