<?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>177025</bug_id>
          
          <creation_ts>2017-09-15 15:57:32 -0700</creation_ts>
          <short_desc>Rename CacheStorage to DOMCacheStorage</short_desc>
          <delta_ts>2017-09-27 12:25:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1349553</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-15 15:57:32 -0700</bug_when>
    <thetext>Rename CacheStorage to DOMCacheStorage to make it consistent with DOMCache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349570</commentid>
    <comment_count>1</comment_count>
      <attachid>320968</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-15 16:53:29 -0700</bug_when>
    <thetext>Created attachment 320968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349572</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-15 16:56:29 -0700</bug_when>
    <thetext>Attachment 320968 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:95:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:128:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:184:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/Modules/cache/DOMCacheStorage.cpp:221:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350877</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-20 11:30:44 -0700</bug_when>
    <thetext>ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350878</commentid>
    <comment_count>4</comment_count>
      <attachid>320968</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-20 11:32:01 -0700</bug_when>
    <thetext>Comment on attachment 320968
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350890</commentid>
    <comment_count>5</comment_count>
      <attachid>320968</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 12:04:04 -0700</bug_when>
    <thetext>Comment on attachment 320968
Patch

Clearing flags on attachment: 320968

Committed r222274: &lt;http://trac.webkit.org/changeset/222274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350891</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-20 12:04:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353364</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:25:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693249&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320968</attachid>
            <date>2017-09-15 16:53:29 -0700</date>
            <delta_ts>2017-09-20 12:04:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177025-20170915165328.patch</filename>
            <type>text/plain</type>
            <size>59329</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE3NmFkZWMxNWQyOGU5
MmU2M2ZlODI2MmQ1NTY2ZWUxOWI0NjU5Yi4uNmU0MWIxYjgzMzE4NTNjNzAyNDQ4MDE5OTY2MTdl
ODJiMDVhMGQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDE3LTA5LTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBSZW5hbWUgQ2FjaGVTdG9y
YWdlIHRvIERPTUNhY2hlU3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc3MDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGJlaGF2aW9yLCBqdXN0IHJlbmFtaW5nIENhY2hl
U3RvcmFnZSBjbGFzcyBhbmQgZmlsZXMgdG8gRE9NQ2FjaGVTdG9yYWdlLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5jcHAuCisgICAgICAgIChXZWJDb3Jl
OjpET01DYWNoZVN0b3JhZ2U6OkRPTUNhY2hlU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZVN0b3JhZ2U6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpkb1NlcXVl
bnRpYWxNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFNlcXVlbnRpYWxNYXRjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb3B5Q2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
U3RvcmFnZTo6bWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpoYXMp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2dDb25zb2xlUGVyc2lzdGVuY3lFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2Fj
aGVTdG9yYWdlOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpr
ZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRT
dXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFn
ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3Jh
Z2UuaC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5pZGw6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5pZGwuCisgICAgICAgICogTW9k
dWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93Q2FjaGVzOjpjYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Q2FjaGVzOjpj
YWNoZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmg6
CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmNhY2hlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6Y2FjaGVzIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmg6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5pZGw6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDE3LTA5LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiB3cml0dGVuQXVkaW9E
dXJhdGlvbiA+PSByZWFkQXVkaW9EdXJhdGlvbiBpbiBjb20uYXBwbGUuV2ViQ29yZTpXZWJDb3Jl
OjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OmlzUmVhY2hpbmdCdWZmZXJlZEF1ZGlvRGF0
YUhpZ2hMaW1pdCgpICsgMjIyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUxNjQKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzEyMzA1PgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA4NmZjZmQ5ZDA1NzZiYTk1Mjk4YzcyMzU1ZWI1OGJhMDRmMmEy
ZWZhLi5hMzY0NzVlZmY0MjY5ZDBlOTE0MjJiMWU4OGRjZDc3NDQ2OWJhMGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTg4LDkgKzE4OCw5IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJ
TEVTCiAKICAgICBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uaWRsCiAKLSAgICBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmlkbAogICAgIE1vZHVsZXMvY2FjaGUvQ2FjaGVRdWVyeU9wdGlv
bnMuaWRsCi0gICAgTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuaWRsCisgICAgTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5pZGwKKyAgICBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5pZGwK
ICAgICBNb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5pZGwKICAgICBNb2R1bGVzL2NhY2hl
L1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmlkbAogCkBAIC05NzAsOSArOTcwLDkgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogCiAgICAgTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAog
Ci0gICAgTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKLSAgICBNb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZS5jcHAKICAgICBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3Bw
CisgICAgTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKyAgICBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlU3RvcmFnZS5jcHAKICAgICBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAogICAg
IE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAogICAgIE1vZHVsZXMvY2FjaGUvV29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IGZjMTRjZmRhZDczNmFjMjg4MDMxMDUxODRhMjc1OWNjNDYyNDE3MzEuLjk5OWUxNGQy
MjRmYjFjYWVkMGU2MGM4YzdhMzYyYmFjMGJiYzU5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTA1LDkgKzEwNSw5IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuaWRsIFwKLSAgICAk
KFdlYkNvcmUpL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvY2FjaGUvQ2FjaGVRdWVyeU9wdGlvbnMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3Rv
cmFnZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29w
ZUNhY2hlcy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9jcmVkZW50aWFscy9CYXNpY0Ny
ZWRlbnRpYWwuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvY3JlZGVudGlhbHMvQ3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTUzNTE4
YzcyZThhNDZmZDgyNjcxZjgxMmU5ZTdjYTgwNTYyMTFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNhY2hlU3RvcmFnZS5oIgotCi0jaW5j
bHVkZSAiQ2FjaGVRdWVyeU9wdGlvbnMuaCIKLSNpbmNsdWRlICJKU0RPTUNhY2hlLmgiCi0jaW5j
bHVkZSAiSlNGZXRjaFJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQ2FjaGVTdG9yYWdlOjpDYWNoZVN0b3JhZ2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+JiYgY29ubmVj
dGlvbikKLSAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKLSAgICAsIG1fY29ubmVjdGlv
bihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotewotICAgIHN1c3BlbmRJZk5lZWRlZCgpOwotfQotCi1T
dHJpbmcgQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBEbyB3
ZSByZWFsbHkgbmVlZCB0byBjaGVjayBmb3Igb3JpZ2luIGJlaW5nIG51bGw/Ci0gICAgYXV0byog
b3JpZ2luID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID8gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gb3JpZ2luID8gb3Jp
Z2luLT50b1N0cmluZygpIDogU3RyaW5nKCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRvU2VxdWVudGlh
bE1hdGNoKHNpemVfdCBpbmRleCwgVmVjdG9yPFJlZjxET01DYWNoZT4+JiYgY2FjaGVzLCBET01D
YWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIERP
TUNhY2hlOjpNYXRjaENhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGlu
ZGV4ID49IGNhY2hlcy5zaXplKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0
cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYWNoZXNbaW5kZXhdLT5kb01hdGNo
KFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFtjYWNoZXMgPSBXVEZNb3ZlKGNhY2hl
cyksIGluZm8sIG9wdGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGluZGV4XShFeGNlcHRpb25PcjxGZXRjaFJlc3BvbnNlKj4mJiByZXN1bHQpIG11
dGFibGUgewotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVzdWx0LnJldHVyblZhbHVlKCkp
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdC5yZXR1cm5WYWx1ZSgpKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBkb1NlcXVlbnRpYWxNYXRj
aCgrK2luZGV4LCBXVEZNb3ZlKGNhY2hlcyksIFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9u
cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9KTsKLX0KLQotc3RhdGljIGlu
bGluZSB2b2lkIHN0YXJ0U2VxdWVudGlhbE1hdGNoKFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiYmIGNh
Y2hlcywgRE9NQ2FjaGU6OlJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBv
cHRpb25zLCBET01DYWNoZTo6TWF0Y2hDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQotewot
ICAgIGRvU2VxdWVudGlhbE1hdGNoKDAsIFdURk1vdmUoY2FjaGVzKSwgV1RGTW92ZShpbmZvKSwg
V1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCi1zdGF0
aWMgaW5saW5lIFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiBjb3B5Q2FjaGVzKGNvbnN0IFZlY3RvcjxS
ZWY8RE9NQ2FjaGU+PiYgY2FjaGVzKQotewotICAgIFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiBjb3B5
OwotICAgIGNvcHkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjYWNoZXMuc2l6ZSgpKTsKLSAgICBm
b3IgKGF1dG8mIGNhY2hlIDogY2FjaGVzKQotICAgICAgICBjb3B5LnVuY2hlY2tlZEFwcGVuZChj
YWNoZS5jb3B5UmVmKCkpOwotICAgIHJldHVybiBjb3B5OwotfQotCi12b2lkIENhY2hlU3RvcmFn
ZTo6bWF0Y2goRE9NQ2FjaGU6OlJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMm
JiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCi17Ci0gICAgcmV0cmll
dmVDYWNoZXMoW3RoaXMsIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBvcHRpb25zID0gV1RGTW92ZShv
cHRpb25zKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIW9wdGlvbnMuY2Fj
aGVOYW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMu
ZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5uYW1lKCkgPT0gb3B0
aW9ucy5jYWNoZU5hbWU7IH0pOwotICAgICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5k
KSB7Ci0gICAgICAgICAgICAgICAgbV9jYWNoZXNbcG9zaXRpb25dLT5tYXRjaChXVEZNb3ZlKGlu
Zm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzZXRQZW5kaW5nQWN0
aXZpdHkodGhpcyk7Ci0gICAgICAgIHN0YXJ0U2VxdWVudGlhbE1hdGNoKGNvcHlDYWNoZXMobV9j
YWNoZXMpLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPEZldGNoUmVzcG9uc2UqPiYmIHJlc3VsdCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgICAgICAgICBwcm9t
aXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1
bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgp
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+KCpyZXN1bHQucmV0dXJuVmFsdWUoKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9yYWdlOjpoYXMoY29uc3Qg
U3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQot
ewotICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAg
ICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92
ZShleGNlcHRpb24udmFsdWUoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIHByb21pc2UucmVzb2x2ZShtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0
ZW0pIHsgcmV0dXJuIGl0ZW0tPm5hbWUoKSA9PSBuYW1lOyB9KSAhPSBub3RGb3VuZCk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9u
PHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQotewotICAgIFN0
cmluZyBvcmlnaW4gPSB0aGlzLT5vcmlnaW4oKTsKLSAgICBpZiAob3JpZ2luLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgbV9j
b25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIG1fdXBkYXRlQ291bnRlciwgW3RoaXMs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewotICAgICAgICAgICAgaWYg
KCFyZXN1bHQuaGFzVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKERPTUNhY2hl
RW5naW5lOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvJiBjYWNoZXNJbmZv
ID0gcmVzdWx0LnZhbHVlKCk7Ci0KLSAgICAgICAgICAgIGlmIChtX3VwZGF0ZUNvdW50ZXIgIT0g
Y2FjaGVzSW5mby51cGRhdGVDb3VudGVyKSB7Ci0gICAgICAgICAgICAgICAgbV91cGRhdGVDb3Vu
dGVyID0gY2FjaGVzSW5mby51cGRhdGVDb3VudGVyOwotCi0gICAgICAgICAgICAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0KLSAgICAgICAgICAgICAgICBWZWN0b3I8UmVm
PERPTUNhY2hlPj4gY2FjaGVzOwotICAgICAgICAgICAgICAgIGNhY2hlcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNhY2hlc0luZm8uaW5mb3Muc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBmb3Ig
KGF1dG8mIGluZm8gOiBjYWNoZXNJbmZvLmluZm9zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1
dG8gcG9zaXRpb24gPSBtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGNhY2hl
KSB7IHJldHVybiBpbmZvLmlkZW50aWZpZXIgPT0gY2FjaGUtPmlkZW50aWZpZXIoKTsgfSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhY2hlcy51bmNoZWNrZWRBcHBlbmQocG9zaXRpb24gIT0gbm90
Rm91bmQgPyBtX2NhY2hlc1twb3NpdGlvbl0uY29weVJlZigpIDogRE9NQ2FjaGU6OmNyZWF0ZSgq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGluZm8ubmFtZSksIGluZm8uaWRlbnRp
ZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBtX2NhY2hlcyA9IFdURk1vdmUoY2FjaGVzKTsKLQotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKLSAgICAgICAgfQotICAgICAgICB1
bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICB9KTsKLX0KLQotc3RhdGljIHZvaWQgbG9n
Q29uc29sZVBlcnNpc3RlbmN5RXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpCi17Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBjb250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiVGhlcmUgd2FzIGFuIGVycm9yIG1h
a2luZyAiLCBjYWNoZU5hbWUsICIgcGVyc2lzdGVudCBvbiB0aGUgZmlsZXN5c3RlbSIpKTsKLX0K
LQotdm9pZCBDYWNoZVN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNl
RGVmZXJyZWQ8SURMSW50ZXJmYWNlPERPTUNhY2hlPj4mJiBwcm9taXNlKQotewotICAgIHJldHJp
ZXZlQ2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGV4
Y2VwdGlvbikgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24u
dmFsdWUoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0
byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1
cm4gaXRlbS0+bmFtZSgpID09IG5hbWU7IH0pOwotICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90
Rm91bmQpIHsKLSAgICAgICAgICAgIGF1dG8mIGNhY2hlID0gbV9jYWNoZXNbcG9zaXRpb25dOwot
ICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKERPTUNhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgY2FjaGUtPm5hbWUoKSB9LCBjYWNoZS0+aWRlbnRpZmll
cigpLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBTdHJpbmcgb3JpZ2luID0gdGhpcy0+b3JpZ2luKCk7Ci0gICAgICAg
IEFTU0VSVCghb3JpZ2luLmlzTnVsbCgpKTsKLQotICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHko
dGhpcyk7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIG5hbWUsIFt0aGlzLCBu
YW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JF
cnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQotICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1
bHQuZXJyb3IoKSkpOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVycm9yKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBuYW1lKTsKLQotICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlID0gRE9NQ2FjaGU6OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBuYW1lIH0sIHJlc3VsdC52
YWx1ZSgpLmlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOwotICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FjaGUpOwotICAgICAgICAgICAgICAgICAgICBtX2Nh
Y2hlcy5hcHBlbmQoV1RGTW92ZShjYWNoZSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgICAgICB9
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBDYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcm
IG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCi17Ci0gICAg
cmV0cmlldmVDYWNoZXMoW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBp
ZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2Vw
dGlvbi52YWx1ZSgpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7
IHJldHVybiBpdGVtLT5uYW1lKCkgPT0gbmFtZTsgfSk7Ci0gICAgICAgIGlmIChwb3NpdGlvbiA9
PSBub3RGb3VuZCkgewotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGZhbHNlKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFN0cmluZyBvcmlnaW4gPSB0aGlz
LT5vcmlnaW4oKTsKLSAgICAgICAgQVNTRVJUKCFvcmlnaW4uaXNOdWxsKCkpOwotCi0gICAgICAg
IHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUo
bV9jYWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVyKCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJl
amVjdChET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOwot
ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZh
bHVlKCkuaGFkU3RvcmFnZUVycm9yKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nQ29uc29s
ZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBuYW1lKTsKLSAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHRydWUpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwot
ICAgICAgICB9KTsKLSAgICAgICAgbV9jYWNoZXMucmVtb3ZlKHBvc2l0aW9uKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBDYWNoZVN0b3JhZ2U6OmtleXMoS2V5c1Byb21pc2UmJiBwcm9taXNlKQotewot
ICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KGV4Y2VwdGlvbikgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRp
b24udmFsdWUoKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
VmVjdG9yPFN0cmluZz4ga2V5czsKLSAgICAgICAga2V5cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG1fY2FjaGVzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYgY2FjaGUgOiBtX2NhY2hlcykK
LSAgICAgICAgICAgIGtleXMudW5jaGVja2VkQXBwZW5kKGNhY2hlLT5uYW1lKCkpOwotICAgICAg
ICBwcm9taXNlLnJlc29sdmUoa2V5cyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9yYWdl
OjpzdG9wKCkKLXsKLSAgICBtX2lzU3RvcHBlZCA9IHRydWU7Ci19Ci0KLWNvbnN0IGNoYXIqIENh
Y2hlU3RvcmFnZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICJD
YWNoZVN0b3JhZ2UiOwotfQotCi1ib29sIENhY2hlU3RvcmFnZTo6Y2FuU3VzcGVuZEZvckRvY3Vt
ZW50U3VzcGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFoYXNQZW5kaW5nQWN0aXZpdHko
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvQ2FjaGVTdG9yYWdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiY2Zi
MmU1YzIxZTYwNDMyODlkNmU3ZWI4ZmZiYWU1YTM2MTVjNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9D
YWNoZVN0b3JhZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKLSNp
bmNsdWRlICJET01DYWNoZS5oIgotI2luY2x1ZGUgIkZldGNoUmVxdWVzdC5oIgotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ2FjaGVTdG9y
YWdlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGVTdG9yYWdlPiwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDYWNoZVN0b3JhZ2U+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlU3RvcmFnZShjb250ZXh0
LCBXVEZNb3ZlKGNvbm5lY3Rpb24pKSk7IH0KLQotICAgIHVzaW5nIEtleXNQcm9taXNlID0gRE9N
UHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+OwotCi0gICAgdm9pZCBt
YXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7Ci0gICAgdm9pZCBoYXMoY29uc3QgU3RyaW5nJiwgRE9NUHJvbWlz
ZURlZmVycmVkPElETEJvb2xlYW4+JiYpOwotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmLCBE
T01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPERPTUNhY2hlPj4mJik7Ci0gICAgdm9pZCBy
ZW1vdmUoY29uc3QgU3RyaW5nJiwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpOwot
ICAgIHZvaWQga2V5cyhLZXlzUHJvbWlzZSYmKTsKLQotcHJpdmF0ZToKLSAgICBDYWNoZVN0b3Jh
Z2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiYm
KTsKLQotICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAg
IGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKLSAgICBib29s
IGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKLQotICAgIHZv
aWQgcmV0cmlldmVDYWNoZXMoV1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uPiYmKT4mJik7Ci0gICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OwotCi0gICAgVmVjdG9yPFJl
ZjxET01DYWNoZT4+IG1fY2FjaGVzOwotICAgIHVpbnQ2NF90IG1fdXBkYXRlQ291bnRlciB7IDAg
fTsKLSAgICBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAgIGJv
b2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuaWRsCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDQ2YWVhNzdmYzcwNWYwY2MwMTY3Y2U0YTZmNmZlMTA3
NTcyMGFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi10eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3Ig
VVNWU3RyaW5nKSBSZXF1ZXN0SW5mbzsKLQotWwotICAgIFNlY3VyZUNvbnRleHQsCi0gICAgRXhw
b3NlZD0oV2luZG93LFdvcmtlciksCi0gICAgRW5hYmxlZEF0UnVudGltZT1DYWNoZUFQSSwKLV0g
aW50ZXJmYWNlIENhY2hlU3RvcmFnZSB7Ci0gICAgW05ld09iamVjdF0gUHJvbWlzZTxhbnk+IG1h
dGNoKFJlcXVlc3RJbmZvIHJlcXVlc3QsIG9wdGlvbmFsIENhY2hlUXVlcnlPcHRpb25zIG9wdGlv
bnMpOwotICAgIFtOZXdPYmplY3RdIFByb21pc2U8Ym9vbGVhbj4gaGFzKERPTVN0cmluZyBjYWNo
ZU5hbWUpOwotICAgIFtOZXdPYmplY3RdIFByb21pc2U8Q2FjaGU+IG9wZW4oRE9NU3RyaW5nIGNh
Y2hlTmFtZSk7Ci0gICAgW05ld09iamVjdCwgSW1wbGVtZW50ZWRBcz1yZW1vdmVdIFByb21pc2U8
Ym9vbGVhbj4gZGVsZXRlKERPTVN0cmluZyBjYWNoZU5hbWUpOwotICAgIFtOZXdPYmplY3RdIFBy
b21pc2U8c2VxdWVuY2U8RE9NU3RyaW5nPj4ga2V5cygpOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGM3OGIx
ZGI0Mjc0YTdkNzNkN2YwYTEwN2E5YTFkMThhYTIwZGExCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCkBAIC0wLDAgKzEs
Mjc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUNh
Y2hlU3RvcmFnZS5oIgorCisjaW5jbHVkZSAiQ2FjaGVRdWVyeU9wdGlvbnMuaCIKKyNpbmNsdWRl
ICJKU0RPTUNhY2hlLmgiCisjaW5jbHVkZSAiSlNGZXRjaFJlc3BvbnNlLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRE9NQ2FjaGVTdG9yYWdlOjpE
T01DYWNoZVN0b3JhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgm
Y29udGV4dCkKKyAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQoreworICAg
IHN1c3BlbmRJZk5lZWRlZCgpOworfQorCitTdHJpbmcgRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4o
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBjaGVjayBmb3Ig
b3JpZ2luIGJlaW5nIG51bGw/CisgICAgYXV0byogb3JpZ2luID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpID8gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpIDogbnVs
bHB0cjsKKyAgICByZXR1cm4gb3JpZ2luID8gb3JpZ2luLT50b1N0cmluZygpIDogU3RyaW5nKCk7
Cit9CisKK3N0YXRpYyB2b2lkIGRvU2VxdWVudGlhbE1hdGNoKHNpemVfdCBpbmRleCwgVmVjdG9y
PFJlZjxET01DYWNoZT4+JiYgY2FjaGVzLCBET01DYWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBD
YWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIERPTUNhY2hlOjpNYXRjaENhbGxiYWNrJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGluZGV4ID49IGNhY2hlcy5zaXplKCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjYWNoZXNbaW5kZXhdLT5kb01hdGNoKFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0
aW9ucyksIFtjYWNoZXMgPSBXVEZNb3ZlKGNhY2hlcyksIGluZm8sIG9wdGlvbnMsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGluZGV4XShFeGNlcHRpb25P
cjxGZXRjaFJlc3BvbnNlKj4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAocmVzdWx0LnJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJlc3VsdC5yZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBkb1NlcXVlbnRpYWxNYXRjaCgrK2luZGV4LCBXVEZNb3ZlKGNhY2hlcyks
IFdURk1vdmUoaW5mbyksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICB9KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHN0YXJ0U2VxdWVudGlhbE1h
dGNoKFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiYmIGNhY2hlcywgRE9NQ2FjaGU6OlJlcXVlc3RJbmZv
JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBET01DYWNoZTo6TWF0Y2hDYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGRvU2VxdWVudGlhbE1hdGNoKDAsIFdU
Rk1vdmUoY2FjaGVzKSwgV1RGTW92ZShpbmZvKSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCitzdGF0aWMgaW5saW5lIFZlY3RvcjxSZWY8RE9NQ2Fj
aGU+PiBjb3B5Q2FjaGVzKGNvbnN0IFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiYgY2FjaGVzKQorewor
ICAgIFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiBjb3B5OworICAgIGNvcHkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShjYWNoZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGNhY2hlIDogY2FjaGVzKQor
ICAgICAgICBjb3B5LnVuY2hlY2tlZEFwcGVuZChjYWNoZS5jb3B5UmVmKCkpOworICAgIHJldHVy
biBjb3B5OworfQorCit2b2lkIERPTUNhY2hlU3RvcmFnZTo6bWF0Y2goRE9NQ2FjaGU6OlJlcXVl
c3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCit7CisgICAgcmV0cmlldmVDYWNoZXMoW3RoaXMsIGluZm8gPSBX
VEZNb3ZlKGluZm8pLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVj
dChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIW9wdGlvbnMuY2FjaGVOYW1lLmlzTnVsbCgpKSB7CisgICAg
ICAgICAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBp
dGVtKSB7IHJldHVybiBpdGVtLT5uYW1lKCkgPT0gb3B0aW9ucy5jYWNoZU5hbWU7IH0pOworICAg
ICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgbV9j
YWNoZXNbcG9zaXRpb25dLT5tYXRjaChXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBX
VEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgICAgIHN0
YXJ0U2VxdWVudGlhbE1hdGNoKGNvcHlDYWNoZXMobV9jYWNoZXMpLCBXVEZNb3ZlKGluZm8pLCBX
VEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2Vw
dGlvbk9yPEZldGNoUmVzcG9uc2UqPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIW1faXNTdG9wcGVkKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQucmV0dXJuVmFsdWUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RmV0Y2hS
ZXNwb25zZT4+KCpyZXN1bHQucmV0dXJuVmFsdWUoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
CisKK3ZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpoYXMoY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9t
aXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQoreworICAgIHJldHJpZXZlQ2FjaGVz
KFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3RkOjpvcHRpb25hbDxF
eGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikg
eworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHByb21pc2UucmVzb2x2
ZShtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm5h
bWUoKSA9PSBuYW1lOyB9KSAhPSBub3RGb3VuZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgRE9NQ2Fj
aGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25h
bDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIFN0cmluZyBvcmlnaW4gPSB0aGlz
LT5vcmlnaW4oKTsKKyAgICBpZiAob3JpZ2luLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgbV9jb25uZWN0aW9uLT5yZXRyaWV2
ZUNhY2hlcyhvcmlnaW4sIG1fdXBkYXRlQ291bnRlciwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCFtX2lzU3RvcHBlZCkgeworICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUo
KSkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjplcnJvclRvRXhj
ZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBhdXRvJiBjYWNoZXNJbmZvID0gcmVzdWx0LnZhbHVlKCk7
CisKKyAgICAgICAgICAgIGlmIChtX3VwZGF0ZUNvdW50ZXIgIT0gY2FjaGVzSW5mby51cGRhdGVD
b3VudGVyKSB7CisgICAgICAgICAgICAgICAgbV91cGRhdGVDb3VudGVyID0gY2FjaGVzSW5mby51
cGRhdGVDb3VudGVyOworCisgICAgICAgICAgICAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CisKKyAgICAgICAgICAgICAgICBWZWN0b3I8UmVmPERPTUNhY2hlPj4gY2FjaGVz
OworICAgICAgICAgICAgICAgIGNhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhY2hlc0lu
Zm8uaW5mb3Muc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGluZm8gOiBjYWNo
ZXNJbmZvLmluZm9zKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBtX2Nh
Y2hlcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGNhY2hlKSB7IHJldHVybiBpbmZvLmlk
ZW50aWZpZXIgPT0gY2FjaGUtPmlkZW50aWZpZXIoKTsgfSk7CisgICAgICAgICAgICAgICAgICAg
IGNhY2hlcy51bmNoZWNrZWRBcHBlbmQocG9zaXRpb24gIT0gbm90Rm91bmQgPyBtX2NhY2hlc1tw
b3NpdGlvbl0uY29weVJlZigpIDogRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBXVEZNb3ZlKGluZm8ubmFtZSksIGluZm8uaWRlbnRpZmllciwgbV9jb25uZWN0aW9u
LmNvcHlSZWYoKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX2NhY2hl
cyA9IFdURk1vdmUoY2FjaGVzKTsKKworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsbGJh
Y2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgfQorICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0
eSh0aGlzKTsKKyAgICB9KTsKK30KKworc3RhdGljIHZvaWQgbG9nQ29uc29sZVBlcnNpc3RlbmN5
RXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBjYWNo
ZU5hbWUpCit7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBjb250
ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpF
cnJvciwgbWFrZVN0cmluZygiVGhlcmUgd2FzIGFuIGVycm9yIG1ha2luZyAiLCBjYWNoZU5hbWUs
ICIgcGVyc2lzdGVudCBvbiB0aGUgZmlsZXN5c3RlbSIpKTsKK30KKwordm9pZCBET01DYWNoZVN0
b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50
ZXJmYWNlPERPTUNhY2hlPj4mJiBwcm9taXNlKQoreworICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlz
LCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3RkOjpvcHRpb25hbDxFeGNlcHRp
b24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikgeworICAg
ICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBwb3NpdGlvbiA9IG1f
Y2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgp
ID09IG5hbWU7IH0pOworICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKKyAgICAg
ICAgICAgIGF1dG8mIGNhY2hlID0gbV9jYWNoZXNbcG9zaXRpb25dOworICAgICAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKERPTUNhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
U3RyaW5nIHsgY2FjaGUtPm5hbWUoKSB9LCBjYWNoZS0+aWRlbnRpZmllcigpLCBtX2Nvbm5lY3Rp
b24uY29weVJlZigpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBTdHJpbmcgb3JpZ2luID0gdGhpcy0+b3JpZ2luKCk7CisgICAgICAgIEFTU0VSVCghb3JpZ2lu
LmlzTnVsbCgpKTsKKworICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIG5hbWUsIFt0aGlzLCBuYW1lLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJl
amVjdChET01DYWNoZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOwor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZh
bHVlKCkuaGFkU3RvcmFnZUVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nQ29uc29s
ZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBuYW1lKTsKKworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlID0gRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBuYW1lIH0sIHJlc3VsdC52YWx1ZSgpLmlkZW50aWZp
ZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICAgICAgICAgICAgICBwcm9taXNl
LnJlc29sdmUoY2FjaGUpOworICAgICAgICAgICAgICAgICAgICBtX2NhY2hlcy5hcHBlbmQoV1RG
TW92ZShjYWNoZSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgICAgICB9KTsKKyAgICB9KTsKK30K
Kwordm9pZCBET01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUsIERPTVBy
b21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCit7CisgICAgcmV0cmlldmVDYWNo
ZXMoW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgeworICAgICAgICBpZiAoZXhjZXB0aW9u
KSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgp
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHBvc2l0
aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVt
LT5uYW1lKCkgPT0gbmFtZTsgfSk7CisgICAgICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkg
eworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBvcmlnaW4gPSB0aGlzLT5vcmlnaW4oKTsK
KyAgICAgICAgQVNTRVJUKCFvcmlnaW4uaXNOdWxsKCkpOworCisgICAgICAgIHNldFBlbmRpbmdB
Y3Rpdml0eSh0aGlzKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9jYWNoZXNbcG9z
aXRpb25dLT5pZGVudGlmaWVyKCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNo
ZUVuZ2luZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3Rv
cmFnZUVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5
RXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBuYW1lKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKHRydWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgICAgICB9KTsK
KyAgICAgICAgbV9jYWNoZXMucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICB9KTsKK30KKwordm9pZCBE
T01DYWNoZVN0b3JhZ2U6OmtleXMoS2V5c1Byb21pc2UmJiBwcm9taXNlKQoreworICAgIHJldHJp
ZXZlQ2FjaGVzKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oc3RkOjpvcHRpb25h
bDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlv
bikgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUo
KSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgVmVjdG9yPFN0
cmluZz4ga2V5czsKKyAgICAgICAga2V5cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fY2FjaGVz
LnNpemUoKSk7CisgICAgICAgIGZvciAoYXV0byYgY2FjaGUgOiBtX2NhY2hlcykKKyAgICAgICAg
ICAgIGtleXMudW5jaGVja2VkQXBwZW5kKGNhY2hlLT5uYW1lKCkpOworICAgICAgICBwcm9taXNl
LnJlc29sdmUoa2V5cyk7CisgICAgfSk7Cit9CisKK3ZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpzdG9w
KCkKK3sKKyAgICBtX2lzU3RvcHBlZCA9IHRydWU7Cit9CisKK2NvbnN0IGNoYXIqIERPTUNhY2hl
U3RvcmFnZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJDYWNo
ZVN0b3JhZ2UiOworfQorCitib29sIERPTUNhY2hlU3RvcmFnZTo6Y2FuU3VzcGVuZEZvckRvY3Vt
ZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFoYXNQZW5kaW5nQWN0aXZpdHko
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBiOTkwNDYyMDMxYTRjNGMx
ZGM4NTY5YzdhNDdmZTg4Y2M2OGJiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRPTUNhY2hlLmgiCisjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0LmgiCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBET01D
YWNoZVN0b3JhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxET01DYWNoZVN0b3JhZ2U+LCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERPTUNhY2hlU3RvcmFn
ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NQ2Fj
aGVTdG9yYWdlKGNvbnRleHQsIFdURk1vdmUoY29ubmVjdGlvbikpKTsgfQorCisgICAgdXNpbmcg
S2V5c1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5n
Pj47CisKKyAgICB2b2lkIG1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmLCBDYWNoZVF1ZXJ5
T3B0aW9ucyYmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIGhhcyhjb25zdCBT
dHJpbmcmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJik7CisgICAgdm9pZCBvcGVu
KGNvbnN0IFN0cmluZyYsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RE9NQ2FjaGU+
PiYmKTsKKyAgICB2b2lkIHJlbW92ZShjb25zdCBTdHJpbmcmLCBET01Qcm9taXNlRGVmZXJyZWQ8
SURMQm9vbGVhbj4mJik7CisgICAgdm9pZCBrZXlzKEtleXNQcm9taXNlJiYpOworCitwcml2YXRl
OgorICAgIERPTUNhY2hlU3RvcmFnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+JiYpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNv
bnN0IGZpbmFsOworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNv
bnN0IGZpbmFsOworCisgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQo
c3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKTsKKyAgICBTdHJpbmcgb3JpZ2luKCkgY29u
c3Q7CisKKyAgICBWZWN0b3I8UmVmPERPTUNhY2hlPj4gbV9jYWNoZXM7CisgICAgdWludDY0X3Qg
bV91cGRhdGVDb3VudGVyIHsgMCB9OworICAgIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBt
X2Nvbm5lY3Rpb247CisgICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZhbHNlIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlU3RvcmFnZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlU3RvcmFnZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMxOTZjNTZjYThhZGFjMzQ0ZmJmYTRjZGRh
MGUxMTI5MjU2NjI0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmlkbApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
dHlwZWRlZiAoRmV0Y2hSZXF1ZXN0IG9yIFVTVlN0cmluZykgUmVxdWVzdEluZm87CisKK1sKKyAg
ICBTZWN1cmVDb250ZXh0LAorICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9Q2FjaGVBUEksCisgICAgSW50ZXJmYWNlTmFtZT1DYWNoZVN0b3JhZ2UsCitd
IGludGVyZmFjZSBET01DYWNoZVN0b3JhZ2UgeworICAgIFtOZXdPYmplY3RdIFByb21pc2U8YW55
PiBtYXRjaChSZXF1ZXN0SW5mbyByZXF1ZXN0LCBvcHRpb25hbCBDYWNoZVF1ZXJ5T3B0aW9ucyBv
cHRpb25zKTsKKyAgICBbTmV3T2JqZWN0XSBQcm9taXNlPGJvb2xlYW4+IGhhcyhET01TdHJpbmcg
Y2FjaGVOYW1lKTsKKyAgICBbTmV3T2JqZWN0XSBQcm9taXNlPENhY2hlPiBvcGVuKERPTVN0cmlu
ZyBjYWNoZU5hbWUpOworICAgIFtOZXdPYmplY3QsIEltcGxlbWVudGVkQXM9cmVtb3ZlXSBQcm9t
aXNlPGJvb2xlYW4+IGRlbGV0ZShET01TdHJpbmcgY2FjaGVOYW1lKTsKKyAgICBbTmV3T2JqZWN0
XSBQcm9taXNlPHNlcXVlbmNlPERPTVN0cmluZz4+IGtleXMoKTsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKaW5kZXggMzhhNGM5YjBm
OTNkNGQ4NTFmNGU0ZmUyNzhhOTAxN2JiNzdkY2Q1MC4uYWIwNzhhNDhmNzA0N2UxYzYyNjJkN2Mx
OWZlYmRkMTVjMWQzZWMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01XaW5kb3dDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NV2luZG93Q2FjaGVzLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkRPTVdpbmRvd0NhY2hlcy5oIgogCi0jaW5jbHVkZSAiQ2FjaGVTdG9yYWdl
LmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJET01DYWNo
ZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC01Niw3ICs1Niw3IEBAIERPTVdpbmRvd0NhY2hlcyog
RE9NV2luZG93Q2FjaGVzOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQogICAgIHJldHVybiBzdXBw
bGVtZW50OwogfQogCi1DYWNoZVN0b3JhZ2UqIERPTVdpbmRvd0NhY2hlczo6Y2FjaGVzKERPTVdp
bmRvdyYgd2luZG93KQorRE9NQ2FjaGVTdG9yYWdlKiBET01XaW5kb3dDYWNoZXM6OmNhY2hlcyhE
T01XaW5kb3cmIHdpbmRvdykKIHsKICAgICBpZiAoIXdpbmRvdy5pc0N1cnJlbnRseURpc3BsYXll
ZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02NCwxMiArNjQsMTIgQEAg
Q2FjaGVTdG9yYWdlKiBET01XaW5kb3dDYWNoZXM6OmNhY2hlcyhET01XaW5kb3cmIHdpbmRvdykK
ICAgICByZXR1cm4gRE9NV2luZG93Q2FjaGVzOjpmcm9tKCZ3aW5kb3cpLT5jYWNoZXMoKTsKIH0K
IAotQ2FjaGVTdG9yYWdlKiBET01XaW5kb3dDYWNoZXM6OmNhY2hlcygpIGNvbnN0CitET01DYWNo
ZVN0b3JhZ2UqIERPTVdpbmRvd0NhY2hlczo6Y2FjaGVzKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
ZnJhbWUoKSk7CiAgICAgQVNTRVJUKGZyYW1lKCktPmRvY3VtZW50KCkpOwogICAgIGlmICghbV9j
YWNoZXMgJiYgZnJhbWUoKS0+cGFnZSgpKQotICAgICAgICBtX2NhY2hlcyA9IENhY2hlU3RvcmFn
ZTo6Y3JlYXRlKCpmcmFtZSgpLT5kb2N1bWVudCgpLCBmcmFtZSgpLT5wYWdlKCktPmNhY2hlU3Rv
cmFnZVByb3ZpZGVyKCkuY3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihmcmFtZSgpLT5wYWdl
KCktPnNlc3Npb25JRCgpKSk7CisgICAgICAgIG1fY2FjaGVzID0gRE9NQ2FjaGVTdG9yYWdlOjpj
cmVhdGUoKmZyYW1lKCktPmRvY3VtZW50KCksIGZyYW1lKCktPnBhZ2UoKS0+Y2FjaGVTdG9yYWdl
UHJvdmlkZXIoKS5jcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKGZyYW1lKCktPnBhZ2UoKS0+
c2Vzc2lvbklEKCkpKTsKICAgICByZXR1cm4gbV9jYWNoZXMuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5oCmluZGV4IGJiYmVmYWJm
ZGQxNWY0MWVkYjEzOGI0OWQyOWNkZjFmM2E0OTdhMjMuLjgxZDIyNWZlYmJlZjcyYTdkYTAzMDU0
ZjZiNTBjZjNhODY5NWYzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NV2luZG93Q2FjaGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01XaW5kb3dDYWNoZXMuaApAQCAtMzEsMjAgKzMxLDIwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIENhY2hlU3RvcmFnZTsKK2NsYXNzIERPTUNhY2hl
U3RvcmFnZTsKIAogY2xhc3MgRE9NV2luZG93Q2FjaGVzIDogcHVibGljIFN1cHBsZW1lbnQ8RE9N
V2luZG93PiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBET01XaW5kb3dDYWNoZXMoRE9NV2luZG93Kik7CiAKICAgICBzdGF0aWMgRE9NV2luZG93Q2Fj
aGVzKiBmcm9tKERPTVdpbmRvdyopOwotICAgIHN0YXRpYyBDYWNoZVN0b3JhZ2UqIGNhY2hlcyhE
T01XaW5kb3cmKTsKKyAgICBzdGF0aWMgRE9NQ2FjaGVTdG9yYWdlKiBjYWNoZXMoRE9NV2luZG93
Jik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7
Ci0gICAgQ2FjaGVTdG9yYWdlKiBjYWNoZXMoKSBjb25zdDsKKyAgICBET01DYWNoZVN0b3JhZ2Uq
IGNhY2hlcygpIGNvbnN0OwogCi0gICAgbXV0YWJsZSBSZWZQdHI8Q2FjaGVTdG9yYWdlPiBtX2Nh
Y2hlczsKKyAgICBtdXRhYmxlIFJlZlB0cjxET01DYWNoZVN0b3JhZ2U+IG1fY2FjaGVzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01XaW5kb3dDYWNoZXMuaWRsCmluZGV4IDdjNzQyOTU3YmU4ODFjYTg4OTFiNjM2NjAy
YWYwZjc2OGQxNTA2ZjguLmVhZjU5Y2QzZWFiNjEwZWQxMTBjMzA4MGU4NDMzY2Y5MjA0N2RhMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5p
ZGwKQEAgLTI2LDUgKzI2LDUgQEAKIFsKICAgICBFbmFibGVkQXRSdW50aW1lPUNhY2hlQVBJLAog
XSBwYXJ0aWFsIGludGVyZmFjZSBET01XaW5kb3cgewotICAgIFtTZWN1cmVDb250ZXh0LCBTYW1l
T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgQ2FjaGVTdG9yYWdlIGNhY2hlczsKKyAgICBbU2Vj
dXJlQ29udGV4dCwgU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTUNhY2hlU3RvcmFn
ZSBjYWNoZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9X
b3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcAppbmRleCBjOGU0ZmRjMWY1OTYzMGNhNGZkNWU1
YmJhMzU0MWNjNDlhMjhjNzZkLi4wNjU2YmVmMGIxNzE4ZTMzZGJjN2ZhMGVlNjBjNTdkNDhlMzhk
NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2Jh
bFNjb3BlQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtl
ckdsb2JhbFNjb3BlQ2FjaGVzLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmgiCiAKLSNpbmNsdWRlICJD
YWNoZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJET01DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NywxNSArNDcs
MTUgQEAgV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpm
cm9tKFdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkKICAgICByZXR1cm4gc3VwcGxlbWVudDsKIH0K
IAotQ2FjaGVTdG9yYWdlKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6Y2FjaGVzKFdvcmtlckds
b2JhbFNjb3BlJiBzY29wZSkKK0RPTUNhY2hlU3RvcmFnZSogV29ya2VyR2xvYmFsU2NvcGVDYWNo
ZXM6OmNhY2hlcyhXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJuIFdvcmtl
ckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKHNjb3BlKS0+Y2FjaGVzKCk7CiB9CiAKLUNhY2hlU3Rv
cmFnZSogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmNhY2hlcygpIGNvbnN0CitET01DYWNoZVN0
b3JhZ2UqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpjYWNoZXMoKSBjb25zdAogewogICAgIGlm
ICghbV9jYWNoZXMpCi0gICAgICAgIG1fY2FjaGVzID0gQ2FjaGVTdG9yYWdlOjpjcmVhdGUobV9z
Y29wZSwgbV9zY29wZS5jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkpOworICAgICAgICBtX2NhY2hl
cyA9IERPTUNhY2hlU3RvcmFnZTo6Y3JlYXRlKG1fc2NvcGUsIG1fc2NvcGUuY2FjaGVTdG9yYWdl
Q29ubmVjdGlvbigpKTsKICAgICByZXR1cm4gbV9jYWNoZXMuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
aAppbmRleCBhZDc4ZDllY2QyODM4ZDE5NjBmNjBhZDYwN2Q0MTYwYjhhNGUzMTRjLi5hNTBiNGEz
NGM4MDA4Mzc2OTRkMzFiNjMzNTk1ZGMyMzhjYjg5ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5oCkBAIC0yOSw3
ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ2FjaGVTdG9yYWdlOwor
Y2xhc3MgRE9NQ2FjaGVTdG9yYWdlOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzIDogcHVibGljIFN1cHBsZW1lbnQ8V29ya2VyR2xvYmFs
U2NvcGU+IHsKQEAgLTM5LDE1ICszOSwxNSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IHN0YXRpYyBDYWNoZVN0b3JhZ2UqIGNhY2hlcyhXb3JrZXJHbG9iYWxTY29wZSYpOworICAgIHN0
YXRpYyBET01DYWNoZVN0b3JhZ2UqIGNhY2hlcyhXb3JrZXJHbG9iYWxTY29wZSYpOwogCiBwcml2
YXRlOgogICAgIHN0YXRpYyBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcyogZnJvbShXb3JrZXJHbG9i
YWxTY29wZSYpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwotICAg
IENhY2hlU3RvcmFnZSogY2FjaGVzKCkgY29uc3Q7CisgICAgRE9NQ2FjaGVTdG9yYWdlKiBjYWNo
ZXMoKSBjb25zdDsKIAogICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3Njb3BlOwotICAgIG11dGFi
bGUgUmVmUHRyPENhY2hlU3RvcmFnZT4gbV9jYWNoZXM7CisgICAgbXV0YWJsZSBSZWZQdHI8RE9N
Q2FjaGVTdG9yYWdlPiBtX2NhY2hlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVD
YWNoZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29w
ZUNhY2hlcy5pZGwKaW5kZXggODM1YzI1ZjBkYjVhMWQ1NjA3ZTBhZGJlN2NlMDlkNmU5ODYzMjhk
ZS4uYzkwYjNmMjczZjEzMzhjMzM4OGRlNmQ4OGYzMThlNTg2YWZiMjY5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hl
cy5pZGwKQEAgLTI2LDUgKzI2LDUgQEAKIFsKICAgICBFbmFibGVkQXRSdW50aW1lPUNhY2hlQVBJ
LAogXSBwYXJ0aWFsIGludGVyZmFjZSBXb3JrZXJHbG9iYWxTY29wZSB7Ci0gICAgW1NlY3VyZUNv
bnRleHQsIFNhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDYWNoZVN0b3JhZ2UgY2FjaGVz
OworICAgIFtTZWN1cmVDb250ZXh0LCBTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRE9N
Q2FjaGVTdG9yYWdlIGNhY2hlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjNiMGYwZGVmMzE4YmJjZWU3YzdiZjlmZjZl
NjA1NDA0MDI3OGNlMi4uYzRlMWY0NDdkM2FjOWIwNzhiZmVhMDhhNjkwZTE0NGU1NTRhYTM3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTcxNCw4ICsxNzE0LDggQEAKIAkJNDEzMDE1RDkxQzdCNTcxNDAwMDkxQzZGIC8qIEZl
dGNoQm9keVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTMwMTVENTFDN0I1NzA0MDAwOTFDNkYgLyogRmV0Y2hCb2R5U291cmNlLmNwcCAq
LzsgfTsKIAkJNDEzODBDMjYxRjM0MzZBNjAwMTU1RkRBIC8qIERPTUNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzgwQzIwMUYzNDM2OEEw
MDE1NUZEQSAvKiBET01DYWNoZS5jcHAgKi87IH07CiAJCTQxMzgwQzI3MUYzNDM2QUMwMDE1NUZE
QSAvKiBET01DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzODBDMjUxRjM0MzY5QTAwMTU1RkRBIC8qIERPTUNhY2hlLmggKi87IH07Ci0JCTQx
MzgwQzI4MUYzNDM2QUMwMDE1NUZEQSAvKiBDYWNoZVN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzODBDMjExRjM0MzY4RDAwMTU1RkRB
IC8qIENhY2hlU3RvcmFnZS5jcHAgKi87IH07Ci0JCTQxMzgwQzI5MUYzNDM2QUMwMDE1NUZEQSAv
KiBDYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMzgwQzIyMUYzNDM2OTAwMDE1NUZEQSAvKiBDYWNoZVN0b3JhZ2UuaCAqLzsgfTsK
KwkJNDEzODBDMjgxRjM0MzZBQzAwMTU1RkRBIC8qIERPTUNhY2hlU3RvcmFnZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4MEMyMTFGMzQzNjhE
MDAxNTVGREEgLyogRE9NQ2FjaGVTdG9yYWdlLmNwcCAqLzsgfTsKKwkJNDEzODBDMjkxRjM0MzZB
QzAwMTU1RkRBIC8qIERPTUNhY2hlU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzODBDMjIxRjM0MzY5MDAwMTU1RkRBIC8qIERPTUNhY2hl
U3RvcmFnZS5oICovOyB9OwogCQk0MTM4RDMzNTEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM4
RDMzMzEyNDQwNTQ4MDAzMjNEMzMgLyogRXZlbnRDb250ZXh0LmggKi87IH07CiAJCTQxMzhEMzM2
MTI0NDA1NDgwMDMyM0QzMyAvKiBFdmVudENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzOEQzMzQxMjQ0MDU0ODAwMzIzRDMzIC8qIEV2
ZW50Q29udGV4dC5jcHAgKi87IH07CiAJCTQxMzhGODU3MUQyNTNGMDgwMDFDQjYxRSAvKiBKU0RP
TUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMzhGODU1MUQyNTNFRUUwMDFDQjYxRSAvKiBKU0RPTUl0ZXJhdG9yLmNwcCAqLzsgfTsK
QEAgLTMzNzMsMTEgKzMzNzMsMTEgQEAKIAkJN0NFMTkxNzExRjJBQkU3MTAwMjcyRjc4IC8qIEpT
RmV0Y2hSZWZlcnJlclBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NFMTkxNjgxRjJBQjcwMzAwMjcyRjc4IC8qIEpTRmV0Y2hSZWZlcnJlclBv
bGljeS5oICovOyB9OwogCQk3Q0UxOTE3MjFGMkFCRTcxMDAyNzJGNzggLyogSlNGZXRjaFJlcXVl
c3RDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0UxOTE2RTFGMkFCNzBEMDAyNzJGNzggLyogSlNGZXRjaFJlcXVlc3RDYWNoZS5jcHAgKi87
IH07CiAJCTdDRTE5MTcyMUYyQUJFNzEwMDI3MkY3OSAvKiBKU0RPTUNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTE5MTZFMUYyQUI3MEQw
MDI3MkY3OSAvKiBKU0RPTUNhY2hlLmNwcCAqLzsgfTsKLQkJN0NFMTkxNzIxRjJBQkU3MTAwMjcy
RjdBIC8qIEpTQ2FjaGVTdG9yYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDRTE5MTZFMUYyQUI3MEQwMDI3MkY3QSAvKiBKU0NhY2hlU3RvcmFn
ZS5jcHAgKi87IH07CisJCTdDRTE5MTcyMUYyQUJFNzEwMDI3MkY3QSAvKiBKU0RPTUNhY2hlU3Rv
cmFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0UxOTE2RTFGMkFCNzBEMDAyNzJGN0EgLyogSlNET01DYWNoZVN0b3JhZ2UuY3BwICovOyB9Owog
CQk3Q0UxOTE3MjFGMkFCRTcxMDAyNzJGN0IgLyogSlNDYWNoZVF1ZXJ5T3B0aW9ucy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UxOTE2RTFGMkFC
NzBEMDAyNzJGN0IgLyogSlNDYWNoZVF1ZXJ5T3B0aW9ucy5jcHAgKi87IH07CiAJCTdDRTE5MTcz
MUYyQUJFNzEwMDI3MkY3OCAvKiBKU0ZldGNoUmVxdWVzdENhY2hlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UxOTE2NDFGMkFCNkZCMDAyNzJGNzgg
LyogSlNGZXRjaFJlcXVlc3RDYWNoZS5oICovOyB9OwogCQk3Q0UxOTE3MzFGMkFCRTcxMDAyNzJG
NzkgLyogSlNET01DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFMTkxNjQxRjJBQjZGQjAwMjcyRjc5IC8qIEpTRE9NQ2FjaGUuaCAqLzsgfTsK
LQkJN0NFMTkxNzMxRjJBQkU3MTAwMjcyRjdBIC8qIEpTQ2FjaGVTdG9yYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UxOTE2NDFGMkFCNkZCMDAy
NzJGN0EgLyogSlNDYWNoZVN0b3JhZ2UuaCAqLzsgfTsKKwkJN0NFMTkxNzMxRjJBQkU3MTAwMjcy
RjdBIC8qIEpTRE9NQ2FjaGVTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3Q0UxOTE2NDFGMkFCNkZCMDAyNzJGN0EgLyogSlNET01DYWNoZVN0
b3JhZ2UuaCAqLzsgfTsKIAkJN0NFMTkxNzQxRjJBQkU3MTAwMjcyRjc4IC8qIEpTRmV0Y2hSZXF1
ZXN0Q3JlZGVudGlhbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFMTkxNkIxRjJBQjcwODAwMjcyRjc4IC8qIEpTRmV0Y2hSZXF1ZXN0Q3JlZGVu
dGlhbHMuY3BwICovOyB9OwogCQk3Q0UxOTE3NTFGMkFCRTcxMDAyNzJGNzggLyogSlNGZXRjaFJl
cXVlc3RDcmVkZW50aWFscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFMTkxNjYxRjJBQjZGRjAwMjcyRjc4IC8qIEpTRmV0Y2hSZXF1ZXN0Q3JlZGVu
dGlhbHMuaCAqLzsgfTsKIAkJN0NFMTkxNzYxRjJBQkU3MTAwMjcyRjc4IC8qIEpTRmV0Y2hSZXF1
ZXN0SW5pdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0UxOTE2RDFGMkFCNzBDMDAyNzJGNzggLyogSlNGZXRjaFJlcXVlc3RJbml0LmNwcCAqLzsg
fTsKQEAgLTk1MTMsMTAgKzk1MTMsMTAgQEAKIAkJNDEzMDE1RDYxQzdCNTcwNDAwMDkxQzZGIC8q
IEZldGNoQm9keVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRj
aEJvZHlTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDE1RDcxQzdC
NTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEZldGNoUmVzcG9uc2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM4MEMy
MDFGMzQzNjhBMDAxNTVGREEgLyogRE9NQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9N
Q2FjaGUuY3BwOyBwYXRoID0gTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKLQkJNDEzODBDMjExRjM0MzY4RDAwMTU1RkRBIC8qIENhY2hlU3Rv
cmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDYWNoZVN0b3JhZ2UuY3BwOyBwYXRoID0gTW9k
dWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
Ci0JCTQxMzgwQzIyMUYzNDM2OTAwMDE1NUZEQSAvKiBDYWNoZVN0b3JhZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQ2FjaGVTdG9yYWdlLmg7IHBhdGggPSBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5o
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTQxMzgwQzIxMUYzNDM2OEQwMDE1NUZE
QSAvKiBET01DYWNoZVN0b3JhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRE9NQ2FjaGVTdG9y
YWdlLmNwcDsgcGF0aCA9IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk0MTM4MEMyMjFGMzQzNjkwMDAxNTVGREEgLyogRE9N
Q2FjaGVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTUNhY2hlU3RvcmFnZS5oOyBwYXRoID0g
TW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQk0MTM4MEMyMzFGMzQzNjk0MDAxNTVGREEgLyogRE9NQ2FjaGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERP
TUNhY2hlLmlkbDsgcGF0aCA9IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaWRsOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IH07Ci0JCTQxMzgwQzI0MUYzNDM2OTcwMDE1NUZEQSAvKiBDYWNoZVN0
b3JhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IENhY2hlU3RvcmFnZS5pZGw7IHBhdGggPSBNb2R1bGVzL2NhY2hlL0Nh
Y2hlU3RvcmFnZS5pZGw7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNDEzODBDMjQx
RjM0MzY5NzAwMTU1RkRBIC8qIERPTUNhY2hlU3RvcmFnZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRE9NQ2FjaGVTdG9y
YWdlLmlkbDsgcGF0aCA9IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmlkbDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MTM4MEMyNTFGMzQzNjlBMDAxNTVGREEgLyogRE9N
Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NQ2FjaGUuaDsgcGF0aCA9IE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk0MTM4MEMyQTFGMzQz
RTJGMDAxNTVGREEgLyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdvcmtlckds
b2JhbFNjb3BlQ2FjaGVzLmlkbDsgcGF0aCA9IE1vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2Nv
cGVDYWNoZXMuaWRsOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTQxMzgwQzJCMUYz
NDNFMkYwMDE1NUZEQSAvKiBET01XaW5kb3dDYWNoZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERPTVdpbmRvd0NhY2hl
cy5pZGw7IHBhdGggPSBNb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5pZGw7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTExNjQyLDcgKzExNjQyLDcgQEAKIAkJN0NFMTkxNUYx
RjJBOUI0RjAwMjcyRjc4IC8qIEZldGNoUmVxdWVzdFJlZGlyZWN0LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGZXRjaFJl
cXVlc3RSZWRpcmVjdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTE5MTY0
MUYyQUI2RkIwMDI3MkY3OCAvKiBKU0ZldGNoUmVxdWVzdENhY2hlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRmV0Y2hSZXF1ZXN0Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NF
MTkxNjQxRjJBQjZGQjAwMjcyRjc5IC8qIEpTRE9NQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNE
T01DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UxOTE2NDFGMkFCNkZC
MDAyNzJGN0EgLyogSlNDYWNoZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYWNoZVN0b3Jh
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NFMTkxNjQxRjJBQjZGQjAwMjcy
RjdBIC8qIEpTRE9NQ2FjaGVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ2FjaGVTdG9y
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTE5MTY1MUYyQUI2RkQwMDI3
MkY3OCAvKiBKU0ZldGNoUmVxdWVzdE1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRj
aFJlcXVlc3RNb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFMTkxNjYx
RjJBQjZGRjAwMjcyRjc4IC8qIEpTRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNGZXRjaFJlcXVlc3RDcmVkZW50aWFscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Q0UxOTE2NzFGMkFCNzAxMDAyNzJGNzggLyogSlNGZXRjaFJlZmVycmVyUG9saWN5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hSZWZlcnJlclBvbGljeS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTY1NCw3ICsxMTY1NCw3IEBACiAJCTdDRTE5MTZE
MUYyQUI3MEMwMDI3MkY3OCAvKiBKU0ZldGNoUmVxdWVzdEluaXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNGZXRjaFJlcXVlc3RJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0NFMTkxNkUxRjJBQjcwRDAwMjcyRjc4IC8qIEpTRmV0Y2hSZXF1ZXN0Q2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaFJlcXVlc3RDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDRTE5MTZFMUYyQUI3MEQwMDI3MkY3OSAvKiBKU0RPTUNhY2hlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3Q0UxOTE2RTFGMkFCNzBEMDAyNzJGN0EgLyogSlNDYWNoZVN0b3JhZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYWNoZVN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3Q0UxOTE2RTFGMkFCNzBEMDAyNzJGN0EgLyogSlNET01DYWNoZVN0b3Jh
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01DYWNoZVN0b3JhZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0UxOTE2RTFGMkFCNzBEMDAyNzJGN0IgLyogSlNDYWNo
ZVF1ZXJ5T3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhY2hlUXVlcnlPcHRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFMTkxNkYxRjJBQjcwRjAwMjcy
Rjc4IC8qIEpTRmV0Y2hSZXF1ZXN0UmVkaXJlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNG
ZXRjaFJlcXVlc3RSZWRpcmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
RTU4RDQ5MURENjRBNUIwMDEyODU1MiAvKiBTVkdQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTgwNTIsOSArMTgwNTIsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDFGQjI3OUIxRjM0Q0VG
MDAwNzk1NDg3IC8qIENhY2hlUXVlcnlPcHRpb25zLmggKi8sCiAJCQkJNDFGQjI3OTkxRjM0Q0U5
QzAwNzk1NDg3IC8qIENhY2hlUXVlcnlPcHRpb25zLmlkbCAqLywKLQkJCQk0MTM4MEMyMTFGMzQz
NjhEMDAxNTVGREEgLyogQ2FjaGVTdG9yYWdlLmNwcCAqLywKLQkJCQk0MTM4MEMyMjFGMzQzNjkw
MDAxNTVGREEgLyogQ2FjaGVTdG9yYWdlLmggKi8sCi0JCQkJNDEzODBDMjQxRjM0MzY5NzAwMTU1
RkRBIC8qIENhY2hlU3RvcmFnZS5pZGwgKi8sCiAJCQkJNDFEMTI5QzkxRjNEMEVFMzAwRDE1RTQ3
IC8qIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovLAogCQkJCTQxRDEyOUNDMUYzRDBFRTMw
MEQxNUU0NyAvKiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi8sCiAJCQkJNDFEMTI5Q0ExRjNE
MEVFMzAwRDE1RTQ3IC8qIENhY2hlU3RvcmFnZVJlY29yZC5oICovLApAQCAtMTgwNjMsNiArMTgw
NjAsOSBAQAogCQkJCTQxMzgwQzIzMUYzNDM2OTQwMDE1NUZEQSAvKiBET01DYWNoZS5pZGwgKi8s
CiAJCQkJNDFGQUJEMkUxRjRFMDI1MTAwNkE2Qzk3IC8qIERPTUNhY2hlRW5naW5lLmNwcCAqLywK
IAkJCQk0MUZBQkQyQjFGNERGRTQyMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuaCAqLywKKwkJ
CQk0MTM4MEMyMTFGMzQzNjhEMDAxNTVGREEgLyogRE9NQ2FjaGVTdG9yYWdlLmNwcCAqLywKKwkJ
CQk0MTM4MEMyMjFGMzQzNjkwMDAxNTVGREEgLyogRE9NQ2FjaGVTdG9yYWdlLmggKi8sCisJCQkJ
NDEzODBDMjQxRjM0MzY5NzAwMTU1RkRBIC8qIERPTUNhY2hlU3RvcmFnZS5pZGwgKi8sCiAJCQkJ
NDFGQjI3OEUxRjM0QzI4MjAwNzk1NDg3IC8qIERPTVdpbmRvd0NhY2hlcy5jcHAgKi8sCiAJCQkJ
NDFGQjI3OEMxRjM0QzI4MjAwNzk1NDg3IC8qIERPTVdpbmRvd0NhY2hlcy5oICovLAogCQkJCTQx
MzgwQzJCMUYzNDNFMkYwMDE1NUZEQSAvKiBET01XaW5kb3dDYWNoZXMuaWRsICovLApAQCAtMTgz
MjYsMTAgKzE4MzI2LDEwIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTdDRTE5MTZFMUYyQUI3MEQwMDI3MkY3QiAvKiBKU0NhY2hlUXVlcnlPcHRpb25zLmNwcCAq
LywKLQkJCQk3Q0UxOTE2RTFGMkFCNzBEMDAyNzJGN0EgLyogSlNDYWNoZVN0b3JhZ2UuY3BwICov
LAotCQkJCTdDRTE5MTY0MUYyQUI2RkIwMDI3MkY3QSAvKiBKU0NhY2hlU3RvcmFnZS5oICovLAog
CQkJCTdDRTE5MTZFMUYyQUI3MEQwMDI3MkY3OSAvKiBKU0RPTUNhY2hlLmNwcCAqLywKIAkJCQk3
Q0UxOTE2NDFGMkFCNkZCMDAyNzJGNzkgLyogSlNET01DYWNoZS5oICovLAorCQkJCTdDRTE5MTZF
MUYyQUI3MEQwMDI3MkY3QSAvKiBKU0RPTUNhY2hlU3RvcmFnZS5jcHAgKi8sCisJCQkJN0NFMTkx
NjQxRjJBQjZGQjAwMjcyRjdBIC8qIEpTRE9NQ2FjaGVTdG9yYWdlLmggKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IENhY2hlQVBJOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI3MzA4LDcg
KzI3MzA4LDYgQEAKIAkJCQlCQ0IxNkMyODA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5
bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5NTAwODI0NUU1OTAwMUU5QUJDIC8q
IENhY2hlUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQxMjlEMDFGM0QwRjA1MDBEMTVF
NDcgLyogQ2FjaGVRdWVyeU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxMzgwQzI5MUYz
NDM2QUMwMDE1NUZEQSAvKiBDYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDEy
OUQzMUYzRDBGMTYwMEQxNUU0NyAvKiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MUQxMjlENTFGM0QwRjY5MDBEMTVFNDcgLyogQ2FjaGVTdG9yYWdlUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDEyOUQyMUYzRDBGMTIwMEQxNUU0NyAvKiBDYWNo
ZVN0b3JhZ2VSZWNvcmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3MzcsNiArMjc3MzYsNyBAQAog
CQkJCTFBOEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTM4MEMyNzFGMzQzNkFDMDAxNTVGREEgLyogRE9NQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxRkFCRDJEMUY0REZFNEEwMDZBNkM5NyAvKiBET01DYWNoZUVu
Z2luZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDEzODBDMjkxRjM0MzZBQzAwMTU1RkRBIC8qIERP
TUNhY2hlU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkM5QTBGNzUxNjQwOTRDRjAwM0Q2
QjhEIC8qIERPTUNTU05hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIzQTg4NzIxNDU2
MzJGOTAwM0FFOEY1IC8qIERPTURPTVNldHRhYmxlVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QUFCQTI1QTE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9yLmggaW4gSGVhZGVycyAq
LywKQEAgLTI4NDA3LDcgKzI4NDA3LDYgQEAKIAkJCQk3Qzc3QzNEQzFERUY4NkQ3MDBBNTBCRkEg
LyogSlNCbG9iTGluZUVuZGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNzdDM0Q1MURFRjE3
OEUwMEE1MEJGQSAvKiBKU0Jsb2JQcm9wZXJ0eUJhZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRE
Q0YzQjMxQjZCRTIwODAwNjJENEMzIC8qIEpTQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJN0NFMTkxNzMxRjJBQkU3MTAwMjcyRjdBIC8qIEpTQ2FjaGVTdG9y
YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQ5RTI0QzEwN0Q0QTg0MDBCNTc5M0YgLyogSlND
YWxsYmFja0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjc3RTREMTdEMDE4Q0MwMDE1NTM0
RSAvKiBKU0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzE5M0JGMDFGNUUxMDk5MDA4OEYzRTYgLyogSlNDYW52YXNEaXJlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMjg0OTMsNiArMjg0OTIsNyBAQAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBB
M0Y2NSAvKiBKU0RPTUJpbmRpbmdJbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0M0NUM5RDQxRTNGQ0JERjAwQUFCNTU4IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3Q0UxOTE3MzFGMkFCRTcxMDAyNzJGNzkgLyogSlNET01DYWNoZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0NFMTkxNzMxRjJBQkU3MTAwMjcyRjdBIC8qIEpTRE9NQ2Fj
aGVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzgxMzlBQTFFRDY2MDRCMDBDRTI2RTgg
LyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEz
QzJDMzQxQkMyOUE4RjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMDg0MTM0MUNEREIxNTUwMEIwOTU4QyAvKiBKU0RPTUNvbnZlcnQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzE0NTcsNyArMzE0NTcsNiBAQAogCQkJCTFDMDkzOUVBMUExM0UxMjkwMEI3
ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NTM4NjAyMTQ0
ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNCMTZDMjcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDEzODBDMjgxRjM0MzZBQzAwMTU1RkRBIC8qIENhY2hlU3RvcmFnZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUQxMjlDRjFGM0QwRUZFMDBEMTVFNDcgLyogQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDNBRjhFNjFBQzVCN0U4
MDBDQTcxN0UgLyogQ2FjaGVWYWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QUUy
RDk2MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzE4MTcsNiArMzE4MTYsNyBAQAogCQkJCTFBOEY2QkMyMERCNTVDREMwMDFEQjc5NCAv
KiBET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzgwQzI2MUYz
NDM2QTYwMDE1NUZEQSAvKiBET01DYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUZBQkQy
RjFGNEUwMkNCMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDEzODBDMjgxRjM0MzZBQzAwMTU1RkRBIC8qIERPTUNhY2hlU3RvcmFnZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNwYWNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQUJBMjU5MTRCQzYxMzMwMEFBOUExMSAvKiBET01F
ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxQkRGMjQxNTZDMTg4MzAwMUMxMjQzIC8q
IERPTUVycm9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIxMTQsNyArMzIxMTQsNiBAQAogCQkJ
CUUxMkRFNzE3MUU0Qjc0OUMwMEY5QUNDRiAvKiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDE0QzI1RDcxRTlFRkVERTAwQkVFMTQxIC8qIEgyNjRWaWRl
b1Rvb2xCb3hFbmNvZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQkYxMjUxRjEyRDAw
M0VGMjY5IC8qIEhpZGRlbklucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwNzNCREMw
NTFGNjg0MzYxMDBFRTM0RUQgLyogVHJhY2tQcml2YXRlQmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTVCRTE5QjFENTRGNkMxMDBERDdDNjggLyogSElER2FtZXBhZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTVCRTE5RDFENTRGNkMxMDBERDdDNjggLyogSElER2FtZXBhZFByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTREMTUzMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0
b3J5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI0NDcsNyArMzI0NDYsNiBAQAogCQkJCTdDNzdD
M0Q0MURFRjE3OEUwMEE1MEJGQSAvKiBKU0Jsb2JQcm9wZXJ0eUJhZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNERDRjNCMjFCNkJFMjA4MDA2MkQ0QzMgLyogSlNCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRTE5MTcyMUYyQUJFNzEwMDI3MkY3QiAv
KiBKU0NhY2hlUXVlcnlPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDRTE5MTcyMUYy
QUJFNzEwMDI3MkY3QSAvKiBKU0NhY2hlU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDQ5RTI4NzEwN0Q0REI0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDcyNzdFNEMxN0QwMThDQzAwMTU1MzRFIC8qIEpTQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MxOTNCRUYxRjVFMTA5OTAwODhG
M0U2IC8qIEpTQ2FudmFzRGlyZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI1NDAsNiAr
MzI1MzgsNyBAQAogCQkJCTdDNDVDOUNGMUUzRUZERjcwMEFBQjU1OCAvKiBKU0RPTUJpbmRpbmdT
ZWN1cml0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0MwMUQwQTFFNEE3QjA0MDBFNTI5Q0Mg
LyogSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
RTE5MTcyMUYyQUJFNzEwMDI3MkY3OSAvKiBKU0RPTUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdDRTE5MTcyMUYyQUJFNzEwMDI3MkY3QSAvKiBKU0RPTUNhY2hlU3RvcmFnZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0MwMUQwQjFFNEE3QjA0MDBFNTI5Q0MgLyogSlNET01Db25zdHJ1
Y3RvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDMDFEMEMxRTRBN0IwNDAwRTUyOUND
IC8qIEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4RTM0QjIxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydERhdGUuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zNDM3Myw2ICszNDM3Miw3IEBACiAJCQkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4
RDQ1IC8qIFRyYWNrQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAzMzREMzE0NTlGRkFE
MDA4RDhENDUgLyogVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3
MTVDRTI2MDA2NThEOTggLyogVHJhY2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
NzNCREMwNTFGNjg0MzYxMDBFRTM0RUQgLyogVHJhY2tQcml2YXRlQmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRkFDMzBGRjE4NEZCMTQ1MDA4QzRGMUUgLyogVHJhaWxpbmdPYmplY3RzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxRDdFRkVDMUJERUZBNTEwMEU5M0UxMCAvKiBUcmFuc2Fj
dGlvbk9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDMzBFRjg2RDQ3MDA5
RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>