<?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>176729</bug_id>
          
          <creation_ts>2017-09-11 13:47:23 -0700</creation_ts>
          <short_desc>[CF] Upstream CFNetwork-related WebKitSystemInterface functions</short_desc>
          <delta_ts>2020-04-17 03:09: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210646</see_also>
          <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="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>joepeck</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1347579</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-11 13:47:23 -0700</bug_when>
    <thetext>[CF] Upstream CFNetwork-related WebKitSystemInterface functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347584</commentid>
    <comment_count>1</comment_count>
      <attachid>320468</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-11 13:48:51 -0700</bug_when>
    <thetext>Created attachment 320468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347589</commentid>
    <comment_count>2</comment_count>
      <attachid>320470</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-11 13:57:10 -0700</bug_when>
    <thetext>Created attachment 320470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347670</commentid>
    <comment_count>3</comment_count>
      <attachid>320485</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-11 15:22:37 -0700</bug_when>
    <thetext>Created attachment 320485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347695</commentid>
    <comment_count>4</comment_count>
      <attachid>320495</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-11 15:59:38 -0700</bug_when>
    <thetext>Created attachment 320495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348051</commentid>
    <comment_count>5</comment_count>
      <attachid>320570</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-12 14:59:20 -0700</bug_when>
    <thetext>Created attachment 320570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348320</commentid>
    <comment_count>6</comment_count>
      <attachid>320649</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-13 09:46:20 -0700</bug_when>
    <thetext>Created attachment 320649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348372</commentid>
    <comment_count>7</comment_count>
      <attachid>320660</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-13 11:04:01 -0700</bug_when>
    <thetext>Created attachment 320660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348411</commentid>
    <comment_count>8</comment_count>
      <attachid>320667</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-13 11:48:25 -0700</bug_when>
    <thetext>Created attachment 320667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348450</commentid>
    <comment_count>9</comment_count>
      <attachid>320667</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-13 13:02:15 -0700</bug_when>
    <thetext>Comment on attachment 320667
Patch

Clearing flags on attachment: 320667

Committed r221986: &lt;http://trac.webkit.org/changeset/221986&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348451</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-13 13:02:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353446</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:31:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693424&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320468</attachid>
            <date>2017-09-11 13:48:51 -0700</date>
            <delta_ts>2017-09-11 13:57:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176729-20170911134850.patch</filename>
            <type>text/plain</type>
            <size>33815</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjNmM4ODQ2MTYwNmMx
MTlkNTJjNTNjNmZlNjI4MWU5YzA3MTRkNC4uMjQ0OTllMjBmMzIzNDRhMzdkNjZlODBjNDliNmQy
MDkxYWYxYzc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0
d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1B1YmxpY1N1
ZmZpeE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzUHVibGljU3VmZml4KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3RyZWFtcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZFN0cmVhbUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OndyaXRlU3RyZWFtQ2FsbGJhY2sp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0
Zm9ybVJlcXVlc3QpOgorCiAyMDE3LTA5LTExICBZb3NoaWFraSBKaXRzdWthd2EgIDxZb3NoaWFr
aS5KaXRzdWthd2FAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBGaXggdGhlIHdpbmNh
aXJvIGJ1aWxkIGFmdGVyIHIyMjE4MzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGZiYTE0MmEwOTI1
NzdjYjU1ZTBhM2ZmNjMxNTRjNTU2YzJlOGNlNTEuLjI0ZTA3ZmE4ODg0YWI4Y2FkYTM1MjkzODg3
ZDAxMzVhNDNjZmYyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0IEBACiAyMDE3
LTA5LTExICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ZdIFVw
c3RyZWFtIENGTmV0d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaDoKKworMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0Bh
cHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyZWYzNDM5NDAzZTNlNGM4YTQx
Yzc1Njg1ZDU2ZWU1N2JiZWNmN2U3Li42MDAwOGM3MmZlZjQxZTBmNjYwZGViMWMyZWY1NWE2ZGMy
ZGMzMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDE3LTA5LTExICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0d29yay1y
ZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OmNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKElQQzo6ZGljdGlvbmFyeVZhbHVlT2ZUeXBlKToKKyAgICAgICAg
KElQQzo6Y3JlYXRlQXJjaGl2ZUxpc3QpOgorICAgICAgICAoSVBDOjpjcmVhdGVDRlVSTFJlcXVl
c3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSVBDOjpjcmVhdGVO
U1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVs
dENhY2hlU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAg
ICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKworMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQt
cmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDg1NmExYWVlOTgxYTlkNmYwNDMxZDFmNGM1YWYwY2E5YWQyYTJjNzAu
LjUyYTQ1MTM2NjlmYjYyYzE3ZTg2OTg4YzZlNzE0NDA4YjFiOGRkYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdvcmstcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX3NldENhY2hlTW9k
ZWw6XSk6CisKKzIwMTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAg
ICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNl
IGZ1bmN0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2NDcyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NG
TmV0d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
LmgKaW5kZXggMGFlODBjNzg3YjhlODFiOWE4NGYwMWI5MTZiOGJmNzRhOTMyZGYzYy4uMTM5MDg0
MDQ0MjdiNGFjZTI3YTQ2ODM2OGYzMGI4M2Y2MmQyM2RlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKQEAgLTE5Myw3ICsxOTMsMTMgQEAgdm9pZCBf
Q0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYKIAogZXh0ZXJuIENGU3RyaW5nUmVmIGNvbnN0IGtDRkhUVFBDb29r
aWVMb2NhbEZpbGVEb21haW47CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGSFRUUFZlcnNp
b24xXzE7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlDT05ORUNU
QWRkaXRpb25hbEhlYWRlcnM7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJv
cGVydHlDT05ORUNUUHJveHk7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJv
cGVydHlDT05ORUNUUHJveHlIb3N0OworZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVh
bVByb3BlcnR5Q09OTkVDVFByb3h5UG9ydDsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZT
dHJlYW1Qcm9wZXJ0eUNPTk5FQ1RSZXNwb25zZTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZVUkxSZXF1ZXN0QWxsb3dBbGxQT1NUQ2FjaGluZzsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBfa0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXk7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tD
RlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIF9rQ0ZVUkxTdG9yYWdlU2Vzc2lvbklzUHJpdmF0ZTsKIApAQCAtMjM2LDYgKzI0MiwxMiBA
QCBDRkFycmF5UmVmIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhDRkhUVFBDb29raWVT
dG9yYWdlUmVmKTsKIHZvaWQgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiwgQ0ZBcnJheVJlZiBjb29raWVzLCBDRlVSTFJlZiwgQ0ZVUkxSZWYgbWFp
bkRvY3VtZW50VVJMKTsKIHZvaWQgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUNvb2tpZShDRkhU
VFBDb29raWVTdG9yYWdlUmVmLCBDRkhUVFBDb29raWVSZWYpOwogQ0ZNdXRhYmxlVVJMUmVxdWVz
dFJlZiBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShDRkFsbG9jYXRvclJlZiwgQ0ZVUkxS
ZXF1ZXN0UmVmKTsKK0NGU3RyaW5nUmVmIF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KENG
VVJMQ2FjaGVSZWYpOworQm9vbGVhbiBfQ0ZIb3N0SXNEb21haW5Ub3BMZXZlbChDRlN0cmluZ1Jl
ZiBkb21haW4pOwordm9pZCBfQ0ZIVFRQTWVzc2FnZVNldFJlc3BvbnNlVVJMKENGSFRUUE1lc3Nh
Z2VSZWYsIENGVVJMUmVmKTsKK3ZvaWQgX0NGSFRUUE1lc3NhZ2VTZXRSZXNwb25zZVByb3h5VVJM
KENGSFRUUE1lc3NhZ2VSZWYsIENGVVJMUmVmKTsKK3ZvaWQgX0NGVVJMUmVxdWVzdENyZWF0ZUFy
Y2hpdmVMaXN0KENGQWxsb2NhdG9yUmVmLCBDRlVSTFJlcXVlc3RSZWYsIENGSW5kZXgqIHZlcnNp
b24sIENGVHlwZVJlZioqIG9iamVjdHMsIENGSW5kZXgqIG9iamVjdENvdW50LCBDRkRpY3Rpb25h
cnlSZWYqIHByb3RvY29sUHJvcGVydGllcyk7CitDRk11dGFibGVVUkxSZXF1ZXN0UmVmIF9DRlVS
TFJlcXVlc3RDcmVhdGVGcm9tQXJjaGl2ZUxpc3QoQ0ZBbGxvY2F0b3JSZWYsIENGSW5kZXggdmVy
c2lvbiwgQ0ZUeXBlUmVmKiBvYmplY3RzLCBDRkluZGV4IG9iamVjdENvdW50LCBDRkRpY3Rpb25h
cnlSZWYgcHJvdG9jb2xQcm9wZXJ0aWVzKTsKIAogI2VuZGlmIC8vICFQTEFURk9STShXSU4pCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2VJT1MubW0KaW5kZXggZDczMzk4ZWMyYjQzZDFlMzdkYmZhOGViZTdlYTQwMmM2MWYy
OGY0Zi4uMWI5NjllY2Q2ODlkZDYyYjYyZmMzNGQ1YmE4ZTk5ZTFjOGJhODNkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2VJT1MubW0KQEAgLTI5LDEwICsyOSw3IEBACiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDbGVh
ckdseXBoVmVjdG9yKSh2b2lkKiBnbHlwaHMpOwogV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgKCp3
a0NvbnZlcnRDaGFyVG9HbHlwaHMpKHZvaWQqIHN0eWxlR3JvdXAsIGNvbnN0IFVuaUNoYXIqLCB1
bnNpZ25lZCBudW1DaGFyYWN0ZXJzLCB2b2lkKiBnbHlwaHMpOwogV0VCQ09SRV9FWFBPUlQgaWQg
KCp3a0NyZWF0ZU5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkpKHZvaWQpOwotV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYs
IENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKLVdFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENG
UmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKIFdF
QkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKShCT09MKTsKLVdFQkNPUkVfRVhQT1JUIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05O
RUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwg
Q0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwogV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrU2V0TGF5ZXJDb250ZW50c1NjYWxlKShDQUxheWVyICopOwogCiBXRUJD
T1JFX0VYUE9SVCBib29sICgqd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcyko
dm9pZCk7CkBAIC00OCwxMiArNDUsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sKCp3a0NhcHRpb25B
cHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKShDR0Zsb2F0Kik7CiBXRUJDT1JFX0VY
UE9SVCBpbnQoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKSh2b2lkKTsKIFdF
QkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3ND
aGFuZ2VkTm90aWZpY2F0aW9uKSh2b2lkKTsKIAotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJ
U1QpCi1XRUJDT1JFX0VYUE9SVCBib29sICgqd2tJc1B1YmxpY1N1ZmZpeCkoTlNTdHJpbmcgKmhv
c3QpOwotI2VuZGlmCi0KLVdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tDYWNoZVBhcnRp
dGlvbktleSkodm9pZCk7Ci0KIFdFQkNPUkVfRVhQT1JUIGludCAoKndrRXhlcm5hbERldmljZVR5
cGVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKigqd2tF
eGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQppbmRleCA5MzBhMzQ3
NTMwZjQ3ZTg5YzEzODI5OWEzM2QyZjg2OWQxMGVmNTA2Li4zZjQzMTcyMzhlZGUzMzc2ZGVhYjZj
YTA5Y2E4YWFhYmY4NDE4MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUHVibGljU3VmZml4TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
dWJsaWNTdWZmaXhNYWMubW0KQEAgLTI2LDExICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJQdWJsaWNTdWZmaXguaCIKIAotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCi0KICNpZiBFTkFCTEUoUFVC
TElDX1NVRkZJWF9MSVNUKQogCisjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKKyNpbXBv
cnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisKIEBpbnRlcmZhY2UgTlNTdHJpbmcgKFdl
YkNvcmVOU1VSTEV4dHJhcykKIC0gKEJPT0wpX3dlYl9sb29rc0xpa2VJUEFkZHJlc3M7CiBAZW5k
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgaXNQdWJsaWNTdWZm
aXgoY29uc3QgU3RyaW5nJiBkb21haW4pCiB7CiAgICAgTlNTdHJpbmcgKmhvc3QgPSBkZWNvZGVI
b3N0TmFtZShkb21haW4pOwotICAgIHJldHVybiBob3N0ICYmIHdrSXNQdWJsaWNTdWZmaXgoaG9z
dCk7CisgICAgcmV0dXJuIGhvc3QgJiYgX0NGSG9zdElzRG9tYWluVG9wTGV2ZWwoKENGU3RyaW5n
UmVmKWhvc3QpOwogfQogCiBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25z
dCBTdHJpbmcmIGRvbWFpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IGY2NzU5NTA5YTExZmNlMzM0MTNmZTY5MDMz
YTQ2ODU2ZjU5NzQ1NTguLjllY2MzNDFjNTE2MjMxMTQzOWM0MmU3YmRmYTIwN2RlNjdkMDQ1MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaApAQCAtMTMzLDEyICsxMzMsNiBAQCBleHRlcm4gQk9PTCAoKndrSGl0VGVzdE1l
ZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7CiBleHRl
cm4gdm9pZCAoKndrTWVhc3VyZU1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0ICpib3VuZHMs
IENHU2l6ZSAqbmF0dXJhbFNpemUpOwogCiBleHRlcm4gdm9pZCAoKndrU2V0Q29va2llU3RvcmFn
ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpKEJPT0wpOwotI2VuZGlmCi1leHRlcm4gdm9pZCAoKndr
U2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHBy
b3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKLWV4dGVybiB2b2lkICgqd2tTZXRDT05O
RUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5n
UmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7Ci1leHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZiAo
KndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJl
c3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7
Ci0KLSNpZiAhUExBVEZPUk0oSU9TKQogZXh0ZXJuIHZvaWQqIHdrR2V0SHlwaGVuYXRpb25Mb2Nh
dGlvbkJlZm9yZUluZGV4OwogI2VuZGlmCiAKQEAgLTE2NywxMiArMTYxLDYgQEAgZXh0ZXJuIENH
RmxvYXQgKCp3a05TRWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKShDR0Zsb2F0IGRlbHRhKTsK
IGV4dGVybiBDR0Zsb2F0ICgqd2tOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSkoQ0dGbG9h
dCBkZWx0YSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi1leHRl
cm4gYm9vbCAoKndrSXNQdWJsaWNTdWZmaXgpKE5TU3RyaW5nICpob3N0KTsKLSNlbmRpZgotCi1l
eHRlcm4gQ0ZTdHJpbmdSZWYgKCp3a0NhY2hlUGFydGl0aW9uS2V5KSh2b2lkKTsKLQogdHlwZWRl
ZiBlbnVtIHsKICAgICB3a0V4dGVybmFsUGxheWJhY2tUeXBlTm9uZSwKICAgICB3a0V4dGVybmFs
UGxheWJhY2tUeXBlQWlyUGxheSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMmVhYmQ0ZjE0ZjM5MzM2ZTMzNDBj
ZThlZGVlMzdlNDgyZGQ2ODAyZS4uMzUxMGQ5OWJjZjU3ZjY1YzAxODk2Njk1NDI2NWUyYjg5YmFl
ZWM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UubW0KQEAgLTQwLDEwICs0MCw2IEBAIE5TVGltZUludGVydmFsICgqd2tH
ZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlCiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlKTsKIHZvaWQgKCp3a1BvcHVwTWVudSkoTlNNZW51KiwgTlNQb2ludCBsb2Nh
dGlvbiwgZmxvYXQgd2lkdGgsIE5TVmlldyosIGludCBzZWxlY3RlZEl0ZW0sIE5TRm9udCosIE5T
Q29udHJvbFNpemUgY29udHJvbFNpemUsIGJvb2wgdXNlc0N1c3RvbUFwcGVhcmFuY2UpOwogCi12
b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJp
bmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwotdm9pZCAoKndrU2V0Q09O
TkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmlu
Z1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwotQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29w
eUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNl
VVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7Ci0KIHZv
aWQqIHdrR2V0SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4OwogCiBib29sICgqd2tFeGVj
dXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKSh2b2lkKTsKQEAgLTYyLDEyICs1
OCw2IEBAIENHRmxvYXQgKCp3a05TRWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKShDR0Zsb2F0
IGRlbHRhKTsKIENHRmxvYXQgKCp3a05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKShDR0Zs
b2F0IGRlbHRhKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKLWJv
b2wgKCp3a0lzUHVibGljU3VmZml4KShOU1N0cmluZyAqaG9zdCk7Ci0jZW5kaWYKLQotQ0ZTdHJp
bmdSZWYgKCp3a0NhY2hlUGFydGl0aW9uS2V5KSh2b2lkKTsKLQogaW50ICgqd2tFeGVybmFsRGV2
aWNlVHlwZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiBOU1N0cmluZyAqKCp3a0V4ZXJuYWxEZXZp
Y2VEaXNwbGF5TmFtZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5j
cHAKaW5kZXggMGI1N2FhNDMwMjU3MGM2MTQ4Njg5YzBlMDk2MjVjOTBkMWM4YTYyMy4uOWU3NWVh
MzI4MjQxMmQxNmI2NDEyMTkyOWJmN2ExNmQ3NGM3YmM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5j
cHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0
Zm9ybVJlcXVlc3QoKQogICAgIGlmICghcGFydGl0aW9uLmlzTnVsbCgpICYmICFwYXJ0aXRpb24u
aXNFbXB0eSgpKSB7CiAgICAgICAgIENTdHJpbmcgdXRmOFN0cmluZyA9IHBhcnRpdGlvbi51dGY4
KCk7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFydGl0aW9uVmFsdWUgPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUlu
dDgqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3RoKCksIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCwgZmFsc2UpKTsKLSAgICAgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJv
cGVydHkoY2ZSZXF1ZXN0LCB3a0NhY2hlUGFydGl0aW9uS2V5KCksIHBhcnRpdGlvblZhbHVlLmdl
dCgpKTsKKyAgICAgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0
LCBrQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwogICAgIH0K
ICNlbmRpZgogCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBk
YXRlUmVzb3VyY2VSZXF1ZXN0KCkKICAgICB9CiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9O
SU5HKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXJ0aXRpb24gPSBhZG9wdENG
KHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJvcGVy
dHlGb3JLZXkobV9jZlJlcXVlc3QuZ2V0KCksIHdrQ2FjaGVQYXJ0aXRpb25LZXkoKSkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGFydGl0aW9uID0gYWRvcHRDRihzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4oX0NGVVJMUmVxdWVzdENvcHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5
KG1fY2ZSZXF1ZXN0LmdldCgpLCBrQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSkpKTsKICAgICBpZiAo
Y2FjaGVQYXJ0aXRpb24pCiAgICAgICAgIG1fY2FjaGVQYXJ0aXRpb24gPSBjYWNoZVBhcnRpdGlv
bi5nZXQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4
IDA5OThhMWU4NWZmMGM2MzM5YTJlZThhYTM2OTQ5NTM4MDQ4MGEyYjkuLjM1NDNiY2QyYzExNDJl
Mzc0YWFhZWRiZmJmYzEzYWEzZDQwOTMzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
Rk5ldC5jcHAKQEAgLTMwMiw2ICszMDIsMTMgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpjaG9vc2VQcm94eUZyb21BcnJheShDRkFycmF5UmVmIHByb3h5QXJyYXkpCiAgICAgbV9jb25u
ZWN0aW9uVHlwZSA9IERpcmVjdDsKIH0KIAorc3RhdGljIHZvaWQgc2V0Q09OTkVDVFByb3h5Rm9y
U3RyZWFtKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZO
dW1iZXJSZWYgcHJveHlQb3J0KQoreworICAgIGNvbnN0IHZvaWQqIHByb3h5S2V5c1tdID0geyBr
Q0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eUhvc3QsIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVD
VFByb3h5UG9ydCB9OworICAgIGNvbnN0IHZvaWQqIHByb3h5VmFsdWVzW10gPSB7IHByb3h5SG9z
dCwgcHJveHlQb3J0IH07CisgICAgYXV0byBjb25uZWN0RGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHByb3h5S2V5cywgcHJveHlWYWx1
ZXMsIHNpemVvZihwcm94eUtleXMpIC8gc2l6ZW9mKCpwcm94eUtleXMpLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5F
Q1RQcm94eSwgY29ubmVjdERpY3Rpb25hcnkuZ2V0KCkpOworfQogCiB2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMoKQogewpAQCAtMzQ3LDcgKzM1NCw3IEBAIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3RyZWFtcygpCiAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgY2FzZSBDT05ORUNUUHJveHk6Ci0gICAgICAgIHdrU2V0Q09OTkVDVFBy
b3h5Rm9yU3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJv
eHlQb3J0LmdldCgpKTsKKyAgICAgICAgc2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKG1fcmVhZFN0
cmVhbS5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQb3J0LmdldCgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC0zOTUsNiArNDAyLDE5IEBAIHN0YXRpYyBQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBhdXRoZW50aWNhdGlvblNjaGVtZUZyb21BdXRoZW50
aWNhdGlvCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFByb3RlY3Rpb25T
cGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bjsKIH0KKyAgICAKK3N0YXRpYyB2b2lkIHNl
dENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0oQ0ZSZWFkU3RyZWFtUmVmIHN0cmVh
bSwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKQoreworICAgIGF1dG8gb3Jp
Z2luYWxDT05ORUNURGljdGlvbmFyeSA9IGFkb3B0Q0YoKENGRGljdGlvbmFyeVJlZilDRlJlYWRT
dHJlYW1Db3B5UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSkp
OworICAgIGF1dG8gY29ubmVjdERpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIG9yaWdpbmFsQ09OTkVDVERpY3Rp
b25hcnkuZ2V0KCkpKTsKKworICAgIGNvbnN0IHZvaWQqIGhlYWRlckZpZWxkTmFtZXNbXSA9IHsg
Q0ZTVFIoIlByb3h5LUF1dGhvcml6YXRpb24iKSB9OworICAgIGNvbnN0IHZvaWQqIGhlYWRlckZp
ZWxkVmFsdWVzW10gPSB7IHByb3h5QXV0aG9yaXphdGlvblN0cmluZyB9OworICAgIGF1dG8gYWRk
aXRpb25hbEhlYWRlckZpZWxkcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGhlYWRlckZpZWxkTmFtZXMsIGhlYWRlckZpZWxkVmFsdWVzLCBzaXplb2Yo
aGVhZGVyRmllbGROYW1lcykgLyBzaXplb2YoKmhlYWRlckZpZWxkVmFsdWVzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OworCisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29ubmVjdERpY3Rpb25hcnkuZ2V0KCksIGtD
RlN0cmVhbVByb3BlcnR5Q09OTkVDVEFkZGl0aW9uYWxIZWFkZXJzLCBhZGRpdGlvbmFsSGVhZGVy
RmllbGRzLmdldCgpKTsKKyAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShzdHJlYW0sIGtDRlN0
cmVhbVByb3BlcnR5Q09OTkVDVFByb3h5LCBjb25uZWN0RGljdGlvbmFyeS5nZXQoKSk7Cit9CiAK
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRU
UE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIHsKQEAgLTQzNyw3ICs0NTcsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdl
UmVmIHByb3h5UmVzcG9ucwogICAgICAgICB9CiAKICAgICAgICAgLy8gU2V0dGluZyB0aGUgYXV0
aG9yaXphdGlvbiByZXN1bHRzIGluIGEgbmV3IGNvbm5lY3Rpb24gYXR0ZW1wdC4KLSAgICAgICAg
d2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQo
KSwgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nLmdldCgpKTsKKyAgICAgICAgc2V0Q09OTkVDVFBy
b3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbShtX3JlYWRTdHJlYW0uZ2V0KCksIHByb3h5QXV0aG9y
aXphdGlvblN0cmluZy5nZXQoKSk7CiAgICAgICAgIG1fc2VudFN0b3JlZENyZWRlbnRpYWxzID0g
dHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ5Miw2ICs1MTIsMjMgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjp3cml0ZVN0cmVhbUNhbGxiYWNrKENGV3JpdGVTdHJlYW1S
ZWYgc3RyZWFtLCBDRlN0cmUKICAgICBoYW5kbGUtPndyaXRlU3RyZWFtQ2FsbGJhY2sodHlwZSk7
CiAjZW5kaWYKIH0KKyAgICAKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gY29w
eUNPTk5FQ1RQcm94eVJlc3BvbnNlKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGVVJMUmVmIHJl
c3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCkK
K3sKKyAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdENGKChDRkhUVFBNZXNzYWdlUmVmKUNGUmVhZFN0
cmVhbUNvcHlQcm9wZXJ0eShzdHJlYW0sIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVFJlc3BvbnNl
KSk7CisgICAgLy8gQ0ZOZXR3b3JrIG5lZWRzIFVSTCB0byBiZSBzZXQgb24gcmVzcG9uc2UgaW4g
b3JkZXIgdG8gaGFuZGxlIGF1dGhlbnRpY2F0aW9uIC0gZXZlbiB0aG91Z2ggaXQgZG9lc24ndCBz
ZWVtIHRvIG1ha2Ugc2Vuc2UgdG8gcHJvdmlkZSB1bHRpbWF0ZSB0YXJnZXQgVVJMIHdoZW4gYXV0
aGVudGljYXRpbmcgdG8gYSBwcm94eS4KKyAgICAvLyBUaGlzIGlzIHNldCBieSBDRk5ldHdvcmsg
aW50ZXJuYWxseSBmb3Igbm9ybWFsIEhUVFAgcmVzcG9uc2VzLCBidXQgbm90IGZvciBwcm94aWVz
LgorICAgIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VVUkwobWVzc2FnZS5nZXQoKSwgcmVzcG9u
c2VVUkwpOworCisjaWYgIVBMQVRGT1JNKElPUykKKyAgICAvLyBEaXR0byBmb3IgcHJveHkgVVJM
LgorICAgIGF1dG8gcHJveHlVUkxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZv
cm1hdChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBDRlNUUigiaHR0cHM6Ly8lQDolQCIp
LCBwcm94eUhvc3QsIHByb3h5UG9ydCkpOworICAgIGF1dG8gcHJveHlVUkwgPSBhZG9wdENGKENG
VVJMQ3JlYXRlV2l0aFN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm94eVVSTFN0cmluZy5n
ZXQoKSwgbnVsbHB0cikpOworICAgIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VQcm94eVVSTCht
ZXNzYWdlLmdldCgpLCBwcm94eVVSTC5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiBtZXNz
YWdlOworfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFj
ayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBlKQogewpAQCAtNTA2LDcgKzU0Myw3IEBAIHZvaWQgU29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBl
IHR5cGUpCiAKICAgICAgICAgaWYgKG1fY29ubmVjdGluZ1N1YnN0YXRlID09IFdhaXRpbmdGb3JD
b25uZWN0KSB7CiAgICAgICAgICAgICBpZiAobV9jb25uZWN0aW9uVHlwZSA9PSBDT05ORUNUUHJv
eHkpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gcHJveHlS
ZXNwb25zZSA9IGFkb3B0Q0Yod2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UobV9yZWFkU3RyZWFt
LmdldCgpLCBtX2h0dHBzVVJMLmdldCgpLCBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQu
Z2V0KCkpKTsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gcHJv
eHlSZXNwb25zZSA9IGNvcHlDT05ORUNUUHJveHlSZXNwb25zZShtX3JlYWRTdHJlYW0uZ2V0KCks
IG1faHR0cHNVUkwuZ2V0KCksIG1fcHJveHlIb3N0LmdldCgpLCBtX3Byb3h5UG9ydC5nZXQoKSk7
CiAgICAgICAgICAgICAgICAgaWYgKCFwcm94eVJlc3BvbnNlKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTU4OCw3ICs2MjUsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OndyaXRlU3RyZWFtQ2FsbGJhY2soQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkKIAogICAgICAg
ICBpZiAobV9jb25uZWN0aW5nU3Vic3RhdGUgPT0gV2FpdGluZ0ZvckNvbm5lY3QpIHsKICAgICAg
ICAgICAgIGlmIChtX2Nvbm5lY3Rpb25UeXBlID09IENPTk5FQ1RQcm94eSkgewotICAgICAgICAg
ICAgICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVmPiBwcm94eVJlc3BvbnNlID0gYWRvcHRD
Rih3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZShtX3JlYWRTdHJlYW0uZ2V0KCksIG1faHR0cHNV
UkwuZ2V0KCksIG1fcHJveHlIb3N0LmdldCgpLCBtX3Byb3h5UG9ydC5nZXQoKSkpOworICAgICAg
ICAgICAgICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVmPiBwcm94eVJlc3BvbnNlID0gY29w
eUNPTk5FQ1RQcm94eVJlc3BvbnNlKG1fcmVhZFN0cmVhbS5nZXQoKSwgbV9odHRwc1VSTC5nZXQo
KSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQb3J0LmdldCgpKTsKICAgICAgICAgICAgICAg
ICBpZiAoIXByb3h5UmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggODVhYjkxMzY1OWE0NjE0NGQ5YzQwZTMzNzhkZTY0
MzZiYTUxY2QwZC4uNzlmYWVmMDlhYjZjOGRhYmFkOTdmNzhjOWE0MGY5Yjg3ZjQzNDA1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBSZXNvdXJj
ZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKICAgICB9CiAKICAgICBpZiAobV9u
c1JlcXVlc3QpIHsKLSAgICAgICAgTlNTdHJpbmcqIGNhY2hlUGFydGl0aW9uID0gW05TVVJMUHJv
dG9jb2wgcHJvcGVydHlGb3JLZXk6KE5TU3RyaW5nICopd2tDYWNoZVBhcnRpdGlvbktleSgpIGlu
UmVxdWVzdDptX25zUmVxdWVzdC5nZXQoKV07CisgICAgICAgIE5TU3RyaW5nKiBjYWNoZVBhcnRp
dGlvbiA9IFtOU1VSTFByb3RvY29sIHByb3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKV9rQ0ZVUkxD
YWNoZVBhcnRpdGlvbktleSBpblJlcXVlc3Q6bV9uc1JlcXVlc3QuZ2V0KCldOwogICAgICAgICBp
ZiAoY2FjaGVQYXJ0aXRpb24pCiAgICAgICAgICAgICBtX2NhY2hlUGFydGl0aW9uID0gY2FjaGVQ
YXJ0aXRpb247CiAgICAgfQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0
Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgU3RyaW5nIHBhcnRpdGlvbiA9IGNhY2hl
UGFydGl0aW9uKCk7CiAgICAgaWYgKCFwYXJ0aXRpb24uaXNOdWxsKCkgJiYgIXBhcnRpdGlvbi5p
c0VtcHR5KCkpIHsKICAgICAgICAgTlNTdHJpbmcgKnBhcnRpdGlvblZhbHVlID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhVVEY4U3RyaW5nOnBhcnRpdGlvbi51dGY4KCkuZGF0YSgpXTsKLSAgICAgICAg
W05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6cGFydGl0aW9uVmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKXdrQ2FjaGVQYXJ0aXRpb25LZXkoKSBpblJlcXVlc3Q6bnNSZXF1ZXN0XTsKKyAgICAgICAg
W05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6cGFydGl0aW9uVmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKV9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSBpblJlcXVlc3Q6bnNSZXF1ZXN0XTsKICAgICB9
CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IGZkMTI0Y2JjNDY0ZmFkYmJjMDAxZTcxZGRjYTIyZTcx
YmM4ZTNiY2YuLjdiNjY3NTE2MDFiYWI0ZWMwNTVmZDEyMGIxMWMxMzM0ZWEzOWQ0N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01h
Yy5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAK
ICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVz
dC5oPgpAQCAtNTcsNiArNTgsMTM2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgSVBDIHsKIAorc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBj
cmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihDRkluZGV4IHZlcnNpb24sIENGVHlwZVJl
Ziogb2JqZWN0cywgQ0ZJbmRleCBvYmplY3RDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmIHByb3RvY29s
UHJvcGVydGllcywgQ0ZOdW1iZXJSZWYgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBDRlN0cmluZ1Jl
ZiBtaW1lVHlwZSwgQ0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sKKyAgICBhdXRvIGFyY2hpdmVMaXN0
QXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsg
aSA8IG9iamVjdENvdW50OyArK2kpIHsKKyAgICAgICAgQ0ZUeXBlUmVmIG9iamVjdCA9IG9iamVj
dHNbaV07CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShhcmNoaXZlTGlzdEFycmF5LmdldCgpLCBvYmplY3QpOworICAgICAgICAgICAgQ0ZSZWxl
YXNlKG9iamVjdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBBcHBlbmQgb3Vy
IHRva2VuIG51bGwgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFs
dWUoYXJjaGl2ZUxpc3RBcnJheS5nZXQoKSwgdG9rZW5OdWxsKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisKKyAgICBhdXRvIHZlcnNpb25O
dW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckNGSW5kZXhUeXBlLCAmdmVyc2lvbikpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRp
Y3Rpb25hcnkuZ2V0KCksIENGU1RSKCJ2ZXJzaW9uIiksIHZlcnNpb25OdW1iZXIuZ2V0KCkpOwor
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJhcmNoaXZl
TGlzdCIpLCBhcmNoaXZlTGlzdEFycmF5LmdldCgpKTsKKworICAgIGlmIChwcm90b2NvbFByb3Bl
cnRpZXMpIHsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwg
Q0ZTVFIoInByb3RvY29sUHJvcGVydGllcyIpLCBwcm90b2NvbFByb3BlcnRpZXMpOworICAgICAg
ICBDRlJlbGVhc2UocHJvdG9jb2xQcm9wZXJ0aWVzKTsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKSB7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRpY3Rpb25h
cnkuZ2V0KCksIENGU1RSKCJleHBlY3RlZENvbnRlbnRMZW5ndGgiKSwgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGV4cGVjdGVkQ29udGVudExlbmd0aCk7CisgICAg
fQorCisgICAgaWYgKG1pbWVUeXBlKSB7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRp
Y3Rpb25hcnkuZ2V0KCksIENGU1RSKCJtaW1lVHlwZSIpLCBtaW1lVHlwZSk7CisgICAgICAgIENG
UmVsZWFzZShtaW1lVHlwZSk7CisgICAgfQorCisgICAgQ0ZBbGxvY2F0b3JEZWFsbG9jYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIG9iamVjdHMpOworCisgICAgcmV0dXJuIGRpY3Rpb25hcnk7Cit9
CisKK3N0YXRpYyBDRlR5cGVSZWYgZGljdGlvbmFyeVZhbHVlT2ZUeXBlKENGRGljdGlvbmFyeVJl
ZiBkaWN0aW9uYXJ5LCBDRlN0cmluZ1JlZiBrZXksIENGVHlwZUlEIHR5cGUpCit7CisgICAgQ0ZU
eXBlUmVmIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwga2V5KTsKKyAg
ICBpZiAodmFsdWUgJiYgQ0ZHZXRUeXBlSUQodmFsdWUpID09IHR5cGUpCisgICAgICAgIHJldHVy
biB2YWx1ZTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIGJvb2wgY3JlYXRlQXJj
aGl2ZUxpc3QoQ0ZEaWN0aW9uYXJ5UmVmIHJlcHJlc2VudGF0aW9uLCBDRlR5cGVSZWYgdG9rZW5O
dWxsLCBDRkluZGV4KiB2ZXJzaW9uLCBDRlR5cGVSZWYqKiBvYmplY3RzLCBDRkluZGV4KiBvYmpl
Y3RDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBwcm90b2NvbFByb3BlcnRpZXMsIENGTnVtYmVyUmVm
KiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIENGU3RyaW5nUmVmKiBtaW1lVHlwZSkKK3sKKyAgICBD
Rk51bWJlclJlZiB2ZXJzaW9uTnVtYmVyID0gKENGTnVtYmVyUmVmKWRpY3Rpb25hcnlWYWx1ZU9m
VHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoInZlcnNpb24iKSwgQ0ZOdW1iZXJHZXRUeXBlSUQo
KSk7CisgICAgaWYgKCF2ZXJzaW9uTnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUodmVyc2lvbk51bWJlciwga0NGTnVtYmVyQ0ZJbmRleFR5
cGUsIHZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBDRkFycmF5UmVmIGFy
Y2hpdmVMaXN0QXJyYXkgPSAoQ0ZBcnJheVJlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVz
ZW50YXRpb24sIENGU1RSKCJhcmNoaXZlTGlzdCIpLCBDRkFycmF5R2V0VHlwZUlEKCkpOworICAg
IGlmICghYXJjaGl2ZUxpc3RBcnJheSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgKm9i
amVjdENvdW50ID0gQ0ZBcnJheUdldENvdW50KGFyY2hpdmVMaXN0QXJyYXkpOworICAgICpvYmpl
Y3RzID0gKENGVHlwZVJlZiopbWFsbG9jKHNpemVvZihDRlR5cGVSZWYpICogKm9iamVjdENvdW50
KTsKKyAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCAqb2JqZWN0Q291bnQ7ICsraSkgeworICAg
ICAgICBDRlR5cGVSZWYgb2JqZWN0ID0gQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhcmNoaXZlTGlz
dEFycmF5LCBpKTsKKyAgICAgICAgaWYgKG9iamVjdCA9PSB0b2tlbk51bGwpCisgICAgICAgICAg
ICAoKm9iamVjdHMpW2ldID0gbnVsbHB0cjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKCpv
YmplY3RzKVtpXSA9IG9iamVjdDsKKyAgICB9CisKKyAgICBpZiAocHJvdG9jb2xQcm9wZXJ0aWVz
KQorICAgICAgICAqcHJvdG9jb2xQcm9wZXJ0aWVzID0gKENGRGljdGlvbmFyeVJlZilkaWN0aW9u
YXJ5VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RSKCJwcm90b2NvbFByb3BlcnRpZXMi
KSwgQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworCisgICAgaWYgKGV4cGVjdGVkQ29udGVudExl
bmd0aCkKKyAgICAgICAgKmV4cGVjdGVkQ29udGVudExlbmd0aCA9IChDRk51bWJlclJlZilkaWN0
aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RSKCJleHBlY3RlZENvbnRlbnRM
ZW5ndGgiKSwgQ0ZOdW1iZXJHZXRUeXBlSUQoKSk7CisKKyAgICBpZiAobWltZVR5cGUpCisgICAg
ICAgICptaW1lVHlwZSA9IChDRlN0cmluZ1JlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVz
ZW50YXRpb24sIENGU1RSKCJtaW1lVHlwZSIpLCBDRlN0cmluZ0dldFR5cGVJRCgpKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3Jl
YXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCwg
Q0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sKKyAgICBDRkluZGV4IHZlcnNpb247CisgICAgQ0ZUeXBl
UmVmKiBvYmplY3RzOworICAgIENGSW5kZXggb2JqZWN0Q291bnQ7CisgICAgQ0ZEaWN0aW9uYXJ5
UmVmIHByb3RvY29sUHJvcGVydGllczsKKworICAgIC8vIEZJWE1FICgxMjg4OTUxOCk6IERvIG5v
dCBzZXJpYWxpemUgSFRUUCBtZXNzYWdlIGJvZHkuCisgICAgLy8gMS4gSXQgY2FuIGJlIGxhcmdl
IGFuZCB0aHVzIGNvc3RseSB0byBzZW5kIGFjcm9zcy4KKyAgICAvLyAyLiBJdCBpcyBtaXNsZWFk
aW5nIHRvIHByb3ZpZGUgYSBib2R5IHdpdGggc29tZSByZXF1ZXN0cywgd2hpbGUgb3RoZXJzIHVz
ZSBib2R5IHN0cmVhbXMsIHdoaWNoIGNhbm5vdCBiZSBzZXJpYWxpemVkIGF0IGFsbC4KKworICAg
IF9DRlVSTFJlcXVlc3RDcmVhdGVBcmNoaXZlTGlzdChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZlJl
cXVlc3QsICZ2ZXJzaW9uLCAmb2JqZWN0cywgJm9iamVjdENvdW50LCAmcHJvdG9jb2xQcm9wZXJ0
aWVzKTsKKworICAgIC8vIFRoaXMgd2lsbCBkZWFsbG9jYXRlIHRoZSBwYXNzZWQgaW4gYXJndW1l
bnRzLgorICAgIHJldHVybiBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbih2ZXJzaW9u
LCBvYmplY3RzLCBvYmplY3RDb3VudCwgcHJvdG9jb2xQcm9wZXJ0aWVzLCBudWxscHRyLCBudWxs
cHRyLCB0b2tlbk51bGwpOworfQorCitzdGF0aWMgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4g
Y3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKENGRGljdGlv
bmFyeVJlZiByZXByZXNlbnRhdGlvbiwgQ0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sKKyAgICBDRklu
ZGV4IHZlcnNpb247CisgICAgQ0ZUeXBlUmVmKiBvYmplY3RzOworICAgIENGSW5kZXggb2JqZWN0
Q291bnQ7CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3RvY29sUHJvcGVydGllczsKKworICAgIGlm
ICghY3JlYXRlQXJjaGl2ZUxpc3QocmVwcmVzZW50YXRpb24sIHRva2VuTnVsbCwgJnZlcnNpb24s
ICZvYmplY3RzLCAmb2JqZWN0Q291bnQsICZwcm90b2NvbFByb3BlcnRpZXMsIG51bGxwdHIsIG51
bGxwdHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY2ZSZXF1ZXN0ID0g
YWRvcHRDRihfQ0ZVUkxSZXF1ZXN0Q3JlYXRlRnJvbUFyY2hpdmVMaXN0KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHZlcnNpb24sIG9iamVjdHMsIG9iamVjdENvdW50LCBwcm90b2NvbFByb3BlcnRpZXMp
KTsKKyAgICBmcmVlKG9iamVjdHMpOworICAgIHJldHVybiBXVEZNb3ZlKGNmUmVxdWVzdCk7Cit9
CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjcmVhdGVTZXJpYWxpemFibGVS
ZXByZXNlbnRhdGlvbihOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIENGVHlwZVJlZiB0b2tlbk51bGwp
Cit7CisgICAgcmV0dXJuIGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKFtyZXF1ZXN0
IF9DRlVSTFJlcXVlc3RdLCB0b2tlbk51bGwpOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TVVJM
UmVxdWVzdD4gY3JlYXRlTlNVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9u
KENGRGljdGlvbmFyeVJlZiByZXByZXNlbnRhdGlvbiwgQ0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sK
KyAgICBhdXRvIGNmUmVxdWVzdCA9IGNyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVS
ZXByZXNlbnRhdGlvbihyZXByZXNlbnRhdGlvbiwgdG9rZW5OdWxsKTsKKyAgICBpZiAoIWNmUmVx
dWVzdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHROUyhbW05T
VVJMUmVxdWVzdCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OmNmUmVxdWVzdC5nZXQoKV0p
OworfQorCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNv
dXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CkBAIC03OSw3ICsyMTAsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0CiAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0
Qm9keVN0cmVhbShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRihXS0NGVVJMUmVxdWVzdENyZWF0
ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBD
Ojp0b2tlbk51bGxUeXBlUmVmKCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBk
aWN0aW9uYXJ5ID0gY3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2Vy
aWFsaXplLmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgSVBDOjplbmNvZGUo
ZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7CiAKICAgICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkg
aXMgcGFydCBvZiBDRlVSTFJlcXVlc3QsIGJ1dCBpdCBpcyBub3QgZW5jb2RlZCBieSBXS0NGVVJM
UmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uLgpAQCAtMTA2LDcgKzIzNyw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICAgICAgWyhOU011dGFibGVVUkxSZXF1ZXN0
ICopcmVxdWVzdFRvU2VyaWFsaXplIHNldEhUVFBCb2R5U3RyZWFtOm5pbF07CiAgICAgfQogCi0g
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tOU1VS
TFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxp
emUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7CisgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9u
KHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAg
IElQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwogCiAgICAgLy8gVGhlIGZh
bGxiYWNrIGFycmF5IGlzIHBhcnQgb2YgTlNVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29k
ZWQgYnkgV0tOU1VSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KQEAg
LTEzMiwxMyArMjYzLDEzIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgUmVzb3VyCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCi0gICAgUmV0YWluUHRyPENGVVJM
UmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRDRihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZy
b21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2Vu
TnVsbFR5cGVSZWYoKSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IGNmVVJMUmVx
dWVzdCA9IGNyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihk
aWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFjZlVS
TFJlcXVlc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdChjZlVSTFJlcXVlc3QuZ2V0KCkpOwogI2Vsc2UKLSAgICBSZXRhaW5Q
dHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBXS05TVVJMUmVxdWVzdEZyb21TZXJpYWxp
emFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVS
ZWYoKSk7CisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1ZXN0ID0gY3JlYXRl
TlNVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0
KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKICAgICBpZiAoIW5zVVJMUmVxdWVzdCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAwNDViOWIyZDQ4MmU0MjI3OWM5NmU5
YTE5M2M0ZWQ3ZDA4NmI3OWMxLi5iZDU3YTdjYjdmOTY1N2VmNTFiYzUxMWRlYTRjZTE1N2VhODc4
ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0KQEAgLTQ1NSw3ICs0NTUsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6
OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogCiBTdHJp
bmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdENhY2hlU3RvcmFnZURpcmVj
dG9yeSgpCiB7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjYWNoZVN0b3JhZ2VQYXRoID0gYWRv
cHROUygoTlNTdHJpbmcgKilXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBjYWNoZVN0b3JhZ2VQYXRoID0gYWRvcHROUygoTlNTdHJpbmcg
KilfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2Fj
aGVdIF9DRlVSTENhY2hlXSkpOwogICAgIGlmICghY2FjaGVTdG9yYWdlUGF0aCkKICAgICAgICAg
Y2FjaGVTdG9yYWdlUGF0aCA9IEAifi9MaWJyYXJ5L1dlYktpdC9DYWNoZVN0b3JhZ2UiOwogCkBA
IC00NjQsNyArNDY0LDcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURl
ZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6Omxl
Z2FjeVBsYXRmb3JtRGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBjYWNoZVBhdGggPSBhZG9wdE5TKChOU1N0cmluZyAqKVdLQ29weUZvdW5k
YXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlUGF0
aCA9IGFkb3B0TlMoKE5TU3RyaW5nICopX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkoW1tO
U1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNoZV0pKTsKICAgICBpZiAoIWNhY2hl
UGF0aCkKICAgICAgICAgY2FjaGVQYXRoID0gQCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5X
ZWJLaXQuV2ViUHJvY2VzcyI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5k
ZXggYmRhNWQ3M2RmYzEyMmYzZTAyMjNhYWFlNTUyODRkNGIzOWU1NzNjZS4uYTYxYjg0MTQ1MzAz
NGZiOWM5Y2FiODRiZWY2ZWFhZDEwMTRiZTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0KQEAgLTM2LDE4ICszNiwxMiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlKHZvaWQpCiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBpbml0T25jZTsKICAgICAKICAg
ICBkaXNwYXRjaF9vbmNlKCZpbml0T25jZSwgXnsKLSAgICAgICAgSU5JVChDb3B5Q09OTkVDVFBy
b3h5UmVzcG9uc2UpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQoRHJhd0JlemVs
ZWRUZXh0QXJlYSk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAgICAg
ICBJTklUKERyYXdNZWRpYVVJUGFydCk7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0
KTsKICAgICAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwotI2VuZGlmCi0gICAgICAgIElO
SVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7Ci0gICAgICAgIElOSVQo
U2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKTsKLQotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAg
IElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7CiAgICAgICAg
IElOSVQoQ29weURlZmF1bHRTZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKTsKICAgICAgICAgSU5J
VChDdXJzb3IpOwpAQCAtNTgsMTIgKzUyLDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVy
ZmFjZSh2b2lkKQogICAgICAgICBJTklUKE5TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKTsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKLSAgICAgICAgSU5JVChJ
c1B1YmxpY1N1ZmZpeCk7Ci0jZW5kaWYKLQotICAgICAgICBJTklUKENhY2hlUGFydGl0aW9uS2V5
KTsKLQogICAgICAgICBJTklUKEV4ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKTsKICAgICAgICAg
SU5JVChFeGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0KaW5kZXggMTc0NjU4NmIyNDJmNTJlMDdhOTlmZTkxNWFhNmI0ZjYyYTNiYzVkNC4u
MDYyMDJjZWVkYWNkYjcwMTk3Y2JlMTBiODNjNmVmNzUyNTJkZDA2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZS5tbQpAQCAtNDIsNyArNDIsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlKHZvaWQpCiAgICAgaWYgKGRpZEluaXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIElOSVQo
Q29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQo
RHJhd0JlemVsZWRUZXh0QXJlYSk7CiAgICAgSU5JVChEcmF3TWVkaWFVSVBhcnQpOwpAQCAtNTAs
OCArNDksNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5J
VChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKICNl
bmRpZgotICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7Ci0g
ICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwogCiAjaWYgIVBMQVRGT1JNKElPUykK
ICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpOwpAQCAt
NjcsMTIgKzY0LDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAg
IElOSVQoTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoUFVCTElDX1NVRkZJWF9MSVNUKQotICAgIElOSVQoSXNQdWJsaWNTdWZmaXgpOwotI2VuZGlm
Ci0KLSAgICBJTklUKENhY2hlUGFydGl0aW9uS2V5KTsKLQogICAgIElOSVQoRXhlcm5hbERldmlj
ZVR5cGVGb3JQbGF5ZXIpOwogICAgIElOSVQoRXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxh
eWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4
IGM3MjMzYmUxMzMyZGI4YjVmYWU3Nzg3YzlhNjhlNjEzZjRjYTNiZjkuLmI1ZTcyNjNmM2RmMmNk
ZjIwOTFhODMyOGJiYmVmOTc0NGU1MmM2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KQEAgLTg1NzMsNyArODU3Myw3IEBAICsgKHZvaWQpX3NldENhY2hl
TW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogICAgIGlmIChzX2RpZFNldENhY2hlTW9k
ZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2NhY2hlTW9kZWwpCiAgICAgICAgIHJldHVybjsKIAotICAg
IE5TU3RyaW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoV0tDb3B5
Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIE5TU3RyaW5nICpuc3VybENhY2hlRGly
ZWN0b3J5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3Rvcnko
W1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNoZV0pKTsKICAgICBpZiAoIW5z
dXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIG5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBOU0hvbWVE
aXJlY3RvcnkoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320470</attachid>
            <date>2017-09-11 13:57:10 -0700</date>
            <delta_ts>2017-09-11 15:22:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176729-20170911135710.patch</filename>
            <type>text/plain</type>
            <size>33882</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjNmM4ODQ2MTYwNmMx
MTlkNTJjNTNjNmZlNjI4MWU5YzA3MTRkNC4uMjQ0OTllMjBmMzIzNDRhMzdkNjZlODBjNDliNmQy
MDkxYWYxYzc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0
d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNv
cmVTeXN0ZW1JbnRlcmZhY2VJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1B1YmxpY1N1
ZmZpeE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzUHVibGljU3VmZml4KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3RyZWFtcyk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZFN0cmVhbUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OndyaXRlU3RyZWFtQ2FsbGJhY2sp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0
Zm9ybVJlcXVlc3QpOgorCiAyMDE3LTA5LTExICBZb3NoaWFraSBKaXRzdWthd2EgIDxZb3NoaWFr
aS5KaXRzdWthd2FAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBGaXggdGhlIHdpbmNh
aXJvIGJ1aWxkIGFmdGVyIHIyMjE4MzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGZiYTE0MmEwOTI1
NzdjYjU1ZTBhM2ZmNjMxNTRjNTU2YzJlOGNlNTEuLjI0ZTA3ZmE4ODg0YWI4Y2FkYTM1MjkzODg3
ZDAxMzVhNDNjZmYyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0IEBACiAyMDE3
LTA5LTExICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ZdIFVw
c3RyZWFtIENGTmV0d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaDoKKworMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0Bh
cHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyZWYzNDM5NDAzZTNlNGM4YTQx
Yzc1Njg1ZDU2ZWU1N2JiZWNmN2U3Li42MDAwOGM3MmZlZjQxZTBmNjYwZGViMWMyZWY1NWE2ZGMy
ZGMzMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDE3LTA5LTExICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0d29yay1y
ZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OmNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKElQQzo6ZGljdGlvbmFyeVZhbHVlT2ZUeXBlKToKKyAgICAgICAg
KElQQzo6Y3JlYXRlQXJjaGl2ZUxpc3QpOgorICAgICAgICAoSVBDOjpjcmVhdGVDRlVSTFJlcXVl
c3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSVBDOjpjcmVhdGVO
U1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVs
dENhY2hlU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbToKKyAg
ICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKworMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQt
cmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDg1NmExYWVlOTgxYTlkNmYwNDMxZDFmNGM1YWYwY2E5YWQyYTJjNzAu
LjUyYTQ1MTM2NjlmYjYyYzE3ZTg2OTg4YzZlNzE0NDA4YjFiOGRkYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdvcmstcmVs
YXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZS5tbToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX3NldENhY2hlTW9k
ZWw6XSk6CisKKzIwMTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAg
ICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNl
IGZ1bmN0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2NDcyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NG
TmV0d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
LmgKaW5kZXggMGFlODBjNzg3YjhlODFiOWE4NGYwMWI5MTZiOGJmNzRhOTMyZGYzYy4uMTM5MDg0
MDQ0MjdiNGFjZTI3YTQ2ODM2OGYzMGI4M2Y2MmQyM2RlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKQEAgLTE5Myw3ICsxOTMsMTMgQEAgdm9pZCBf
Q0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYKIAogZXh0ZXJuIENGU3RyaW5nUmVmIGNvbnN0IGtDRkhUVFBDb29r
aWVMb2NhbEZpbGVEb21haW47CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGSFRUUFZlcnNp
b24xXzE7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlDT05ORUNU
QWRkaXRpb25hbEhlYWRlcnM7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJv
cGVydHlDT05ORUNUUHJveHk7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJv
cGVydHlDT05ORUNUUHJveHlIb3N0OworZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVh
bVByb3BlcnR5Q09OTkVDVFByb3h5UG9ydDsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZT
dHJlYW1Qcm9wZXJ0eUNPTk5FQ1RSZXNwb25zZTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZVUkxSZXF1ZXN0QWxsb3dBbGxQT1NUQ2FjaGluZzsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBfa0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXk7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tD
RlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIF9rQ0ZVUkxTdG9yYWdlU2Vzc2lvbklzUHJpdmF0ZTsKIApAQCAtMjM2LDYgKzI0MiwxMiBA
QCBDRkFycmF5UmVmIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhDRkhUVFBDb29raWVT
dG9yYWdlUmVmKTsKIHZvaWQgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiwgQ0ZBcnJheVJlZiBjb29raWVzLCBDRlVSTFJlZiwgQ0ZVUkxSZWYgbWFp
bkRvY3VtZW50VVJMKTsKIHZvaWQgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUNvb2tpZShDRkhU
VFBDb29raWVTdG9yYWdlUmVmLCBDRkhUVFBDb29raWVSZWYpOwogQ0ZNdXRhYmxlVVJMUmVxdWVz
dFJlZiBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShDRkFsbG9jYXRvclJlZiwgQ0ZVUkxS
ZXF1ZXN0UmVmKTsKK0NGU3RyaW5nUmVmIF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KENG
VVJMQ2FjaGVSZWYpOworQm9vbGVhbiBfQ0ZIb3N0SXNEb21haW5Ub3BMZXZlbChDRlN0cmluZ1Jl
ZiBkb21haW4pOwordm9pZCBfQ0ZIVFRQTWVzc2FnZVNldFJlc3BvbnNlVVJMKENGSFRUUE1lc3Nh
Z2VSZWYsIENGVVJMUmVmKTsKK3ZvaWQgX0NGSFRUUE1lc3NhZ2VTZXRSZXNwb25zZVByb3h5VVJM
KENGSFRUUE1lc3NhZ2VSZWYsIENGVVJMUmVmKTsKK3ZvaWQgX0NGVVJMUmVxdWVzdENyZWF0ZUFy
Y2hpdmVMaXN0KENGQWxsb2NhdG9yUmVmLCBDRlVSTFJlcXVlc3RSZWYsIENGSW5kZXgqIHZlcnNp
b24sIENGVHlwZVJlZioqIG9iamVjdHMsIENGSW5kZXgqIG9iamVjdENvdW50LCBDRkRpY3Rpb25h
cnlSZWYqIHByb3RvY29sUHJvcGVydGllcyk7CitDRk11dGFibGVVUkxSZXF1ZXN0UmVmIF9DRlVS
TFJlcXVlc3RDcmVhdGVGcm9tQXJjaGl2ZUxpc3QoQ0ZBbGxvY2F0b3JSZWYsIENGSW5kZXggdmVy
c2lvbiwgQ0ZUeXBlUmVmKiBvYmplY3RzLCBDRkluZGV4IG9iamVjdENvdW50LCBDRkRpY3Rpb25h
cnlSZWYgcHJvdG9jb2xQcm9wZXJ0aWVzKTsKIAogI2VuZGlmIC8vICFQTEFURk9STShXSU4pCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2VJT1MubW0KaW5kZXggZDczMzk4ZWMyYjQzZDFlMzdkYmZhOGViZTdlYTQwMmM2MWYy
OGY0Zi4uMWI5NjllY2Q2ODlkZDYyYjYyZmMzNGQ1YmE4ZTk5ZTFjOGJhODNkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2VJT1MubW0KQEAgLTI5LDEwICsyOSw3IEBACiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tDbGVh
ckdseXBoVmVjdG9yKSh2b2lkKiBnbHlwaHMpOwogV0VCQ09SRV9FWFBPUlQgT1NTdGF0dXMgKCp3
a0NvbnZlcnRDaGFyVG9HbHlwaHMpKHZvaWQqIHN0eWxlR3JvdXAsIGNvbnN0IFVuaUNoYXIqLCB1
bnNpZ25lZCBudW1DaGFyYWN0ZXJzLCB2b2lkKiBnbHlwaHMpOwogV0VCQ09SRV9FWFBPUlQgaWQg
KCp3a0NyZWF0ZU5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkpKHZvaWQpOwotV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYs
IENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKLVdFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENG
UmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKIFdF
QkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENvb2tpZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKShCT09MKTsKLVdFQkNPUkVfRVhQT1JUIENGSFRUUE1lc3NhZ2VSZWYgKCp3a0NvcHlDT05O
RUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25zZVVSTCwg
Q0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwogV0VCQ09SRV9F
WFBPUlQgdm9pZCAoKndrU2V0TGF5ZXJDb250ZW50c1NjYWxlKShDQUxheWVyICopOwogCiBXRUJD
T1JFX0VYUE9SVCBib29sICgqd2tDYXB0aW9uQXBwZWFyYW5jZUhhc1VzZXJQcmVmZXJlbmNlcyko
dm9pZCk7CkBAIC00OCwxMiArNDUsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sKCp3a0NhcHRpb25B
cHBlYXJhbmNlR2V0UmVsYXRpdmVDaGFyYWN0ZXJTaXplKShDR0Zsb2F0Kik7CiBXRUJDT1JFX0VY
UE9SVCBpbnQoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlKSh2b2lkKTsKIFdF
QkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmKCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3ND
aGFuZ2VkTm90aWZpY2F0aW9uKSh2b2lkKTsKIAotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJ
U1QpCi1XRUJDT1JFX0VYUE9SVCBib29sICgqd2tJc1B1YmxpY1N1ZmZpeCkoTlNTdHJpbmcgKmhv
c3QpOwotI2VuZGlmCi0KLVdFQkNPUkVfRVhQT1JUIENGU3RyaW5nUmVmICgqd2tDYWNoZVBhcnRp
dGlvbktleSkodm9pZCk7Ci0KIFdFQkNPUkVfRVhQT1JUIGludCAoKndrRXhlcm5hbERldmljZVR5
cGVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKigqd2tF
eGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQppbmRleCA5MzBhMzQ3
NTMwZjQ3ZTg5YzEzODI5OWEzM2QyZjg2OWQxMGVmNTA2Li4zZjQzMTcyMzhlZGUzMzc2ZGVhYjZj
YTA5Y2E4YWFhYmY4NDE4MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUHVibGljU3VmZml4TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
dWJsaWNTdWZmaXhNYWMubW0KQEAgLTI2LDExICsyNiwxMSBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJQdWJsaWNTdWZmaXguaCIKIAotI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgotI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCi0KICNpZiBFTkFCTEUoUFVC
TElDX1NVRkZJWF9MSVNUKQogCisjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKKyNpbXBv
cnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisKIEBpbnRlcmZhY2UgTlNTdHJpbmcgKFdl
YkNvcmVOU1VSTEV4dHJhcykKIC0gKEJPT0wpX3dlYl9sb29rc0xpa2VJUEFkZHJlc3M7CiBAZW5k
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgaXNQdWJsaWNTdWZm
aXgoY29uc3QgU3RyaW5nJiBkb21haW4pCiB7CiAgICAgTlNTdHJpbmcgKmhvc3QgPSBkZWNvZGVI
b3N0TmFtZShkb21haW4pOwotICAgIHJldHVybiBob3N0ICYmIHdrSXNQdWJsaWNTdWZmaXgoaG9z
dCk7CisgICAgcmV0dXJuIGhvc3QgJiYgX0NGSG9zdElzRG9tYWluVG9wTGV2ZWwoKENGU3RyaW5n
UmVmKWhvc3QpOwogfQogCiBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25z
dCBTdHJpbmcmIGRvbWFpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCmluZGV4IGY2NzU5NTA5YTExZmNlMzM0MTNmZTY5MDMz
YTQ2ODU2ZjU5NzQ1NTguLjllY2MzNDFjNTE2MjMxMTQzOWM0MmU3YmRmYTIwN2RlNjdkMDQ1MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaApAQCAtMTMzLDEyICsxMzMsNiBAQCBleHRlcm4gQk9PTCAoKndrSGl0VGVzdE1l
ZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0IGJvdW5kcywgQ0dQb2ludCBwb2ludCk7CiBleHRl
cm4gdm9pZCAoKndrTWVhc3VyZU1lZGlhVUlQYXJ0KShpbnQgcGFydCwgQ0dSZWN0ICpib3VuZHMs
IENHU2l6ZSAqbmF0dXJhbFNpemUpOwogCiBleHRlcm4gdm9pZCAoKndrU2V0Q29va2llU3RvcmFn
ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpKEJPT0wpOwotI2VuZGlmCi1leHRlcm4gdm9pZCAoKndr
U2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHBy
b3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKLWV4dGVybiB2b2lkICgqd2tTZXRDT05O
RUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5n
UmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7Ci1leHRlcm4gQ0ZIVFRQTWVzc2FnZVJlZiAo
KndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJl
c3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7
Ci0KLSNpZiAhUExBVEZPUk0oSU9TKQogZXh0ZXJuIHZvaWQqIHdrR2V0SHlwaGVuYXRpb25Mb2Nh
dGlvbkJlZm9yZUluZGV4OwogI2VuZGlmCiAKQEAgLTE2NywxMiArMTYxLDYgQEAgZXh0ZXJuIENH
RmxvYXQgKCp3a05TRWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKShDR0Zsb2F0IGRlbHRhKTsK
IGV4dGVybiBDR0Zsb2F0ICgqd2tOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSkoQ0dGbG9h
dCBkZWx0YSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi1leHRl
cm4gYm9vbCAoKndrSXNQdWJsaWNTdWZmaXgpKE5TU3RyaW5nICpob3N0KTsKLSNlbmRpZgotCi1l
eHRlcm4gQ0ZTdHJpbmdSZWYgKCp3a0NhY2hlUGFydGl0aW9uS2V5KSh2b2lkKTsKLQogdHlwZWRl
ZiBlbnVtIHsKICAgICB3a0V4dGVybmFsUGxheWJhY2tUeXBlTm9uZSwKICAgICB3a0V4dGVybmFs
UGxheWJhY2tUeXBlQWlyUGxheSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMmVhYmQ0ZjE0ZjM5MzM2ZTMzNDBj
ZThlZGVlMzdlNDgyZGQ2ODAyZS4uMzUxMGQ5OWJjZjU3ZjY1YzAxODk2Njk1NDI2NWUyYjg5YmFl
ZWM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UubW0KQEAgLTQwLDEwICs0MCw2IEBAIE5TVGltZUludGVydmFsICgqd2tH
ZXROU1VSTFJlc3BvbnNlQ2FsY3VsYXRlZEV4cGlyYXRpb24pKE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlCiBCT09MICgqd2tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUpKE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlKTsKIHZvaWQgKCp3a1BvcHVwTWVudSkoTlNNZW51KiwgTlNQb2ludCBsb2Nh
dGlvbiwgZmxvYXQgd2lkdGgsIE5TVmlldyosIGludCBzZWxlY3RlZEl0ZW0sIE5TRm9udCosIE5T
Q29udHJvbFNpemUgY29udHJvbFNpemUsIGJvb2wgdXNlc0N1c3RvbUFwcGVhcmFuY2UpOwogCi12
b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJp
bmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwotdm9pZCAoKndrU2V0Q09O
TkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmlu
Z1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwotQ0ZIVFRQTWVzc2FnZVJlZiAoKndrQ29w
eUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3BvbnNl
VVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7Ci0KIHZv
aWQqIHdrR2V0SHlwaGVuYXRpb25Mb2NhdGlvbkJlZm9yZUluZGV4OwogCiBib29sICgqd2tFeGVj
dXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKSh2b2lkKTsKQEAgLTYyLDEyICs1
OCw2IEBAIENHRmxvYXQgKCp3a05TRWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKShDR0Zsb2F0
IGRlbHRhKTsKIENHRmxvYXQgKCp3a05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKShDR0Zs
b2F0IGRlbHRhKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKLWJv
b2wgKCp3a0lzUHVibGljU3VmZml4KShOU1N0cmluZyAqaG9zdCk7Ci0jZW5kaWYKLQotQ0ZTdHJp
bmdSZWYgKCp3a0NhY2hlUGFydGl0aW9uS2V5KSh2b2lkKTsKLQogaW50ICgqd2tFeGVybmFsRGV2
aWNlVHlwZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiBOU1N0cmluZyAqKCp3a0V4ZXJuYWxEZXZp
Y2VEaXNwbGF5TmFtZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5j
cHAKaW5kZXggMGI1N2FhNDMwMjU3MGM2MTQ4Njg5YzBlMDk2MjVjOTBkMWM4YTYyMy4uOWU3NWVh
MzI4MjQxMmQxNmI2NDEyMTkyOWJmN2ExNmQ3NGM3YmM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5j
cHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0
Zm9ybVJlcXVlc3QoKQogICAgIGlmICghcGFydGl0aW9uLmlzTnVsbCgpICYmICFwYXJ0aXRpb24u
aXNFbXB0eSgpKSB7CiAgICAgICAgIENTdHJpbmcgdXRmOFN0cmluZyA9IHBhcnRpdGlvbi51dGY4
KCk7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFydGl0aW9uVmFsdWUgPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUlu
dDgqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3RoKCksIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCwgZmFsc2UpKTsKLSAgICAgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJv
cGVydHkoY2ZSZXF1ZXN0LCB3a0NhY2hlUGFydGl0aW9uS2V5KCksIHBhcnRpdGlvblZhbHVlLmdl
dCgpKTsKKyAgICAgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0
LCBrQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwogICAgIH0K
ICNlbmRpZgogCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBk
YXRlUmVzb3VyY2VSZXF1ZXN0KCkKICAgICB9CiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9O
SU5HKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXJ0aXRpb24gPSBhZG9wdENG
KHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJvcGVy
dHlGb3JLZXkobV9jZlJlcXVlc3QuZ2V0KCksIHdrQ2FjaGVQYXJ0aXRpb25LZXkoKSkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGFydGl0aW9uID0gYWRvcHRDRihzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4oX0NGVVJMUmVxdWVzdENvcHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5
KG1fY2ZSZXF1ZXN0LmdldCgpLCBrQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSkpKTsKICAgICBpZiAo
Y2FjaGVQYXJ0aXRpb24pCiAgICAgICAgIG1fY2FjaGVQYXJ0aXRpb24gPSBjYWNoZVBhcnRpdGlv
bi5nZXQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4
IDA5OThhMWU4NWZmMGM2MzM5YTJlZThhYTM2OTQ5NTM4MDQ4MGEyYjkuLjY3MTlhNGZlMTgwZWUw
OTYwMmQwZDUyMTE3YmZjZWU0Y2M4YTY1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
Rk5ldC5jcHAKQEAgLTMwMiw2ICszMDIsMTMgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpjaG9vc2VQcm94eUZyb21BcnJheShDRkFycmF5UmVmIHByb3h5QXJyYXkpCiAgICAgbV9jb25u
ZWN0aW9uVHlwZSA9IERpcmVjdDsKIH0KIAorc3RhdGljIHZvaWQgc2V0Q09OTkVDVFByb3h5Rm9y
U3RyZWFtKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZO
dW1iZXJSZWYgcHJveHlQb3J0KQoreworICAgIGNvbnN0IHZvaWQqIHByb3h5S2V5c1tdID0geyBr
Q0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eUhvc3QsIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVD
VFByb3h5UG9ydCB9OworICAgIGNvbnN0IHZvaWQqIHByb3h5VmFsdWVzW10gPSB7IHByb3h5SG9z
dCwgcHJveHlQb3J0IH07CisgICAgYXV0byBjb25uZWN0RGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHByb3h5S2V5cywgcHJveHlWYWx1
ZXMsIHNpemVvZihwcm94eUtleXMpIC8gc2l6ZW9mKCpwcm94eUtleXMpLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5F
Q1RQcm94eSwgY29ubmVjdERpY3Rpb25hcnkuZ2V0KCkpOworfQogCiB2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMoKQogewpAQCAtMzQ3LDcgKzM1NCw3IEBAIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3RyZWFtcygpCiAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgY2FzZSBDT05ORUNUUHJveHk6Ci0gICAgICAgIHdrU2V0Q09OTkVDVFBy
b3h5Rm9yU3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJv
eHlQb3J0LmdldCgpKTsKKyAgICAgICAgc2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKG1fcmVhZFN0
cmVhbS5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQb3J0LmdldCgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC0zOTUsNiArNDAyLDE5IEBAIHN0YXRpYyBQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBhdXRoZW50aWNhdGlvblNjaGVtZUZyb21BdXRoZW50
aWNhdGlvCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFByb3RlY3Rpb25T
cGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bjsKIH0KKyAgICAKK3N0YXRpYyB2b2lkIHNl
dENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0oQ0ZSZWFkU3RyZWFtUmVmIHN0cmVh
bSwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKQoreworICAgIGF1dG8gb3Jp
Z2luYWxDT05ORUNURGljdGlvbmFyeSA9IGFkb3B0Q0YoKENGRGljdGlvbmFyeVJlZilDRlJlYWRT
dHJlYW1Db3B5UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSkp
OworICAgIGF1dG8gY29ubmVjdERpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIG9yaWdpbmFsQ09OTkVDVERpY3Rp
b25hcnkuZ2V0KCkpKTsKKworICAgIGNvbnN0IHZvaWQqIGhlYWRlckZpZWxkTmFtZXNbXSA9IHsg
Q0ZTVFIoIlByb3h5LUF1dGhvcml6YXRpb24iKSB9OworICAgIGNvbnN0IHZvaWQqIGhlYWRlckZp
ZWxkVmFsdWVzW10gPSB7IHByb3h5QXV0aG9yaXphdGlvblN0cmluZyB9OworICAgIGF1dG8gYWRk
aXRpb25hbEhlYWRlckZpZWxkcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGhlYWRlckZpZWxkTmFtZXMsIGhlYWRlckZpZWxkVmFsdWVzLCBzaXplb2Yo
aGVhZGVyRmllbGROYW1lcykgLyBzaXplb2YoKmhlYWRlckZpZWxkVmFsdWVzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OworCisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29ubmVjdERpY3Rpb25hcnkuZ2V0KCksIGtD
RlN0cmVhbVByb3BlcnR5Q09OTkVDVEFkZGl0aW9uYWxIZWFkZXJzLCBhZGRpdGlvbmFsSGVhZGVy
RmllbGRzLmdldCgpKTsKKyAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShzdHJlYW0sIGtDRlN0
cmVhbVByb3BlcnR5Q09OTkVDVFByb3h5LCBjb25uZWN0RGljdGlvbmFyeS5nZXQoKSk7Cit9CiAK
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRU
UE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIHsKQEAgLTQzNyw3ICs0NTcsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdl
UmVmIHByb3h5UmVzcG9ucwogICAgICAgICB9CiAKICAgICAgICAgLy8gU2V0dGluZyB0aGUgYXV0
aG9yaXphdGlvbiByZXN1bHRzIGluIGEgbmV3IGNvbm5lY3Rpb24gYXR0ZW1wdC4KLSAgICAgICAg
d2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQo
KSwgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nLmdldCgpKTsKKyAgICAgICAgc2V0Q09OTkVDVFBy
b3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbShtX3JlYWRTdHJlYW0uZ2V0KCksIHByb3h5QXV0aG9y
aXphdGlvblN0cmluZy5nZXQoKSk7CiAgICAgICAgIG1fc2VudFN0b3JlZENyZWRlbnRpYWxzID0g
dHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ5Miw2ICs1MTIsMjYgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjp3cml0ZVN0cmVhbUNhbGxiYWNrKENGV3JpdGVTdHJlYW1S
ZWYgc3RyZWFtLCBDRlN0cmUKICAgICBoYW5kbGUtPndyaXRlU3RyZWFtQ2FsbGJhY2sodHlwZSk7
CiAjZW5kaWYKIH0KKyAgICAKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gY29w
eUNPTk5FQ1RQcm94eVJlc3BvbnNlKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGVVJMUmVmIHJl
c3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCkK
K3sKKyAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdENGKChDRkhUVFBNZXNzYWdlUmVmKUNGUmVhZFN0
cmVhbUNvcHlQcm9wZXJ0eShzdHJlYW0sIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVFJlc3BvbnNl
KSk7CisgICAgLy8gQ0ZOZXR3b3JrIG5lZWRzIFVSTCB0byBiZSBzZXQgb24gcmVzcG9uc2UgaW4g
b3JkZXIgdG8gaGFuZGxlIGF1dGhlbnRpY2F0aW9uIC0gZXZlbiB0aG91Z2ggaXQgZG9lc24ndCBz
ZWVtIHRvIG1ha2Ugc2Vuc2UgdG8gcHJvdmlkZSB1bHRpbWF0ZSB0YXJnZXQgVVJMIHdoZW4gYXV0
aGVudGljYXRpbmcgdG8gYSBwcm94eS4KKyAgICAvLyBUaGlzIGlzIHNldCBieSBDRk5ldHdvcmsg
aW50ZXJuYWxseSBmb3Igbm9ybWFsIEhUVFAgcmVzcG9uc2VzLCBidXQgbm90IGZvciBwcm94aWVz
LgorICAgIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VVUkwobWVzc2FnZS5nZXQoKSwgcmVzcG9u
c2VVUkwpOworCisjaWYgIVBMQVRGT1JNKElPUykKKyAgICAvLyBEaXR0byBmb3IgcHJveHkgVVJM
LgorICAgIGF1dG8gcHJveHlVUkxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZv
cm1hdChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBDRlNUUigiaHR0cHM6Ly8lQDolQCIp
LCBwcm94eUhvc3QsIHByb3h5UG9ydCkpOworICAgIGF1dG8gcHJveHlVUkwgPSBhZG9wdENGKENG
VVJMQ3JlYXRlV2l0aFN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm94eVVSTFN0cmluZy5n
ZXQoKSwgbnVsbHB0cikpOworICAgIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VQcm94eVVSTCht
ZXNzYWdlLmdldCgpLCBwcm94eVVSTC5nZXQoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShw
cm94eUhvc3QpOworICAgIFVOVVNFRF9QQVJBTShwcm94eVBvcnQpOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gbWVzc2FnZTsKK30KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3Ry
ZWFtQ2FsbGJhY2soQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkKIHsKQEAgLTUwNiw3ICs1NDYsNyBA
QCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayhDRlN0cmVh
bUV2ZW50VHlwZSB0eXBlKQogCiAgICAgICAgIGlmIChtX2Nvbm5lY3RpbmdTdWJzdGF0ZSA9PSBX
YWl0aW5nRm9yQ29ubmVjdCkgewogICAgICAgICAgICAgaWYgKG1fY29ubmVjdGlvblR5cGUgPT0g
Q09OTkVDVFByb3h5KSB7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VS
ZWY+IHByb3h5UmVzcG9uc2UgPSBhZG9wdENGKHdrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKG1f
cmVhZFN0cmVhbS5nZXQoKSwgbV9odHRwc1VSTC5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1f
cHJveHlQb3J0LmdldCgpKSk7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGSFRUUE1lc3Nh
Z2VSZWY+IHByb3h5UmVzcG9uc2UgPSBjb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UobV9yZWFkU3Ry
ZWFtLmdldCgpLCBtX2h0dHBzVVJMLmdldCgpLCBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBv
cnQuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGlmICghcHJveHlSZXNwb25zZSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01ODgsNyArNjI4LDcgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjp3cml0ZVN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5cGUp
CiAKICAgICAgICAgaWYgKG1fY29ubmVjdGluZ1N1YnN0YXRlID09IFdhaXRpbmdGb3JDb25uZWN0
KSB7CiAgICAgICAgICAgICBpZiAobV9jb25uZWN0aW9uVHlwZSA9PSBDT05ORUNUUHJveHkpIHsK
LSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gcHJveHlSZXNwb25z
ZSA9IGFkb3B0Q0Yod2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UobV9yZWFkU3RyZWFtLmdldCgp
LCBtX2h0dHBzVVJMLmdldCgpLCBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkp
KTsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gcHJveHlSZXNw
b25zZSA9IGNvcHlDT05ORUNUUHJveHlSZXNwb25zZShtX3JlYWRTdHJlYW0uZ2V0KCksIG1faHR0
cHNVUkwuZ2V0KCksIG1fcHJveHlIb3N0LmdldCgpLCBtX3Byb3h5UG9ydC5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFwcm94eVJlc3BvbnNlKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDg1YWI5MTM2NTlhNDYxNDRkOWM0
MGUzMzc4ZGU2NDM2YmE1MWNkMGQuLjc5ZmFlZjA5YWI2YzhkYWJhZDk3Zjc4YzlhNDBmOWI4N2Y0
MzQwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpCiAgICAgfQogCiAg
ICAgaWYgKG1fbnNSZXF1ZXN0KSB7Ci0gICAgICAgIE5TU3RyaW5nKiBjYWNoZVBhcnRpdGlvbiA9
IFtOU1VSTFByb3RvY29sIHByb3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKXdrQ2FjaGVQYXJ0aXRp
b25LZXkoKSBpblJlcXVlc3Q6bV9uc1JlcXVlc3QuZ2V0KCldOworICAgICAgICBOU1N0cmluZyog
Y2FjaGVQYXJ0aXRpb24gPSBbTlNVUkxQcm90b2NvbCBwcm9wZXJ0eUZvcktleTooTlNTdHJpbmcg
Kilfa0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXkgaW5SZXF1ZXN0Om1fbnNSZXF1ZXN0LmdldCgpXTsK
ICAgICAgICAgaWYgKGNhY2hlUGFydGl0aW9uKQogICAgICAgICAgICAgbV9jYWNoZVBhcnRpdGlv
biA9IGNhY2hlUGFydGl0aW9uOwogICAgIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIFN0cmluZyBwYXJ0aXRp
b24gPSBjYWNoZVBhcnRpdGlvbigpOwogICAgIGlmICghcGFydGl0aW9uLmlzTnVsbCgpICYmICFw
YXJ0aXRpb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIE5TU3RyaW5nICpwYXJ0aXRpb25WYWx1ZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpwYXJ0aXRpb24udXRmOCgpLmRhdGEoKV07
Ci0gICAgICAgIFtOU1VSTFByb3RvY29sIHNldFByb3BlcnR5OnBhcnRpdGlvblZhbHVlIGZvcktl
eTooTlNTdHJpbmcgKil3a0NhY2hlUGFydGl0aW9uS2V5KCkgaW5SZXF1ZXN0Om5zUmVxdWVzdF07
CisgICAgICAgIFtOU1VSTFByb3RvY29sIHNldFByb3BlcnR5OnBhcnRpdGlvblZhbHVlIGZvcktl
eTooTlNTdHJpbmcgKilfa0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXkgaW5SZXF1ZXN0Om5zUmVxdWVz
dF07CiAgICAgfQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCBmZDEyNGNiYzQ2NGZhZGJiYzAwMWU3
MWRkY2EyMmU3MWJjOGUzYmNmLi43YjY2NzUxNjAxYmFiNGVjMDU1ZmQxMjBiMTFjMTMzNGVhMzlk
NDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1l
bnRDb2RlcnNNYWMubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUHJvdGVj
dGlvblNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oPgogCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICNpbXBvcnQgPENGTmV0d29yay9D
RlVSTFJlcXVlc3QuaD4KQEAgLTU3LDYgKzU4LDEzNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIElQQyB7CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlv
bmFyeVJlZj4gY3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oQ0ZJbmRleCB2ZXJzaW9u
LCBDRlR5cGVSZWYqIG9iamVjdHMsIENGSW5kZXggb2JqZWN0Q291bnQsIENGRGljdGlvbmFyeVJl
ZiBwcm90b2NvbFByb3BlcnRpZXMsIENGTnVtYmVyUmVmIGV4cGVjdGVkQ29udGVudExlbmd0aCwg
Q0ZTdHJpbmdSZWYgbWltZVR5cGUsIENGVHlwZVJlZiB0b2tlbk51bGwpCit7CisgICAgYXV0byBh
cmNoaXZlTGlzdEFycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisKKyAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCBvYmplY3RDb3VudDsgKytpKSB7CisgICAgICAgIENGVHlwZVJlZiBvYmpl
Y3QgPSBvYmplY3RzW2ldOworICAgICAgICBpZiAob2JqZWN0KSB7CisgICAgICAgICAgICBDRkFy
cmF5QXBwZW5kVmFsdWUoYXJjaGl2ZUxpc3RBcnJheS5nZXQoKSwgb2JqZWN0KTsKKyAgICAgICAg
ICAgIENGUmVsZWFzZShvYmplY3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g
QXBwZW5kIG91ciB0b2tlbiBudWxsIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKGFyY2hpdmVMaXN0QXJyYXkuZ2V0KCksIHRva2VuTnVsbCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNy
ZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworCisgICAgYXV0
byB2ZXJzaW9uTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJnZlcnNpb24pKTsKKyAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigidmVyc2lvbiIpLCB2ZXJzaW9uTnVtYmVy
LmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBDRlNU
UigiYXJjaGl2ZUxpc3QiKSwgYXJjaGl2ZUxpc3RBcnJheS5nZXQoKSk7CisKKyAgICBpZiAocHJv
dG9jb2xQcm9wZXJ0aWVzKSB7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRpY3Rpb25h
cnkuZ2V0KCksIENGU1RSKCJwcm90b2NvbFByb3BlcnRpZXMiKSwgcHJvdG9jb2xQcm9wZXJ0aWVz
KTsKKyAgICAgICAgQ0ZSZWxlYXNlKHByb3RvY29sUHJvcGVydGllcyk7CisgICAgfQorCisgICAg
aWYgKGV4cGVjdGVkQ29udGVudExlbmd0aCkgeworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShkaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiksIGV4cGVj
dGVkQ29udGVudExlbmd0aCk7CisgICAgICAgIENGUmVsZWFzZShleHBlY3RlZENvbnRlbnRMZW5n
dGgpOworICAgIH0KKworICAgIGlmIChtaW1lVHlwZSkgeworICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigibWltZVR5cGUiKSwgbWltZVR5cGUpOwor
ICAgICAgICBDRlJlbGVhc2UobWltZVR5cGUpOworICAgIH0KKworICAgIENGQWxsb2NhdG9yRGVh
bGxvY2F0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvYmplY3RzKTsKKworICAgIHJldHVybiBkaWN0
aW9uYXJ5OworfQorCitzdGF0aWMgQ0ZUeXBlUmVmIGRpY3Rpb25hcnlWYWx1ZU9mVHlwZShDRkRp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeSwgQ0ZTdHJpbmdSZWYga2V5LCBDRlR5cGVJRCB0eXBlKQor
eworICAgIENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnks
IGtleSk7CisgICAgaWYgKHZhbHVlICYmIENGR2V0VHlwZUlEKHZhbHVlKSA9PSB0eXBlKQorICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBib29s
IGNyZWF0ZUFyY2hpdmVMaXN0KENGRGljdGlvbmFyeVJlZiByZXByZXNlbnRhdGlvbiwgQ0ZUeXBl
UmVmIHRva2VuTnVsbCwgQ0ZJbmRleCogdmVyc2lvbiwgQ0ZUeXBlUmVmKiogb2JqZWN0cywgQ0ZJ
bmRleCogb2JqZWN0Q291bnQsIENGRGljdGlvbmFyeVJlZiogcHJvdG9jb2xQcm9wZXJ0aWVzLCBD
Rk51bWJlclJlZiogZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBDRlN0cmluZ1JlZiogbWltZVR5cGUp
Cit7CisgICAgQ0ZOdW1iZXJSZWYgdmVyc2lvbk51bWJlciA9IChDRk51bWJlclJlZilkaWN0aW9u
YXJ5VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RSKCJ2ZXJzaW9uIiksIENGTnVtYmVy
R2V0VHlwZUlEKCkpOworICAgIGlmICghdmVyc2lvbk51bWJlcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKHZlcnNpb25OdW1iZXIsIGtDRk51bWJl
ckNGSW5kZXhUeXBlLCB2ZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ0ZB
cnJheVJlZiBhcmNoaXZlTGlzdEFycmF5ID0gKENGQXJyYXlSZWYpZGljdGlvbmFyeVZhbHVlT2ZU
eXBlKHJlcHJlc2VudGF0aW9uLCBDRlNUUigiYXJjaGl2ZUxpc3QiKSwgQ0ZBcnJheUdldFR5cGVJ
RCgpKTsKKyAgICBpZiAoIWFyY2hpdmVMaXN0QXJyYXkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICpvYmplY3RDb3VudCA9IENGQXJyYXlHZXRDb3VudChhcmNoaXZlTGlzdEFycmF5KTsK
KyAgICAqb2JqZWN0cyA9IChDRlR5cGVSZWYqKW1hbGxvYyhzaXplb2YoQ0ZUeXBlUmVmKSAqICpv
YmplY3RDb3VudCk7CisgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgKm9iamVjdENvdW50OyAr
K2kpIHsKKyAgICAgICAgQ0ZUeXBlUmVmIG9iamVjdCA9IENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
YXJjaGl2ZUxpc3RBcnJheSwgaSk7CisgICAgICAgIGlmIChvYmplY3QgPT0gdG9rZW5OdWxsKQor
ICAgICAgICAgICAgKCpvYmplY3RzKVtpXSA9IG51bGxwdHI7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICgqb2JqZWN0cylbaV0gPSBvYmplY3Q7CisgICAgfQorCisgICAgaWYgKHByb3RvY29s
UHJvcGVydGllcykKKyAgICAgICAgKnByb3RvY29sUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlS
ZWYpZGljdGlvbmFyeVZhbHVlT2ZUeXBlKHJlcHJlc2VudGF0aW9uLCBDRlNUUigicHJvdG9jb2xQ
cm9wZXJ0aWVzIiksIENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKworICAgIGlmIChleHBlY3Rl
ZENvbnRlbnRMZW5ndGgpCisgICAgICAgICpleHBlY3RlZENvbnRlbnRMZW5ndGggPSAoQ0ZOdW1i
ZXJSZWYpZGljdGlvbmFyeVZhbHVlT2ZUeXBlKHJlcHJlc2VudGF0aW9uLCBDRlNUUigiZXhwZWN0
ZWRDb250ZW50TGVuZ3RoIiksIENGTnVtYmVyR2V0VHlwZUlEKCkpOworCisgICAgaWYgKG1pbWVU
eXBlKQorICAgICAgICAqbWltZVR5cGUgPSAoQ0ZTdHJpbmdSZWYpZGljdGlvbmFyeVZhbHVlT2ZU
eXBlKHJlcHJlc2VudGF0aW9uLCBDRlNUUigibWltZVR5cGUiKSwgQ0ZTdHJpbmdHZXRUeXBlSUQo
KSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKENGVVJMUmVxdWVzdFJlZiBj
ZlJlcXVlc3QsIENGVHlwZVJlZiB0b2tlbk51bGwpCit7CisgICAgQ0ZJbmRleCB2ZXJzaW9uOwor
ICAgIENGVHlwZVJlZiogb2JqZWN0czsKKyAgICBDRkluZGV4IG9iamVjdENvdW50OworICAgIENG
RGljdGlvbmFyeVJlZiBwcm90b2NvbFByb3BlcnRpZXM7CisKKyAgICAvLyBGSVhNRSAoMTI4ODk1
MTgpOiBEbyBub3Qgc2VyaWFsaXplIEhUVFAgbWVzc2FnZSBib2R5LgorICAgIC8vIDEuIEl0IGNh
biBiZSBsYXJnZSBhbmQgdGh1cyBjb3N0bHkgdG8gc2VuZCBhY3Jvc3MuCisgICAgLy8gMi4gSXQg
aXMgbWlzbGVhZGluZyB0byBwcm92aWRlIGEgYm9keSB3aXRoIHNvbWUgcmVxdWVzdHMsIHdoaWxl
IG90aGVycyB1c2UgYm9keSBzdHJlYW1zLCB3aGljaCBjYW5ub3QgYmUgc2VyaWFsaXplZCBhdCBh
bGwuCisKKyAgICBfQ0ZVUkxSZXF1ZXN0Q3JlYXRlQXJjaGl2ZUxpc3Qoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgY2ZSZXF1ZXN0LCAmdmVyc2lvbiwgJm9iamVjdHMsICZvYmplY3RDb3VudCwgJnByb3Rv
Y29sUHJvcGVydGllcyk7CisKKyAgICAvLyBUaGlzIHdpbGwgZGVhbGxvY2F0ZSB0aGUgcGFzc2Vk
IGluIGFyZ3VtZW50cy4KKyAgICByZXR1cm4gY3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRp
b24odmVyc2lvbiwgb2JqZWN0cywgb2JqZWN0Q291bnQsIHByb3RvY29sUHJvcGVydGllcywgbnVs
bHB0ciwgbnVsbHB0ciwgdG9rZW5OdWxsKTsKK30KKworc3RhdGljIFJldGFpblB0cjxDRlVSTFJl
cXVlc3RSZWY+IGNyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlv
bihDRkRpY3Rpb25hcnlSZWYgcmVwcmVzZW50YXRpb24sIENGVHlwZVJlZiB0b2tlbk51bGwpCit7
CisgICAgQ0ZJbmRleCB2ZXJzaW9uOworICAgIENGVHlwZVJlZiogb2JqZWN0czsKKyAgICBDRklu
ZGV4IG9iamVjdENvdW50OworICAgIENGRGljdGlvbmFyeVJlZiBwcm90b2NvbFByb3BlcnRpZXM7
CisKKyAgICBpZiAoIWNyZWF0ZUFyY2hpdmVMaXN0KHJlcHJlc2VudGF0aW9uLCB0b2tlbk51bGws
ICZ2ZXJzaW9uLCAmb2JqZWN0cywgJm9iamVjdENvdW50LCAmcHJvdG9jb2xQcm9wZXJ0aWVzLCBu
dWxscHRyLCBudWxscHRyKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNm
UmVxdWVzdCA9IGFkb3B0Q0YoX0NGVVJMUmVxdWVzdENyZWF0ZUZyb21BcmNoaXZlTGlzdChrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCB2ZXJzaW9uLCBvYmplY3RzLCBvYmplY3RDb3VudCwgcHJvdG9jb2xQ
cm9wZXJ0aWVzKSk7CisgICAgZnJlZShvYmplY3RzKTsKKyAgICByZXR1cm4gV1RGTW92ZShjZlJl
cXVlc3QpOworfQorCitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlU2Vy
aWFsaXphYmxlUmVwcmVzZW50YXRpb24oTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCBDRlR5cGVSZWYg
dG9rZW5OdWxsKQoreworICAgIHJldHVybiBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlv
bihbcmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSwgdG9rZW5OdWxsKTsKK30KKworc3RhdGljIFJldGFp
blB0cjxOU1VSTFJlcXVlc3Q+IGNyZWF0ZU5TVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXBy
ZXNlbnRhdGlvbihDRkRpY3Rpb25hcnlSZWYgcmVwcmVzZW50YXRpb24sIENGVHlwZVJlZiB0b2tl
bk51bGwpCit7CisgICAgYXV0byBjZlJlcXVlc3QgPSBjcmVhdGVDRlVSTFJlcXVlc3RGcm9tU2Vy
aWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVwcmVzZW50YXRpb24sIHRva2VuTnVsbCk7CisgICAg
aWYgKCFjZlJlcXVlc3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFk
b3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDpjZlJlcXVl
c3QuZ2V0KCldKTsKK30KKwogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiB2b2lkIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewpAQCAtNzksNyAr
MjEwLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRm
b3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgICAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQUmVxdWVzdEJvZHlTdHJlYW0obXV0YWJsZVJlcXVlc3QsIG5pbCk7CiAgICAgfQogCi0gICAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tDRlVSTFJl
cXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUu
Z2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7CisgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gZGljdGlvbmFyeSA9IGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJl
cXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIElQ
Qzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwogCiAgICAgLy8gVGhlIGZhbGxi
YWNrIGFycmF5IGlzIHBhcnQgb2YgQ0ZVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQg
YnkgV0tDRlVSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KQEAgLTEw
Niw3ICsyMzcsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2Rl
UGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0CiAgICAgICAgIFsoTlNNdXRhYmxl
VVJMUmVxdWVzdCAqKXJlcXVlc3RUb1NlcmlhbGl6ZSBzZXRIVFRQQm9keVN0cmVhbTpuaWxdOwog
ICAgIH0KIAotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9w
dENGKFdLTlNVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVz
dFRvU2VyaWFsaXplLmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOworICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBjcmVhdGVTZXJpYWxpemFibGVSZXBy
ZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJl
ZigpKTsKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKIAogICAg
IC8vIFRoZSBmYWxsYmFjayBhcnJheSBpcyBwYXJ0IG9mIE5TVVJMUmVxdWVzdCwgYnV0IGl0IGlz
IG5vdCBlbmNvZGVkIGJ5IFdLTlNVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50
YXRpb24uCkBAIC0xMzIsMTMgKzI2MywxMyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VS
ZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFJlc291cgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotICAgIFJldGFp
blB0cjxDRlVSTFJlcXVlc3RSZWY+IGNmVVJMUmVxdWVzdCA9IGFkb3B0Q0YoV0tDcmVhdGVDRlVS
TFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwg
SVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVm
PiBjZlVSTFJlcXVlc3QgPSBjcmVhdGVDRlVSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVz
ZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAg
IGlmICghY2ZVUkxSZXF1ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXNvdXJj
ZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoY2ZVUkxSZXF1ZXN0LmdldCgpKTsKICNlbHNlCi0g
ICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1ZXN0ID0gV0tOU1VSTFJlcXVlc3RG
cm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tl
bk51bGxUeXBlUmVmKCkpOworICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVz
dCA9IGNyZWF0ZU5TVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0
aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFuc1VSTFJl
cXVlc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggMDQ1YjliMmQ0ODJl
NDIyNzljOTZlOWExOTNjNGVkN2QwODZiNzljMS4uYmQ1N2E3Y2I3Zjk2NTdlZjUxYmM1MTFkZWE0
Y2UxNTdlYTg3OGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC00NTUsNyArNDU1LDcgQEAgU3RyaW5nIFdlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCkKIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIFJldGFpblB0cjxOU1N0cmluZz4gY2FjaGVTdG9yYWdl
UGF0aCA9IGFkb3B0TlMoKE5TU3RyaW5nICopV0tDb3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5
KCkpOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gY2FjaGVTdG9yYWdlUGF0aCA9IGFkb3B0TlMo
KE5TU3RyaW5nICopX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkoW1tOU1VSTENhY2hlIHNo
YXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNoZV0pKTsKICAgICBpZiAoIWNhY2hlU3RvcmFnZVBhdGgp
CiAgICAgICAgIGNhY2hlU3RvcmFnZVBhdGggPSBAIn4vTGlicmFyeS9XZWJLaXQvQ2FjaGVTdG9y
YWdlIjsKIApAQCAtNDY0LDcgKzQ2NCw3IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5
UGxhdGZvcm1EZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKIAogU3RyaW5nIFdlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewot
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gY2FjaGVQYXRoID0gYWRvcHROUygoTlNTdHJpbmcgKilX
S0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBjYWNoZVBhdGggPSBhZG9wdE5TKChOU1N0cmluZyAqKV9DRlVSTENhY2hlQ29weUNhY2hlRGly
ZWN0b3J5KFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2FjaGVdKSk7CiAgICAg
aWYgKCFjYWNoZVBhdGgpCiAgICAgICAgIGNhY2hlUGF0aCA9IEAifi9MaWJyYXJ5L0NhY2hlcy9j
b20uYXBwbGUuV2ViS2l0LldlYlByb2Nlc3MiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJm
YWNlLm1tCmluZGV4IGJkYTVkNzNkZmMxMjJmM2UwMjIzYWFhZTU1Mjg0ZDRiMzllNTczY2UuLmE2
MWI4NDE0NTMwMzRmYjljOWNhYjg0YmVmNmVhYWQxMDE0YmUwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCkBAIC0zNiwxOCArMzYsMTIgQEAgdm9pZCBJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSh2b2lkKQogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgaW5pdE9uY2U7
CiAgICAgCiAgICAgZGlzcGF0Y2hfb25jZSgmaW5pdE9uY2UsIF57Ci0gICAgICAgIElOSVQoQ29w
eUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBJTklU
KERyYXdCZXplbGVkVGV4dEFyZWEpOwogICAgICAgICBJTklUKERyYXdNZWRpYVNsaWRlclRyYWNr
KTsKICAgICAgICAgSU5JVChEcmF3TWVkaWFVSVBhcnQpOwogICAgICAgICBJTklUKEhpdFRlc3RN
ZWRpYVVJUGFydCk7CiAgICAgICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKLSNlbmRpZgot
ICAgICAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOwotICAg
ICAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7Ci0KLSNpZiAhUExBVEZPUk0oSU9T
KQogICAgICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQp
OwogICAgICAgICBJTklUKENvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZSk7CiAg
ICAgICAgIElOSVQoQ3Vyc29yKTsKQEAgLTU4LDEyICs1Miw2IEBAIHZvaWQgSW5pdFdlYkNvcmVT
eXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAgICAgSU5JVChOU1JlYm91bmREZWx0YUZvckVsYXN0
aWNEZWx0YSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi0gICAg
ICAgIElOSVQoSXNQdWJsaWNTdWZmaXgpOwotI2VuZGlmCi0KLSAgICAgICAgSU5JVChDYWNoZVBh
cnRpdGlvbktleSk7Ci0KICAgICAgICAgSU5JVChFeGVybmFsRGV2aWNlVHlwZUZvclBsYXllcik7
CiAgICAgICAgIElOSVQoRXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDE3NDY1ODZiMjQyZjUyZTA3YTk5ZmU5MTVhYTZiNGY2
MmEzYmM1ZDQuLjA2MjAyY2VlZGFjZGI3MDE5N2NiZTEwYjgzYzZlZjc1MjUyZGQwNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTQyLDcgKzQyLDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5
c3RlbUludGVyZmFjZSh2b2lkKQogICAgIGlmIChkaWRJbml0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBJTklUKENvcHlDT05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykK
ICAgICBJTklUKERyYXdCZXplbGVkVGV4dEFyZWEpOwogICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0
KTsKQEAgLTUwLDggKzQ5LDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lk
KQogICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICBJTklUKE1lYXN1cmVNZWRpYVVJ
UGFydCk7CiAjZW5kaWYKLSAgICBJTklUKFNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JT
dHJlYW0pOwotICAgIElOSVQoU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKTsKIAogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9w
YXJkKTsKQEAgLTY3LDEyICs2NCw2IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uo
dm9pZCkKICAgICBJTklUKE5TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKTsKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKLSAgICBJTklUKElzUHVibGljU3VmZml4
KTsKLSNlbmRpZgotCi0gICAgSU5JVChDYWNoZVBhcnRpdGlvbktleSk7Ci0KICAgICBJTklUKEV4
ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKTsKICAgICBJTklUKEV4ZXJuYWxEZXZpY2VEaXNwbGF5
TmFtZUZvclBsYXllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCBjNzIzM2JlMTMzMmRiOGI1ZmFlNzc4N2M5YTY4ZTYxM2Y0Y2EzYmY5Li5iNWU3
MjYzZjNkZjJjZGYyMDkxYTgzMjhiYmJlZjk3NDRlNTJjNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC04NTczLDcgKzg1NzMsNyBAQCArICh2b2lk
KV9zZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWwKICAgICBpZiAoc19kaWRT
ZXRDYWNoZU1vZGVsICYmIGNhY2hlTW9kZWwgPT0gc19jYWNoZU1vZGVsKQogICAgICAgICByZXR1
cm47CiAKLSAgICBOU1N0cmluZyAqbnN1cmxDYWNoZURpcmVjdG9yeSA9IENGQnJpZGdpbmdSZWxl
YXNlKFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBOU1N0cmluZyAqbnN1
cmxDYWNoZURpcmVjdG9yeSA9IENGQnJpZGdpbmdSZWxlYXNlKF9DRlVSTENhY2hlQ29weUNhY2hl
RGlyZWN0b3J5KFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2FjaGVdKSk7CiAg
ICAgaWYgKCFuc3VybENhY2hlRGlyZWN0b3J5KQogICAgICAgICBuc3VybENhY2hlRGlyZWN0b3J5
ID0gTlNIb21lRGlyZWN0b3J5KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320485</attachid>
            <date>2017-09-11 15:22:37 -0700</date>
            <delta_ts>2017-09-11 15:59:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176729-20170911152236.patch</filename>
            <type>text/plain</type>
            <size>34168</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjNmM4ODQ2MTYwNmMx
MTlkNTJjNTNjNmZlNjI4MWU5YzA3MTRkNC4uYjRhOTAyYmViY2FjYmFjMWE4ZTU1N2I0MTFlZmUw
NDVkYTJlMTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0
d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUHVibGlj
U3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNQdWJsaWNTdWZmaXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvcHlDT05ORUNUUHJveHlSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBs
YXRmb3JtUmVxdWVzdCk6CisKIDIwMTctMDktMTEgIFlvc2hpYWtpIEppdHN1a2F3YSAgPFlvc2hp
YWtpLkppdHN1a2F3YUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEZpeCB0aGUgd2lu
Y2Fpcm8gYnVpbGQgYWZ0ZXIgcjIyMTgzOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZmJhMTQyYTA5
MjU3N2NiNTVlMGEzZmY2MzE1NGM1NTZjMmU4Y2U1MS4uZjE0MjY1MWQ2ZTAwYTU0OWFkYTFkYTFl
NzIwMWE0ZjIwZjg5MDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIw
MTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCisgICAgICAgIFtDRl0g
VXBzdHJlYW0gQ0ZOZXR3b3JrLXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKKzIwMTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmVmMzQzOTQwM2UzZTRj
OGE0MWM3NTY4NWQ1NmVlNTdiYmVjZjdlNy4uYTJlZDQwMGFiZjIyNmQ4ODZkZjU3ZDliYzIxZjIx
NzI1YjczNjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OmNyZWF0ZVNlcmlhbGl6YWJsZVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKElQQzo6ZGljdGlvbmFyeVZhbHVlT2ZUeXBlKToKKyAg
ICAgICAgKElQQzo6Y3JlYXRlQXJjaGl2ZUxpc3QpOgorICAgICAgICAoSVBDOjpjcmVhdGVDRlVS
TFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSVBDOjpj
cmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKworMjAxNy0wOS0xMSAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0g
UVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg1NmExYWVlOTgxYTlkNmYwNDMxZDFmNGM1YWYwY2E5YWQy
YTJjNzAuLjQyZDE1YWEwYWM5MTVkYzQ0N2JlM2RhNmU5YzM1YjYzZGM2OGE1MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfc2V0
Q2FjaGVNb2RlbDpdKToKKworMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaAppbmRleCAwYWU4MGM3ODdiOGU4MWI5YTg0ZjAxYjkxNmI4YmY3NGE5MzJkZjNj
Li4wNGJkMDVkMzgxYjNhMGViMTA4NDRhNWFhMDM2YTI4ZTljZTE2N2ZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMzQsNiArMzQsNyBAQAog
CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGUHJveHlTdXBwb3J0UHJpdi5oPgorI2luY2x1ZGUgPENGTmV0d29yay9DRlNvY2tl
dFN0cmVhbVByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4KICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9uUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0
d29yay9DRlVSTENyZWRlbnRpYWxTdG9yYWdlLmg+CkBAIC0xOTMsNyArMTk0LDEzIEBAIHZvaWQg
X0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmCiAKIGV4dGVybiBDRlN0cmluZ1JlZiBjb25zdCBrQ0ZIVFRQQ29v
a2llTG9jYWxGaWxlRG9tYWluOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkhUVFBWZXJz
aW9uMV8xOworZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVD
VEFkZGl0aW9uYWxIZWFkZXJzOworZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVBy
b3BlcnR5Q09OTkVDVFByb3h5OworZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVBy
b3BlcnR5Q09OTkVDVFByb3h5SG9zdDsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJl
YW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eVBvcnQ7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NG
U3RyZWFtUHJvcGVydHlDT05ORUNUUmVzcG9uc2U7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYg
a0NGVVJMUmVxdWVzdEFsbG93QWxsUE9TVENhY2hpbmc7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdS
ZWYgX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5OwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9r
Q0ZVUkxDb25uZWN0aW9uUHJvcGVydHlTaG91bGRTbmlmZjsKIGV4dGVybiBjb25zdCBDRlN0cmlu
Z1JlZiBfa0NGVVJMU3RvcmFnZVNlc3Npb25Jc1ByaXZhdGU7CiAKQEAgLTIzNiw2ICsyNDMsMTIg
QEAgQ0ZBcnJheVJlZiBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZik7CiB2b2lkIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVzKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYsIENGQXJyYXlSZWYgY29va2llcywgQ0ZVUkxSZWYsIENGVVJMUmVmIG1h
aW5Eb2N1bWVudFVSTCk7CiB2b2lkIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVDb29raWUoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiwgQ0ZIVFRQQ29va2llUmVmKTsKIENGTXV0YWJsZVVSTFJlcXVl
c3RSZWYgQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoQ0ZBbGxvY2F0b3JSZWYsIENGVVJM
UmVxdWVzdFJlZik7CitDRlN0cmluZ1JlZiBfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShD
RlVSTENhY2hlUmVmKTsKK0Jvb2xlYW4gX0NGSG9zdElzRG9tYWluVG9wTGV2ZWwoQ0ZTdHJpbmdS
ZWYgZG9tYWluKTsKK3ZvaWQgX0NGSFRUUE1lc3NhZ2VTZXRSZXNwb25zZVVSTChDRkhUVFBNZXNz
YWdlUmVmLCBDRlVSTFJlZik7Cit2b2lkIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VQcm94eVVS
TChDRkhUVFBNZXNzYWdlUmVmLCBDRlVSTFJlZik7Cit2b2lkIF9DRlVSTFJlcXVlc3RDcmVhdGVB
cmNoaXZlTGlzdChDRkFsbG9jYXRvclJlZiwgQ0ZVUkxSZXF1ZXN0UmVmLCBDRkluZGV4KiB2ZXJz
aW9uLCBDRlR5cGVSZWYqKiBvYmplY3RzLCBDRkluZGV4KiBvYmplY3RDb3VudCwgQ0ZEaWN0aW9u
YXJ5UmVmKiBwcm90b2NvbFByb3BlcnRpZXMpOworQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBfQ0ZV
UkxSZXF1ZXN0Q3JlYXRlRnJvbUFyY2hpdmVMaXN0KENGQWxsb2NhdG9yUmVmLCBDRkluZGV4IHZl
cnNpb24sIENGVHlwZVJlZiogb2JqZWN0cywgQ0ZJbmRleCBvYmplY3RDb3VudCwgQ0ZEaWN0aW9u
YXJ5UmVmIHByb3RvY29sUHJvcGVydGllcyk7CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oV0lOKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlSU9TLm1tCmluZGV4IGQ3MzM5OGVjMmI0M2QxZTM3ZGJmYThlYmU3ZWE0MDJjNjFm
MjhmNGYuLjFiOTY5ZWNkNjg5ZGQ2MmI2MmZjMzRkNWJhOGU5OWUxYzhiYTgzZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJm
YWNlSU9TLm1tCkBAIC0yOSwxMCArMjksNyBAQAogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrQ2xl
YXJHbHlwaFZlY3Rvcikodm9pZCogZ2x5cGhzKTsKIFdFQkNPUkVfRVhQT1JUIE9TU3RhdHVzICgq
d2tDb252ZXJ0Q2hhclRvR2x5cGhzKSh2b2lkKiBzdHlsZUdyb3VwLCBjb25zdCBVbmlDaGFyKiwg
dW5zaWduZWQgbnVtQ2hhcmFjdGVycywgdm9pZCogZ2x5cGhzKTsKIFdFQkNPUkVfRVhQT1JUIGlk
ICgqd2tDcmVhdGVOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5KSh2b2lkKTsKLVdFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVm
LCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7Ci1XRUJDT1JF
X0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShD
RlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7CiBX
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCkoQk9PTCk7Ci1XRUJDT1JFX0VYUE9SVCBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09O
TkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkws
IENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKIFdFQkNPUkVf
RVhQT1JUIHZvaWQgKCp3a1NldExheWVyQ29udGVudHNTY2FsZSkoQ0FMYXllciAqKTsKIAogV0VC
Q09SRV9FWFBPUlQgYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJlZmVyZW5jZXMp
KHZvaWQpOwpAQCAtNDgsMTIgKzQ1LDYgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCgqd2tDYXB0aW9u
QXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSkoQ0dGbG9hdCopOwogV0VCQ09SRV9F
WFBPUlQgaW50KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSkodm9pZCk7CiBX
RUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdz
Q2hhbmdlZE5vdGlmaWNhdGlvbikodm9pZCk7CiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9M
SVNUKQotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrSXNQdWJsaWNTdWZmaXgpKE5TU3RyaW5nICpo
b3N0KTsKLSNlbmRpZgotCi1XRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0
aXRpb25LZXkpKHZvaWQpOwotCiBXRUJDT1JFX0VYUE9SVCBpbnQgKCp3a0V4ZXJuYWxEZXZpY2VU
eXBlRm9yUGxheWVyKShBVlBsYXllciAqKTsKIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICooKndr
RXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKShBVlBsYXllciAqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KaW5kZXggOTMwYTM0
NzUzMGY0N2U4OWMxMzgyOTlhMzNkMmY4NjlkMTBlZjUwNi4uM2Y0MzE3MjM4ZWRlMzM3NmRlYWI2
Y2EwOWNhOGFhYWJmODQxODBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UHVibGljU3VmZml4TWFjLm1tCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiUHVibGljU3VmZml4LmgiCiAKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgotCiAjaWYgRU5BQkxFKFBV
QkxJQ19TVUZGSVhfTElTVCkKIAorI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCisjaW1w
b3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgorCiBAaW50ZXJmYWNlIE5TU3RyaW5nIChX
ZWJDb3JlTlNVUkxFeHRyYXMpCiAtIChCT09MKV93ZWJfbG9va3NMaWtlSVBBZGRyZXNzOwogQGVu
ZApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBib29sIGlzUHVibGljU3Vm
Zml4KGNvbnN0IFN0cmluZyYgZG9tYWluKQogewogICAgIE5TU3RyaW5nICpob3N0ID0gZGVjb2Rl
SG9zdE5hbWUoZG9tYWluKTsKLSAgICByZXR1cm4gaG9zdCAmJiB3a0lzUHVibGljU3VmZml4KGhv
c3QpOworICAgIHJldHVybiBob3N0ICYmIF9DRkhvc3RJc0RvbWFpblRvcExldmVsKChDRlN0cmlu
Z1JlZilob3N0KTsKIH0KIAogU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oY29u
c3QgU3RyaW5nJiBkb21haW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCBmNjc1OTUwOWExMWZjZTMzNDEzZmU2OTAz
M2E0Njg1NmY1OTc0NTU4Li45ZWNjMzQxYzUxNjIzMTE0MzljNDJlN2JkZmEyMDdkZTY3ZDA0NTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgKQEAgLTEzMywxMiArMTMzLDYgQEAgZXh0ZXJuIEJPT0wgKCp3a0hpdFRlc3RN
ZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9pbnQpOwogZXh0
ZXJuIHZvaWQgKCp3a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCAqYm91bmRz
LCBDR1NpemUgKm5hdHVyYWxTaXplKTsKIAogZXh0ZXJuIHZvaWQgKCp3a1NldENvb2tpZVN0b3Jh
Z2VQcml2YXRlQnJvd3NpbmdFbmFibGVkKShCT09MKTsKLSNlbmRpZgotZXh0ZXJuIHZvaWQgKCp3
a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBw
cm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7Ci1leHRlcm4gdm9pZCAoKndrU2V0Q09O
TkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmlu
Z1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwotZXh0ZXJuIENGSFRUUE1lc3NhZ2VSZWYg
KCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiBy
ZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQp
OwotCi0jaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiB2b2lkKiB3a0dldEh5cGhlbmF0aW9uTG9j
YXRpb25CZWZvcmVJbmRleDsKICNlbmRpZgogCkBAIC0xNjcsMTIgKzE2MSw2IEBAIGV4dGVybiBD
R0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YSkoQ0dGbG9hdCBkZWx0YSk7
CiBleHRlcm4gQ0dGbG9hdCAoKndrTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpKENHRmxv
YXQgZGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQotZXh0
ZXJuIGJvb2wgKCp3a0lzUHVibGljU3VmZml4KShOU1N0cmluZyAqaG9zdCk7Ci0jZW5kaWYKLQot
ZXh0ZXJuIENGU3RyaW5nUmVmICgqd2tDYWNoZVBhcnRpdGlvbktleSkodm9pZCk7Ci0KIHR5cGVk
ZWYgZW51bSB7CiAgICAgd2tFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmUsCiAgICAgd2tFeHRlcm5h
bFBsYXliYWNrVHlwZUFpclBsYXksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDJlYWJkNGYxNGYzOTMzNmUzMzQw
Y2U4ZWRlZTM3ZTQ4MmRkNjgwMmUuLjM1MTBkOTliY2Y1N2Y2NWMwMTg5NjY5NTQyNjVlMmI4OWJh
ZWVjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00MCwxMCArNDAsNiBAQCBOU1RpbWVJbnRlcnZhbCAoKndr
R2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3BvbnNlICpyZXNw
b25zZQogQk9PTCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZSk7CiB2b2lkICgqd2tQb3B1cE1lbnUpKE5TTWVudSosIE5TUG9pbnQgbG9j
YXRpb24sIGZsb2F0IHdpZHRoLCBOU1ZpZXcqLCBpbnQgc2VsZWN0ZWRJdGVtLCBOU0ZvbnQqLCBO
U0NvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBib29sIHVzZXNDdXN0b21BcHBlYXJhbmNlKTsKIAot
dm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3Ry
aW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKLXZvaWQgKCp3a1NldENP
Tk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJp
bmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKLUNGSFRUUE1lc3NhZ2VSZWYgKCp3a0Nv
cHlDT05ORUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJlZiByZXNwb25z
ZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwotCiB2
b2lkKiB3a0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleDsKIAogYm9vbCAoKndrRXhl
Y3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCkodm9pZCk7CkBAIC02MiwxMiAr
NTgsNiBAQCBDR0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YSkoQ0dGbG9h
dCBkZWx0YSk7CiBDR0Zsb2F0ICgqd2tOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSkoQ0dG
bG9hdCBkZWx0YSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi1i
b29sICgqd2tJc1B1YmxpY1N1ZmZpeCkoTlNTdHJpbmcgKmhvc3QpOwotI2VuZGlmCi0KLUNGU3Ry
aW5nUmVmICgqd2tDYWNoZVBhcnRpdGlvbktleSkodm9pZCk7Ci0KIGludCAoKndrRXhlcm5hbERl
dmljZVR5cGVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwogTlNTdHJpbmcgKigqd2tFeGVybmFsRGV2
aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCmluZGV4IDBiNTdhYTQzMDI1NzBjNjE0ODY4OWMwZTA5NjI1YzkwZDFjOGE2MjMuLjllNzVl
YTMyODI0MTJkMTZiNjQxMjE5MjliZjdhMTZkNzRjN2JjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KCkKICAgICBpZiAoIXBhcnRpdGlvbi5pc051bGwoKSAmJiAhcGFydGl0aW9u
LmlzRW1wdHkoKSkgewogICAgICAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwYXJ0aXRpb24udXRm
OCgpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhcnRpdGlvblZhbHVlID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJ
bnQ4Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIGZhbHNlKSk7Ci0gICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFBy
b3BlcnR5KGNmUmVxdWVzdCwgd2tDYWNoZVBhcnRpdGlvbktleSgpLCBwYXJ0aXRpb25WYWx1ZS5n
ZXQoKSk7CisgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVz
dCwga0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXksIHBhcnRpdGlvblZhbHVlLmdldCgpKTsKICAgICB9
CiAjZW5kaWYKIApAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpCiAgICAgfQogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElP
TklORykKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGFydGl0aW9uID0gYWRvcHRD
RihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oX0NGVVJMUmVxdWVzdENvcHlQcm90b2NvbFByb3Bl
cnR5Rm9yS2V5KG1fY2ZSZXF1ZXN0LmdldCgpLCB3a0NhY2hlUGFydGl0aW9uS2V5KCkpKSk7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZVBhcnRpdGlvbiA9IGFkb3B0Q0Yoc3RhdGlj
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktl
eShtX2NmUmVxdWVzdC5nZXQoKSwga0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXkpKSk7CiAgICAgaWYg
KGNhY2hlUGFydGl0aW9uKQogICAgICAgICBtX2NhY2hlUGFydGl0aW9uID0gY2FjaGVQYXJ0aXRp
b24uZ2V0KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRl
eCAwOTk4YTFlODVmZjBjNjMzOWEyZWU4YWEzNjk0OTUzODA0ODBhMmI5Li42NzE5YTRmZTE4MGVl
MDk2MDJkMGQ1MjExN2JmY2VlNGNjOGE2NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q0ZOZXQuY3BwCkBAIC0zMDIsNiArMzAyLDEzIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Y2hvb3NlUHJveHlGcm9tQXJyYXkoQ0ZBcnJheVJlZiBwcm94eUFycmF5KQogICAgIG1fY29u
bmVjdGlvblR5cGUgPSBEaXJlY3Q7CiB9CiAKK3N0YXRpYyB2b2lkIHNldENPTk5FQ1RQcm94eUZv
clN0cmVhbShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENG
TnVtYmVyUmVmIHByb3h5UG9ydCkKK3sKKyAgICBjb25zdCB2b2lkKiBwcm94eUtleXNbXSA9IHsg
a0NGU3RyZWFtUHJvcGVydHlDT05ORUNUUHJveHlIb3N0LCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5F
Q1RQcm94eVBvcnQgfTsKKyAgICBjb25zdCB2b2lkKiBwcm94eVZhbHVlc1tdID0geyBwcm94eUhv
c3QsIHByb3h5UG9ydCB9OworICAgIGF1dG8gY29ubmVjdERpY3Rpb25hcnkgPSBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm94eUtleXMsIHByb3h5VmFs
dWVzLCBzaXplb2YocHJveHlLZXlzKSAvIHNpemVvZigqcHJveHlLZXlzKSwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwor
ICAgIENGUmVhZFN0cmVhbVNldFByb3BlcnR5KHN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlDT05O
RUNUUHJveHksIGNvbm5lY3REaWN0aW9uYXJ5LmdldCgpKTsKK30KIAogdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKCkKIHsKQEAgLTM0Nyw3ICszNTQsNyBAQCB2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMoKQogICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIGNhc2UgQ09OTkVDVFByb3h5OgotICAgICAgICB3a1NldENPTk5FQ1RQ
cm94eUZvclN0cmVhbShtX3JlYWRTdHJlYW0uZ2V0KCksIG1fcHJveHlIb3N0LmdldCgpLCBtX3By
b3h5UG9ydC5nZXQoKSk7CisgICAgICAgIHNldENPTk5FQ1RQcm94eUZvclN0cmVhbShtX3JlYWRT
dHJlYW0uZ2V0KCksIG1fcHJveHlIb3N0LmdldCgpLCBtX3Byb3h5UG9ydC5nZXQoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzk1LDYgKzQwMiwxOSBAQCBzdGF0aWMgUHJvdGVjdGlv
blNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUgYXV0aGVudGljYXRpb25TY2hlbWVGcm9tQXV0aGVu
dGljYXRpbwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBQcm90ZWN0aW9u
U3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd247CiB9CisgICAgCitzdGF0aWMgdm9pZCBz
ZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKENGUmVhZFN0cmVhbVJlZiBzdHJl
YW0sIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZykKK3sKKyAgICBhdXRvIG9y
aWdpbmFsQ09OTkVDVERpY3Rpb25hcnkgPSBhZG9wdENGKChDRkRpY3Rpb25hcnlSZWYpQ0ZSZWFk
U3RyZWFtQ29weVByb3BlcnR5KHN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlDT05ORUNUUHJveHkp
KTsKKyAgICBhdXRvIGNvbm5lY3REaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBvcmlnaW5hbENPTk5FQ1REaWN0
aW9uYXJ5LmdldCgpKSk7CisKKyAgICBjb25zdCB2b2lkKiBoZWFkZXJGaWVsZE5hbWVzW10gPSB7
IENGU1RSKCJQcm94eS1BdXRob3JpemF0aW9uIikgfTsKKyAgICBjb25zdCB2b2lkKiBoZWFkZXJG
aWVsZFZhbHVlc1tdID0geyBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcgfTsKKyAgICBhdXRvIGFk
ZGl0aW9uYWxIZWFkZXJGaWVsZHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBoZWFkZXJGaWVsZE5hbWVzLCBoZWFkZXJGaWVsZFZhbHVlcywgc2l6ZW9m
KGhlYWRlckZpZWxkTmFtZXMpIC8gc2l6ZW9mKCpoZWFkZXJGaWVsZFZhbHVlcyksICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
KTsKKworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvbm5lY3REaWN0aW9uYXJ5LmdldCgpLCBr
Q0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RBZGRpdGlvbmFsSGVhZGVycywgYWRkaXRpb25hbEhlYWRl
ckZpZWxkcy5nZXQoKSk7CisgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkoc3RyZWFtLCBrQ0ZT
dHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSwgY29ubmVjdERpY3Rpb25hcnkuZ2V0KCkpOworfQog
CiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhU
VFBNZXNzYWdlUmVmIHByb3h5UmVzcG9uc2UpCiB7CkBAIC00MzcsNyArNDU3LDcgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRDT05ORUNUQ3JlZGVudGlhbHMoQ0ZIVFRQTWVzc2Fn
ZVJlZiBwcm94eVJlc3BvbnMKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNldHRpbmcgdGhlIGF1
dGhvcml6YXRpb24gcmVzdWx0cyBpbiBhIG5ldyBjb25uZWN0aW9uIGF0dGVtcHQuCi0gICAgICAg
IHdrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbShtX3JlYWRTdHJlYW0uZ2V0
KCksIHByb3h5QXV0aG9yaXphdGlvblN0cmluZy5nZXQoKSk7CisgICAgICAgIHNldENPTk5FQ1RQ
cm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0obV9yZWFkU3RyZWFtLmdldCgpLCBwcm94eUF1dGhv
cml6YXRpb25TdHJpbmcuZ2V0KCkpOwogICAgICAgICBtX3NlbnRTdG9yZWRDcmVkZW50aWFscyA9
IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00OTIsNiArNTEyLDI2IEBAIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFjayhDRldyaXRlU3RyZWFt
UmVmIHN0cmVhbSwgQ0ZTdHJlCiAgICAgaGFuZGxlLT53cml0ZVN0cmVhbUNhbGxiYWNrKHR5cGUp
OwogI2VuZGlmCiB9CisgICAgCitzdGF0aWMgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IGNv
cHlDT05ORUNUUHJveHlSZXNwb25zZShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlVSTFJlZiBy
ZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQp
Cit7CisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRDRigoQ0ZIVFRQTWVzc2FnZVJlZilDRlJlYWRT
dHJlYW1Db3B5UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RSZXNwb25z
ZSkpOworICAgIC8vIENGTmV0d29yayBuZWVkcyBVUkwgdG8gYmUgc2V0IG9uIHJlc3BvbnNlIGlu
IG9yZGVyIHRvIGhhbmRsZSBhdXRoZW50aWNhdGlvbiAtIGV2ZW4gdGhvdWdoIGl0IGRvZXNuJ3Qg
c2VlbSB0byBtYWtlIHNlbnNlIHRvIHByb3ZpZGUgdWx0aW1hdGUgdGFyZ2V0IFVSTCB3aGVuIGF1
dGhlbnRpY2F0aW5nIHRvIGEgcHJveHkuCisgICAgLy8gVGhpcyBpcyBzZXQgYnkgQ0ZOZXR3b3Jr
IGludGVybmFsbHkgZm9yIG5vcm1hbCBIVFRQIHJlc3BvbnNlcywgYnV0IG5vdCBmb3IgcHJveGll
cy4KKyAgICBfQ0ZIVFRQTWVzc2FnZVNldFJlc3BvbnNlVVJMKG1lc3NhZ2UuZ2V0KCksIHJlc3Bv
bnNlVVJMKTsKKworI2lmICFQTEFURk9STShJT1MpCisgICAgLy8gRGl0dG8gZm9yIHByb3h5IFVS
TC4KKyAgICBhdXRvIHByb3h5VVJMU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhG
b3JtYXQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgQ0ZTVFIoImh0dHBzOi8vJUA6JUAi
KSwgcHJveHlIb3N0LCBwcm94eVBvcnQpKTsKKyAgICBhdXRvIHByb3h5VVJMID0gYWRvcHRDRihD
RlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHJveHlVUkxTdHJpbmcu
Z2V0KCksIG51bGxwdHIpKTsKKyAgICBfQ0ZIVFRQTWVzc2FnZVNldFJlc3BvbnNlUHJveHlVUkwo
bWVzc2FnZS5nZXQoKSwgcHJveHlVUkwuZ2V0KCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
cHJveHlIb3N0KTsKKyAgICBVTlVTRURfUEFSQU0ocHJveHlQb3J0KTsKKyNlbmRpZgorCisgICAg
cmV0dXJuIG1lc3NhZ2U7Cit9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZFN0
cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5cGUpCiB7CkBAIC01MDYsNyArNTQ2LDcg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2soQ0ZTdHJl
YW1FdmVudFR5cGUgdHlwZSkKIAogICAgICAgICBpZiAobV9jb25uZWN0aW5nU3Vic3RhdGUgPT0g
V2FpdGluZ0ZvckNvbm5lY3QpIHsKICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3Rpb25UeXBlID09
IENPTk5FQ1RQcm94eSkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdl
UmVmPiBwcm94eVJlc3BvbnNlID0gYWRvcHRDRih3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSht
X3JlYWRTdHJlYW0uZ2V0KCksIG1faHR0cHNVUkwuZ2V0KCksIG1fcHJveHlIb3N0LmdldCgpLCBt
X3Byb3h5UG9ydC5nZXQoKSkpOworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkhUVFBNZXNz
YWdlUmVmPiBwcm94eVJlc3BvbnNlID0gY29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKG1fcmVhZFN0
cmVhbS5nZXQoKSwgbV9odHRwc1VSTC5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQ
b3J0LmdldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIXByb3h5UmVzcG9uc2UpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTg4LDcgKzYyOCw3IEBAIHZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBl
KQogCiAgICAgICAgIGlmIChtX2Nvbm5lY3RpbmdTdWJzdGF0ZSA9PSBXYWl0aW5nRm9yQ29ubmVj
dCkgewogICAgICAgICAgICAgaWYgKG1fY29ubmVjdGlvblR5cGUgPT0gQ09OTkVDVFByb3h5KSB7
Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHByb3h5UmVzcG9u
c2UgPSBhZG9wdENGKHdrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKG1fcmVhZFN0cmVhbS5nZXQo
KSwgbV9odHRwc1VSTC5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQb3J0LmdldCgp
KSk7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHByb3h5UmVz
cG9uc2UgPSBjb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UobV9yZWFkU3RyZWFtLmdldCgpLCBtX2h0
dHBzVVJMLmdldCgpLCBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkpOwogICAg
ICAgICAgICAgICAgIGlmICghcHJveHlSZXNwb25zZSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCA4NWFiOTEzNjU5YTQ2MTQ0ZDlj
NDBlMzM3OGRlNjQzNmJhNTFjZDBkLi43OWZhZWYwOWFiNmM4ZGFiYWQ5N2Y3OGM5YTQwZjliODdm
NDM0MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgIH0KIAog
ICAgIGlmIChtX25zUmVxdWVzdCkgewotICAgICAgICBOU1N0cmluZyogY2FjaGVQYXJ0aXRpb24g
PSBbTlNVUkxQcm90b2NvbCBwcm9wZXJ0eUZvcktleTooTlNTdHJpbmcgKil3a0NhY2hlUGFydGl0
aW9uS2V5KCkgaW5SZXF1ZXN0Om1fbnNSZXF1ZXN0LmdldCgpXTsKKyAgICAgICAgTlNTdHJpbmcq
IGNhY2hlUGFydGl0aW9uID0gW05TVVJMUHJvdG9jb2wgcHJvcGVydHlGb3JLZXk6KE5TU3RyaW5n
ICopX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVzdDptX25zUmVxdWVzdC5nZXQoKV07
CiAgICAgICAgIGlmIChjYWNoZVBhcnRpdGlvbikKICAgICAgICAgICAgIG1fY2FjaGVQYXJ0aXRp
b24gPSBjYWNoZVBhcnRpdGlvbjsKICAgICB9CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBTdHJpbmcgcGFydGl0
aW9uID0gY2FjaGVQYXJ0aXRpb24oKTsKICAgICBpZiAoIXBhcnRpdGlvbi5pc051bGwoKSAmJiAh
cGFydGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBOU1N0cmluZyAqcGFydGl0aW9uVmFsdWUg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6cGFydGl0aW9uLnV0ZjgoKS5kYXRhKCld
OwotICAgICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25WYWx1ZSBmb3JL
ZXk6KE5TU3RyaW5nICopd2tDYWNoZVBhcnRpdGlvbktleSgpIGluUmVxdWVzdDpuc1JlcXVlc3Rd
OworICAgICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25WYWx1ZSBmb3JL
ZXk6KE5TU3RyaW5nICopX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVzdDpuc1JlcXVl
c3RdOwogICAgIH0KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMjAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggZmQxMjRjYmM0NjRmYWRiYmMwMDFl
NzFkZGNhMjJlNzFiYzhlM2JjZi4uN2I2Njc1MTYwMWJhYjRlYzA1NWZkMTIwYjExYzEzMzRlYTM5
ZDQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVu
dENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzTWFjLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Byb3Rl
Y3Rpb25TcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaD4KIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW1wb3J0IDxDRk5ldHdvcmsv
Q0ZVUkxSZXF1ZXN0Lmg+CkBAIC01Nyw2ICs1OCwxMzYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBJUEMgewogCitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKENGSW5kZXggdmVyc2lv
biwgQ0ZUeXBlUmVmKiBvYmplY3RzLCBDRkluZGV4IG9iamVjdENvdW50LCBDRkRpY3Rpb25hcnlS
ZWYgcHJvdG9jb2xQcm9wZXJ0aWVzLCBDRk51bWJlclJlZiBleHBlY3RlZENvbnRlbnRMZW5ndGgs
IENGU3RyaW5nUmVmIG1pbWVUeXBlLCBDRlR5cGVSZWYgdG9rZW5OdWxsKQoreworICAgIGF1dG8g
YXJjaGl2ZUxpc3RBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworCisgICAgZm9yIChDRklu
ZGV4IGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7ICsraSkgeworICAgICAgICBDRlR5cGVSZWYgb2Jq
ZWN0ID0gb2JqZWN0c1tpXTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGFyY2hpdmVMaXN0QXJyYXkuZ2V0KCksIG9iamVjdCk7CisgICAgICAg
ICAgICBDRlJlbGVhc2Uob2JqZWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IEFwcGVuZCBvdXIgdG9rZW4gbnVsbCByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgIENGQXJy
YXlBcHBlbmRWYWx1ZShhcmNoaXZlTGlzdEFycmF5LmdldCgpLCB0b2tlbk51bGwpOworICAgICAg
ICB9CisgICAgfQorCisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIGF1
dG8gdmVyc2lvbk51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsICZ2ZXJzaW9uKSk7CisgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInZlcnNpb24iKSwgdmVyc2lvbk51bWJl
ci5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZT
VFIoImFyY2hpdmVMaXN0IiksIGFyY2hpdmVMaXN0QXJyYXkuZ2V0KCkpOworCisgICAgaWYgKHBy
b3RvY29sUHJvcGVydGllcykgeworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShkaWN0aW9u
YXJ5LmdldCgpLCBDRlNUUigicHJvdG9jb2xQcm9wZXJ0aWVzIiksIHByb3RvY29sUHJvcGVydGll
cyk7CisgICAgICAgIENGUmVsZWFzZShwcm90b2NvbFByb3BlcnRpZXMpOworICAgIH0KKworICAg
IGlmIChleHBlY3RlZENvbnRlbnRMZW5ndGgpIHsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoImV4cGVjdGVkQ29udGVudExlbmd0aCIpLCBleHBl
Y3RlZENvbnRlbnRMZW5ndGgpOworICAgICAgICBDRlJlbGVhc2UoZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKTsKKyAgICB9CisKKyAgICBpZiAobWltZVR5cGUpIHsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIm1pbWVUeXBlIiksIG1pbWVUeXBlKTsK
KyAgICAgICAgQ0ZSZWxlYXNlKG1pbWVUeXBlKTsKKyAgICB9CisKKyAgICBDRkFsbG9jYXRvckRl
YWxsb2NhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb2JqZWN0cyk7CisKKyAgICByZXR1cm4gZGlj
dGlvbmFyeTsKK30KKworc3RhdGljIENGVHlwZVJlZiBkaWN0aW9uYXJ5VmFsdWVPZlR5cGUoQ0ZE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIENGU3RyaW5nUmVmIGtleSwgQ0ZUeXBlSUQgdHlwZSkK
K3sKKyAgICBDRlR5cGVSZWYgdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5
LCBrZXkpOworICAgIGlmICh2YWx1ZSAmJiBDRkdldFR5cGVJRCh2YWx1ZSkgPT0gdHlwZSkKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgYm9v
bCBjcmVhdGVBcmNoaXZlTGlzdChDRkRpY3Rpb25hcnlSZWYgcmVwcmVzZW50YXRpb24sIENGVHlw
ZVJlZiB0b2tlbk51bGwsIENGSW5kZXgqIHZlcnNpb24sIENGVHlwZVJlZioqIG9iamVjdHMsIENG
SW5kZXgqIG9iamVjdENvdW50LCBDRkRpY3Rpb25hcnlSZWYqIHByb3RvY29sUHJvcGVydGllcywg
Q0ZOdW1iZXJSZWYqIGV4cGVjdGVkQ29udGVudExlbmd0aCwgQ0ZTdHJpbmdSZWYqIG1pbWVUeXBl
KQoreworICAgIENGTnVtYmVyUmVmIHZlcnNpb25OdW1iZXIgPSAoQ0ZOdW1iZXJSZWYpZGljdGlv
bmFyeVZhbHVlT2ZUeXBlKHJlcHJlc2VudGF0aW9uLCBDRlNUUigidmVyc2lvbiIpLCBDRk51bWJl
ckdldFR5cGVJRCgpKTsKKyAgICBpZiAoIXZlcnNpb25OdW1iZXIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZSh2ZXJzaW9uTnVtYmVyLCBrQ0ZOdW1i
ZXJDRkluZGV4VHlwZSwgdmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENG
QXJyYXlSZWYgYXJjaGl2ZUxpc3RBcnJheSA9IChDRkFycmF5UmVmKWRpY3Rpb25hcnlWYWx1ZU9m
VHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoImFyY2hpdmVMaXN0IiksIENGQXJyYXlHZXRUeXBl
SUQoKSk7CisgICAgaWYgKCFhcmNoaXZlTGlzdEFycmF5KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAqb2JqZWN0Q291bnQgPSBDRkFycmF5R2V0Q291bnQoYXJjaGl2ZUxpc3RBcnJheSk7
CisgICAgKm9iamVjdHMgPSAoQ0ZUeXBlUmVmKiltYWxsb2Moc2l6ZW9mKENGVHlwZVJlZikgKiAq
b2JqZWN0Q291bnQpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8ICpvYmplY3RDb3VudDsg
KytpKSB7CisgICAgICAgIENGVHlwZVJlZiBvYmplY3QgPSBDRkFycmF5R2V0VmFsdWVBdEluZGV4
KGFyY2hpdmVMaXN0QXJyYXksIGkpOworICAgICAgICBpZiAob2JqZWN0ID09IHRva2VuTnVsbCkK
KyAgICAgICAgICAgICgqb2JqZWN0cylbaV0gPSBudWxscHRyOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICAoKm9iamVjdHMpW2ldID0gb2JqZWN0OworICAgIH0KKworICAgIGlmIChwcm90b2Nv
bFByb3BlcnRpZXMpCisgICAgICAgICpwcm90b2NvbFByb3BlcnRpZXMgPSAoQ0ZEaWN0aW9uYXJ5
UmVmKWRpY3Rpb25hcnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoInByb3RvY29s
UHJvcGVydGllcyIpLCBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisKKyAgICBpZiAoZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKQorICAgICAgICAqZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gKENGTnVt
YmVyUmVmKWRpY3Rpb25hcnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoImV4cGVj
dGVkQ29udGVudExlbmd0aCIpLCBDRk51bWJlckdldFR5cGVJRCgpKTsKKworICAgIGlmIChtaW1l
VHlwZSkKKyAgICAgICAgKm1pbWVUeXBlID0gKENGU3RyaW5nUmVmKWRpY3Rpb25hcnlWYWx1ZU9m
VHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoIm1pbWVUeXBlIiksIENGU3RyaW5nR2V0VHlwZUlE
KCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihDRlVSTFJlcXVlc3RSZWYg
Y2ZSZXF1ZXN0LCBDRlR5cGVSZWYgdG9rZW5OdWxsKQoreworICAgIENGSW5kZXggdmVyc2lvbjsK
KyAgICBDRlR5cGVSZWYqIG9iamVjdHM7CisgICAgQ0ZJbmRleCBvYmplY3RDb3VudDsKKyAgICBD
RkRpY3Rpb25hcnlSZWYgcHJvdG9jb2xQcm9wZXJ0aWVzOworCisgICAgLy8gRklYTUUgKDEyODg5
NTE4KTogRG8gbm90IHNlcmlhbGl6ZSBIVFRQIG1lc3NhZ2UgYm9keS4KKyAgICAvLyAxLiBJdCBj
YW4gYmUgbGFyZ2UgYW5kIHRodXMgY29zdGx5IHRvIHNlbmQgYWNyb3NzLgorICAgIC8vIDIuIEl0
IGlzIG1pc2xlYWRpbmcgdG8gcHJvdmlkZSBhIGJvZHkgd2l0aCBzb21lIHJlcXVlc3RzLCB3aGls
ZSBvdGhlcnMgdXNlIGJvZHkgc3RyZWFtcywgd2hpY2ggY2Fubm90IGJlIHNlcmlhbGl6ZWQgYXQg
YWxsLgorCisgICAgX0NGVVJMUmVxdWVzdENyZWF0ZUFyY2hpdmVMaXN0KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGNmUmVxdWVzdCwgJnZlcnNpb24sICZvYmplY3RzLCAmb2JqZWN0Q291bnQsICZwcm90
b2NvbFByb3BlcnRpZXMpOworCisgICAgLy8gVGhpcyB3aWxsIGRlYWxsb2NhdGUgdGhlIHBhc3Nl
ZCBpbiBhcmd1bWVudHMuCisgICAgcmV0dXJuIGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0
aW9uKHZlcnNpb24sIG9iamVjdHMsIG9iamVjdENvdW50LCBwcm90b2NvbFByb3BlcnRpZXMsIG51
bGxwdHIsIG51bGxwdHIsIHRva2VuTnVsbCk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxS
ZXF1ZXN0UmVmPiBjcmVhdGVDRlVSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRp
b24oQ0ZEaWN0aW9uYXJ5UmVmIHJlcHJlc2VudGF0aW9uLCBDRlR5cGVSZWYgdG9rZW5OdWxsKQor
eworICAgIENGSW5kZXggdmVyc2lvbjsKKyAgICBDRlR5cGVSZWYqIG9iamVjdHM7CisgICAgQ0ZJ
bmRleCBvYmplY3RDb3VudDsKKyAgICBDRkRpY3Rpb25hcnlSZWYgcHJvdG9jb2xQcm9wZXJ0aWVz
OworCisgICAgaWYgKCFjcmVhdGVBcmNoaXZlTGlzdChyZXByZXNlbnRhdGlvbiwgdG9rZW5OdWxs
LCAmdmVyc2lvbiwgJm9iamVjdHMsICZvYmplY3RDb3VudCwgJnByb3RvY29sUHJvcGVydGllcywg
bnVsbHB0ciwgbnVsbHB0cikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBj
ZlJlcXVlc3QgPSBhZG9wdENGKF9DRlVSTFJlcXVlc3RDcmVhdGVGcm9tQXJjaGl2ZUxpc3Qoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgdmVyc2lvbiwgb2JqZWN0cywgb2JqZWN0Q291bnQsIHByb3RvY29s
UHJvcGVydGllcykpOworICAgIGZyZWUob2JqZWN0cyk7CisgICAgcmV0dXJuIFdURk1vdmUoY2ZS
ZXF1ZXN0KTsKK30KKworc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZVNl
cmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgQ0ZUeXBlUmVm
IHRva2VuTnVsbCkKK3sKKyAgICByZXR1cm4gY3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRp
b24oW3JlcXVlc3QgX0NGVVJMUmVxdWVzdF0sIHRva2VuTnVsbCk7Cit9CisKK3N0YXRpYyBSZXRh
aW5QdHI8TlNVUkxSZXF1ZXN0PiBjcmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVw
cmVzZW50YXRpb24oQ0ZEaWN0aW9uYXJ5UmVmIHJlcHJlc2VudGF0aW9uLCBDRlR5cGVSZWYgdG9r
ZW5OdWxsKQoreworICAgIGF1dG8gY2ZSZXF1ZXN0ID0gY3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNl
cmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcHJlc2VudGF0aW9uLCB0b2tlbk51bGwpOworICAg
IGlmICghY2ZSZXF1ZXN0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6Y2ZSZXF1
ZXN0LmdldCgpXSk7Cit9CisKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdm9pZCBBcmd1bWVu
dENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKQEAgLTc5LDcg
KzIxMCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0
Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0
SFRUUFJlcXVlc3RCb2R5U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwpOwogICAgIH0KIAotICAg
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLQ0ZVUkxS
ZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXpl
LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOworICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IGRpY3Rpb25hcnkgPSBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihy
ZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKICAgICBJ
UEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKIAogICAgIC8vIFRoZSBmYWxs
YmFjayBhcnJheSBpcyBwYXJ0IG9mIENGVVJMUmVxdWVzdCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVk
IGJ5IFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24uCkBAIC0x
MDYsNyArMjM3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29k
ZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgICAgICBbKE5TTXV0YWJs
ZVVSTFJlcXVlc3QgKilyZXF1ZXN0VG9TZXJpYWxpemUgc2V0SFRUUEJvZHlTdHJlYW06bmlsXTsK
ICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRv
cHRDRihXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVl
c3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gY3JlYXRlU2VyaWFsaXphYmxlUmVw
cmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVS
ZWYoKSk7CiAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7CiAKICAg
ICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBOU1VSTFJlcXVlc3QsIGJ1dCBpdCBp
cyBub3QgZW5jb2RlZCBieSBXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uLgpAQCAtMTMyLDEzICsyNjMsMTMgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXIKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKLSAgICBSZXRh
aW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjZlVSTFJlcXVlc3QgPSBhZG9wdENGKFdLQ3JlYXRlQ0ZV
UkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCks
IElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJl
Zj4gY2ZVUkxSZXF1ZXN0ID0gY3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJl
c2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKICAg
ICBpZiAoIWNmVVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVzb3Vy
Y2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGNmVVJMUmVxdWVzdC5nZXQoKSk7CiAjZWxzZQot
ICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IFdLTlNVUkxSZXF1ZXN0
RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9r
ZW5OdWxsVHlwZVJlZigpKTsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVl
c3QgPSBjcmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGlj
dGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlmICghbnNVUkxS
ZXF1ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDA0NWI5YjJkNDgy
ZTQyMjc5Yzk2ZTlhMTkzYzRlZDdkMDg2Yjc5YzEuLmJkNTdhN2NiN2Y5NjU3ZWY1MWJjNTExZGVh
NGNlMTU3ZWE4NzhlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtNDU1LDcgKzQ1NSw3IEBAIFN0cmluZyBXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpCiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlU3RvcmFn
ZVBhdGggPSBhZG9wdE5TKChOU1N0cmluZyAqKVdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9y
eSgpKTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlU3RvcmFnZVBhdGggPSBhZG9wdE5T
KChOU1N0cmluZyAqKV9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNoZSBz
aGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2FjaGVdKSk7CiAgICAgaWYgKCFjYWNoZVN0b3JhZ2VQYXRo
KQogICAgICAgICBjYWNoZVN0b3JhZ2VQYXRoID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0NhY2hlU3Rv
cmFnZSI7CiAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJQcm9j
ZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsK
LSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlUGF0aCA9IGFkb3B0TlMoKE5TU3RyaW5nICop
V0tDb3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gY2FjaGVQYXRoID0gYWRvcHROUygoTlNTdHJpbmcgKilfQ0ZVUkxDYWNoZUNvcHlDYWNoZURp
cmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwogICAg
IGlmICghY2FjaGVQYXRoKQogICAgICAgICBjYWNoZVBhdGggPSBAIn4vTGlicmFyeS9DYWNoZXMv
Y29tLmFwcGxlLldlYktpdC5XZWJQcm9jZXNzIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVy
ZmFjZS5tbQppbmRleCBiZGE1ZDczZGZjMTIyZjNlMDIyM2FhYWU1NTI4NGQ0YjM5ZTU3M2NlLi5h
NjFiODQxNDUzMDM0ZmI5YzljYWI4NGJlZjZlYWFkMTAxNGJlMDJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzYsMTggKzM2LDEyIEBAIHZvaWQgSW5pdFdlYkNvcmVT
eXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IGluaXRPbmNl
OwogICAgIAogICAgIGRpc3BhdGNoX29uY2UoJmluaXRPbmNlLCBeewotICAgICAgICBJTklUKENv
cHlDT05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5J
VChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKICAgICAgICAgSU5JVChEcmF3TWVkaWFTbGlkZXJUcmFj
ayk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChIaXRUZXN0
TWVkaWFVSVBhcnQpOwogICAgICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFydCk7Ci0jZW5kaWYK
LSAgICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKLSAg
ICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotCi0jaWYgIVBMQVRGT1JNKElP
UykKICAgICAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJk
KTsKICAgICAgICAgSU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwog
ICAgICAgICBJTklUKEN1cnNvcik7CkBAIC01OCwxMiArNTIsNiBAQCB2b2lkIEluaXRXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoTlNSZWJvdW5kRGVsdGFGb3JFbGFz
dGljRGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQotICAg
ICAgICBJTklUKElzUHVibGljU3VmZml4KTsKLSNlbmRpZgotCi0gICAgICAgIElOSVQoQ2FjaGVQ
YXJ0aXRpb25LZXkpOwotCiAgICAgICAgIElOSVQoRXhlcm5hbERldmljZVR5cGVGb3JQbGF5ZXIp
OwogICAgICAgICBJTklUKEV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3Rl
bUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAxNzQ2NTg2YjI0MmY1MmUwN2E5OWZlOTE1YWE2YjRm
NjJhM2JjNWQ0Li4wNjIwMmNlZWRhY2RiNzAxOTdjYmUxMGI4M2M2ZWY3NTI1MmRkMDY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00Miw3ICs0Miw2IEBAIHZvaWQgSW5pdFdlYkNvcmVT
eXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBpZiAoZGlkSW5pdCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQTEFURk9STShJT1Mp
CiAgICAgSU5JVChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKICAgICBJTklUKERyYXdNZWRpYVVJUGFy
dCk7CkBAIC01MCw4ICs0OSw2IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9p
ZCkKICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAgICAgSU5JVChNZWFzdXJlTWVkaWFV
SVBhcnQpOwogI2VuZGlmCi0gICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9y
U3RyZWFtKTsKLSAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7CiAKICNpZiAhUExB
VEZPUk0oSU9TKQogICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVv
cGFyZCk7CkBAIC02NywxMiArNjQsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KHZvaWQpCiAgICAgSU5JVChOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSk7CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi0gICAgSU5JVChJc1B1YmxpY1N1ZmZp
eCk7Ci0jZW5kaWYKLQotICAgIElOSVQoQ2FjaGVQYXJ0aXRpb25LZXkpOwotCiAgICAgSU5JVChF
eGVybmFsRGV2aWNlVHlwZUZvclBsYXllcik7CiAgICAgSU5JVChFeGVybmFsRGV2aWNlRGlzcGxh
eU5hbWVGb3JQbGF5ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KaW5kZXggYzcyMzNiZTEzMzJkYjhiNWZhZTc3ODdjOWE2OGU2MTNmNGNhM2JmOS4uYjVl
NzI2M2YzZGYyY2RmMjA5MWE4MzI4YmJiZWY5NzQ0ZTUyYzY4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODU3Myw3ICs4NTczLDcgQEAgKyAodm9p
ZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsCiAgICAgaWYgKHNfZGlk
U2V0Q2FjaGVNb2RlbCAmJiBjYWNoZU1vZGVsID09IHNfY2FjaGVNb2RlbCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTlNTdHJpbmcgKm5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBDRkJyaWRnaW5nUmVs
ZWFzZShXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgTlNTdHJpbmcgKm5z
dXJsQ2FjaGVEaXJlY3RvcnkgPSBDRkJyaWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNo
ZURpcmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwog
ICAgIGlmICghbnN1cmxDYWNoZURpcmVjdG9yeSkKICAgICAgICAgbnN1cmxDYWNoZURpcmVjdG9y
eSA9IE5TSG9tZURpcmVjdG9yeSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320495</attachid>
            <date>2017-09-11 15:59:38 -0700</date>
            <delta_ts>2017-09-12 14:59:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176729-20170911155938.patch</filename>
            <type>text/plain</type>
            <size>33962</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjNmM4ODQ2MTYwNmMx
MTlkNTJjNTNjNmZlNjI4MWU5YzA3MTRkNC4uYjRhOTAyYmViY2FjYmFjMWE4ZTU1N2I0MTFlZmUw
NDVkYTJlMTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0
d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUHVibGlj
U3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNQdWJsaWNTdWZmaXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvcHlDT05ORUNUUHJveHlSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBs
YXRmb3JtUmVxdWVzdCk6CisKIDIwMTctMDktMTEgIFlvc2hpYWtpIEppdHN1a2F3YSAgPFlvc2hp
YWtpLkppdHN1a2F3YUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEZpeCB0aGUgd2lu
Y2Fpcm8gYnVpbGQgYWZ0ZXIgcjIyMTgzOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZmJhMTQyYTA5
MjU3N2NiNTVlMGEzZmY2MzE1NGM1NTZjMmU4Y2U1MS4uZjE0MjY1MWQ2ZTAwYTU0OWFkYTFkYTFl
NzIwMWE0ZjIwZjg5MDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIw
MTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCisgICAgICAgIFtDRl0g
VXBzdHJlYW0gQ0ZOZXR3b3JrLXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKKzIwMTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmVmMzQzOTQwM2UzZTRj
OGE0MWM3NTY4NWQ1NmVlNTdiYmVjZjdlNy4uYTJlZDQwMGFiZjIyNmQ4ODZkZjU3ZDliYzIxZjIx
NzI1YjczNjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OmNyZWF0ZVNlcmlhbGl6YWJsZVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKElQQzo6ZGljdGlvbmFyeVZhbHVlT2ZUeXBlKToKKyAg
ICAgICAgKElQQzo6Y3JlYXRlQXJjaGl2ZUxpc3QpOgorICAgICAgICAoSVBDOjpjcmVhdGVDRlVS
TFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSVBDOjpj
cmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKworMjAxNy0wOS0xMSAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0g
UVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg1NmExYWVlOTgxYTlkNmYwNDMxZDFmNGM1YWYwY2E5YWQy
YTJjNzAuLjQyZDE1YWEwYWM5MTVkYzQ0N2JlM2RhNmU5YzM1YjYzZGM2OGE1MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfc2V0
Q2FjaGVNb2RlbDpdKToKKworMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaAppbmRleCAwYWU4MGM3ODdiOGU4MWI5YTg0ZjAxYjkxNmI4YmY3NGE5MzJkZjNj
Li45NjE0NDAyMDA4YmZlNGFhMjU0OTZkNmJkNDdmOWQwMDViYzIzNjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMTk0LDYgKzE5NCw3IEBA
IHZvaWQgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9j
ayhDRkNhY2hlZFVSTFJlc3BvbnNlUmVmCiBleHRlcm4gQ0ZTdHJpbmdSZWYgY29uc3Qga0NGSFRU
UENvb2tpZUxvY2FsRmlsZURvbWFpbjsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQ
VmVyc2lvbjFfMTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxSZXF1ZXN0QWxsb3dB
bGxQT1NUQ2FjaGluZzsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGVVJMQ2FjaGVQYXJ0
aXRpb25LZXk7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVSTENvbm5lY3Rpb25Qcm9w
ZXJ0eVNob3VsZFNuaWZmOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZVUkxTdG9yYWdl
U2Vzc2lvbklzUHJpdmF0ZTsKIApAQCAtMjM2LDkgKzIzNywyMiBAQCBDRkFycmF5UmVmIENGSFRU
UENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsKIHZvaWQg
Q0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgQ0ZB
cnJheVJlZiBjb29raWVzLCBDRlVSTFJlZiwgQ0ZVUkxSZWYgbWFpbkRvY3VtZW50VVJMKTsKIHZv
aWQgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUNvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVm
LCBDRkhUVFBDb29raWVSZWYpOwogQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlQ29weShDRkFsbG9jYXRvclJlZiwgQ0ZVUkxSZXF1ZXN0UmVmKTsKK0NGU3Ry
aW5nUmVmIF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KENGVVJMQ2FjaGVSZWYpOworQm9v
bGVhbiBfQ0ZIb3N0SXNEb21haW5Ub3BMZXZlbChDRlN0cmluZ1JlZiBkb21haW4pOwordm9pZCBf
Q0ZVUkxSZXF1ZXN0Q3JlYXRlQXJjaGl2ZUxpc3QoQ0ZBbGxvY2F0b3JSZWYsIENGVVJMUmVxdWVz
dFJlZiwgQ0ZJbmRleCogdmVyc2lvbiwgQ0ZUeXBlUmVmKiogb2JqZWN0cywgQ0ZJbmRleCogb2Jq
ZWN0Q291bnQsIENGRGljdGlvbmFyeVJlZiogcHJvdG9jb2xQcm9wZXJ0aWVzKTsKK0NGTXV0YWJs
ZVVSTFJlcXVlc3RSZWYgX0NGVVJMUmVxdWVzdENyZWF0ZUZyb21BcmNoaXZlTGlzdChDRkFsbG9j
YXRvclJlZiwgQ0ZJbmRleCB2ZXJzaW9uLCBDRlR5cGVSZWYqIG9iamVjdHMsIENGSW5kZXggb2Jq
ZWN0Q291bnQsIENGRGljdGlvbmFyeVJlZiBwcm90b2NvbFByb3BlcnRpZXMpOwogCiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKFdJTikKIAorZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVBy
b3BlcnR5Q09OTkVDVFByb3h5OworZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVhbVBy
b3BlcnR5Q09OTkVDVFByb3h5SG9zdDsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJl
YW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eVBvcnQ7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NG
U3RyZWFtUHJvcGVydHlDT05ORUNUQWRkaXRpb25hbEhlYWRlcnM7CitleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlDT05ORUNUUmVzcG9uc2U7CisKK3ZvaWQgX0NGSFRU
UE1lc3NhZ2VTZXRSZXNwb25zZVVSTChDRkhUVFBNZXNzYWdlUmVmLCBDRlVSTFJlZik7Cit2b2lk
IF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VQcm94eVVSTChDRkhUVFBNZXNzYWdlUmVmLCBDRlVS
TFJlZik7CisKIFdURl9FWFRFUk5fQ19FTkQKIAogI2lmIGRlZmluZWQoX19PQkpDX18pICYmICFV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCBkNzMzOThlYzJiNDNk
MWUzN2RiZmE4ZWJlN2VhNDAyYzYxZjI4ZjRmLi4xYjk2OWVjZDY4OWRkNjJiNjJmYzM0ZDViYThl
OTllMWM4YmE4M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5tbQpAQCAtMjksMTAgKzI5LDcgQEAKIFdFQkNP
UkVfRVhQT1JUIHZvaWQgKCp3a0NsZWFyR2x5cGhWZWN0b3IpKHZvaWQqIGdseXBocyk7CiBXRUJD
T1JFX0VYUE9SVCBPU1N0YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCogc3R5bGVH
cm91cCwgY29uc3QgVW5pQ2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGdseXBo
cyk7CiBXRUJDT1JFX0VYUE9SVCBpZCAoKndrQ3JlYXRlTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQ
cm94eSkodm9pZCk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JT
dHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJl
ZiBwcm94eVBvcnQpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0
aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1
dGhvcml6YXRpb25TdHJpbmcpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q29va2llU3Rv
cmFnZVByaXZhdGVCcm93c2luZ0VuYWJsZWQpKEJPT0wpOwotV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQ
TWVzc2FnZVJlZiAoKndrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYs
IENGVVJMUmVmIHJlc3BvbnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVm
IHByb3h5UG9ydCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRMYXllckNvbnRlbnRzU2Nh
bGUpKENBTGF5ZXIgKik7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJh
bmNlSGFzVXNlclByZWZlcmVuY2VzKSh2b2lkKTsKQEAgLTQ4LDEyICs0NSw2IEBAIFdFQkNPUkVf
RVhQT1JUIGJvb2woKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUp
KENHRmxvYXQqKTsKIFdFQkNPUkVfRVhQT1JUIGludCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRl
eHRFZGdlU3R5bGUpKHZvaWQpOwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYoKndrQ2FwdGlv
bkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24pKHZvaWQpOwogCi0jaWYg
RU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0lzUHVi
bGljU3VmZml4KShOU1N0cmluZyAqaG9zdCk7Ci0jZW5kaWYKLQotV0VCQ09SRV9FWFBPUlQgQ0ZT
dHJpbmdSZWYgKCp3a0NhY2hlUGFydGl0aW9uS2V5KSh2b2lkKTsKLQogV0VCQ09SRV9FWFBPUlQg
aW50ICgqd2tFeGVybmFsRGV2aWNlVHlwZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiBXRUJDT1JF
X0VYUE9SVCBOU1N0cmluZyAqKCp3a0V4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllciko
QVZQbGF5ZXIgKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
dWJsaWNTdWZmaXhNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3Vm
Zml4TWFjLm1tCmluZGV4IDkzMGEzNDc1MzBmNDdlODljMTM4Mjk5YTMzZDJmODY5ZDEwZWY1MDYu
LjNmNDMxNzIzOGVkZTMzNzZkZWFiNmNhMDljYThhYWFiZjg0MTgwZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpAQCAtMjYsMTEgKzI2LDEx
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlB1YmxpY1N1ZmZpeC5oIgogCi0jaW1w
b3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRy
YXMuaCIKLQogI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAKKyNpbXBvcnQgIldlYkNv
cmVOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKwog
QGludGVyZmFjZSBOU1N0cmluZyAoV2ViQ29yZU5TVVJMRXh0cmFzKQogLSAoQk9PTClfd2ViX2xv
b2tzTGlrZUlQQWRkcmVzczsKIEBlbmQKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogYm9vbCBpc1B1YmxpY1N1ZmZpeChjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKICAgICBO
U1N0cmluZyAqaG9zdCA9IGRlY29kZUhvc3ROYW1lKGRvbWFpbik7Ci0gICAgcmV0dXJuIGhvc3Qg
JiYgd2tJc1B1YmxpY1N1ZmZpeChob3N0KTsKKyAgICByZXR1cm4gaG9zdCAmJiBfQ0ZIb3N0SXNE
b21haW5Ub3BMZXZlbCgoQ0ZTdHJpbmdSZWYpaG9zdCk7CiB9CiAKIFN0cmluZyB0b3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggZjY3
NTk1MDlhMTFmY2UzMzQxM2ZlNjkwMzNhNDY4NTZmNTk3NDU1OC4uOWVjYzM0MWM1MTYyMzExNDM5
YzQyZTdiZGZhMjA3ZGU2N2QwNDUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMzMsMTIgKzEzMyw2IEBAIGV4
dGVybiBCT09MICgqd2tIaXRUZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRz
LCBDR1BvaW50IHBvaW50KTsKIGV4dGVybiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGlu
dCBwYXJ0LCBDR1JlY3QgKmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiAKIGV4dGVybiB2
b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7Ci0j
ZW5kaWYKLWV4dGVybiB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0
cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwot
ZXh0ZXJuIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENG
UmVhZFN0cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKLWV4
dGVybiBDRkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVh
ZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwg
Q0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKLQotI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9p
ZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CiAjZW5kaWYKIApAQCAtMTY3
LDEyICsxNjEsNiBAQCBleHRlcm4gQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5k
RGVsdGEpKENHRmxvYXQgZGVsdGEpOwogZXh0ZXJuIENHRmxvYXQgKCp3a05TUmVib3VuZERlbHRh
Rm9yRWxhc3RpY0RlbHRhKShDR0Zsb2F0IGRlbHRhKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBV
QkxJQ19TVUZGSVhfTElTVCkKLWV4dGVybiBib29sICgqd2tJc1B1YmxpY1N1ZmZpeCkoTlNTdHJp
bmcgKmhvc3QpOwotI2VuZGlmCi0KLWV4dGVybiBDRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRp
b25LZXkpKHZvaWQpOwotCiB0eXBlZGVmIGVudW0gewogICAgIHdrRXh0ZXJuYWxQbGF5YmFja1R5
cGVOb25lLAogICAgIHdrRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRl
eCAyZWFiZDRmMTRmMzkzMzZlMzM0MGNlOGVkZWUzN2U0ODJkZDY4MDJlLi4zNTEwZDk5YmNmNTdm
NjVjMDE4OTY2OTU0MjY1ZTJiODliYWVlYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDAsMTAgKzQwLDYg
QEAgTlNUaW1lSW50ZXJ2YWwgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlv
bikoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UKIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0
UmV2YWxpZGF0ZSkoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpOwogdm9pZCAoKndrUG9wdXBNZW51
KShOU01lbnUqLCBOU1BvaW50IGxvY2F0aW9uLCBmbG9hdCB3aWR0aCwgTlNWaWV3KiwgaW50IHNl
bGVjdGVkSXRlbSwgTlNGb250KiwgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSwgYm9vbCB1c2Vz
Q3VzdG9tQXBwZWFyYW5jZSk7CiAKLXZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSko
Q0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5
UG9ydCk7Ci12b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShD
RlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7Ci1D
RkhUVFBNZXNzYWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVh
bVJlZiwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1i
ZXJSZWYgcHJveHlQb3J0KTsKLQogdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3Jl
SW5kZXg7CiAKIGJvb2wgKCp3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3Bh
cmQpKHZvaWQpOwpAQCAtNjIsMTIgKzU4LDYgQEAgQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFG
b3JSZWJvdW5kRGVsdGEpKENHRmxvYXQgZGVsdGEpOwogQ0dGbG9hdCAoKndrTlNSZWJvdW5kRGVs
dGFGb3JFbGFzdGljRGVsdGEpKENHRmxvYXQgZGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
UFVCTElDX1NVRkZJWF9MSVNUKQotYm9vbCAoKndrSXNQdWJsaWNTdWZmaXgpKE5TU3RyaW5nICpo
b3N0KTsKLSNlbmRpZgotCi1DRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRpb25LZXkpKHZvaWQp
OwotCiBpbnQgKCp3a0V4ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKShBVlBsYXllciAqKTsKIE5T
U3RyaW5nICooKndrRXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKShBVlBsYXllciAq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAppbmRleCAwYjU3YWE0MzAyNTcwYzYxNDg2ODljMGUw
OTYyNWM5MGQxYzhhNjIzLi45ZTc1ZWEzMjgyNDEyZDE2YjY0MTIxOTI5YmY3YTE2ZDc0YzdiYzgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgaWYgKCFwYXJ0aXRpb24u
aXNOdWxsKCkgJiYgIXBhcnRpdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgQ1N0cmluZyB1dGY4
U3RyaW5nID0gcGFydGl0aW9uLnV0ZjgoKTsKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwYXJ0aXRpb25WYWx1ZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmlu
Zy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSkpOwotICAgICAgICBfQ0ZV
UkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIHdrQ2FjaGVQYXJ0aXRpb25L
ZXkoKSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOworICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJv
dG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIGtDRlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRp
b25WYWx1ZS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgIH0KIAogI2lm
IEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
YWNoZVBhcnRpdGlvbiA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KF9DRlVSTFJl
cXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktleShtX2NmUmVxdWVzdC5nZXQoKSwgd2tDYWNo
ZVBhcnRpdGlvbktleSgpKSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXJ0
aXRpb24gPSBhZG9wdENGKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihfQ0ZVUkxSZXF1ZXN0Q29w
eVByb3RvY29sUHJvcGVydHlGb3JLZXkobV9jZlJlcXVlc3QuZ2V0KCksIGtDRlVSTENhY2hlUGFy
dGl0aW9uS2V5KSkpOwogICAgIGlmIChjYWNoZVBhcnRpdGlvbikKICAgICAgICAgbV9jYWNoZVBh
cnRpdGlvbiA9IGNhY2hlUGFydGl0aW9uLmdldCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxDRk5ldC5jcHAKaW5kZXggMDk5OGExZTg1ZmYwYzYzMzlhMmVlOGFhMzY5NDk1Mzgw
NDgwYTJiOS4uNjcxOWE0ZmUxODBlZTA5NjAyZDBkNTIxMTdiZmNlZTRjYzhhNjVjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcApAQCAtMzAyLDYgKzMwMiwxMyBAQCB2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNob29zZVByb3h5RnJvbUFycmF5KENGQXJyYXlSZWYg
cHJveHlBcnJheSkKICAgICBtX2Nvbm5lY3Rpb25UeXBlID0gRGlyZWN0OwogfQogCitzdGF0aWMg
dm9pZCBzZXRDT05ORUNUUHJveHlGb3JTdHJlYW0oQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZT
dHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpCit7CisgICAgY29uc3Qg
dm9pZCogcHJveHlLZXlzW10gPSB7IGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVFByb3h5SG9zdCwg
a0NGU3RyZWFtUHJvcGVydHlDT05ORUNUUHJveHlQb3J0IH07CisgICAgY29uc3Qgdm9pZCogcHJv
eHlWYWx1ZXNbXSA9IHsgcHJveHlIb3N0LCBwcm94eVBvcnQgfTsKKyAgICBhdXRvIGNvbm5lY3RE
aWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcHJveHlLZXlzLCBwcm94eVZhbHVlcywgc2l6ZW9mKHByb3h5S2V5cykgLyBzaXplb2YoKnBy
b3h5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShzdHJlYW0s
IGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVFByb3h5LCBjb25uZWN0RGljdGlvbmFyeS5nZXQoKSk7
Cit9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3RyZWFtcygpCiB7CkBA
IC0zNDcsNyArMzU0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJl
YW1zKCkKICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICBjYXNlIENPTk5FQ1RQcm94eToK
LSAgICAgICAgd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0obV9yZWFkU3RyZWFtLmdldCgpLCBt
X3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkpOworICAgICAgICBzZXRDT05ORUNU
UHJveHlGb3JTdHJlYW0obV9yZWFkU3RyZWFtLmdldCgpLCBtX3Byb3h5SG9zdC5nZXQoKSwgbV9w
cm94eVBvcnQuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTM5NSw2ICs0MDIs
MTkgQEAgc3RhdGljIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lIGF1dGhlbnRp
Y2F0aW9uU2NoZW1lRnJvbUF1dGhlbnRpY2F0aW8KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duOwog
fQorICAgIAorc3RhdGljIHZvaWQgc2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVh
bShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25T
dHJpbmcpCit7CisgICAgYXV0byBvcmlnaW5hbENPTk5FQ1REaWN0aW9uYXJ5ID0gYWRvcHRDRigo
Q0ZEaWN0aW9uYXJ5UmVmKUNGUmVhZFN0cmVhbUNvcHlQcm9wZXJ0eShzdHJlYW0sIGtDRlN0cmVh
bVByb3BlcnR5Q09OTkVDVFByb3h5KSk7CisgICAgYXV0byBjb25uZWN0RGljdGlvbmFyeSA9IGFk
b3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCwgb3JpZ2luYWxDT05ORUNURGljdGlvbmFyeS5nZXQoKSkpOworCisgICAgY29uc3Qgdm9pZCog
aGVhZGVyRmllbGROYW1lc1tdID0geyBDRlNUUigiUHJveHktQXV0aG9yaXphdGlvbiIpIH07Cisg
ICAgY29uc3Qgdm9pZCogaGVhZGVyRmllbGRWYWx1ZXNbXSA9IHsgcHJveHlBdXRob3JpemF0aW9u
U3RyaW5nIH07CisgICAgYXV0byBhZGRpdGlvbmFsSGVhZGVyRmllbGRzID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaGVhZGVyRmllbGROYW1lcywgaGVh
ZGVyRmllbGRWYWx1ZXMsIHNpemVvZihoZWFkZXJGaWVsZE5hbWVzKSAvIHNpemVvZigqaGVhZGVy
RmllbGRWYWx1ZXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjb25u
ZWN0RGljdGlvbmFyeS5nZXQoKSwga0NGU3RyZWFtUHJvcGVydHlDT05ORUNUQWRkaXRpb25hbEhl
YWRlcnMsIGFkZGl0aW9uYWxIZWFkZXJGaWVsZHMuZ2V0KCkpOworICAgIENGUmVhZFN0cmVhbVNl
dFByb3BlcnR5KHN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlDT05ORUNUUHJveHksIGNvbm5lY3RE
aWN0aW9uYXJ5LmdldCgpKTsKK30KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRD
T05ORUNUQ3JlZGVudGlhbHMoQ0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogewpAQCAt
NDM3LDcgKzQ1Nyw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENy
ZWRlbnRpYWxzKENGSFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zCiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBTZXR0aW5nIHRoZSBhdXRob3JpemF0aW9uIHJlc3VsdHMgaW4gYSBuZXcgY29ubmVj
dGlvbiBhdHRlbXB0LgotICAgICAgICB3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JT
dHJlYW0obV9yZWFkU3RyZWFtLmdldCgpLCBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcuZ2V0KCkp
OworICAgICAgICBzZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKG1fcmVhZFN0
cmVhbS5nZXQoKSwgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nLmdldCgpKTsKICAgICAgICAgbV9z
ZW50U3RvcmVkQ3JlZGVudGlhbHMgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NDkyLDYgKzUxMiwyNiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OndyaXRlU3RyZWFt
Q2FsbGJhY2soQ0ZXcml0ZVN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZQogICAgIGhhbmRsZS0+d3Jp
dGVTdHJlYW1DYWxsYmFjayh0eXBlKTsKICNlbmRpZgogfQorICAgIAorc3RhdGljIFJldGFpblB0
cjxDRkhUVFBNZXNzYWdlUmVmPiBjb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UoQ0ZSZWFkU3RyZWFt
UmVmIHN0cmVhbSwgQ0ZVUkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwg
Q0ZOdW1iZXJSZWYgcHJveHlQb3J0KQoreworICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0Q0YoKENG
SFRUUE1lc3NhZ2VSZWYpQ0ZSZWFkU3RyZWFtQ29weVByb3BlcnR5KHN0cmVhbSwga0NGU3RyZWFt
UHJvcGVydHlDT05ORUNUUmVzcG9uc2UpKTsKKyAgICAvLyBDRk5ldHdvcmsgbmVlZHMgVVJMIHRv
IGJlIHNldCBvbiByZXNwb25zZSBpbiBvcmRlciB0byBoYW5kbGUgYXV0aGVudGljYXRpb24gLSBl
dmVuIHRob3VnaCBpdCBkb2Vzbid0IHNlZW0gdG8gbWFrZSBzZW5zZSB0byBwcm92aWRlIHVsdGlt
YXRlIHRhcmdldCBVUkwgd2hlbiBhdXRoZW50aWNhdGluZyB0byBhIHByb3h5LgorICAgIC8vIFRo
aXMgaXMgc2V0IGJ5IENGTmV0d29yayBpbnRlcm5hbGx5IGZvciBub3JtYWwgSFRUUCByZXNwb25z
ZXMsIGJ1dCBub3QgZm9yIHByb3hpZXMuCisgICAgX0NGSFRUUE1lc3NhZ2VTZXRSZXNwb25zZVVS
TChtZXNzYWdlLmdldCgpLCByZXNwb25zZVVSTCk7CisKKyNpZiAhUExBVEZPUk0oSU9TKQorICAg
IC8vIERpdHRvIGZvciBwcm94eSBVUkwuCisgICAgYXV0byBwcm94eVVSTFN0cmluZyA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIs
IENGU1RSKCJodHRwczovLyVAOiVAIiksIHByb3h5SG9zdCwgcHJveHlQb3J0KSk7CisgICAgYXV0
byBwcm94eVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHByb3h5VVJMU3RyaW5nLmdldCgpLCBudWxscHRyKSk7CisgICAgX0NGSFRUUE1lc3Nh
Z2VTZXRSZXNwb25zZVByb3h5VVJMKG1lc3NhZ2UuZ2V0KCksIHByb3h5VVJMLmdldCgpKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHByb3h5SG9zdCk7CisgICAgVU5VU0VEX1BBUkFNKHByb3h5
UG9ydCk7CisjZW5kaWYKKworICAgIHJldHVybiBtZXNzYWdlOworfQogCiB2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBl
KQogewpAQCAtNTA2LDcgKzU0Niw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVh
ZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5cGUpCiAKICAgICAgICAgaWYgKG1f
Y29ubmVjdGluZ1N1YnN0YXRlID09IFdhaXRpbmdGb3JDb25uZWN0KSB7CiAgICAgICAgICAgICBp
ZiAobV9jb25uZWN0aW9uVHlwZSA9PSBDT05ORUNUUHJveHkpIHsKLSAgICAgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gcHJveHlSZXNwb25zZSA9IGFkb3B0Q0Yod2tDb3B5
Q09OTkVDVFByb3h5UmVzcG9uc2UobV9yZWFkU3RyZWFtLmdldCgpLCBtX2h0dHBzVVJMLmdldCgp
LCBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkpKTsKKyAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gcHJveHlSZXNwb25zZSA9IGNvcHlDT05ORUNU
UHJveHlSZXNwb25zZShtX3JlYWRTdHJlYW0uZ2V0KCksIG1faHR0cHNVUkwuZ2V0KCksIG1fcHJv
eHlIb3N0LmdldCgpLCBtX3Byb3h5UG9ydC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFw
cm94eVJlc3BvbnNlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTU4OCw3ICs2
MjgsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OndyaXRlU3RyZWFtQ2FsbGJhY2so
Q0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkKIAogICAgICAgICBpZiAobV9jb25uZWN0aW5nU3Vic3Rh
dGUgPT0gV2FpdGluZ0ZvckNvbm5lY3QpIHsKICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3Rpb25U
eXBlID09IENPTk5FQ1RQcm94eSkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkhUVFBN
ZXNzYWdlUmVmPiBwcm94eVJlc3BvbnNlID0gYWRvcHRDRih3a0NvcHlDT05ORUNUUHJveHlSZXNw
b25zZShtX3JlYWRTdHJlYW0uZ2V0KCksIG1faHR0cHNVUkwuZ2V0KCksIG1fcHJveHlIb3N0Lmdl
dCgpLCBtX3Byb3h5UG9ydC5nZXQoKSkpOworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkhU
VFBNZXNzYWdlUmVmPiBwcm94eVJlc3BvbnNlID0gY29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKG1f
cmVhZFN0cmVhbS5nZXQoKSwgbV9odHRwc1VSTC5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1f
cHJveHlQb3J0LmdldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIXByb3h5UmVzcG9uc2UpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5k
ZXggODVhYjkxMzY1OWE0NjE0NGQ5YzQwZTMzNzhkZTY0MzZiYTUxY2QwZC4uNzlmYWVmMDlhYjZj
OGRhYmFkOTdmNzhjOWE0MGY5Yjg3ZjQzNDA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCkKICAgICB9CiAKICAgICBpZiAobV9uc1JlcXVlc3QpIHsKLSAgICAgICAgTlNT
dHJpbmcqIGNhY2hlUGFydGl0aW9uID0gW05TVVJMUHJvdG9jb2wgcHJvcGVydHlGb3JLZXk6KE5T
U3RyaW5nICopd2tDYWNoZVBhcnRpdGlvbktleSgpIGluUmVxdWVzdDptX25zUmVxdWVzdC5nZXQo
KV07CisgICAgICAgIE5TU3RyaW5nKiBjYWNoZVBhcnRpdGlvbiA9IFtOU1VSTFByb3RvY29sIHBy
b3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKV9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSBpblJlcXVl
c3Q6bV9uc1JlcXVlc3QuZ2V0KCldOwogICAgICAgICBpZiAoY2FjaGVQYXJ0aXRpb24pCiAgICAg
ICAgICAgICBtX2NhY2hlUGFydGl0aW9uID0gY2FjaGVQYXJ0aXRpb247CiAgICAgfQpAQCAtMjA4
LDcgKzIwOCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAgICAgU3RyaW5nIHBhcnRpdGlvbiA9IGNhY2hlUGFydGl0aW9uKCk7CiAgICAgaWYgKCFw
YXJ0aXRpb24uaXNOdWxsKCkgJiYgIXBhcnRpdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgTlNT
dHJpbmcgKnBhcnRpdGlvblZhbHVlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOnBh
cnRpdGlvbi51dGY4KCkuZGF0YSgpXTsKLSAgICAgICAgW05TVVJMUHJvdG9jb2wgc2V0UHJvcGVy
dHk6cGFydGl0aW9uVmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKXdrQ2FjaGVQYXJ0aXRpb25LZXko
KSBpblJlcXVlc3Q6bnNSZXF1ZXN0XTsKKyAgICAgICAgW05TVVJMUHJvdG9jb2wgc2V0UHJvcGVy
dHk6cGFydGl0aW9uVmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKV9rQ0ZVUkxDYWNoZVBhcnRpdGlv
bktleSBpblJlcXVlc3Q6bnNSZXF1ZXN0XTsKICAgICB9CiAKICNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4
IGZkMTI0Y2JjNDY0ZmFkYmJjMDAxZTcxZGRjYTIyZTcxYmM4ZTNiY2YuLjdiNjY3NTE2MDFiYWI0
ZWMwNTVmZDEyMGIxMWMxMzM0ZWEzOWQ0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAtMzgsNiArMzgsNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBv
cnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9O
KQogI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdC5oPgpAQCAtNTcsNiArNTgsMTM2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKIAorc3RhdGljIFJl
dGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNl
bnRhdGlvbihDRkluZGV4IHZlcnNpb24sIENGVHlwZVJlZiogb2JqZWN0cywgQ0ZJbmRleCBvYmpl
Y3RDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmIHByb3RvY29sUHJvcGVydGllcywgQ0ZOdW1iZXJSZWYg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSwgQ0ZUeXBlUmVmIHRv
a2VuTnVsbCkKK3sKKyAgICBhdXRvIGFyY2hpdmVMaXN0QXJyYXkgPSBhZG9wdENGKENGQXJyYXlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpKTsKKworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IG9iamVjdENvdW50OyArK2kpIHsK
KyAgICAgICAgQ0ZUeXBlUmVmIG9iamVjdCA9IG9iamVjdHNbaV07CisgICAgICAgIGlmIChvYmpl
Y3QpIHsKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcmNoaXZlTGlzdEFycmF5Lmdl
dCgpLCBvYmplY3QpOworICAgICAgICAgICAgQ0ZSZWxlYXNlKG9iamVjdCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBBcHBlbmQgb3VyIHRva2VuIG51bGwgcmVwcmVzZW50YXRp
b24uCisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJjaGl2ZUxpc3RBcnJheS5nZXQo
KSwgdG9rZW5OdWxsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gZGljdGlvbmFyeSA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKSk7CisKKyAgICBhdXRvIHZlcnNpb25OdW1iZXIgPSBhZG9wdENGKENGTnVtYmVy
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNGSW5kZXhUeXBlLCAmdmVyc2lv
bikpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJ2
ZXJzaW9uIiksIHZlcnNpb25OdW1iZXIuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGRpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJhcmNoaXZlTGlzdCIpLCBhcmNoaXZlTGlzdEFycmF5
LmdldCgpKTsKKworICAgIGlmIChwcm90b2NvbFByb3BlcnRpZXMpIHsKKyAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInByb3RvY29sUHJvcGVydGll
cyIpLCBwcm90b2NvbFByb3BlcnRpZXMpOworICAgICAgICBDRlJlbGVhc2UocHJvdG9jb2xQcm9w
ZXJ0aWVzKTsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSB7CisgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJleHBlY3Rl
ZENvbnRlbnRMZW5ndGgiKSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKKyAgICAgICAgQ0ZSZWxl
YXNlKGV4cGVjdGVkQ29udGVudExlbmd0aCk7CisgICAgfQorCisgICAgaWYgKG1pbWVUeXBlKSB7
CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJt
aW1lVHlwZSIpLCBtaW1lVHlwZSk7CisgICAgICAgIENGUmVsZWFzZShtaW1lVHlwZSk7CisgICAg
fQorCisgICAgQ0ZBbGxvY2F0b3JEZWFsbG9jYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9iamVj
dHMpOworCisgICAgcmV0dXJuIGRpY3Rpb25hcnk7Cit9CisKK3N0YXRpYyBDRlR5cGVSZWYgZGlj
dGlvbmFyeVZhbHVlT2ZUeXBlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5LCBDRlN0cmluZ1Jl
ZiBrZXksIENGVHlwZUlEIHR5cGUpCit7CisgICAgQ0ZUeXBlUmVmIHZhbHVlID0gQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwga2V5KTsKKyAgICBpZiAodmFsdWUgJiYgQ0ZHZXRUeXBl
SUQodmFsdWUpID09IHR5cGUpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworc3RhdGljIGJvb2wgY3JlYXRlQXJjaGl2ZUxpc3QoQ0ZEaWN0aW9uYXJ5UmVm
IHJlcHJlc2VudGF0aW9uLCBDRlR5cGVSZWYgdG9rZW5OdWxsLCBDRkluZGV4KiB2ZXJzaW9uLCBD
RlR5cGVSZWYqKiBvYmplY3RzLCBDRkluZGV4KiBvYmplY3RDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVm
KiBwcm90b2NvbFByb3BlcnRpZXMsIENGTnVtYmVyUmVmKiBleHBlY3RlZENvbnRlbnRMZW5ndGgs
IENGU3RyaW5nUmVmKiBtaW1lVHlwZSkKK3sKKyAgICBDRk51bWJlclJlZiB2ZXJzaW9uTnVtYmVy
ID0gKENGTnVtYmVyUmVmKWRpY3Rpb25hcnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZT
VFIoInZlcnNpb24iKSwgQ0ZOdW1iZXJHZXRUeXBlSUQoKSk7CisgICAgaWYgKCF2ZXJzaW9uTnVt
YmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUo
dmVyc2lvbk51bWJlciwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsIHZlcnNpb24pKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBDRkFycmF5UmVmIGFyY2hpdmVMaXN0QXJyYXkgPSAoQ0ZBcnJh
eVJlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RSKCJhcmNoaXZl
TGlzdCIpLCBDRkFycmF5R2V0VHlwZUlEKCkpOworICAgIGlmICghYXJjaGl2ZUxpc3RBcnJheSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgKm9iamVjdENvdW50ID0gQ0ZBcnJheUdldENv
dW50KGFyY2hpdmVMaXN0QXJyYXkpOworICAgICpvYmplY3RzID0gKENGVHlwZVJlZiopbWFsbG9j
KHNpemVvZihDRlR5cGVSZWYpICogKm9iamVjdENvdW50KTsKKyAgICBmb3IgKENGSW5kZXggaSA9
IDA7IGkgPCAqb2JqZWN0Q291bnQ7ICsraSkgeworICAgICAgICBDRlR5cGVSZWYgb2JqZWN0ID0g
Q0ZBcnJheUdldFZhbHVlQXRJbmRleChhcmNoaXZlTGlzdEFycmF5LCBpKTsKKyAgICAgICAgaWYg
KG9iamVjdCA9PSB0b2tlbk51bGwpCisgICAgICAgICAgICAoKm9iamVjdHMpW2ldID0gbnVsbHB0
cjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKCpvYmplY3RzKVtpXSA9IG9iamVjdDsKKyAg
ICB9CisKKyAgICBpZiAocHJvdG9jb2xQcm9wZXJ0aWVzKQorICAgICAgICAqcHJvdG9jb2xQcm9w
ZXJ0aWVzID0gKENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVzZW50
YXRpb24sIENGU1RSKCJwcm90b2NvbFByb3BlcnRpZXMiKSwgQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlE
KCkpOworCisgICAgaWYgKGV4cGVjdGVkQ29udGVudExlbmd0aCkKKyAgICAgICAgKmV4cGVjdGVk
Q29udGVudExlbmd0aCA9IChDRk51bWJlclJlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVz
ZW50YXRpb24sIENGU1RSKCJleHBlY3RlZENvbnRlbnRMZW5ndGgiKSwgQ0ZOdW1iZXJHZXRUeXBl
SUQoKSk7CisKKyAgICBpZiAobWltZVR5cGUpCisgICAgICAgICptaW1lVHlwZSA9IChDRlN0cmlu
Z1JlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RSKCJtaW1lVHlw
ZSIpLCBDRlN0cmluZ0dldFR5cGVJRCgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50
YXRpb24oQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCwgQ0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sK
KyAgICBDRkluZGV4IHZlcnNpb247CisgICAgQ0ZUeXBlUmVmKiBvYmplY3RzOworICAgIENGSW5k
ZXggb2JqZWN0Q291bnQ7CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3RvY29sUHJvcGVydGllczsK
KworICAgIC8vIEZJWE1FICgxMjg4OTUxOCk6IERvIG5vdCBzZXJpYWxpemUgSFRUUCBtZXNzYWdl
IGJvZHkuCisgICAgLy8gMS4gSXQgY2FuIGJlIGxhcmdlIGFuZCB0aHVzIGNvc3RseSB0byBzZW5k
IGFjcm9zcy4KKyAgICAvLyAyLiBJdCBpcyBtaXNsZWFkaW5nIHRvIHByb3ZpZGUgYSBib2R5IHdp
dGggc29tZSByZXF1ZXN0cywgd2hpbGUgb3RoZXJzIHVzZSBib2R5IHN0cmVhbXMsIHdoaWNoIGNh
bm5vdCBiZSBzZXJpYWxpemVkIGF0IGFsbC4KKworICAgIF9DRlVSTFJlcXVlc3RDcmVhdGVBcmNo
aXZlTGlzdChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZlJlcXVlc3QsICZ2ZXJzaW9uLCAmb2JqZWN0
cywgJm9iamVjdENvdW50LCAmcHJvdG9jb2xQcm9wZXJ0aWVzKTsKKworICAgIC8vIFRoaXMgd2ls
bCBkZWFsbG9jYXRlIHRoZSBwYXNzZWQgaW4gYXJndW1lbnRzLgorICAgIHJldHVybiBjcmVhdGVT
ZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbih2ZXJzaW9uLCBvYmplY3RzLCBvYmplY3RDb3VudCwg
cHJvdG9jb2xQcm9wZXJ0aWVzLCBudWxscHRyLCBudWxscHRyLCB0b2tlbk51bGwpOworfQorCitz
dGF0aWMgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNl
cmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZiByZXByZXNlbnRhdGlvbiwg
Q0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sKKyAgICBDRkluZGV4IHZlcnNpb247CisgICAgQ0ZUeXBl
UmVmKiBvYmplY3RzOworICAgIENGSW5kZXggb2JqZWN0Q291bnQ7CisgICAgQ0ZEaWN0aW9uYXJ5
UmVmIHByb3RvY29sUHJvcGVydGllczsKKworICAgIGlmICghY3JlYXRlQXJjaGl2ZUxpc3QocmVw
cmVzZW50YXRpb24sIHRva2VuTnVsbCwgJnZlcnNpb24sICZvYmplY3RzLCAmb2JqZWN0Q291bnQs
ICZwcm90b2NvbFByb3BlcnRpZXMsIG51bGxwdHIsIG51bGxwdHIpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIGF1dG8gY2ZSZXF1ZXN0ID0gYWRvcHRDRihfQ0ZVUkxSZXF1ZXN0Q3Jl
YXRlRnJvbUFyY2hpdmVMaXN0KGtDRkFsbG9jYXRvckRlZmF1bHQsIHZlcnNpb24sIG9iamVjdHMs
IG9iamVjdENvdW50LCBwcm90b2NvbFByb3BlcnRpZXMpKTsKKyAgICBmcmVlKG9iamVjdHMpOwor
ICAgIHJldHVybiBXVEZNb3ZlKGNmUmVxdWVzdCk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihOU1VSTFJlcXVl
c3QgKnJlcXVlc3QsIENGVHlwZVJlZiB0b2tlbk51bGwpCit7CisgICAgcmV0dXJuIGNyZWF0ZVNl
cmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKFtyZXF1ZXN0IF9DRlVSTFJlcXVlc3RdLCB0b2tlbk51
bGwpOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gY3JlYXRlTlNVUkxSZXF1
ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZiByZXByZXNl
bnRhdGlvbiwgQ0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sKKyAgICBhdXRvIGNmUmVxdWVzdCA9IGNy
ZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXByZXNlbnRh
dGlvbiwgdG9rZW5OdWxsKTsKKyAgICBpZiAoIWNmUmVxdWVzdCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gX2luaXRX
aXRoQ0ZVUkxSZXF1ZXN0OmNmUmVxdWVzdC5nZXQoKV0pOworfQorCiAjaWYgVVNFKENGVVJMQ09O
TkVDVElPTikKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0
Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QpCiB7CkBAIC03OSw3ICsyMTAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0CiAg
ICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0cmVhbShtdXRhYmxlUmVxdWVz
dCwgbmlsKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9u
YXJ5ID0gYWRvcHRDRihXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0
aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gY3JlYXRlU2VyaWFs
aXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpLCBJUEM6OnRva2Vu
TnVsbFR5cGVSZWYoKSk7CiAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQo
KSk7CiAKICAgICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVSTFJlcXVlc3Qs
IGJ1dCBpdCBpcyBub3QgZW5jb2RlZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJs
ZVJlcHJlc2VudGF0aW9uLgpAQCAtMTA2LDcgKzIzNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QKICAgICAgICAgWyhOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdFRvU2VyaWFsaXplIHNl
dEhUVFBCb2R5U3RyZWFtOm5pbF07CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tOU1VSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFi
bGVSZXByZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxs
VHlwZVJlZigpKSk7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9
IGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQo
KSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGRp
Y3Rpb25hcnkuZ2V0KCkpOwogCiAgICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBhcnQgb2Yg
TlNVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tOU1VSTFJlcXVlc3RDcmVh
dGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KQEAgLTEzMiwxMyArMjYzLDEzIEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgUmVzb3VyCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShDRlVS
TENPTk5FQ1RJT04pCi0gICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0
ID0gYWRvcHRDRihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRh
dGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOworICAgIFJl
dGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IGNmVVJMUmVxdWVzdCA9IGNyZWF0ZUNGVVJMUmVxdWVz
dEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRv
a2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFjZlVSTFJlcXVlc3QpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVSTFJl
cXVlc3QuZ2V0KCkpOwogI2Vsc2UKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJl
cXVlc3QgPSBXS05TVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0
aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CisgICAgUmV0YWluUHRyPE5T
VVJMUmVxdWVzdD4gbnNVUkxSZXF1ZXN0ID0gY3JlYXRlTlNVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6
YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJl
ZigpKTsKICAgICBpZiAoIW5zVVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQppbmRleCAwNDViOWIyZDQ4MmU0MjI3OWM5NmU5YTE5M2M0ZWQ3ZDA4NmI3OWMxLi5iZDU3
YTdjYjdmOTY1N2VmNTFiYzUxMWRlYTRjZTE1N2VhODc4ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTQ1NSw3
ICs0NTUsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBjYWNoZVN0b3JhZ2VQYXRoID0gYWRvcHROUygoTlNTdHJpbmcgKilXS0NvcHlG
b3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjYWNo
ZVN0b3JhZ2VQYXRoID0gYWRvcHROUygoTlNTdHJpbmcgKilfQ0ZVUkxDYWNoZUNvcHlDYWNoZURp
cmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwogICAg
IGlmICghY2FjaGVTdG9yYWdlUGF0aCkKICAgICAgICAgY2FjaGVTdG9yYWdlUGF0aCA9IEAifi9M
aWJyYXJ5L1dlYktpdC9DYWNoZVN0b3JhZ2UiOwogCkBAIC00NjQsNyArNDY0LDcgQEAgU3RyaW5n
IFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjYWNoZVBhdGgg
PSBhZG9wdE5TKChOU1N0cmluZyAqKVdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsK
KyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlUGF0aCA9IGFkb3B0TlMoKE5TU3RyaW5nICop
X0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkoW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hl
XSBfQ0ZVUkxDYWNoZV0pKTsKICAgICBpZiAoIWNhY2hlUGF0aCkKICAgICAgICAgY2FjaGVQYXRo
ID0gQCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJLaXQuV2ViUHJvY2VzcyI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggYmRhNWQ3M2RmYzEyMmYzZTAyMjNh
YWFlNTUyODRkNGIzOWU1NzNjZS4uYTYxYjg0MTQ1MzAzNGZiOWM5Y2FiODRiZWY2ZWFhZDEwMTRi
ZTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM2LDE4ICszNiwx
MiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBpbml0T25jZTsKICAgICAKICAgICBkaXNwYXRjaF9vbmNlKCZpbml0T25j
ZSwgXnsKLSAgICAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7CiAgICAgICAgIElO
SVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAgICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7
CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChNZWFzdXJl
TWVkaWFVSVBhcnQpOwotI2VuZGlmCi0gICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9y
aXphdGlvbkZvclN0cmVhbSk7Ci0gICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFt
KTsKLQotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtl
ZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7CiAgICAgICAgIElOSVQoQ29weURlZmF1bHRTZWFyY2hQ
cm92aWRlckRpc3BsYXlOYW1lKTsKICAgICAgICAgSU5JVChDdXJzb3IpOwpAQCAtNTgsMTIgKzUy
LDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklU
KE5TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBV
QkxJQ19TVUZGSVhfTElTVCkKLSAgICAgICAgSU5JVChJc1B1YmxpY1N1ZmZpeCk7Ci0jZW5kaWYK
LQotICAgICAgICBJTklUKENhY2hlUGFydGl0aW9uS2V5KTsKLQogICAgICAgICBJTklUKEV4ZXJu
YWxEZXZpY2VUeXBlRm9yUGxheWVyKTsKICAgICAgICAgSU5JVChFeGVybmFsRGV2aWNlRGlzcGxh
eU5hbWVGb3JQbGF5ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMTc0NjU4NmIy
NDJmNTJlMDdhOTlmZTkxNWFhNmI0ZjYyYTNiYzVkNC4uMDYyMDJjZWVkYWNkYjcwMTk3Y2JlMTBi
ODNjNmVmNzUyNTJkZDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDIsNyArNDIs
NiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgaWYgKGRpZElu
aXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIElOSVQoQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNl
KTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7CiAg
ICAgSU5JVChEcmF3TWVkaWFVSVBhcnQpOwpAQCAtNTAsOCArNDksNiBAQCB2b2lkIEluaXRXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQpOwog
ICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKICNlbmRpZgotICAgIElOSVQoU2V0Q09OTkVD
VFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7Ci0gICAgSU5JVChTZXRDT05ORUNUUHJveHlG
b3JTdHJlYW0pOwogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKEV4ZWN1dGFibGVXYXNM
aW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpOwpAQCAtNjcsMTIgKzY0LDYgQEAgdm9pZCBJbml0
V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoTlNSZWJvdW5kRGVsdGFGb3JF
bGFzdGljRGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQot
ICAgIElOSVQoSXNQdWJsaWNTdWZmaXgpOwotI2VuZGlmCi0KLSAgICBJTklUKENhY2hlUGFydGl0
aW9uS2V5KTsKLQogICAgIElOSVQoRXhlcm5hbERldmljZVR5cGVGb3JQbGF5ZXIpOwogICAgIElO
SVQoRXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGM3MjMzYmUxMzMyZGI4YjVmYWU3Nzg3
YzlhNjhlNjEzZjRjYTNiZjkuLmI1ZTcyNjNmM2RmMmNkZjIwOTFhODMyOGJiYmVmOTc0NGU1MmM2
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTg1
NzMsNyArODU3Myw3IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2Fj
aGVNb2RlbAogICAgIGlmIChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2Nh
Y2hlTW9kZWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TU3RyaW5nICpuc3VybENhY2hlRGly
ZWN0b3J5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoV0tDb3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5
KCkpOworICAgIE5TU3RyaW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkoW1tOU1VSTENhY2hlIHNoYXJlZFVSTENh
Y2hlXSBfQ0ZVUkxDYWNoZV0pKTsKICAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAg
ICAgIG5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320570</attachid>
            <date>2017-09-12 14:59:20 -0700</date>
            <delta_ts>2017-09-13 09:46:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176729-20170912145919.patch</filename>
            <type>text/plain</type>
            <size>34006</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjNmM4ODQ2MTYwNmMx
MTlkNTJjNTNjNmZlNjI4MWU5YzA3MTRkNC4uYjRhOTAyYmViY2FjYmFjMWE4ZTU1N2I0MTFlZmUw
NDVkYTJlMTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0
d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUHVibGlj
U3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNQdWJsaWNTdWZmaXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvcHlDT05ORUNUUHJveHlSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBs
YXRmb3JtUmVxdWVzdCk6CisKIDIwMTctMDktMTEgIFlvc2hpYWtpIEppdHN1a2F3YSAgPFlvc2hp
YWtpLkppdHN1a2F3YUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEZpeCB0aGUgd2lu
Y2Fpcm8gYnVpbGQgYWZ0ZXIgcjIyMTgzOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZmJhMTQyYTA5
MjU3N2NiNTVlMGEzZmY2MzE1NGM1NTZjMmU4Y2U1MS4uZjE0MjY1MWQ2ZTAwYTU0OWFkYTFkYTFl
NzIwMWE0ZjIwZjg5MDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIw
MTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCisgICAgICAgIFtDRl0g
VXBzdHJlYW0gQ0ZOZXR3b3JrLXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKKzIwMTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmVmMzQzOTQwM2UzZTRj
OGE0MWM3NTY4NWQ1NmVlNTdiYmVjZjdlNy4uYTJlZDQwMGFiZjIyNmQ4ODZkZjU3ZDliYzIxZjIx
NzI1YjczNjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OmNyZWF0ZVNlcmlhbGl6YWJsZVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKElQQzo6ZGljdGlvbmFyeVZhbHVlT2ZUeXBlKToKKyAg
ICAgICAgKElQQzo6Y3JlYXRlQXJjaGl2ZUxpc3QpOgorICAgICAgICAoSVBDOjpjcmVhdGVDRlVS
TFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSVBDOjpj
cmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKworMjAxNy0wOS0xMSAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0g
UVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg1NmExYWVlOTgxYTlkNmYwNDMxZDFmNGM1YWYwY2E5YWQy
YTJjNzAuLjQyZDE1YWEwYWM5MTVkYzQ0N2JlM2RhNmU5YzM1YjYzZGM2OGE1MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfc2V0
Q2FjaGVNb2RlbDpdKToKKworMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaAppbmRleCAwYWU4MGM3ODdiOGU4MWI5YTg0ZjAxYjkxNmI4YmY3NGE5MzJkZjNj
Li4wM2RmNWU0ZTBlOTRhYTc5MTU0OWY0YTNjMDg2ZDU5M2IyNDc4ZGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMTk0LDYgKzE5NCw3IEBA
IHZvaWQgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9j
ayhDRkNhY2hlZFVSTFJlc3BvbnNlUmVmCiBleHRlcm4gQ0ZTdHJpbmdSZWYgY29uc3Qga0NGSFRU
UENvb2tpZUxvY2FsRmlsZURvbWFpbjsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQ
VmVyc2lvbjFfMTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxSZXF1ZXN0QWxsb3dB
bGxQT1NUQ2FjaGluZzsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGVVJMQ2FjaGVQYXJ0
aXRpb25LZXk7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVSTENvbm5lY3Rpb25Qcm9w
ZXJ0eVNob3VsZFNuaWZmOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZVUkxTdG9yYWdl
U2Vzc2lvbklzUHJpdmF0ZTsKIApAQCAtMjM2LDExICsyMzcsMjQgQEAgQ0ZBcnJheVJlZiBDRkhU
VFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7CiB2b2lk
IENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIENG
QXJyYXlSZWYgY29va2llcywgQ0ZVUkxSZWYsIENGVVJMUmVmIG1haW5Eb2N1bWVudFVSTCk7CiB2
b2lkIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJl
ZiwgQ0ZIVFRQQ29va2llUmVmKTsKIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgQ0ZVUkxSZXF1ZXN0
Q3JlYXRlTXV0YWJsZUNvcHkoQ0ZBbGxvY2F0b3JSZWYsIENGVVJMUmVxdWVzdFJlZik7CitDRlN0
cmluZ1JlZiBfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShDRlVSTENhY2hlUmVmKTsKK0Jv
b2xlYW4gX0NGSG9zdElzRG9tYWluVG9wTGV2ZWwoQ0ZTdHJpbmdSZWYgZG9tYWluKTsKK3ZvaWQg
X0NGVVJMUmVxdWVzdENyZWF0ZUFyY2hpdmVMaXN0KENGQWxsb2NhdG9yUmVmLCBDRlVSTFJlcXVl
c3RSZWYsIENGSW5kZXgqIHZlcnNpb24sIENGVHlwZVJlZioqIG9iamVjdHMsIENGSW5kZXgqIG9i
amVjdENvdW50LCBDRkRpY3Rpb25hcnlSZWYqIHByb3RvY29sUHJvcGVydGllcyk7CitDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmIF9DRlVSTFJlcXVlc3RDcmVhdGVGcm9tQXJjaGl2ZUxpc3QoQ0ZBbGxv
Y2F0b3JSZWYsIENGSW5kZXggdmVyc2lvbiwgQ0ZUeXBlUmVmKiBvYmplY3RzLCBDRkluZGV4IG9i
amVjdENvdW50LCBDRkRpY3Rpb25hcnlSZWYgcHJvdG9jb2xQcm9wZXJ0aWVzKTsKIAogI2VuZGlm
IC8vICFQTEFURk9STShXSU4pCiAKK3ZvaWQgX0NGSFRUUE1lc3NhZ2VTZXRSZXNwb25zZVVSTChD
RkhUVFBNZXNzYWdlUmVmLCBDRlVSTFJlZik7Cit2b2lkIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9u
c2VQcm94eVVSTChDRkhUVFBNZXNzYWdlUmVmLCBDRlVSTFJlZik7CisKIFdURl9FWFRFUk5fQ19F
TkQKIAorQ0ZOX0VYUE9SVCBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5F
Q1RQcm94eTsKK0NGTl9FWFBPUlQgY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtUHJvcGVydHlD
T05ORUNUUHJveHlIb3N0OworQ0ZOX0VYUE9SVCBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Q
cm9wZXJ0eUNPTk5FQ1RQcm94eVBvcnQ7CitDRk5fRVhQT1JUIGNvbnN0IENGU3RyaW5nUmVmIGtD
RlN0cmVhbVByb3BlcnR5Q09OTkVDVEFkZGl0aW9uYWxIZWFkZXJzOworQ0ZOX0VYUE9SVCBjb25z
dCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RSZXNwb25zZTsKKwogI2lmIGRl
ZmluZWQoX19PQkpDX18pICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiBlbnVtIDogTlNV
SW50ZWdlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlSU9TLm1tCmluZGV4IGQ3MzM5OGVjMmI0M2QxZTM3ZGJmYThlYmU3
ZWE0MDJjNjFmMjhmNGYuLjFiOTY5ZWNkNjg5ZGQ2MmI2MmZjMzRkNWJhOGU5OWUxYzhiYTgzZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lz
dGVtSW50ZXJmYWNlSU9TLm1tCkBAIC0yOSwxMCArMjksNyBAQAogV0VCQ09SRV9FWFBPUlQgdm9p
ZCAoKndrQ2xlYXJHbHlwaFZlY3Rvcikodm9pZCogZ2x5cGhzKTsKIFdFQkNPUkVfRVhQT1JUIE9T
U3RhdHVzICgqd2tDb252ZXJ0Q2hhclRvR2x5cGhzKSh2b2lkKiBzdHlsZUdyb3VwLCBjb25zdCBV
bmlDaGFyKiwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycywgdm9pZCogZ2x5cGhzKTsKIFdFQkNPUkVf
RVhQT1JUIGlkICgqd2tDcmVhdGVOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5KSh2b2lkKTsK
LVdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFk
U3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7
Ci1XRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9y
U3RyZWFtKShDRlJlYWRTdHJlYW1SZWYsIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0
cmluZyk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCkoQk9PTCk7Ci1XRUJDT1JFX0VYUE9SVCBDRkhUVFBNZXNzYWdlUmVmICgq
d2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYgcmVz
cG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgKCp3a1NldExheWVyQ29udGVudHNTY2FsZSkoQ0FMYXllciAq
KTsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrQ2FwdGlvbkFwcGVhcmFuY2VIYXNVc2VyUHJl
ZmVyZW5jZXMpKHZvaWQpOwpAQCAtNDgsMTIgKzQ1LDYgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCgq
d2tDYXB0aW9uQXBwZWFyYW5jZUdldFJlbGF0aXZlQ2hhcmFjdGVyU2l6ZSkoQ0dGbG9hdCopOwog
V0VCQ09SRV9FWFBPUlQgaW50KCp3a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZSko
dm9pZCk7CiBXRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZigqd2tDYXB0aW9uQXBwZWFyYW5jZUdl
dFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbikodm9pZCk7CiAKLSNpZiBFTkFCTEUoUFVCTElD
X1NVRkZJWF9MSVNUKQotV0VCQ09SRV9FWFBPUlQgYm9vbCAoKndrSXNQdWJsaWNTdWZmaXgpKE5T
U3RyaW5nICpob3N0KTsKLSNlbmRpZgotCi1XRUJDT1JFX0VYUE9SVCBDRlN0cmluZ1JlZiAoKndr
Q2FjaGVQYXJ0aXRpb25LZXkpKHZvaWQpOwotCiBXRUJDT1JFX0VYUE9SVCBpbnQgKCp3a0V4ZXJu
YWxEZXZpY2VUeXBlRm9yUGxheWVyKShBVlBsYXllciAqKTsKIFdFQkNPUkVfRVhQT1JUIE5TU3Ry
aW5nICooKndrRXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKShBVlBsYXllciAqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KaW5k
ZXggOTMwYTM0NzUzMGY0N2U4OWMxMzgyOTlhMzNkMmY4NjlkMTBlZjUwNi4uM2Y0MzE3MjM4ZWRl
MzM3NmRlYWI2Y2EwOWNhOGFhYWJmODQxODBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiUHVibGljU3VmZml4LmgiCiAKLSNpbXBvcnQgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKLSNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgotCiAjaWYg
RU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKIAorI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFz
LmgiCisjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgorCiBAaW50ZXJmYWNlIE5T
U3RyaW5nIChXZWJDb3JlTlNVUkxFeHRyYXMpCiAtIChCT09MKV93ZWJfbG9va3NMaWtlSVBBZGRy
ZXNzOwogQGVuZApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBib29sIGlz
UHVibGljU3VmZml4KGNvbnN0IFN0cmluZyYgZG9tYWluKQogewogICAgIE5TU3RyaW5nICpob3N0
ID0gZGVjb2RlSG9zdE5hbWUoZG9tYWluKTsKLSAgICByZXR1cm4gaG9zdCAmJiB3a0lzUHVibGlj
U3VmZml4KGhvc3QpOworICAgIHJldHVybiBob3N0ICYmIF9DRkhvc3RJc0RvbWFpblRvcExldmVs
KChDRlN0cmluZ1JlZilob3N0KTsKIH0KIAogU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAppbmRleCBmNjc1OTUwOWExMWZjZTMz
NDEzZmU2OTAzM2E0Njg1NmY1OTc0NTU4Li45ZWNjMzQxYzUxNjIzMTE0MzljNDJlN2JkZmEyMDdk
ZTY3ZDA0NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTEzMywxMiArMTMzLDYgQEAgZXh0ZXJuIEJPT0wgKCp3
a0hpdFRlc3RNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVjdCBib3VuZHMsIENHUG9pbnQgcG9p
bnQpOwogZXh0ZXJuIHZvaWQgKCp3a01lYXN1cmVNZWRpYVVJUGFydCkoaW50IHBhcnQsIENHUmVj
dCAqYm91bmRzLCBDR1NpemUgKm5hdHVyYWxTaXplKTsKIAogZXh0ZXJuIHZvaWQgKCp3a1NldENv
b2tpZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdFbmFibGVkKShCT09MKTsKLSNlbmRpZgotZXh0ZXJu
IHZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0
cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7Ci1leHRlcm4gdm9pZCAo
KndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVm
LCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpOwotZXh0ZXJuIENGSFRUUE1l
c3NhZ2VSZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBD
RlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBw
cm94eVBvcnQpOwotCi0jaWYgIVBMQVRGT1JNKElPUykKIGV4dGVybiB2b2lkKiB3a0dldEh5cGhl
bmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleDsKICNlbmRpZgogCkBAIC0xNjcsMTIgKzE2MSw2IEBA
IGV4dGVybiBDR0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YSkoQ0dGbG9h
dCBkZWx0YSk7CiBleHRlcm4gQ0dGbG9hdCAoKndrTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVs
dGEpKENHRmxvYXQgZGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9M
SVNUKQotZXh0ZXJuIGJvb2wgKCp3a0lzUHVibGljU3VmZml4KShOU1N0cmluZyAqaG9zdCk7Ci0j
ZW5kaWYKLQotZXh0ZXJuIENGU3RyaW5nUmVmICgqd2tDYWNoZVBhcnRpdGlvbktleSkodm9pZCk7
Ci0KIHR5cGVkZWYgZW51bSB7CiAgICAgd2tFeHRlcm5hbFBsYXliYWNrVHlwZU5vbmUsCiAgICAg
d2tFeHRlcm5hbFBsYXliYWNrVHlwZUFpclBsYXksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCmluZGV4IDJlYWJkNGYxNGYz
OTMzNmUzMzQwY2U4ZWRlZTM3ZTQ4MmRkNjgwMmUuLjM1MTBkOTliY2Y1N2Y2NWMwMTg5NjY5NTQy
NjVlMmI4OWJhZWVjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00MCwxMCArNDAsNiBAQCBOU1RpbWVJbnRl
cnZhbCAoKndrR2V0TlNVUkxSZXNwb25zZUNhbGN1bGF0ZWRFeHBpcmF0aW9uKShOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZQogQk9PTCAoKndrR2V0TlNVUkxSZXNwb25zZU11c3RSZXZhbGlkYXRlKShO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSk7CiB2b2lkICgqd2tQb3B1cE1lbnUpKE5TTWVudSosIE5T
UG9pbnQgbG9jYXRpb24sIGZsb2F0IHdpZHRoLCBOU1ZpZXcqLCBpbnQgc2VsZWN0ZWRJdGVtLCBO
U0ZvbnQqLCBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBib29sIHVzZXNDdXN0b21BcHBlYXJh
bmNlKTsKIAotdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKShDRlJlYWRTdHJlYW1S
ZWYsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KTsKLXZvaWQg
KCp3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJl
ZiwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKLUNGSFRUUE1lc3NhZ2VS
ZWYgKCp3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlVSTFJl
ZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBv
cnQpOwotCiB2b2lkKiB3a0dldEh5cGhlbmF0aW9uTG9jYXRpb25CZWZvcmVJbmRleDsKIAogYm9v
bCAoKndrRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCkodm9pZCk7CkBA
IC02MiwxMiArNTgsNiBAQCBDR0Zsb2F0ICgqd2tOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0
YSkoQ0dGbG9hdCBkZWx0YSk7CiBDR0Zsb2F0ICgqd2tOU1JlYm91bmREZWx0YUZvckVsYXN0aWNE
ZWx0YSkoQ0dGbG9hdCBkZWx0YSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklY
X0xJU1QpCi1ib29sICgqd2tJc1B1YmxpY1N1ZmZpeCkoTlNTdHJpbmcgKmhvc3QpOwotI2VuZGlm
Ci0KLUNGU3RyaW5nUmVmICgqd2tDYWNoZVBhcnRpdGlvbktleSkodm9pZCk7Ci0KIGludCAoKndr
RXhlcm5hbERldmljZVR5cGVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwogTlNTdHJpbmcgKigqd2tF
eGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIpKEFWUGxheWVyICopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Q0ZOZXQuY3BwCmluZGV4IDBiNTdhYTQzMDI1NzBjNjE0ODY4OWMwZTA5NjI1YzkwZDFjOGE2
MjMuLjllNzVlYTMyODI0MTJkMTZiNjQxMjE5MjliZjdhMTZkNzRjN2JjODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Q0ZOZXQuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBpZiAoIXBhcnRpdGlvbi5pc051bGwoKSAmJiAh
cGFydGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwYXJ0
aXRpb24udXRmOCgpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhcnRpdGlvblZh
bHVlID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVJbnQ4Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlKSk7Ci0gICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQ
cm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdCwgd2tDYWNoZVBhcnRpdGlvbktleSgpLCBwYXJ0aXRp
b25WYWx1ZS5nZXQoKSk7CisgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5
KGNmUmVxdWVzdCwga0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXksIHBhcnRpdGlvblZhbHVlLmdldCgp
KTsKICAgICB9CiAjZW5kaWYKIApAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpCiAgICAgfQogCiAjaWYgRU5BQkxFKENBQ0hF
X1BBUlRJVElPTklORykKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGFydGl0aW9u
ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oX0NGVVJMUmVxdWVzdENvcHlQcm90
b2NvbFByb3BlcnR5Rm9yS2V5KG1fY2ZSZXF1ZXN0LmdldCgpLCB3a0NhY2hlUGFydGl0aW9uS2V5
KCkpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZVBhcnRpdGlvbiA9IGFkb3B0
Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9w
ZXJ0eUZvcktleShtX2NmUmVxdWVzdC5nZXQoKSwga0NGVVJMQ2FjaGVQYXJ0aXRpb25LZXkpKSk7
CiAgICAgaWYgKGNhY2hlUGFydGl0aW9uKQogICAgICAgICBtX2NhY2hlUGFydGl0aW9uID0gY2Fj
aGVQYXJ0aXRpb24uZ2V0KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcAppbmRleCAwOTk4YTFlODVmZjBjNjMzOWEyZWU4YWEzNjk0OTUzODA0ODBhMmI5Li42NzE5
YTRmZTE4MGVlMDk2MDJkMGQ1MjExN2JmY2VlNGNjOGE2NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0zMDIsNiArMzAyLDEzIEBAIHZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6Y2hvb3NlUHJveHlGcm9tQXJyYXkoQ0ZBcnJheVJlZiBwcm94eUFycmF5KQog
ICAgIG1fY29ubmVjdGlvblR5cGUgPSBEaXJlY3Q7CiB9CiAKK3N0YXRpYyB2b2lkIHNldENPTk5F
Q1RQcm94eUZvclN0cmVhbShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmluZ1JlZiBwcm94
eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCkKK3sKKyAgICBjb25zdCB2b2lkKiBwcm94eUtl
eXNbXSA9IHsga0NGU3RyZWFtUHJvcGVydHlDT05ORUNUUHJveHlIb3N0LCBrQ0ZTdHJlYW1Qcm9w
ZXJ0eUNPTk5FQ1RQcm94eVBvcnQgfTsKKyAgICBjb25zdCB2b2lkKiBwcm94eVZhbHVlc1tdID0g
eyBwcm94eUhvc3QsIHByb3h5UG9ydCB9OworICAgIGF1dG8gY29ubmVjdERpY3Rpb25hcnkgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm94eUtleXMs
IHByb3h5VmFsdWVzLCBzaXplb2YocHJveHlLZXlzKSAvIHNpemVvZigqcHJveHlLZXlzKSwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOworICAgIENGUmVhZFN0cmVhbVNldFByb3BlcnR5KHN0cmVhbSwga0NGU3RyZWFtUHJv
cGVydHlDT05ORUNUUHJveHksIGNvbm5lY3REaWN0aW9uYXJ5LmdldCgpKTsKK30KIAogdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKCkKIHsKQEAgLTM0Nyw3ICszNTQs
NyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMoKQogICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIGNhc2UgQ09OTkVDVFByb3h5OgotICAgICAgICB3a1Nl
dENPTk5FQ1RQcm94eUZvclN0cmVhbShtX3JlYWRTdHJlYW0uZ2V0KCksIG1fcHJveHlIb3N0Lmdl
dCgpLCBtX3Byb3h5UG9ydC5nZXQoKSk7CisgICAgICAgIHNldENPTk5FQ1RQcm94eUZvclN0cmVh
bShtX3JlYWRTdHJlYW0uZ2V0KCksIG1fcHJveHlIb3N0LmdldCgpLCBtX3Byb3h5UG9ydC5nZXQo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzk1LDYgKzQwMiwxOSBAQCBzdGF0aWMg
UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUgYXV0aGVudGljYXRpb25TY2hlbWVG
cm9tQXV0aGVudGljYXRpbwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBQ
cm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVVua25vd247CiB9CisgICAgCitzdGF0
aWMgdm9pZCBzZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKENGUmVhZFN0cmVh
bVJlZiBzdHJlYW0sIENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZykKK3sKKyAg
ICBhdXRvIG9yaWdpbmFsQ09OTkVDVERpY3Rpb25hcnkgPSBhZG9wdENGKChDRkRpY3Rpb25hcnlS
ZWYpQ0ZSZWFkU3RyZWFtQ29weVByb3BlcnR5KHN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlDT05O
RUNUUHJveHkpKTsKKyAgICBhdXRvIGNvbm5lY3REaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rp
b25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBvcmlnaW5hbENP
Tk5FQ1REaWN0aW9uYXJ5LmdldCgpKSk7CisKKyAgICBjb25zdCB2b2lkKiBoZWFkZXJGaWVsZE5h
bWVzW10gPSB7IENGU1RSKCJQcm94eS1BdXRob3JpemF0aW9uIikgfTsKKyAgICBjb25zdCB2b2lk
KiBoZWFkZXJGaWVsZFZhbHVlc1tdID0geyBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcgfTsKKyAg
ICBhdXRvIGFkZGl0aW9uYWxIZWFkZXJGaWVsZHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBoZWFkZXJGaWVsZE5hbWVzLCBoZWFkZXJGaWVsZFZhbHVl
cywgc2l6ZW9mKGhlYWRlckZpZWxkTmFtZXMpIC8gc2l6ZW9mKCpoZWFkZXJGaWVsZFZhbHVlcyks
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKKworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvbm5lY3REaWN0aW9uYXJ5
LmdldCgpLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RBZGRpdGlvbmFsSGVhZGVycywgYWRkaXRp
b25hbEhlYWRlckZpZWxkcy5nZXQoKSk7CisgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkoc3Ry
ZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSwgY29ubmVjdERpY3Rpb25hcnkuZ2V0
KCkpOworfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RDcmVkZW50
aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9uc2UpCiB7CkBAIC00MzcsNyArNDU3LDcg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRDT05ORUNUQ3JlZGVudGlhbHMoQ0ZI
VFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnMKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNldHRp
bmcgdGhlIGF1dGhvcml6YXRpb24gcmVzdWx0cyBpbiBhIG5ldyBjb25uZWN0aW9uIGF0dGVtcHQu
Ci0gICAgICAgIHdrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbShtX3JlYWRT
dHJlYW0uZ2V0KCksIHByb3h5QXV0aG9yaXphdGlvblN0cmluZy5nZXQoKSk7CisgICAgICAgIHNl
dENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0obV9yZWFkU3RyZWFtLmdldCgpLCBw
cm94eUF1dGhvcml6YXRpb25TdHJpbmcuZ2V0KCkpOwogICAgICAgICBtX3NlbnRTdG9yZWRDcmVk
ZW50aWFscyA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00OTIsNiArNTEyLDI2
IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFjayhDRldy
aXRlU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlCiAgICAgaGFuZGxlLT53cml0ZVN0cmVhbUNhbGxi
YWNrKHR5cGUpOwogI2VuZGlmCiB9CisgICAgCitzdGF0aWMgUmV0YWluUHRyPENGSFRUUE1lc3Nh
Z2VSZWY+IGNvcHlDT05ORUNUUHJveHlSZXNwb25zZShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBD
RlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBw
cm94eVBvcnQpCit7CisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRDRigoQ0ZIVFRQTWVzc2FnZVJl
ZilDRlJlYWRTdHJlYW1Db3B5UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5F
Q1RSZXNwb25zZSkpOworICAgIC8vIENGTmV0d29yayBuZWVkcyBVUkwgdG8gYmUgc2V0IG9uIHJl
c3BvbnNlIGluIG9yZGVyIHRvIGhhbmRsZSBhdXRoZW50aWNhdGlvbiAtIGV2ZW4gdGhvdWdoIGl0
IGRvZXNuJ3Qgc2VlbSB0byBtYWtlIHNlbnNlIHRvIHByb3ZpZGUgdWx0aW1hdGUgdGFyZ2V0IFVS
TCB3aGVuIGF1dGhlbnRpY2F0aW5nIHRvIGEgcHJveHkuCisgICAgLy8gVGhpcyBpcyBzZXQgYnkg
Q0ZOZXR3b3JrIGludGVybmFsbHkgZm9yIG5vcm1hbCBIVFRQIHJlc3BvbnNlcywgYnV0IG5vdCBm
b3IgcHJveGllcy4KKyAgICBfQ0ZIVFRQTWVzc2FnZVNldFJlc3BvbnNlVVJMKG1lc3NhZ2UuZ2V0
KCksIHJlc3BvbnNlVVJMKTsKKworI2lmICFQTEFURk9STShJT1MpCisgICAgLy8gRGl0dG8gZm9y
IHByb3h5IFVSTC4KKyAgICBhdXRvIHByb3h5VVJMU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhGb3JtYXQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgQ0ZTVFIoImh0dHBz
Oi8vJUA6JUAiKSwgcHJveHlIb3N0LCBwcm94eVBvcnQpKTsKKyAgICBhdXRvIHByb3h5VVJMID0g
YWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHJveHlV
UkxTdHJpbmcuZ2V0KCksIG51bGxwdHIpKTsKKyAgICBfQ0ZIVFRQTWVzc2FnZVNldFJlc3BvbnNl
UHJveHlVUkwobWVzc2FnZS5nZXQoKSwgcHJveHlVUkwuZ2V0KCkpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0ocHJveHlIb3N0KTsKKyAgICBVTlVTRURfUEFSQU0ocHJveHlQb3J0KTsKKyNlbmRp
ZgorCisgICAgcmV0dXJuIG1lc3NhZ2U7Cit9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6cmVhZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5cGUpCiB7CkBAIC01MDYs
NyArNTQ2LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJh
Y2soQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkKIAogICAgICAgICBpZiAobV9jb25uZWN0aW5nU3Vi
c3RhdGUgPT0gV2FpdGluZ0ZvckNvbm5lY3QpIHsKICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3Rp
b25UeXBlID09IENPTk5FQ1RQcm94eSkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkhU
VFBNZXNzYWdlUmVmPiBwcm94eVJlc3BvbnNlID0gYWRvcHRDRih3a0NvcHlDT05ORUNUUHJveHlS
ZXNwb25zZShtX3JlYWRTdHJlYW0uZ2V0KCksIG1faHR0cHNVUkwuZ2V0KCksIG1fcHJveHlIb3N0
LmdldCgpLCBtX3Byb3h5UG9ydC5nZXQoKSkpOworICAgICAgICAgICAgICAgIFJldGFpblB0cjxD
RkhUVFBNZXNzYWdlUmVmPiBwcm94eVJlc3BvbnNlID0gY29weUNPTk5FQ1RQcm94eVJlc3BvbnNl
KG1fcmVhZFN0cmVhbS5nZXQoKSwgbV9odHRwc1VSTC5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCks
IG1fcHJveHlQb3J0LmdldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIXByb3h5UmVzcG9uc2Up
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTg4LDcgKzYyOCw3IEBAIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFjayhDRlN0cmVhbUV2ZW50
VHlwZSB0eXBlKQogCiAgICAgICAgIGlmIChtX2Nvbm5lY3RpbmdTdWJzdGF0ZSA9PSBXYWl0aW5n
Rm9yQ29ubmVjdCkgewogICAgICAgICAgICAgaWYgKG1fY29ubmVjdGlvblR5cGUgPT0gQ09OTkVD
VFByb3h5KSB7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHBy
b3h5UmVzcG9uc2UgPSBhZG9wdENGKHdrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKG1fcmVhZFN0
cmVhbS5nZXQoKSwgbV9odHRwc1VSTC5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQ
b3J0LmdldCgpKSk7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+
IHByb3h5UmVzcG9uc2UgPSBjb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UobV9yZWFkU3RyZWFtLmdl
dCgpLCBtX2h0dHBzVVJMLmdldCgpLCBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0
KCkpOwogICAgICAgICAgICAgICAgIGlmICghcHJveHlSZXNwb25zZSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCA4NWFiOTEzNjU5
YTQ2MTQ0ZDljNDBlMzM3OGRlNjQzNmJhNTFjZDBkLi43OWZhZWYwOWFiNmM4ZGFiYWQ5N2Y3OGM5
YTQwZjliODdmNDM0MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTEzOCw3ICsx
MzgsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQog
ICAgIH0KIAogICAgIGlmIChtX25zUmVxdWVzdCkgewotICAgICAgICBOU1N0cmluZyogY2FjaGVQ
YXJ0aXRpb24gPSBbTlNVUkxQcm90b2NvbCBwcm9wZXJ0eUZvcktleTooTlNTdHJpbmcgKil3a0Nh
Y2hlUGFydGl0aW9uS2V5KCkgaW5SZXF1ZXN0Om1fbnNSZXF1ZXN0LmdldCgpXTsKKyAgICAgICAg
TlNTdHJpbmcqIGNhY2hlUGFydGl0aW9uID0gW05TVVJMUHJvdG9jb2wgcHJvcGVydHlGb3JLZXk6
KE5TU3RyaW5nICopX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVzdDptX25zUmVxdWVz
dC5nZXQoKV07CiAgICAgICAgIGlmIChjYWNoZVBhcnRpdGlvbikKICAgICAgICAgICAgIG1fY2Fj
aGVQYXJ0aXRpb24gPSBjYWNoZVBhcnRpdGlvbjsKICAgICB9CkBAIC0yMDgsNyArMjA4LDcgQEAg
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBTdHJp
bmcgcGFydGl0aW9uID0gY2FjaGVQYXJ0aXRpb24oKTsKICAgICBpZiAoIXBhcnRpdGlvbi5pc051
bGwoKSAmJiAhcGFydGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBOU1N0cmluZyAqcGFydGl0
aW9uVmFsdWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6cGFydGl0aW9uLnV0Zjgo
KS5kYXRhKCldOwotICAgICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25W
YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopd2tDYWNoZVBhcnRpdGlvbktleSgpIGluUmVxdWVzdDpu
c1JlcXVlc3RdOworICAgICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25W
YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVz
dDpuc1JlcXVlc3RdOwogICAgIH0KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggZmQxMjRjYmM0NjRm
YWRiYmMwMDFlNzFkZGNhMjJlNzFiYzhlM2JjZi4uN2I2Njc1MTYwMWJhYjRlYzA1NWZkMTIwYjEx
YzEzMzRlYTM5ZDQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNv
cmVBcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2ltcG9ydCA8cGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaD4KIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW1wb3J0IDxD
Rk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0Lmg+CkBAIC01Nyw2ICs1OCwxMzYgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBJUEMgewogCitzdGF0aWMgUmV0YWluUHRyPENGTXV0
YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKENGSW5k
ZXggdmVyc2lvbiwgQ0ZUeXBlUmVmKiBvYmplY3RzLCBDRkluZGV4IG9iamVjdENvdW50LCBDRkRp
Y3Rpb25hcnlSZWYgcHJvdG9jb2xQcm9wZXJ0aWVzLCBDRk51bWJlclJlZiBleHBlY3RlZENvbnRl
bnRMZW5ndGgsIENGU3RyaW5nUmVmIG1pbWVUeXBlLCBDRlR5cGVSZWYgdG9rZW5OdWxsKQorewor
ICAgIGF1dG8gYXJjaGl2ZUxpc3RBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworCisgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7ICsraSkgeworICAgICAgICBDRlR5
cGVSZWYgb2JqZWN0ID0gb2JqZWN0c1tpXTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAg
ICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFyY2hpdmVMaXN0QXJyYXkuZ2V0KCksIG9iamVjdCk7
CisgICAgICAgICAgICBDRlJlbGVhc2Uob2JqZWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIEFwcGVuZCBvdXIgdG9rZW4gbnVsbCByZXByZXNlbnRhdGlvbi4KKyAgICAgICAg
ICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcmNoaXZlTGlzdEFycmF5LmdldCgpLCB0b2tlbk51bGwp
OworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
KworICAgIGF1dG8gdmVyc2lvbk51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsICZ2ZXJzaW9uKSk7CisgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInZlcnNpb24iKSwgdmVy
c2lvbk51bWJlci5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZGljdGlvbmFyeS5n
ZXQoKSwgQ0ZTVFIoImFyY2hpdmVMaXN0IiksIGFyY2hpdmVMaXN0QXJyYXkuZ2V0KCkpOworCisg
ICAgaWYgKHByb3RvY29sUHJvcGVydGllcykgeworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShkaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigicHJvdG9jb2xQcm9wZXJ0aWVzIiksIHByb3RvY29s
UHJvcGVydGllcyk7CisgICAgICAgIENGUmVsZWFzZShwcm90b2NvbFByb3BlcnRpZXMpOworICAg
IH0KKworICAgIGlmIChleHBlY3RlZENvbnRlbnRMZW5ndGgpIHsKKyAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoImV4cGVjdGVkQ29udGVudExlbmd0
aCIpLCBleHBlY3RlZENvbnRlbnRMZW5ndGgpOworICAgICAgICBDRlJlbGVhc2UoZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKTsKKyAgICB9CisKKyAgICBpZiAobWltZVR5cGUpIHsKKyAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIm1pbWVUeXBlIiksIG1p
bWVUeXBlKTsKKyAgICAgICAgQ0ZSZWxlYXNlKG1pbWVUeXBlKTsKKyAgICB9CisKKyAgICBDRkFs
bG9jYXRvckRlYWxsb2NhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb2JqZWN0cyk7CisKKyAgICBy
ZXR1cm4gZGljdGlvbmFyeTsKK30KKworc3RhdGljIENGVHlwZVJlZiBkaWN0aW9uYXJ5VmFsdWVP
ZlR5cGUoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIENGU3RyaW5nUmVmIGtleSwgQ0ZUeXBl
SUQgdHlwZSkKK3sKKyAgICBDRlR5cGVSZWYgdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShk
aWN0aW9uYXJ5LCBrZXkpOworICAgIGlmICh2YWx1ZSAmJiBDRkdldFR5cGVJRCh2YWx1ZSkgPT0g
dHlwZSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBudWxscHRyOworfQorCitz
dGF0aWMgYm9vbCBjcmVhdGVBcmNoaXZlTGlzdChDRkRpY3Rpb25hcnlSZWYgcmVwcmVzZW50YXRp
b24sIENGVHlwZVJlZiB0b2tlbk51bGwsIENGSW5kZXgqIHZlcnNpb24sIENGVHlwZVJlZioqIG9i
amVjdHMsIENGSW5kZXgqIG9iamVjdENvdW50LCBDRkRpY3Rpb25hcnlSZWYqIHByb3RvY29sUHJv
cGVydGllcywgQ0ZOdW1iZXJSZWYqIGV4cGVjdGVkQ29udGVudExlbmd0aCwgQ0ZTdHJpbmdSZWYq
IG1pbWVUeXBlKQoreworICAgIENGTnVtYmVyUmVmIHZlcnNpb25OdW1iZXIgPSAoQ0ZOdW1iZXJS
ZWYpZGljdGlvbmFyeVZhbHVlT2ZUeXBlKHJlcHJlc2VudGF0aW9uLCBDRlNUUigidmVyc2lvbiIp
LCBDRk51bWJlckdldFR5cGVJRCgpKTsKKyAgICBpZiAoIXZlcnNpb25OdW1iZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZSh2ZXJzaW9uTnVtYmVy
LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgdmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIENGQXJyYXlSZWYgYXJjaGl2ZUxpc3RBcnJheSA9IChDRkFycmF5UmVmKWRpY3Rpb25h
cnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoImFyY2hpdmVMaXN0IiksIENGQXJy
YXlHZXRUeXBlSUQoKSk7CisgICAgaWYgKCFhcmNoaXZlTGlzdEFycmF5KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAqb2JqZWN0Q291bnQgPSBDRkFycmF5R2V0Q291bnQoYXJjaGl2ZUxp
c3RBcnJheSk7CisgICAgKm9iamVjdHMgPSAoQ0ZUeXBlUmVmKiltYWxsb2Moc2l6ZW9mKENGVHlw
ZVJlZikgKiAqb2JqZWN0Q291bnQpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8ICpvYmpl
Y3RDb3VudDsgKytpKSB7CisgICAgICAgIENGVHlwZVJlZiBvYmplY3QgPSBDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGFyY2hpdmVMaXN0QXJyYXksIGkpOworICAgICAgICBpZiAob2JqZWN0ID09IHRv
a2VuTnVsbCkKKyAgICAgICAgICAgICgqb2JqZWN0cylbaV0gPSBudWxscHRyOworICAgICAgICBl
bHNlCisgICAgICAgICAgICAoKm9iamVjdHMpW2ldID0gb2JqZWN0OworICAgIH0KKworICAgIGlm
IChwcm90b2NvbFByb3BlcnRpZXMpCisgICAgICAgICpwcm90b2NvbFByb3BlcnRpZXMgPSAoQ0ZE
aWN0aW9uYXJ5UmVmKWRpY3Rpb25hcnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIo
InByb3RvY29sUHJvcGVydGllcyIpLCBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisKKyAgICBp
ZiAoZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQorICAgICAgICAqZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
ID0gKENGTnVtYmVyUmVmKWRpY3Rpb25hcnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZT
VFIoImV4cGVjdGVkQ29udGVudExlbmd0aCIpLCBDRk51bWJlckdldFR5cGVJRCgpKTsKKworICAg
IGlmIChtaW1lVHlwZSkKKyAgICAgICAgKm1pbWVUeXBlID0gKENGU3RyaW5nUmVmKWRpY3Rpb25h
cnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoIm1pbWVUeXBlIiksIENGU3RyaW5n
R2V0VHlwZUlEKCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihDRlVSTFJl
cXVlc3RSZWYgY2ZSZXF1ZXN0LCBDRlR5cGVSZWYgdG9rZW5OdWxsKQoreworICAgIENGSW5kZXgg
dmVyc2lvbjsKKyAgICBDRlR5cGVSZWYqIG9iamVjdHM7CisgICAgQ0ZJbmRleCBvYmplY3RDb3Vu
dDsKKyAgICBDRkRpY3Rpb25hcnlSZWYgcHJvdG9jb2xQcm9wZXJ0aWVzOworCisgICAgLy8gRklY
TUUgKDEyODg5NTE4KTogRG8gbm90IHNlcmlhbGl6ZSBIVFRQIG1lc3NhZ2UgYm9keS4KKyAgICAv
LyAxLiBJdCBjYW4gYmUgbGFyZ2UgYW5kIHRodXMgY29zdGx5IHRvIHNlbmQgYWNyb3NzLgorICAg
IC8vIDIuIEl0IGlzIG1pc2xlYWRpbmcgdG8gcHJvdmlkZSBhIGJvZHkgd2l0aCBzb21lIHJlcXVl
c3RzLCB3aGlsZSBvdGhlcnMgdXNlIGJvZHkgc3RyZWFtcywgd2hpY2ggY2Fubm90IGJlIHNlcmlh
bGl6ZWQgYXQgYWxsLgorCisgICAgX0NGVVJMUmVxdWVzdENyZWF0ZUFyY2hpdmVMaXN0KGtDRkFs
bG9jYXRvckRlZmF1bHQsIGNmUmVxdWVzdCwgJnZlcnNpb24sICZvYmplY3RzLCAmb2JqZWN0Q291
bnQsICZwcm90b2NvbFByb3BlcnRpZXMpOworCisgICAgLy8gVGhpcyB3aWxsIGRlYWxsb2NhdGUg
dGhlIHBhc3NlZCBpbiBhcmd1bWVudHMuCisgICAgcmV0dXJuIGNyZWF0ZVNlcmlhbGl6YWJsZVJl
cHJlc2VudGF0aW9uKHZlcnNpb24sIG9iamVjdHMsIG9iamVjdENvdW50LCBwcm90b2NvbFByb3Bl
cnRpZXMsIG51bGxwdHIsIG51bGxwdHIsIHRva2VuTnVsbCk7Cit9CisKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjcmVhdGVDRlVSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVw
cmVzZW50YXRpb24oQ0ZEaWN0aW9uYXJ5UmVmIHJlcHJlc2VudGF0aW9uLCBDRlR5cGVSZWYgdG9r
ZW5OdWxsKQoreworICAgIENGSW5kZXggdmVyc2lvbjsKKyAgICBDRlR5cGVSZWYqIG9iamVjdHM7
CisgICAgQ0ZJbmRleCBvYmplY3RDb3VudDsKKyAgICBDRkRpY3Rpb25hcnlSZWYgcHJvdG9jb2xQ
cm9wZXJ0aWVzOworCisgICAgaWYgKCFjcmVhdGVBcmNoaXZlTGlzdChyZXByZXNlbnRhdGlvbiwg
dG9rZW5OdWxsLCAmdmVyc2lvbiwgJm9iamVjdHMsICZvYmplY3RDb3VudCwgJnByb3RvY29sUHJv
cGVydGllcywgbnVsbHB0ciwgbnVsbHB0cikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgYXV0byBjZlJlcXVlc3QgPSBhZG9wdENGKF9DRlVSTFJlcXVlc3RDcmVhdGVGcm9tQXJjaGl2
ZUxpc3Qoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdmVyc2lvbiwgb2JqZWN0cywgb2JqZWN0Q291bnQs
IHByb3RvY29sUHJvcGVydGllcykpOworICAgIGZyZWUob2JqZWN0cyk7CisgICAgcmV0dXJuIFdU
Rk1vdmUoY2ZSZXF1ZXN0KTsKK30KKworc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwg
Q0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sKKyAgICByZXR1cm4gY3JlYXRlU2VyaWFsaXphYmxlUmVw
cmVzZW50YXRpb24oW3JlcXVlc3QgX0NGVVJMUmVxdWVzdF0sIHRva2VuTnVsbCk7Cit9CisKK3N0
YXRpYyBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBjcmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFs
aXphYmxlUmVwcmVzZW50YXRpb24oQ0ZEaWN0aW9uYXJ5UmVmIHJlcHJlc2VudGF0aW9uLCBDRlR5
cGVSZWYgdG9rZW5OdWxsKQoreworICAgIGF1dG8gY2ZSZXF1ZXN0ID0gY3JlYXRlQ0ZVUkxSZXF1
ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcHJlc2VudGF0aW9uLCB0b2tlbk51
bGwpOworICAgIGlmICghY2ZSZXF1ZXN0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVl
c3Q6Y2ZSZXF1ZXN0LmdldCgpXSk7Cit9CisKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdm9p
ZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsK
QEAgLTc5LDcgKzIxMCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+Ojpl
bmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICAgICAgQ0ZVUkxS
ZXF1ZXN0U2V0SFRUUFJlcXVlc3RCb2R5U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwpOwogICAg
IH0KIAotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENG
KFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRv
U2VyaWFsaXplLmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOworICAgIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNl
bnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigp
KTsKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKIAogICAgIC8v
IFRoZSBmYWxsYmFjayBhcnJheSBpcyBwYXJ0IG9mIENGVVJMUmVxdWVzdCwgYnV0IGl0IGlzIG5v
dCBlbmNvZGVkIGJ5IFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRp
b24uCkBAIC0xMDYsNyArMjM3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVz
dD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgICAgICBb
KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0VG9TZXJpYWxpemUgc2V0SFRUUEJvZHlTdHJl
YW06bmlsXTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9u
YXJ5ID0gYWRvcHRDRihXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0
aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gY3JlYXRlU2VyaWFs
aXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpLCBJUEM6OnRva2Vu
TnVsbFR5cGVSZWYoKSk7CiAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQo
KSk7CiAKICAgICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBOU1VSTFJlcXVlc3Qs
IGJ1dCBpdCBpcyBub3QgZW5jb2RlZCBieSBXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJs
ZVJlcHJlc2VudGF0aW9uLgpAQCAtMTMyLDEzICsyNjMsMTMgQEAgYm9vbCBBcmd1bWVudENvZGVy
PFJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBS
ZXNvdXIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjZlVSTFJlcXVlc3QgPSBhZG9wdENGKFdL
Q3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25h
cnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7CisgICAgUmV0YWluUHRyPENGVVJM
UmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gY3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6
YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJl
ZigpKTsKICAgICBpZiAoIWNmVVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGNmVVJMUmVxdWVzdC5nZXQoKSk7
CiAjZWxzZQotICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IFdLTlNV
UkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCks
IElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBu
c1VSTFJlcXVlc3QgPSBjcmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50
YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlm
ICghbnNVUkxSZXF1ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDA0
NWI5YjJkNDgyZTQyMjc5Yzk2ZTlhMTkzYzRlZDdkMDg2Yjc5YzEuLmJkNTdhN2NiN2Y5NjU3ZWY1
MWJjNTExZGVhNGNlMTU3ZWE4NzhlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtNDU1LDcgKzQ1NSw3IEBAIFN0
cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZh
dWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNh
Y2hlU3RvcmFnZVBhdGggPSBhZG9wdE5TKChOU1N0cmluZyAqKVdLQ29weUZvdW5kYXRpb25DYWNo
ZURpcmVjdG9yeSgpKTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlU3RvcmFnZVBhdGgg
PSBhZG9wdE5TKChOU1N0cmluZyAqKV9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNV
UkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2FjaGVdKSk7CiAgICAgaWYgKCFjYWNoZVN0
b3JhZ2VQYXRoKQogICAgICAgICBjYWNoZVN0b3JhZ2VQYXRoID0gQCJ+L0xpYnJhcnkvV2ViS2l0
L0NhY2hlU3RvcmFnZSI7CiAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bv
b2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiAKIFN0cmlu
ZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCkKIHsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlUGF0aCA9IGFkb3B0TlMoKE5T
U3RyaW5nICopV0tDb3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIFJldGFpblB0
cjxOU1N0cmluZz4gY2FjaGVQYXRoID0gYWRvcHROUygoTlNTdHJpbmcgKilfQ0ZVUkxDYWNoZUNv
cHlDYWNoZURpcmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hl
XSkpOwogICAgIGlmICghY2FjaGVQYXRoKQogICAgICAgICBjYWNoZVBhdGggPSBAIn4vTGlicmFy
eS9DYWNoZXMvY29tLmFwcGxlLldlYktpdC5XZWJQcm9jZXNzIjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZh
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5
c3RlbUludGVyZmFjZS5tbQppbmRleCBiZGE1ZDczZGZjMTIyZjNlMDIyM2FhYWU1NTI4NGQ0YjM5
ZTU3M2NlLi5hNjFiODQxNDUzMDM0ZmI5YzljYWI4NGJlZjZlYWFkMTAxNGJlMDJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3Rl
bUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtMzYsMTggKzM2LDEyIEBAIHZvaWQgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IGluaXRPbmNlOwogICAgIAogICAgIGRpc3BhdGNoX29uY2UoJmluaXRPbmNlLCBeewotICAgICAg
ICBJTklUKENvcHlDT05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAg
ICAgICAgSU5JVChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKICAgICAgICAgSU5JVChEcmF3TWVkaWFT
bGlkZXJUcmFjayk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5J
VChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFydCk7
Ci0jZW5kaWYKLSAgICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3Ry
ZWFtKTsKLSAgICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotCi0jaWYgIVBM
QVRGT1JNKElPUykKICAgICAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNu
b3dMZW9wYXJkKTsKICAgICAgICAgSU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxh
eU5hbWUpOwogICAgICAgICBJTklUKEN1cnNvcik7CkBAIC01OCwxMiArNTIsNiBAQCB2b2lkIElu
aXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoTlNSZWJvdW5kRGVs
dGFGb3JFbGFzdGljRGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9M
SVNUKQotICAgICAgICBJTklUKElzUHVibGljU3VmZml4KTsKLSNlbmRpZgotCi0gICAgICAgIElO
SVQoQ2FjaGVQYXJ0aXRpb25LZXkpOwotCiAgICAgICAgIElOSVQoRXhlcm5hbERldmljZVR5cGVG
b3JQbGF5ZXIpOwogICAgICAgICBJTklUKEV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXll
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlN5c3RlbUludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQppbmRleCAxNzQ2NTg2YjI0MmY1MmUwN2E5OWZl
OTE1YWE2YjRmNjJhM2JjNWQ0Li4wNjIwMmNlZWRhY2RiNzAxOTdjYmUxMGI4M2M2ZWY3NTI1MmRk
MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00Miw3ICs0Miw2IEBAIHZvaWQgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBpZiAoZGlkSW5pdCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgSU5JVChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKICAgICBJTklUKERyYXdN
ZWRpYVVJUGFydCk7CkBAIC01MCw4ICs0OSw2IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRl
cmZhY2Uodm9pZCkKICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAgICAgSU5JVChNZWFz
dXJlTWVkaWFVSVBhcnQpOwogI2VuZGlmCi0gICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3Jp
emF0aW9uRm9yU3RyZWFtKTsKLSAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7CiAK
ICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZv
cmVTbm93TGVvcGFyZCk7CkBAIC02NywxMiArNjQsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSk7
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi0gICAgSU5JVChJc1B1
YmxpY1N1ZmZpeCk7Ci0jZW5kaWYKLQotICAgIElOSVQoQ2FjaGVQYXJ0aXRpb25LZXkpOwotCiAg
ICAgSU5JVChFeGVybmFsRGV2aWNlVHlwZUZvclBsYXllcik7CiAgICAgSU5JVChFeGVybmFsRGV2
aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KaW5kZXggYzcyMzNiZTEzMzJkYjhiNWZhZTc3ODdjOWE2OGU2MTNmNGNh
M2JmOS4uYjVlNzI2M2YzZGYyY2RmMjA5MWE4MzI4YmJiZWY5NzQ0ZTUyYzY4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODU3Myw3ICs4NTczLDcg
QEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsCiAgICAg
aWYgKHNfZGlkU2V0Q2FjaGVNb2RlbCAmJiBjYWNoZU1vZGVsID09IHNfY2FjaGVNb2RlbCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTlNTdHJpbmcgKm5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBDRkJy
aWRnaW5nUmVsZWFzZShXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgTlNT
dHJpbmcgKm5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBDRkJyaWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNo
ZUNvcHlDYWNoZURpcmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENh
Y2hlXSkpOwogICAgIGlmICghbnN1cmxDYWNoZURpcmVjdG9yeSkKICAgICAgICAgbnN1cmxDYWNo
ZURpcmVjdG9yeSA9IE5TSG9tZURpcmVjdG9yeSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320649</attachid>
            <date>2017-09-13 09:46:20 -0700</date>
            <delta_ts>2017-09-13 11:03:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176729-20170913094619.patch</filename>
            <type>text/plain</type>
            <size>34004</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjNmM4ODQ2MTYwNmMx
MTlkNTJjNTNjNmZlNjI4MWU5YzA3MTRkNC4uYjRhOTAyYmViY2FjYmFjMWE4ZTU1N2I0MTFlZmUw
NDVkYTJlMTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0
d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUHVibGlj
U3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNQdWJsaWNTdWZmaXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvcHlDT05ORUNUUHJveHlSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBs
YXRmb3JtUmVxdWVzdCk6CisKIDIwMTctMDktMTEgIFlvc2hpYWtpIEppdHN1a2F3YSAgPFlvc2hp
YWtpLkppdHN1a2F3YUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEZpeCB0aGUgd2lu
Y2Fpcm8gYnVpbGQgYWZ0ZXIgcjIyMTgzOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZmJhMTQyYTA5
MjU3N2NiNTVlMGEzZmY2MzE1NGM1NTZjMmU4Y2U1MS4uZjE0MjY1MWQ2ZTAwYTU0OWFkYTFkYTFl
NzIwMWE0ZjIwZjg5MDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIw
MTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCisgICAgICAgIFtDRl0g
VXBzdHJlYW0gQ0ZOZXR3b3JrLXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKKzIwMTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmVmMzQzOTQwM2UzZTRj
OGE0MWM3NTY4NWQ1NmVlNTdiYmVjZjdlNy4uYTJlZDQwMGFiZjIyNmQ4ODZkZjU3ZDliYzIxZjIx
NzI1YjczNjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OmNyZWF0ZVNlcmlhbGl6YWJsZVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKElQQzo6ZGljdGlvbmFyeVZhbHVlT2ZUeXBlKToKKyAg
ICAgICAgKElQQzo6Y3JlYXRlQXJjaGl2ZUxpc3QpOgorICAgICAgICAoSVBDOjpjcmVhdGVDRlVS
TFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSVBDOjpj
cmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKworMjAxNy0wOS0xMSAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0g
UVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg1NmExYWVlOTgxYTlkNmYwNDMxZDFmNGM1YWYwY2E5YWQy
YTJjNzAuLjQyZDE1YWEwYWM5MTVkYzQ0N2JlM2RhNmU5YzM1YjYzZGM2OGE1MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfc2V0
Q2FjaGVNb2RlbDpdKToKKworMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaAppbmRleCAwYWU4MGM3ODdiOGU4MWI5YTg0ZjAxYjkxNmI4YmY3NGE5MzJkZjNj
Li4zZTU4NDNlYWQ1YjQzYzUzODgzZGY4MWI2NDBjOWNmNDM1ODQ3ZWYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMTk0LDYgKzE5NCw3IEBA
IHZvaWQgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9j
ayhDRkNhY2hlZFVSTFJlc3BvbnNlUmVmCiBleHRlcm4gQ0ZTdHJpbmdSZWYgY29uc3Qga0NGSFRU
UENvb2tpZUxvY2FsRmlsZURvbWFpbjsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQ
VmVyc2lvbjFfMTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxSZXF1ZXN0QWxsb3dB
bGxQT1NUQ2FjaGluZzsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGVVJMQ2FjaGVQYXJ0
aXRpb25LZXk7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVSTENvbm5lY3Rpb25Qcm9w
ZXJ0eVNob3VsZFNuaWZmOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZVUkxTdG9yYWdl
U2Vzc2lvbklzUHJpdmF0ZTsKIApAQCAtMjM2LDkgKzIzNywyMiBAQCBDRkFycmF5UmVmIENGSFRU
UENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsKIHZvaWQg
Q0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgQ0ZB
cnJheVJlZiBjb29raWVzLCBDRlVSTFJlZiwgQ0ZVUkxSZWYgbWFpbkRvY3VtZW50VVJMKTsKIHZv
aWQgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUNvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVm
LCBDRkhUVFBDb29raWVSZWYpOwogQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlQ29weShDRkFsbG9jYXRvclJlZiwgQ0ZVUkxSZXF1ZXN0UmVmKTsKK0NGU3Ry
aW5nUmVmIF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KENGVVJMQ2FjaGVSZWYpOworQm9v
bGVhbiBfQ0ZIb3N0SXNEb21haW5Ub3BMZXZlbChDRlN0cmluZ1JlZiBkb21haW4pOwordm9pZCBf
Q0ZVUkxSZXF1ZXN0Q3JlYXRlQXJjaGl2ZUxpc3QoQ0ZBbGxvY2F0b3JSZWYsIENGVVJMUmVxdWVz
dFJlZiwgQ0ZJbmRleCogdmVyc2lvbiwgQ0ZUeXBlUmVmKiogb2JqZWN0cywgQ0ZJbmRleCogb2Jq
ZWN0Q291bnQsIENGRGljdGlvbmFyeVJlZiogcHJvdG9jb2xQcm9wZXJ0aWVzKTsKK0NGTXV0YWJs
ZVVSTFJlcXVlc3RSZWYgX0NGVVJMUmVxdWVzdENyZWF0ZUZyb21BcmNoaXZlTGlzdChDRkFsbG9j
YXRvclJlZiwgQ0ZJbmRleCB2ZXJzaW9uLCBDRlR5cGVSZWYqIG9iamVjdHMsIENGSW5kZXggb2Jq
ZWN0Q291bnQsIENGRGljdGlvbmFyeVJlZiBwcm90b2NvbFByb3BlcnRpZXMpOwogCiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKFdJTikKIAorQ0ZOX0VYUE9SVCBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJl
YW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eTsKK0NGTl9FWFBPUlQgY29uc3QgQ0ZTdHJpbmdSZWYga0NG
U3RyZWFtUHJvcGVydHlDT05ORUNUUHJveHlIb3N0OworQ0ZOX0VYUE9SVCBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eVBvcnQ7CitDRk5fRVhQT1JUIGNvbnN0
IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVEFkZGl0aW9uYWxIZWFkZXJzOwor
Q0ZOX0VYUE9SVCBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RSZXNw
b25zZTsKKworQ0ZOX0VYUE9SVCB2b2lkIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VVUkwoQ0ZI
VFRQTWVzc2FnZVJlZiwgQ0ZVUkxSZWYpOworQ0ZOX0VYUE9SVCB2b2lkIF9DRkhUVFBNZXNzYWdl
U2V0UmVzcG9uc2VQcm94eVVSTChDRkhUVFBNZXNzYWdlUmVmLCBDRlVSTFJlZik7CisKIFdURl9F
WFRFUk5fQ19FTkQKIAogI2lmIGRlZmluZWQoX19PQkpDX18pICYmICFVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCBkNzMzOThlYzJiNDNkMWUzN2RiZmE4ZWJlN2Vh
NDAyYzYxZjI4ZjRmLi4xYjk2OWVjZDY4OWRkNjJiNjJmYzM0ZDViYThlOTllMWM4YmE4M2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZUlPUy5tbQpAQCAtMjksMTAgKzI5LDcgQEAKIFdFQkNPUkVfRVhQT1JUIHZvaWQg
KCp3a0NsZWFyR2x5cGhWZWN0b3IpKHZvaWQqIGdseXBocyk7CiBXRUJDT1JFX0VYUE9SVCBPU1N0
YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCogc3R5bGVHcm91cCwgY29uc3QgVW5p
Q2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGdseXBocyk7CiBXRUJDT1JFX0VY
UE9SVCBpZCAoKndrQ3JlYXRlTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSkodm9pZCk7Ci1X
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0
cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93
c2luZ0VuYWJsZWQpKEJPT0wpOwotV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQTWVzc2FnZVJlZiAoKndr
Q29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3Bv
bnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiBX
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRMYXllckNvbnRlbnRzU2NhbGUpKENBTGF5ZXIgKik7
CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZl
cmVuY2VzKSh2b2lkKTsKQEAgLTQ4LDEyICs0NSw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2woKndr
Q2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUpKENHRmxvYXQqKTsKIFdF
QkNPUkVfRVhQT1JUIGludCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUpKHZv
aWQpOwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRT
ZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24pKHZvaWQpOwogCi0jaWYgRU5BQkxFKFBVQkxJQ19T
VUZGSVhfTElTVCkKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0lzUHVibGljU3VmZml4KShOU1N0
cmluZyAqaG9zdCk7Ci0jZW5kaWYKLQotV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgKCp3a0Nh
Y2hlUGFydGl0aW9uS2V5KSh2b2lkKTsKLQogV0VCQ09SRV9FWFBPUlQgaW50ICgqd2tFeGVybmFs
RGV2aWNlVHlwZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmlu
ZyAqKCp3a0V4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCmluZGV4
IDkzMGEzNDc1MzBmNDdlODljMTM4Mjk5YTMzZDJmODY5ZDEwZWY1MDYuLjNmNDMxNzIzOGVkZTMz
NzZkZWFiNmNhMDljYThhYWFiZjg0MTgwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpAQCAtMjYsMTEgKzI2LDExIEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIlB1YmxpY1N1ZmZpeC5oIgogCi0jaW1wb3J0ICJXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKLQogI2lmIEVO
QUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAKKyNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5o
IgorI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKwogQGludGVyZmFjZSBOU1N0
cmluZyAoV2ViQ29yZU5TVVJMRXh0cmFzKQogLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVz
czsKIEBlbmQKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogYm9vbCBpc1B1
YmxpY1N1ZmZpeChjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKICAgICBOU1N0cmluZyAqaG9zdCA9
IGRlY29kZUhvc3ROYW1lKGRvbWFpbik7Ci0gICAgcmV0dXJuIGhvc3QgJiYgd2tJc1B1YmxpY1N1
ZmZpeChob3N0KTsKKyAgICByZXR1cm4gaG9zdCAmJiBfQ0ZIb3N0SXNEb21haW5Ub3BMZXZlbCgo
Q0ZTdHJpbmdSZWYpaG9zdCk7CiB9CiAKIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluKGNvbnN0IFN0cmluZyYgZG9tYWluKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggZjY3NTk1MDlhMTFmY2UzMzQx
M2ZlNjkwMzNhNDY4NTZmNTk3NDU1OC4uOWVjYzM0MWM1MTYyMzExNDM5YzQyZTdiZGZhMjA3ZGU2
N2QwNDUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMzMsMTIgKzEzMyw2IEBAIGV4dGVybiBCT09MICgqd2tI
aXRUZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50
KTsKIGV4dGVybiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3Qg
KmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiAKIGV4dGVybiB2b2lkICgqd2tTZXRDb29r
aWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7Ci0jZW5kaWYKLWV4dGVybiB2
b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJp
bmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwotZXh0ZXJuIHZvaWQgKCp3
a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwg
Q0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKLWV4dGVybiBDRkhUVFBNZXNz
YWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZV
UkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJv
eHlQb3J0KTsKLQotI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9pZCogd2tHZXRIeXBoZW5h
dGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CiAjZW5kaWYKIApAQCAtMTY3LDEyICsxNjEsNiBAQCBl
eHRlcm4gQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEpKENHRmxvYXQg
ZGVsdGEpOwogZXh0ZXJuIENHRmxvYXQgKCp3a05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRh
KShDR0Zsb2F0IGRlbHRhKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElT
VCkKLWV4dGVybiBib29sICgqd2tJc1B1YmxpY1N1ZmZpeCkoTlNTdHJpbmcgKmhvc3QpOwotI2Vu
ZGlmCi0KLWV4dGVybiBDRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRpb25LZXkpKHZvaWQpOwot
CiB0eXBlZGVmIGVudW0gewogICAgIHdrRXh0ZXJuYWxQbGF5YmFja1R5cGVOb25lLAogICAgIHdr
RXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRleCAyZWFiZDRmMTRmMzkz
MzZlMzM0MGNlOGVkZWUzN2U0ODJkZDY4MDJlLi4zNTEwZDk5YmNmNTdmNjVjMDE4OTY2OTU0MjY1
ZTJiODliYWVlYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDAsMTAgKzQwLDYgQEAgTlNUaW1lSW50ZXJ2
YWwgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UKIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UpOwogdm9pZCAoKndrUG9wdXBNZW51KShOU01lbnUqLCBOU1Bv
aW50IGxvY2F0aW9uLCBmbG9hdCB3aWR0aCwgTlNWaWV3KiwgaW50IHNlbGVjdGVkSXRlbSwgTlNG
b250KiwgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSwgYm9vbCB1c2VzQ3VzdG9tQXBwZWFyYW5j
ZSk7CiAKLXZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVm
LCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7Ci12b2lkICgq
d2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYs
IENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7Ci1DRkhUVFBNZXNzYWdlUmVm
ICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYg
cmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0
KTsKLQogdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CiAKIGJvb2wg
KCp3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpKHZvaWQpOwpAQCAt
NjIsMTIgKzU4LDYgQEAgQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEp
KENHRmxvYXQgZGVsdGEpOwogQ0dGbG9hdCAoKndrTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVs
dGEpKENHRmxvYXQgZGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9M
SVNUKQotYm9vbCAoKndrSXNQdWJsaWNTdWZmaXgpKE5TU3RyaW5nICpob3N0KTsKLSNlbmRpZgot
Ci1DRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRpb25LZXkpKHZvaWQpOwotCiBpbnQgKCp3a0V4
ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKShBVlBsYXllciAqKTsKIE5TU3RyaW5nICooKndrRXhl
cm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKShBVlBsYXllciAqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcAppbmRleCAwYjU3YWE0MzAyNTcwYzYxNDg2ODljMGUwOTYyNWM5MGQxYzhhNjIz
Li45ZTc1ZWEzMjgyNDEyZDE2YjY0MTIxOTI5YmY3YTE2ZDc0YzdiYzgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgaWYgKCFwYXJ0aXRpb24uaXNOdWxsKCkgJiYgIXBh
cnRpdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gcGFydGl0
aW9uLnV0ZjgoKTsKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXJ0aXRpb25WYWx1
ZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSkpOwotICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJv
dG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIHdrQ2FjaGVQYXJ0aXRpb25LZXkoKSwgcGFydGl0aW9u
VmFsdWUuZ2V0KCkpOworICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShj
ZlJlcXVlc3QsIGtDRlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRpb25WYWx1ZS5nZXQoKSk7
CiAgICAgfQogI2VuZGlmCiAKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgIH0KIAogI2lmIEVOQUJMRShDQUNIRV9Q
QVJUSVRJT05JTkcpCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZVBhcnRpdGlvbiA9
IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9j
b2xQcm9wZXJ0eUZvcktleShtX2NmUmVxdWVzdC5nZXQoKSwgd2tDYWNoZVBhcnRpdGlvbktleSgp
KSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXJ0aXRpb24gPSBhZG9wdENG
KHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJvcGVy
dHlGb3JLZXkobV9jZlJlcXVlc3QuZ2V0KCksIGtDRlVSTENhY2hlUGFydGl0aW9uS2V5KSkpOwog
ICAgIGlmIChjYWNoZVBhcnRpdGlvbikKICAgICAgICAgbV9jYWNoZVBhcnRpdGlvbiA9IGNhY2hl
UGFydGl0aW9uLmdldCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5j
cHAKaW5kZXggMDk5OGExZTg1ZmYwYzYzMzlhMmVlOGFhMzY5NDk1MzgwNDgwYTJiOS4uNjcxOWE0
ZmUxODBlZTA5NjAyZDBkNTIxMTdiZmNlZTRjYzhhNjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbENGTmV0LmNwcApAQCAtMzAyLDYgKzMwMiwxMyBAQCB2b2lkIFNvY2tldFN0cmVhbUhh
bmRsZUltcGw6OmNob29zZVByb3h5RnJvbUFycmF5KENGQXJyYXlSZWYgcHJveHlBcnJheSkKICAg
ICBtX2Nvbm5lY3Rpb25UeXBlID0gRGlyZWN0OwogfQogCitzdGF0aWMgdm9pZCBzZXRDT05ORUNU
UHJveHlGb3JTdHJlYW0oQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJpbmdSZWYgcHJveHlI
b3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpCit7CisgICAgY29uc3Qgdm9pZCogcHJveHlLZXlz
W10gPSB7IGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVFByb3h5SG9zdCwga0NGU3RyZWFtUHJvcGVy
dHlDT05ORUNUUHJveHlQb3J0IH07CisgICAgY29uc3Qgdm9pZCogcHJveHlWYWx1ZXNbXSA9IHsg
cHJveHlIb3N0LCBwcm94eVBvcnQgfTsKKyAgICBhdXRvIGNvbm5lY3REaWN0aW9uYXJ5ID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHJveHlLZXlzLCBw
cm94eVZhbHVlcywgc2l6ZW9mKHByb3h5S2V5cykgLyBzaXplb2YoKnByb3h5S2V5cyksICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKKyAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShzdHJlYW0sIGtDRlN0cmVhbVByb3Bl
cnR5Q09OTkVDVFByb3h5LCBjb25uZWN0RGljdGlvbmFyeS5nZXQoKSk7Cit9CiAKIHZvaWQgU29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3RyZWFtcygpCiB7CkBAIC0zNDcsNyArMzU0LDcg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKCkKICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICBjYXNlIENPTk5FQ1RQcm94eToKLSAgICAgICAgd2tTZXRD
T05ORUNUUHJveHlGb3JTdHJlYW0obV9yZWFkU3RyZWFtLmdldCgpLCBtX3Byb3h5SG9zdC5nZXQo
KSwgbV9wcm94eVBvcnQuZ2V0KCkpOworICAgICAgICBzZXRDT05ORUNUUHJveHlGb3JTdHJlYW0o
bV9yZWFkU3RyZWFtLmdldCgpLCBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTM5NSw2ICs0MDIsMTkgQEAgc3RhdGljIFBy
b3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lIGF1dGhlbnRpY2F0aW9uU2NoZW1lRnJv
bUF1dGhlbnRpY2F0aW8KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gUHJv
dGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVVbmtub3duOwogfQorICAgIAorc3RhdGlj
IHZvaWQgc2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbShDRlJlYWRTdHJlYW1S
ZWYgc3RyZWFtLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcpCit7CisgICAg
YXV0byBvcmlnaW5hbENPTk5FQ1REaWN0aW9uYXJ5ID0gYWRvcHRDRigoQ0ZEaWN0aW9uYXJ5UmVm
KUNGUmVhZFN0cmVhbUNvcHlQcm9wZXJ0eShzdHJlYW0sIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVD
VFByb3h5KSk7CisgICAgYXV0byBjb25uZWN0RGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgb3JpZ2luYWxDT05O
RUNURGljdGlvbmFyeS5nZXQoKSkpOworCisgICAgY29uc3Qgdm9pZCogaGVhZGVyRmllbGROYW1l
c1tdID0geyBDRlNUUigiUHJveHktQXV0aG9yaXphdGlvbiIpIH07CisgICAgY29uc3Qgdm9pZCog
aGVhZGVyRmllbGRWYWx1ZXNbXSA9IHsgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nIH07CisgICAg
YXV0byBhZGRpdGlvbmFsSGVhZGVyRmllbGRzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgaGVhZGVyRmllbGROYW1lcywgaGVhZGVyRmllbGRWYWx1ZXMs
IHNpemVvZihoZWFkZXJGaWVsZE5hbWVzKSAvIHNpemVvZigqaGVhZGVyRmllbGRWYWx1ZXMpLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7CisKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjb25uZWN0RGljdGlvbmFyeS5n
ZXQoKSwga0NGU3RyZWFtUHJvcGVydHlDT05ORUNUQWRkaXRpb25hbEhlYWRlcnMsIGFkZGl0aW9u
YWxIZWFkZXJGaWVsZHMuZ2V0KCkpOworICAgIENGUmVhZFN0cmVhbVNldFByb3BlcnR5KHN0cmVh
bSwga0NGU3RyZWFtUHJvcGVydHlDT05ORUNUUHJveHksIGNvbm5lY3REaWN0aW9uYXJ5LmdldCgp
KTsKK30KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjphZGRDT05ORUNUQ3JlZGVudGlh
bHMoQ0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogewpAQCAtNDM3LDcgKzQ1Nyw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRU
UE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zCiAgICAgICAgIH0KIAogICAgICAgICAvLyBTZXR0aW5n
IHRoZSBhdXRob3JpemF0aW9uIHJlc3VsdHMgaW4gYSBuZXcgY29ubmVjdGlvbiBhdHRlbXB0Lgot
ICAgICAgICB3a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0obV9yZWFkU3Ry
ZWFtLmdldCgpLCBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcuZ2V0KCkpOworICAgICAgICBzZXRD
T05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQoKSwgcHJv
eHlBdXRob3JpemF0aW9uU3RyaW5nLmdldCgpKTsKICAgICAgICAgbV9zZW50U3RvcmVkQ3JlZGVu
dGlhbHMgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDkyLDYgKzUxMiwyNiBA
QCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OndyaXRlU3RyZWFtQ2FsbGJhY2soQ0ZXcml0
ZVN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZQogICAgIGhhbmRsZS0+d3JpdGVTdHJlYW1DYWxsYmFj
ayh0eXBlKTsKICNlbmRpZgogfQorICAgIAorc3RhdGljIFJldGFpblB0cjxDRkhUVFBNZXNzYWdl
UmVmPiBjb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZV
UkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJv
eHlQb3J0KQoreworICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0Q0YoKENGSFRUUE1lc3NhZ2VSZWYp
Q0ZSZWFkU3RyZWFtQ29weVByb3BlcnR5KHN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlDT05ORUNU
UmVzcG9uc2UpKTsKKyAgICAvLyBDRk5ldHdvcmsgbmVlZHMgVVJMIHRvIGJlIHNldCBvbiByZXNw
b25zZSBpbiBvcmRlciB0byBoYW5kbGUgYXV0aGVudGljYXRpb24gLSBldmVuIHRob3VnaCBpdCBk
b2Vzbid0IHNlZW0gdG8gbWFrZSBzZW5zZSB0byBwcm92aWRlIHVsdGltYXRlIHRhcmdldCBVUkwg
d2hlbiBhdXRoZW50aWNhdGluZyB0byBhIHByb3h5LgorICAgIC8vIFRoaXMgaXMgc2V0IGJ5IENG
TmV0d29yayBpbnRlcm5hbGx5IGZvciBub3JtYWwgSFRUUCByZXNwb25zZXMsIGJ1dCBub3QgZm9y
IHByb3hpZXMuCisgICAgX0NGSFRUUE1lc3NhZ2VTZXRSZXNwb25zZVVSTChtZXNzYWdlLmdldCgp
LCByZXNwb25zZVVSTCk7CisKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIC8vIERpdHRvIGZvciBw
cm94eSBVUkwuCisgICAgYXV0byBwcm94eVVSTFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoRm9ybWF0KGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIENGU1RSKCJodHRwczov
LyVAOiVAIiksIHByb3h5SG9zdCwgcHJveHlQb3J0KSk7CisgICAgYXV0byBwcm94eVVSTCA9IGFk
b3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHByb3h5VVJM
U3RyaW5nLmdldCgpLCBudWxscHRyKSk7CisgICAgX0NGSFRUUE1lc3NhZ2VTZXRSZXNwb25zZVBy
b3h5VVJMKG1lc3NhZ2UuZ2V0KCksIHByb3h5VVJMLmdldCgpKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHByb3h5SG9zdCk7CisgICAgVU5VU0VEX1BBUkFNKHByb3h5UG9ydCk7CisjZW5kaWYK
KworICAgIHJldHVybiBtZXNzYWdlOworfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OnJlYWRTdHJlYW1DYWxsYmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBlKQogewpAQCAtNTA2LDcg
KzU0Niw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZFN0cmVhbUNhbGxiYWNr
KENGU3RyZWFtRXZlbnRUeXBlIHR5cGUpCiAKICAgICAgICAgaWYgKG1fY29ubmVjdGluZ1N1YnN0
YXRlID09IFdhaXRpbmdGb3JDb25uZWN0KSB7CiAgICAgICAgICAgICBpZiAobV9jb25uZWN0aW9u
VHlwZSA9PSBDT05ORUNUUHJveHkpIHsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQ
TWVzc2FnZVJlZj4gcHJveHlSZXNwb25zZSA9IGFkb3B0Q0Yod2tDb3B5Q09OTkVDVFByb3h5UmVz
cG9uc2UobV9yZWFkU3RyZWFtLmdldCgpLCBtX2h0dHBzVVJMLmdldCgpLCBtX3Byb3h5SG9zdC5n
ZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZI
VFRQTWVzc2FnZVJlZj4gcHJveHlSZXNwb25zZSA9IGNvcHlDT05ORUNUUHJveHlSZXNwb25zZSht
X3JlYWRTdHJlYW0uZ2V0KCksIG1faHR0cHNVUkwuZ2V0KCksIG1fcHJveHlIb3N0LmdldCgpLCBt
X3Byb3h5UG9ydC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm94eVJlc3BvbnNlKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTU4OCw3ICs2MjgsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OndyaXRlU3RyZWFtQ2FsbGJhY2soQ0ZTdHJlYW1FdmVudFR5
cGUgdHlwZSkKIAogICAgICAgICBpZiAobV9jb25uZWN0aW5nU3Vic3RhdGUgPT0gV2FpdGluZ0Zv
ckNvbm5lY3QpIHsKICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3Rpb25UeXBlID09IENPTk5FQ1RQ
cm94eSkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVmPiBwcm94
eVJlc3BvbnNlID0gYWRvcHRDRih3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZShtX3JlYWRTdHJl
YW0uZ2V0KCksIG1faHR0cHNVUkwuZ2V0KCksIG1fcHJveHlIb3N0LmdldCgpLCBtX3Byb3h5UG9y
dC5nZXQoKSkpOworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVmPiBw
cm94eVJlc3BvbnNlID0gY29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKG1fcmVhZFN0cmVhbS5nZXQo
KSwgbV9odHRwc1VSTC5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQb3J0LmdldCgp
KTsKICAgICAgICAgICAgICAgICBpZiAoIXByb3h5UmVzcG9uc2UpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggODVhYjkxMzY1OWE0
NjE0NGQ5YzQwZTMzNzhkZTY0MzZiYTUxY2QwZC4uNzlmYWVmMDlhYjZjOGRhYmFkOTdmNzhjOWE0
MGY5Yjg3ZjQzNDA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0xMzgsNyArMTM4
LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKICAg
ICB9CiAKICAgICBpZiAobV9uc1JlcXVlc3QpIHsKLSAgICAgICAgTlNTdHJpbmcqIGNhY2hlUGFy
dGl0aW9uID0gW05TVVJMUHJvdG9jb2wgcHJvcGVydHlGb3JLZXk6KE5TU3RyaW5nICopd2tDYWNo
ZVBhcnRpdGlvbktleSgpIGluUmVxdWVzdDptX25zUmVxdWVzdC5nZXQoKV07CisgICAgICAgIE5T
U3RyaW5nKiBjYWNoZVBhcnRpdGlvbiA9IFtOU1VSTFByb3RvY29sIHByb3BlcnR5Rm9yS2V5OihO
U1N0cmluZyAqKV9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSBpblJlcXVlc3Q6bV9uc1JlcXVlc3Qu
Z2V0KCldOwogICAgICAgICBpZiAoY2FjaGVQYXJ0aXRpb24pCiAgICAgICAgICAgICBtX2NhY2hl
UGFydGl0aW9uID0gY2FjaGVQYXJ0aXRpb247CiAgICAgfQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgU3RyaW5n
IHBhcnRpdGlvbiA9IGNhY2hlUGFydGl0aW9uKCk7CiAgICAgaWYgKCFwYXJ0aXRpb24uaXNOdWxs
KCkgJiYgIXBhcnRpdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgTlNTdHJpbmcgKnBhcnRpdGlv
blZhbHVlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOnBhcnRpdGlvbi51dGY4KCku
ZGF0YSgpXTsKLSAgICAgICAgW05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6cGFydGl0aW9uVmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKXdrQ2FjaGVQYXJ0aXRpb25LZXkoKSBpblJlcXVlc3Q6bnNS
ZXF1ZXN0XTsKKyAgICAgICAgW05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6cGFydGl0aW9uVmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKV9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSBpblJlcXVlc3Q6
bnNSZXF1ZXN0XTsKICAgICB9CiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IGZkMTI0Y2JjNDY0ZmFk
YmJjMDAxZTcxZGRjYTIyZTcxYmM4ZTNiY2YuLjdiNjY3NTE2MDFiYWI0ZWMwNTVmZDEyMGIxMWMx
MzM0ZWEzOWQ0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNv
cmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmg+CiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogI2ltcG9ydCA8Q0ZO
ZXR3b3JrL0NGVVJMUmVxdWVzdC5oPgpAQCAtNTcsNiArNTgsMTM2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKIAorc3RhdGljIFJldGFpblB0cjxDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihDRkluZGV4
IHZlcnNpb24sIENGVHlwZVJlZiogb2JqZWN0cywgQ0ZJbmRleCBvYmplY3RDb3VudCwgQ0ZEaWN0
aW9uYXJ5UmVmIHByb3RvY29sUHJvcGVydGllcywgQ0ZOdW1iZXJSZWYgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSwgQ0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sKKyAg
ICBhdXRvIGFyY2hpdmVMaXN0QXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKworICAgIGZv
ciAoQ0ZJbmRleCBpID0gMDsgaSA8IG9iamVjdENvdW50OyArK2kpIHsKKyAgICAgICAgQ0ZUeXBl
UmVmIG9iamVjdCA9IG9iamVjdHNbaV07CisgICAgICAgIGlmIChvYmplY3QpIHsKKyAgICAgICAg
ICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcmNoaXZlTGlzdEFycmF5LmdldCgpLCBvYmplY3QpOwor
ICAgICAgICAgICAgQ0ZSZWxlYXNlKG9iamVjdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBBcHBlbmQgb3VyIHRva2VuIG51bGwgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAg
ICBDRkFycmF5QXBwZW5kVmFsdWUoYXJjaGl2ZUxpc3RBcnJheS5nZXQoKSwgdG9rZW5OdWxsKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisK
KyAgICBhdXRvIHZlcnNpb25OdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtDRk51bWJlckNGSW5kZXhUeXBlLCAmdmVyc2lvbikpOworICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJ2ZXJzaW9uIiksIHZlcnNp
b25OdW1iZXIuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0
KCksIENGU1RSKCJhcmNoaXZlTGlzdCIpLCBhcmNoaXZlTGlzdEFycmF5LmdldCgpKTsKKworICAg
IGlmIChwcm90b2NvbFByb3BlcnRpZXMpIHsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
ZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInByb3RvY29sUHJvcGVydGllcyIpLCBwcm90b2NvbFBy
b3BlcnRpZXMpOworICAgICAgICBDRlJlbGVhc2UocHJvdG9jb2xQcm9wZXJ0aWVzKTsKKyAgICB9
CisKKyAgICBpZiAoZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSB7CisgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJleHBlY3RlZENvbnRlbnRMZW5ndGgi
KSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKKyAgICAgICAgQ0ZSZWxlYXNlKGV4cGVjdGVkQ29u
dGVudExlbmd0aCk7CisgICAgfQorCisgICAgaWYgKG1pbWVUeXBlKSB7CisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJtaW1lVHlwZSIpLCBtaW1l
VHlwZSk7CisgICAgICAgIENGUmVsZWFzZShtaW1lVHlwZSk7CisgICAgfQorCisgICAgQ0ZBbGxv
Y2F0b3JEZWFsbG9jYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9iamVjdHMpOworCisgICAgcmV0
dXJuIGRpY3Rpb25hcnk7Cit9CisKK3N0YXRpYyBDRlR5cGVSZWYgZGljdGlvbmFyeVZhbHVlT2ZU
eXBlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5LCBDRlN0cmluZ1JlZiBrZXksIENGVHlwZUlE
IHR5cGUpCit7CisgICAgQ0ZUeXBlUmVmIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGlj
dGlvbmFyeSwga2V5KTsKKyAgICBpZiAodmFsdWUgJiYgQ0ZHZXRUeXBlSUQodmFsdWUpID09IHR5
cGUpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3Rh
dGljIGJvb2wgY3JlYXRlQXJjaGl2ZUxpc3QoQ0ZEaWN0aW9uYXJ5UmVmIHJlcHJlc2VudGF0aW9u
LCBDRlR5cGVSZWYgdG9rZW5OdWxsLCBDRkluZGV4KiB2ZXJzaW9uLCBDRlR5cGVSZWYqKiBvYmpl
Y3RzLCBDRkluZGV4KiBvYmplY3RDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBwcm90b2NvbFByb3Bl
cnRpZXMsIENGTnVtYmVyUmVmKiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIENGU3RyaW5nUmVmKiBt
aW1lVHlwZSkKK3sKKyAgICBDRk51bWJlclJlZiB2ZXJzaW9uTnVtYmVyID0gKENGTnVtYmVyUmVm
KWRpY3Rpb25hcnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoInZlcnNpb24iKSwg
Q0ZOdW1iZXJHZXRUeXBlSUQoKSk7CisgICAgaWYgKCF2ZXJzaW9uTnVtYmVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUodmVyc2lvbk51bWJlciwg
a0NGTnVtYmVyQ0ZJbmRleFR5cGUsIHZlcnNpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBDRkFycmF5UmVmIGFyY2hpdmVMaXN0QXJyYXkgPSAoQ0ZBcnJheVJlZilkaWN0aW9uYXJ5
VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RSKCJhcmNoaXZlTGlzdCIpLCBDRkFycmF5
R2V0VHlwZUlEKCkpOworICAgIGlmICghYXJjaGl2ZUxpc3RBcnJheSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgKm9iamVjdENvdW50ID0gQ0ZBcnJheUdldENvdW50KGFyY2hpdmVMaXN0
QXJyYXkpOworICAgICpvYmplY3RzID0gKENGVHlwZVJlZiopbWFsbG9jKHNpemVvZihDRlR5cGVS
ZWYpICogKm9iamVjdENvdW50KTsKKyAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCAqb2JqZWN0
Q291bnQ7ICsraSkgeworICAgICAgICBDRlR5cGVSZWYgb2JqZWN0ID0gQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChhcmNoaXZlTGlzdEFycmF5LCBpKTsKKyAgICAgICAgaWYgKG9iamVjdCA9PSB0b2tl
bk51bGwpCisgICAgICAgICAgICAoKm9iamVjdHMpW2ldID0gbnVsbHB0cjsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgKCpvYmplY3RzKVtpXSA9IG9iamVjdDsKKyAgICB9CisKKyAgICBpZiAo
cHJvdG9jb2xQcm9wZXJ0aWVzKQorICAgICAgICAqcHJvdG9jb2xQcm9wZXJ0aWVzID0gKENGRGlj
dGlvbmFyeVJlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RSKCJw
cm90b2NvbFByb3BlcnRpZXMiKSwgQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworCisgICAgaWYg
KGV4cGVjdGVkQ29udGVudExlbmd0aCkKKyAgICAgICAgKmV4cGVjdGVkQ29udGVudExlbmd0aCA9
IChDRk51bWJlclJlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RS
KCJleHBlY3RlZENvbnRlbnRMZW5ndGgiKSwgQ0ZOdW1iZXJHZXRUeXBlSUQoKSk7CisKKyAgICBp
ZiAobWltZVR5cGUpCisgICAgICAgICptaW1lVHlwZSA9IChDRlN0cmluZ1JlZilkaWN0aW9uYXJ5
VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RSKCJtaW1lVHlwZSIpLCBDRlN0cmluZ0dl
dFR5cGVJRCgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gY3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oQ0ZVUkxSZXF1
ZXN0UmVmIGNmUmVxdWVzdCwgQ0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sKKyAgICBDRkluZGV4IHZl
cnNpb247CisgICAgQ0ZUeXBlUmVmKiBvYmplY3RzOworICAgIENGSW5kZXggb2JqZWN0Q291bnQ7
CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3RvY29sUHJvcGVydGllczsKKworICAgIC8vIEZJWE1F
ICgxMjg4OTUxOCk6IERvIG5vdCBzZXJpYWxpemUgSFRUUCBtZXNzYWdlIGJvZHkuCisgICAgLy8g
MS4gSXQgY2FuIGJlIGxhcmdlIGFuZCB0aHVzIGNvc3RseSB0byBzZW5kIGFjcm9zcy4KKyAgICAv
LyAyLiBJdCBpcyBtaXNsZWFkaW5nIHRvIHByb3ZpZGUgYSBib2R5IHdpdGggc29tZSByZXF1ZXN0
cywgd2hpbGUgb3RoZXJzIHVzZSBib2R5IHN0cmVhbXMsIHdoaWNoIGNhbm5vdCBiZSBzZXJpYWxp
emVkIGF0IGFsbC4KKworICAgIF9DRlVSTFJlcXVlc3RDcmVhdGVBcmNoaXZlTGlzdChrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBjZlJlcXVlc3QsICZ2ZXJzaW9uLCAmb2JqZWN0cywgJm9iamVjdENvdW50
LCAmcHJvdG9jb2xQcm9wZXJ0aWVzKTsKKworICAgIC8vIFRoaXMgd2lsbCBkZWFsbG9jYXRlIHRo
ZSBwYXNzZWQgaW4gYXJndW1lbnRzLgorICAgIHJldHVybiBjcmVhdGVTZXJpYWxpemFibGVSZXBy
ZXNlbnRhdGlvbih2ZXJzaW9uLCBvYmplY3RzLCBvYmplY3RDb3VudCwgcHJvdG9jb2xQcm9wZXJ0
aWVzLCBudWxscHRyLCBudWxscHRyLCB0b2tlbk51bGwpOworfQorCitzdGF0aWMgUmV0YWluUHRy
PENGVVJMUmVxdWVzdFJlZj4gY3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJl
c2VudGF0aW9uKENGRGljdGlvbmFyeVJlZiByZXByZXNlbnRhdGlvbiwgQ0ZUeXBlUmVmIHRva2Vu
TnVsbCkKK3sKKyAgICBDRkluZGV4IHZlcnNpb247CisgICAgQ0ZUeXBlUmVmKiBvYmplY3RzOwor
ICAgIENGSW5kZXggb2JqZWN0Q291bnQ7CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3RvY29sUHJv
cGVydGllczsKKworICAgIGlmICghY3JlYXRlQXJjaGl2ZUxpc3QocmVwcmVzZW50YXRpb24sIHRv
a2VuTnVsbCwgJnZlcnNpb24sICZvYmplY3RzLCAmb2JqZWN0Q291bnQsICZwcm90b2NvbFByb3Bl
cnRpZXMsIG51bGxwdHIsIG51bGxwdHIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGF1dG8gY2ZSZXF1ZXN0ID0gYWRvcHRDRihfQ0ZVUkxSZXF1ZXN0Q3JlYXRlRnJvbUFyY2hpdmVM
aXN0KGtDRkFsbG9jYXRvckRlZmF1bHQsIHZlcnNpb24sIG9iamVjdHMsIG9iamVjdENvdW50LCBw
cm90b2NvbFByb3BlcnRpZXMpKTsKKyAgICBmcmVlKG9iamVjdHMpOworICAgIHJldHVybiBXVEZN
b3ZlKGNmUmVxdWVzdCk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBj
cmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIENG
VHlwZVJlZiB0b2tlbk51bGwpCit7CisgICAgcmV0dXJuIGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJl
c2VudGF0aW9uKFtyZXF1ZXN0IF9DRlVSTFJlcXVlc3RdLCB0b2tlbk51bGwpOworfQorCitzdGF0
aWMgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gY3JlYXRlTlNVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6
YWJsZVJlcHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZiByZXByZXNlbnRhdGlvbiwgQ0ZUeXBl
UmVmIHRva2VuTnVsbCkKK3sKKyAgICBhdXRvIGNmUmVxdWVzdCA9IGNyZWF0ZUNGVVJMUmVxdWVz
dEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXByZXNlbnRhdGlvbiwgdG9rZW5OdWxs
KTsKKyAgICBpZiAoIWNmUmVxdWVzdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0
OmNmUmVxdWVzdC5nZXQoKV0pOworfQorCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKIHZvaWQg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CkBA
IC03OSw3ICsyMTAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0CiAgICAgICAgIENGVVJMUmVx
dWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0cmVhbShtdXRhYmxlUmVxdWVzdCwgbmlsKTsKICAgICB9
CiAKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRihX
S0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1Nl
cmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gY3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50
YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7
CiAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7CiAKICAgICAvLyBU
aGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVSTFJlcXVlc3QsIGJ1dCBpdCBpcyBub3Qg
ZW5jb2RlZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9u
LgpAQCAtMTA2LDcgKzIzNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+
OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICAgICAgWyhO
U011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdFRvU2VyaWFsaXplIHNldEhUVFBCb2R5U3RyZWFt
Om5pbF07CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFy
eSA9IGFkb3B0Q0YoV0tOU1VSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlv
bihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Cisg
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGNyZWF0ZVNlcmlhbGl6
YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51
bGxUeXBlUmVmKCkpOwogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkp
OwogCiAgICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBhcnQgb2YgTlNVUkxSZXF1ZXN0LCBi
dXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tOU1VSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVS
ZXByZXNlbnRhdGlvbi4KQEAgLTEzMiwxMyArMjYzLDEzIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgUmVz
b3VyCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCi0g
ICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY2ZVUkxSZXF1ZXN0ID0gYWRvcHRDRihXS0Ny
ZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5
LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOworICAgIFJldGFpblB0cjxDRlVSTFJl
cXVlc3RSZWY+IGNmVVJMUmVxdWVzdCA9IGNyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFi
bGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYo
KSk7CiAgICAgaWYgKCFjZlVSTFJlcXVlc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVSTFJlcXVlc3QuZ2V0KCkpOwog
I2Vsc2UKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBXS05TVVJM
UmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJ
UEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNV
UkxSZXF1ZXN0ID0gY3JlYXRlTlNVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0
aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKICAgICBpZiAo
IW5zVVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAwNDVi
OWIyZDQ4MmU0MjI3OWM5NmU5YTE5M2M0ZWQ3ZDA4NmI3OWMxLi5iZDU3YTdjYjdmOTY1N2VmNTFi
YzUxMWRlYTRjZTE1N2VhODc4ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTQ1NSw3ICs0NTUsNyBAQCBTdHJp
bmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVs
dENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjYWNo
ZVN0b3JhZ2VQYXRoID0gYWRvcHROUygoTlNTdHJpbmcgKilXS0NvcHlGb3VuZGF0aW9uQ2FjaGVE
aXJlY3RvcnkoKSk7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjYWNoZVN0b3JhZ2VQYXRoID0g
YWRvcHROUygoTlNTdHJpbmcgKilfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05TVVJM
Q2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwogICAgIGlmICghY2FjaGVTdG9y
YWdlUGF0aCkKICAgICAgICAgY2FjaGVTdG9yYWdlUGF0aCA9IEAifi9MaWJyYXJ5L1dlYktpdC9D
YWNoZVN0b3JhZ2UiOwogCkBAIC00NjQsNyArNDY0LDcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29s
OjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogCiBTdHJpbmcg
V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpCiB7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjYWNoZVBhdGggPSBhZG9wdE5TKChOU1N0
cmluZyAqKVdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IGNhY2hlUGF0aCA9IGFkb3B0TlMoKE5TU3RyaW5nICopX0NGVVJMQ2FjaGVDb3B5
Q2FjaGVEaXJlY3RvcnkoW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNoZV0p
KTsKICAgICBpZiAoIWNhY2hlUGF0aCkKICAgICAgICAgY2FjaGVQYXRoID0gQCJ+L0xpYnJhcnkv
Q2FjaGVzL2NvbS5hcHBsZS5XZWJLaXQuV2ViUHJvY2VzcyI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNl
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0KaW5kZXggYmRhNWQ3M2RmYzEyMmYzZTAyMjNhYWFlNTUyODRkNGIzOWU1
NzNjZS4uYTYxYjg0MTQ1MzAzNGZiOWM5Y2FiODRiZWY2ZWFhZDEwMTRiZTAyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1J
bnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM2LDE4ICszNiwxMiBAQCB2b2lkIEluaXRX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBp
bml0T25jZTsKICAgICAKICAgICBkaXNwYXRjaF9vbmNlKCZpbml0T25jZSwgXnsKLSAgICAgICAg
SU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAg
ICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7CiAgICAgICAgIElOSVQoRHJhd01lZGlhU2xp
ZGVyVHJhY2spOwogICAgICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7CiAgICAgICAgIElOSVQo
SGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBhcnQpOwot
I2VuZGlmCi0gICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVh
bSk7Ci0gICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKTsKLQotI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93
TGVvcGFyZCk7CiAgICAgICAgIElOSVQoQ29weURlZmF1bHRTZWFyY2hQcm92aWRlckRpc3BsYXlO
YW1lKTsKICAgICAgICAgSU5JVChDdXJzb3IpOwpAQCAtNTgsMTIgKzUyLDYgQEAgdm9pZCBJbml0
V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJTklUKE5TUmVib3VuZERlbHRh
Rm9yRWxhc3RpY0RlbHRhKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElT
VCkKLSAgICAgICAgSU5JVChJc1B1YmxpY1N1ZmZpeCk7Ci0jZW5kaWYKLQotICAgICAgICBJTklU
KENhY2hlUGFydGl0aW9uS2V5KTsKLQogICAgICAgICBJTklUKEV4ZXJuYWxEZXZpY2VUeXBlRm9y
UGxheWVyKTsKICAgICAgICAgSU5JVChFeGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMTc0NjU4NmIyNDJmNTJlMDdhOTlmZTkx
NWFhNmI0ZjYyYTNiYzVkNC4uMDYyMDJjZWVkYWNkYjcwMTk3Y2JlMTBiODNjNmVmNzUyNTJkZDA2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDIsNyArNDIsNiBAQCB2b2lkIEluaXRX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgaWYgKGRpZEluaXQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIElOSVQoQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICNpZiAhUExBVEZP
Uk0oSU9TKQogICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7CiAgICAgSU5JVChEcmF3TWVk
aWFVSVBhcnQpOwpAQCAtNTAsOCArNDksNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlKHZvaWQpCiAgICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQpOwogICAgIElOSVQoTWVhc3Vy
ZU1lZGlhVUlQYXJ0KTsKICNlbmRpZgotICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0aG9yaXph
dGlvbkZvclN0cmVhbSk7Ci0gICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwogCiAj
aWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKEV4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3Jl
U25vd0xlb3BhcmQpOwpAQCAtNjcsMTIgKzY0LDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSh2b2lkKQogICAgIElOSVQoTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQotICAgIElOSVQoSXNQdWJs
aWNTdWZmaXgpOwotI2VuZGlmCi0KLSAgICBJTklUKENhY2hlUGFydGl0aW9uS2V5KTsKLQogICAg
IElOSVQoRXhlcm5hbERldmljZVR5cGVGb3JQbGF5ZXIpOwogICAgIElOSVQoRXhlcm5hbERldmlj
ZURpc3BsYXlOYW1lRm9yUGxheWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCmluZGV4IGM3MjMzYmUxMzMyZGI4YjVmYWU3Nzg3YzlhNjhlNjEzZjRjYTNi
ZjkuLmI1ZTcyNjNmM2RmMmNkZjIwOTFhODMyOGJiYmVmOTc0NGU1MmM2OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTg1NzMsNyArODU3Myw3IEBA
ICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogICAgIGlm
IChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2NhY2hlTW9kZWwpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIE5TU3RyaW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0gQ0ZCcmlk
Z2luZ1JlbGVhc2UoV0tDb3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIE5TU3Ry
aW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoX0NGVVJMQ2FjaGVD
b3B5Q2FjaGVEaXJlY3RvcnkoW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNo
ZV0pKTsKICAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIG5zdXJsQ2FjaGVE
aXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320660</attachid>
            <date>2017-09-13 11:04:01 -0700</date>
            <delta_ts>2017-09-13 11:48:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176729-20170913110400.patch</filename>
            <type>text/plain</type>
            <size>34963</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjNmM4ODQ2MTYwNmMx
MTlkNTJjNTNjNmZlNjI4MWU5YzA3MTRkNC4uYjRhOTAyYmViY2FjYmFjMWE4ZTU1N2I0MTFlZmUw
NDVkYTJlMTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0
d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUHVibGlj
U3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNQdWJsaWNTdWZmaXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvcHlDT05ORUNUUHJveHlSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBs
YXRmb3JtUmVxdWVzdCk6CisKIDIwMTctMDktMTEgIFlvc2hpYWtpIEppdHN1a2F3YSAgPFlvc2hp
YWtpLkppdHN1a2F3YUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEZpeCB0aGUgd2lu
Y2Fpcm8gYnVpbGQgYWZ0ZXIgcjIyMTgzOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZmJhMTQyYTA5
MjU3N2NiNTVlMGEzZmY2MzE1NGM1NTZjMmU4Y2U1MS4uZjE0MjY1MWQ2ZTAwYTU0OWFkYTFkYTFl
NzIwMWE0ZjIwZjg5MDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIw
MTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCisgICAgICAgIFtDRl0g
VXBzdHJlYW0gQ0ZOZXR3b3JrLXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKKzIwMTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmVmMzQzOTQwM2UzZTRj
OGE0MWM3NTY4NWQ1NmVlNTdiYmVjZjdlNy4uYTJlZDQwMGFiZjIyNmQ4ODZkZjU3ZDliYzIxZjIx
NzI1YjczNjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OmNyZWF0ZVNlcmlhbGl6YWJsZVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKElQQzo6ZGljdGlvbmFyeVZhbHVlT2ZUeXBlKToKKyAg
ICAgICAgKElQQzo6Y3JlYXRlQXJjaGl2ZUxpc3QpOgorICAgICAgICAoSVBDOjpjcmVhdGVDRlVS
TFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSVBDOjpj
cmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKworMjAxNy0wOS0xMSAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0g
UVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg1NmExYWVlOTgxYTlkNmYwNDMxZDFmNGM1YWYwY2E5YWQy
YTJjNzAuLjQyZDE1YWEwYWM5MTVkYzQ0N2JlM2RhNmU5YzM1YjYzZGM2OGE1MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfc2V0
Q2FjaGVNb2RlbDpdKToKKworMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaAppbmRleCAwYWU4MGM3ODdiOGU4MWI5YTg0ZjAxYjkxNmI4YmY3NGE5MzJkZjNj
Li4zZTU4NDNlYWQ1YjQzYzUzODgzZGY4MWI2NDBjOWNmNDM1ODQ3ZWYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMTk0LDYgKzE5NCw3IEBA
IHZvaWQgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9j
ayhDRkNhY2hlZFVSTFJlc3BvbnNlUmVmCiBleHRlcm4gQ0ZTdHJpbmdSZWYgY29uc3Qga0NGSFRU
UENvb2tpZUxvY2FsRmlsZURvbWFpbjsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQ
VmVyc2lvbjFfMTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxSZXF1ZXN0QWxsb3dB
bGxQT1NUQ2FjaGluZzsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGVVJMQ2FjaGVQYXJ0
aXRpb25LZXk7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVSTENvbm5lY3Rpb25Qcm9w
ZXJ0eVNob3VsZFNuaWZmOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZVUkxTdG9yYWdl
U2Vzc2lvbklzUHJpdmF0ZTsKIApAQCAtMjM2LDkgKzIzNywyMiBAQCBDRkFycmF5UmVmIENGSFRU
UENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsKIHZvaWQg
Q0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgQ0ZB
cnJheVJlZiBjb29raWVzLCBDRlVSTFJlZiwgQ0ZVUkxSZWYgbWFpbkRvY3VtZW50VVJMKTsKIHZv
aWQgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUNvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVm
LCBDRkhUVFBDb29raWVSZWYpOwogQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlQ29weShDRkFsbG9jYXRvclJlZiwgQ0ZVUkxSZXF1ZXN0UmVmKTsKK0NGU3Ry
aW5nUmVmIF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KENGVVJMQ2FjaGVSZWYpOworQm9v
bGVhbiBfQ0ZIb3N0SXNEb21haW5Ub3BMZXZlbChDRlN0cmluZ1JlZiBkb21haW4pOwordm9pZCBf
Q0ZVUkxSZXF1ZXN0Q3JlYXRlQXJjaGl2ZUxpc3QoQ0ZBbGxvY2F0b3JSZWYsIENGVVJMUmVxdWVz
dFJlZiwgQ0ZJbmRleCogdmVyc2lvbiwgQ0ZUeXBlUmVmKiogb2JqZWN0cywgQ0ZJbmRleCogb2Jq
ZWN0Q291bnQsIENGRGljdGlvbmFyeVJlZiogcHJvdG9jb2xQcm9wZXJ0aWVzKTsKK0NGTXV0YWJs
ZVVSTFJlcXVlc3RSZWYgX0NGVVJMUmVxdWVzdENyZWF0ZUZyb21BcmNoaXZlTGlzdChDRkFsbG9j
YXRvclJlZiwgQ0ZJbmRleCB2ZXJzaW9uLCBDRlR5cGVSZWYqIG9iamVjdHMsIENGSW5kZXggb2Jq
ZWN0Q291bnQsIENGRGljdGlvbmFyeVJlZiBwcm90b2NvbFByb3BlcnRpZXMpOwogCiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKFdJTikKIAorQ0ZOX0VYUE9SVCBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJl
YW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eTsKK0NGTl9FWFBPUlQgY29uc3QgQ0ZTdHJpbmdSZWYga0NG
U3RyZWFtUHJvcGVydHlDT05ORUNUUHJveHlIb3N0OworQ0ZOX0VYUE9SVCBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eVBvcnQ7CitDRk5fRVhQT1JUIGNvbnN0
IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVEFkZGl0aW9uYWxIZWFkZXJzOwor
Q0ZOX0VYUE9SVCBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RSZXNw
b25zZTsKKworQ0ZOX0VYUE9SVCB2b2lkIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VVUkwoQ0ZI
VFRQTWVzc2FnZVJlZiwgQ0ZVUkxSZWYpOworQ0ZOX0VYUE9SVCB2b2lkIF9DRkhUVFBNZXNzYWdl
U2V0UmVzcG9uc2VQcm94eVVSTChDRkhUVFBNZXNzYWdlUmVmLCBDRlVSTFJlZik7CisKIFdURl9F
WFRFUk5fQ19FTkQKIAogI2lmIGRlZmluZWQoX19PQkpDX18pICYmICFVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCBkNzMzOThlYzJiNDNkMWUzN2RiZmE4ZWJlN2Vh
NDAyYzYxZjI4ZjRmLi4xYjk2OWVjZDY4OWRkNjJiNjJmYzM0ZDViYThlOTllMWM4YmE4M2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZUlPUy5tbQpAQCAtMjksMTAgKzI5LDcgQEAKIFdFQkNPUkVfRVhQT1JUIHZvaWQg
KCp3a0NsZWFyR2x5cGhWZWN0b3IpKHZvaWQqIGdseXBocyk7CiBXRUJDT1JFX0VYUE9SVCBPU1N0
YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCogc3R5bGVHcm91cCwgY29uc3QgVW5p
Q2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGdseXBocyk7CiBXRUJDT1JFX0VY
UE9SVCBpZCAoKndrQ3JlYXRlTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSkodm9pZCk7Ci1X
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0
cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93
c2luZ0VuYWJsZWQpKEJPT0wpOwotV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQTWVzc2FnZVJlZiAoKndr
Q29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3Bv
bnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiBX
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRMYXllckNvbnRlbnRzU2NhbGUpKENBTGF5ZXIgKik7
CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZl
cmVuY2VzKSh2b2lkKTsKQEAgLTQ4LDEyICs0NSw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2woKndr
Q2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUpKENHRmxvYXQqKTsKIFdF
QkNPUkVfRVhQT1JUIGludCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUpKHZv
aWQpOwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRT
ZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24pKHZvaWQpOwogCi0jaWYgRU5BQkxFKFBVQkxJQ19T
VUZGSVhfTElTVCkKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0lzUHVibGljU3VmZml4KShOU1N0
cmluZyAqaG9zdCk7Ci0jZW5kaWYKLQotV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgKCp3a0Nh
Y2hlUGFydGl0aW9uS2V5KSh2b2lkKTsKLQogV0VCQ09SRV9FWFBPUlQgaW50ICgqd2tFeGVybmFs
RGV2aWNlVHlwZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmlu
ZyAqKCp3a0V4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCmluZGV4
IDkzMGEzNDc1MzBmNDdlODljMTM4Mjk5YTMzZDJmODY5ZDEwZWY1MDYuLjNmNDMxNzIzOGVkZTMz
NzZkZWFiNmNhMDljYThhYWFiZjg0MTgwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpAQCAtMjYsMTEgKzI2LDExIEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIlB1YmxpY1N1ZmZpeC5oIgogCi0jaW1wb3J0ICJXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKLQogI2lmIEVO
QUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAKKyNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5o
IgorI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKwogQGludGVyZmFjZSBOU1N0
cmluZyAoV2ViQ29yZU5TVVJMRXh0cmFzKQogLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVz
czsKIEBlbmQKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogYm9vbCBpc1B1
YmxpY1N1ZmZpeChjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKICAgICBOU1N0cmluZyAqaG9zdCA9
IGRlY29kZUhvc3ROYW1lKGRvbWFpbik7Ci0gICAgcmV0dXJuIGhvc3QgJiYgd2tJc1B1YmxpY1N1
ZmZpeChob3N0KTsKKyAgICByZXR1cm4gaG9zdCAmJiBfQ0ZIb3N0SXNEb21haW5Ub3BMZXZlbCgo
Q0ZTdHJpbmdSZWYpaG9zdCk7CiB9CiAKIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluKGNvbnN0IFN0cmluZyYgZG9tYWluKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggZjY3NTk1MDlhMTFmY2UzMzQx
M2ZlNjkwMzNhNDY4NTZmNTk3NDU1OC4uOWVjYzM0MWM1MTYyMzExNDM5YzQyZTdiZGZhMjA3ZGU2
N2QwNDUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMzMsMTIgKzEzMyw2IEBAIGV4dGVybiBCT09MICgqd2tI
aXRUZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50
KTsKIGV4dGVybiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3Qg
KmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiAKIGV4dGVybiB2b2lkICgqd2tTZXRDb29r
aWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7Ci0jZW5kaWYKLWV4dGVybiB2
b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJp
bmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwotZXh0ZXJuIHZvaWQgKCp3
a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwg
Q0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKLWV4dGVybiBDRkhUVFBNZXNz
YWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZV
UkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJv
eHlQb3J0KTsKLQotI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9pZCogd2tHZXRIeXBoZW5h
dGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CiAjZW5kaWYKIApAQCAtMTY3LDEyICsxNjEsNiBAQCBl
eHRlcm4gQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEpKENHRmxvYXQg
ZGVsdGEpOwogZXh0ZXJuIENHRmxvYXQgKCp3a05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRh
KShDR0Zsb2F0IGRlbHRhKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElT
VCkKLWV4dGVybiBib29sICgqd2tJc1B1YmxpY1N1ZmZpeCkoTlNTdHJpbmcgKmhvc3QpOwotI2Vu
ZGlmCi0KLWV4dGVybiBDRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRpb25LZXkpKHZvaWQpOwot
CiB0eXBlZGVmIGVudW0gewogICAgIHdrRXh0ZXJuYWxQbGF5YmFja1R5cGVOb25lLAogICAgIHdr
RXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRleCAyZWFiZDRmMTRmMzkz
MzZlMzM0MGNlOGVkZWUzN2U0ODJkZDY4MDJlLi4zNTEwZDk5YmNmNTdmNjVjMDE4OTY2OTU0MjY1
ZTJiODliYWVlYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDAsMTAgKzQwLDYgQEAgTlNUaW1lSW50ZXJ2
YWwgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UKIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UpOwogdm9pZCAoKndrUG9wdXBNZW51KShOU01lbnUqLCBOU1Bv
aW50IGxvY2F0aW9uLCBmbG9hdCB3aWR0aCwgTlNWaWV3KiwgaW50IHNlbGVjdGVkSXRlbSwgTlNG
b250KiwgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSwgYm9vbCB1c2VzQ3VzdG9tQXBwZWFyYW5j
ZSk7CiAKLXZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVm
LCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7Ci12b2lkICgq
d2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYs
IENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7Ci1DRkhUVFBNZXNzYWdlUmVm
ICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYg
cmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0
KTsKLQogdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CiAKIGJvb2wg
KCp3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpKHZvaWQpOwpAQCAt
NjIsMTIgKzU4LDYgQEAgQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEp
KENHRmxvYXQgZGVsdGEpOwogQ0dGbG9hdCAoKndrTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVs
dGEpKENHRmxvYXQgZGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9M
SVNUKQotYm9vbCAoKndrSXNQdWJsaWNTdWZmaXgpKE5TU3RyaW5nICpob3N0KTsKLSNlbmRpZgot
Ci1DRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRpb25LZXkpKHZvaWQpOwotCiBpbnQgKCp3a0V4
ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKShBVlBsYXllciAqKTsKIE5TU3RyaW5nICooKndrRXhl
cm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKShBVlBsYXllciAqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcAppbmRleCAwYjU3YWE0MzAyNTcwYzYxNDg2ODljMGUwOTYyNWM5MGQxYzhhNjIz
Li45ZTc1ZWEzMjgyNDEyZDE2YjY0MTIxOTI5YmY3YTE2ZDc0YzdiYzgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgaWYgKCFwYXJ0aXRpb24uaXNOdWxsKCkgJiYgIXBh
cnRpdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gcGFydGl0
aW9uLnV0ZjgoKTsKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXJ0aXRpb25WYWx1
ZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSkpOwotICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJv
dG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIHdrQ2FjaGVQYXJ0aXRpb25LZXkoKSwgcGFydGl0aW9u
VmFsdWUuZ2V0KCkpOworICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShj
ZlJlcXVlc3QsIGtDRlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRpb25WYWx1ZS5nZXQoKSk7
CiAgICAgfQogI2VuZGlmCiAKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgIH0KIAogI2lmIEVOQUJMRShDQUNIRV9Q
QVJUSVRJT05JTkcpCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZVBhcnRpdGlvbiA9
IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9j
b2xQcm9wZXJ0eUZvcktleShtX2NmUmVxdWVzdC5nZXQoKSwgd2tDYWNoZVBhcnRpdGlvbktleSgp
KSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXJ0aXRpb24gPSBhZG9wdENG
KHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJvcGVy
dHlGb3JLZXkobV9jZlJlcXVlc3QuZ2V0KCksIGtDRlVSTENhY2hlUGFydGl0aW9uS2V5KSkpOwog
ICAgIGlmIChjYWNoZVBhcnRpdGlvbikKICAgICAgICAgbV9jYWNoZVBhcnRpdGlvbiA9IGNhY2hl
UGFydGl0aW9uLmdldCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5j
cHAKaW5kZXggMDk5OGExZTg1ZmYwYzYzMzlhMmVlOGFhMzY5NDk1MzgwNDgwYTJiOS4uNDA5ODhh
MGE5OTgwMWMxZmJkZmRlNWExOWY5ZTNiMDBmN2ZlYWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbENGTmV0LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Db25kaXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKICNpZiBQTEFURk9STShXSU4pCkBAIC02Miw2ICs2MywxMSBAQCBleHRlcm4gIkMi
IGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZTdHJlYW1Tb2NrZXRTZXROb0RlbGF5OwogI2ltcG9ydCA8
cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQor
U09GVF9MSU5LX0xJQlJBUlkoQ0ZOZXR3b3JrKTsKK1NPRlRfTElOS19PUFRJT05BTChDRk5ldHdv
cmssIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VQcm94eVVSTCwgdm9pZCwgX19jZGVjbCwgKENG
SFRUUE1lc3NhZ2VSZWYsIENGVVJMUmVmKSk7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0
IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFw
cGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKQEAgLTMwMiw2ICszMDgsMTMgQEAgdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJheShDRkFycmF5UmVm
IHByb3h5QXJyYXkpCiAgICAgbV9jb25uZWN0aW9uVHlwZSA9IERpcmVjdDsKIH0KIAorc3RhdGlj
IHZvaWQgc2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENG
U3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KQoreworICAgIGNvbnN0
IHZvaWQqIHByb3h5S2V5c1tdID0geyBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eUhvc3Qs
IGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVFByb3h5UG9ydCB9OworICAgIGNvbnN0IHZvaWQqIHBy
b3h5VmFsdWVzW10gPSB7IHByb3h5SG9zdCwgcHJveHlQb3J0IH07CisgICAgYXV0byBjb25uZWN0
RGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHByb3h5S2V5cywgcHJveHlWYWx1ZXMsIHNpemVvZihwcm94eUtleXMpIC8gc2l6ZW9mKCpw
cm94eUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkoc3RyZWFt
LCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSwgY29ubmVjdERpY3Rpb25hcnkuZ2V0KCkp
OworfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMoKQogewpA
QCAtMzQ3LDcgKzM2MCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3Ry
ZWFtcygpCiAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgY2FzZSBDT05ORUNUUHJveHk6
Ci0gICAgICAgIHdrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQoKSwg
bV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQb3J0LmdldCgpKTsKKyAgICAgICAgc2V0Q09OTkVD
VFByb3h5Rm9yU3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1f
cHJveHlQb3J0LmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zOTUsNiArNDA4
LDE5IEBAIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBhdXRoZW50
aWNhdGlvblNjaGVtZUZyb21BdXRoZW50aWNhdGlvCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bjsK
IH0KKyAgICAKK3N0YXRpYyB2b2lkIHNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJl
YW0oQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9u
U3RyaW5nKQoreworICAgIGF1dG8gb3JpZ2luYWxDT05ORUNURGljdGlvbmFyeSA9IGFkb3B0Q0Yo
KENGRGljdGlvbmFyeVJlZilDRlJlYWRTdHJlYW1Db3B5UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJl
YW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSkpOworICAgIGF1dG8gY29ubmVjdERpY3Rpb25hcnkgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsIG9yaWdpbmFsQ09OTkVDVERpY3Rpb25hcnkuZ2V0KCkpKTsKKworICAgIGNvbnN0IHZvaWQq
IGhlYWRlckZpZWxkTmFtZXNbXSA9IHsgQ0ZTVFIoIlByb3h5LUF1dGhvcml6YXRpb24iKSB9Owor
ICAgIGNvbnN0IHZvaWQqIGhlYWRlckZpZWxkVmFsdWVzW10gPSB7IHByb3h5QXV0aG9yaXphdGlv
blN0cmluZyB9OworICAgIGF1dG8gYWRkaXRpb25hbEhlYWRlckZpZWxkcyA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGhlYWRlckZpZWxkTmFtZXMsIGhl
YWRlckZpZWxkVmFsdWVzLCBzaXplb2YoaGVhZGVyRmllbGROYW1lcykgLyBzaXplb2YoKmhlYWRl
ckZpZWxkVmFsdWVzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworCisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29u
bmVjdERpY3Rpb25hcnkuZ2V0KCksIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVEFkZGl0aW9uYWxI
ZWFkZXJzLCBhZGRpdGlvbmFsSGVhZGVyRmllbGRzLmdldCgpKTsKKyAgICBDRlJlYWRTdHJlYW1T
ZXRQcm9wZXJ0eShzdHJlYW0sIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVFByb3h5LCBjb25uZWN0
RGljdGlvbmFyeS5nZXQoKSk7Cit9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRk
Q09OTkVDVENyZWRlbnRpYWxzKENGSFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIHsKQEAg
LTQzNyw3ICs0NjMsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RD
cmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gU2V0dGluZyB0aGUgYXV0aG9yaXphdGlvbiByZXN1bHRzIGluIGEgbmV3IGNvbm5l
Y3Rpb24gYXR0ZW1wdC4KLSAgICAgICAgd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9y
U3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQoKSwgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nLmdldCgp
KTsKKyAgICAgICAgc2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbShtX3JlYWRT
dHJlYW0uZ2V0KCksIHByb3h5QXV0aG9yaXphdGlvblN0cmluZy5nZXQoKSk7CiAgICAgICAgIG1f
c2VudFN0b3JlZENyZWRlbnRpYWxzID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTQ5Myw2ICs1MTksMzYgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjp3cml0ZVN0cmVh
bUNhbGxiYWNrKENGV3JpdGVTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmUKICNlbmRpZgogfQogCitz
dGF0aWMgdm9pZCBzZXRSZXNwb25zZVByb3h5VVJMKENGSFRUUE1lc3NhZ2VSZWYgbWVzc2FnZSwg
Q0ZVUkxSZWYgcHJveHlVUkwpCit7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIGlmIChfQ0ZIVFRQ
TWVzc2FnZVNldFJlc3BvbnNlUHJveHlVUkxQdHIoKSkKKyAgICAgICAgX0NGSFRUUE1lc3NhZ2VT
ZXRSZXNwb25zZVByb3h5VVJMUHRyKCkobWVzc2FnZSwgcHJveHlVUkwpOworI2Vsc2UKKyAgICBf
Q0ZIVFRQTWVzc2FnZVNldFJlc3BvbnNlUHJveHlVUkwobWVzc2FnZSwgcHJveHlVUkwpOworI2Vu
ZGlmCit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gY29weUNPTk5FQ1RQ
cm94eVJlc3BvbnNlKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGVVJMUmVmIHJlc3BvbnNlVVJM
LCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCkKK3sKKyAgICBh
dXRvIG1lc3NhZ2UgPSBhZG9wdENGKChDRkhUVFBNZXNzYWdlUmVmKUNGUmVhZFN0cmVhbUNvcHlQ
cm9wZXJ0eShzdHJlYW0sIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVFJlc3BvbnNlKSk7CisgICAg
Ly8gQ0ZOZXR3b3JrIG5lZWRzIFVSTCB0byBiZSBzZXQgb24gcmVzcG9uc2UgaW4gb3JkZXIgdG8g
aGFuZGxlIGF1dGhlbnRpY2F0aW9uIC0gZXZlbiB0aG91Z2ggaXQgZG9lc24ndCBzZWVtIHRvIG1h
a2Ugc2Vuc2UgdG8gcHJvdmlkZSB1bHRpbWF0ZSB0YXJnZXQgVVJMIHdoZW4gYXV0aGVudGljYXRp
bmcgdG8gYSBwcm94eS4KKyAgICAvLyBUaGlzIGlzIHNldCBieSBDRk5ldHdvcmsgaW50ZXJuYWxs
eSBmb3Igbm9ybWFsIEhUVFAgcmVzcG9uc2VzLCBidXQgbm90IGZvciBwcm94aWVzLgorICAgIF9D
RkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VVUkwobWVzc2FnZS5nZXQoKSwgcmVzcG9uc2VVUkwpOwor
CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICAvLyBEaXR0byBmb3IgcHJveHkgVVJMLgorICAgIGF1
dG8gcHJveHlVUkxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdChrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBDRlNUUigiaHR0cHM6Ly8lQDolQCIpLCBwcm94eUhv
c3QsIHByb3h5UG9ydCkpOworICAgIGF1dG8gcHJveHlVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRl
V2l0aFN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm94eVVSTFN0cmluZy5nZXQoKSwgbnVs
bHB0cikpOworICAgIHNldFJlc3BvbnNlUHJveHlVUkwobWVzc2FnZS5nZXQoKSwgcHJveHlVUkwu
Z2V0KCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocHJveHlIb3N0KTsKKyAgICBVTlVTRURf
UEFSQU0ocHJveHlQb3J0KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG1lc3NhZ2U7Cit9CisKIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZl
bnRUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC01MDYsNyArNTYyLDcgQEAg
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2soQ0ZTdHJlYW1F
dmVudFR5cGUgdHlwZSkKIAogICAgICAgICBpZiAobV9jb25uZWN0aW5nU3Vic3RhdGUgPT0gV2Fp
dGluZ0ZvckNvbm5lY3QpIHsKICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3Rpb25UeXBlID09IENP
Tk5FQ1RQcm94eSkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVm
PiBwcm94eVJlc3BvbnNlID0gYWRvcHRDRih3a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZShtX3Jl
YWRTdHJlYW0uZ2V0KCksIG1faHR0cHNVUkwuZ2V0KCksIG1fcHJveHlIb3N0LmdldCgpLCBtX3By
b3h5UG9ydC5nZXQoKSkpOworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdl
UmVmPiBwcm94eVJlc3BvbnNlID0gY29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKG1fcmVhZFN0cmVh
bS5nZXQoKSwgbV9odHRwc1VSTC5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQb3J0
LmdldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIXByb3h5UmVzcG9uc2UpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtNTg4LDcgKzY0NCw3IEBAIHZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBlKQog
CiAgICAgICAgIGlmIChtX2Nvbm5lY3RpbmdTdWJzdGF0ZSA9PSBXYWl0aW5nRm9yQ29ubmVjdCkg
ewogICAgICAgICAgICAgaWYgKG1fY29ubmVjdGlvblR5cGUgPT0gQ09OTkVDVFByb3h5KSB7Ci0g
ICAgICAgICAgICAgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHByb3h5UmVzcG9uc2Ug
PSBhZG9wdENGKHdrQ29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKG1fcmVhZFN0cmVhbS5nZXQoKSwg
bV9odHRwc1VSTC5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQb3J0LmdldCgpKSk7
CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IHByb3h5UmVzcG9u
c2UgPSBjb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UobV9yZWFkU3RyZWFtLmdldCgpLCBtX2h0dHBz
VVJMLmdldCgpLCBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIGlmICghcHJveHlSZXNwb25zZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCA4NWFiOTEzNjU5YTQ2MTQ0ZDljNDBl
MzM3OGRlNjQzNmJhNTFjZDBkLi43OWZhZWYwOWFiNmM4ZGFiYWQ5N2Y3OGM5YTQwZjliODdmNDM0
MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgIH0KIAogICAg
IGlmIChtX25zUmVxdWVzdCkgewotICAgICAgICBOU1N0cmluZyogY2FjaGVQYXJ0aXRpb24gPSBb
TlNVUkxQcm90b2NvbCBwcm9wZXJ0eUZvcktleTooTlNTdHJpbmcgKil3a0NhY2hlUGFydGl0aW9u
S2V5KCkgaW5SZXF1ZXN0Om1fbnNSZXF1ZXN0LmdldCgpXTsKKyAgICAgICAgTlNTdHJpbmcqIGNh
Y2hlUGFydGl0aW9uID0gW05TVVJMUHJvdG9jb2wgcHJvcGVydHlGb3JLZXk6KE5TU3RyaW5nICop
X2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVzdDptX25zUmVxdWVzdC5nZXQoKV07CiAg
ICAgICAgIGlmIChjYWNoZVBhcnRpdGlvbikKICAgICAgICAgICAgIG1fY2FjaGVQYXJ0aXRpb24g
PSBjYWNoZVBhcnRpdGlvbjsKICAgICB9CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBSZXNvdXJj
ZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBTdHJpbmcgcGFydGl0aW9u
ID0gY2FjaGVQYXJ0aXRpb24oKTsKICAgICBpZiAoIXBhcnRpdGlvbi5pc051bGwoKSAmJiAhcGFy
dGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBOU1N0cmluZyAqcGFydGl0aW9uVmFsdWUgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6cGFydGl0aW9uLnV0ZjgoKS5kYXRhKCldOwot
ICAgICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25WYWx1ZSBmb3JLZXk6
KE5TU3RyaW5nICopd2tDYWNoZVBhcnRpdGlvbktleSgpIGluUmVxdWVzdDpuc1JlcXVlc3RdOwor
ICAgICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25WYWx1ZSBmb3JLZXk6
KE5TU3RyaW5nICopX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVzdDpuc1JlcXVlc3Rd
OwogICAgIH0KIAogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMjAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggZmQxMjRjYmM0NjRmYWRiYmMwMDFlNzFk
ZGNhMjJlNzFiYzhlM2JjZi4uN2I2Njc1MTYwMWJhYjRlYzA1NWZkMTIwYjExYzEzMzRlYTM5ZDQ3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENv
ZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzTWFjLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Byb3RlY3Rp
b25TcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaD4KIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZV
UkxSZXF1ZXN0Lmg+CkBAIC01Nyw2ICs1OCwxMzYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBJUEMgewogCitzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25h
cnlSZWY+IGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKENGSW5kZXggdmVyc2lvbiwg
Q0ZUeXBlUmVmKiBvYmplY3RzLCBDRkluZGV4IG9iamVjdENvdW50LCBDRkRpY3Rpb25hcnlSZWYg
cHJvdG9jb2xQcm9wZXJ0aWVzLCBDRk51bWJlclJlZiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIENG
U3RyaW5nUmVmIG1pbWVUeXBlLCBDRlR5cGVSZWYgdG9rZW5OdWxsKQoreworICAgIGF1dG8gYXJj
aGl2ZUxpc3RBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworCisgICAgZm9yIChDRkluZGV4
IGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7ICsraSkgeworICAgICAgICBDRlR5cGVSZWYgb2JqZWN0
ID0gb2JqZWN0c1tpXTsKKyAgICAgICAgaWYgKG9iamVjdCkgeworICAgICAgICAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKGFyY2hpdmVMaXN0QXJyYXkuZ2V0KCksIG9iamVjdCk7CisgICAgICAgICAg
ICBDRlJlbGVhc2Uob2JqZWN0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEFw
cGVuZCBvdXIgdG9rZW4gbnVsbCByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgIENGQXJyYXlB
cHBlbmRWYWx1ZShhcmNoaXZlTGlzdEFycmF5LmdldCgpLCB0b2tlbk51bGwpOworICAgICAgICB9
CisgICAgfQorCisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIGF1dG8g
dmVyc2lvbk51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsICZ2ZXJzaW9uKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInZlcnNpb24iKSwgdmVyc2lvbk51bWJlci5n
ZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIo
ImFyY2hpdmVMaXN0IiksIGFyY2hpdmVMaXN0QXJyYXkuZ2V0KCkpOworCisgICAgaWYgKHByb3Rv
Y29sUHJvcGVydGllcykgeworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShkaWN0aW9uYXJ5
LmdldCgpLCBDRlNUUigicHJvdG9jb2xQcm9wZXJ0aWVzIiksIHByb3RvY29sUHJvcGVydGllcyk7
CisgICAgICAgIENGUmVsZWFzZShwcm90b2NvbFByb3BlcnRpZXMpOworICAgIH0KKworICAgIGlm
IChleHBlY3RlZENvbnRlbnRMZW5ndGgpIHsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
ZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoImV4cGVjdGVkQ29udGVudExlbmd0aCIpLCBleHBlY3Rl
ZENvbnRlbnRMZW5ndGgpOworICAgICAgICBDRlJlbGVhc2UoZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KTsKKyAgICB9CisKKyAgICBpZiAobWltZVR5cGUpIHsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIm1pbWVUeXBlIiksIG1pbWVUeXBlKTsKKyAg
ICAgICAgQ0ZSZWxlYXNlKG1pbWVUeXBlKTsKKyAgICB9CisKKyAgICBDRkFsbG9jYXRvckRlYWxs
b2NhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb2JqZWN0cyk7CisKKyAgICByZXR1cm4gZGljdGlv
bmFyeTsKK30KKworc3RhdGljIENGVHlwZVJlZiBkaWN0aW9uYXJ5VmFsdWVPZlR5cGUoQ0ZEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnksIENGU3RyaW5nUmVmIGtleSwgQ0ZUeXBlSUQgdHlwZSkKK3sK
KyAgICBDRlR5cGVSZWYgdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBr
ZXkpOworICAgIGlmICh2YWx1ZSAmJiBDRkdldFR5cGVJRCh2YWx1ZSkgPT0gdHlwZSkKKyAgICAg
ICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgYm9vbCBj
cmVhdGVBcmNoaXZlTGlzdChDRkRpY3Rpb25hcnlSZWYgcmVwcmVzZW50YXRpb24sIENGVHlwZVJl
ZiB0b2tlbk51bGwsIENGSW5kZXgqIHZlcnNpb24sIENGVHlwZVJlZioqIG9iamVjdHMsIENGSW5k
ZXgqIG9iamVjdENvdW50LCBDRkRpY3Rpb25hcnlSZWYqIHByb3RvY29sUHJvcGVydGllcywgQ0ZO
dW1iZXJSZWYqIGV4cGVjdGVkQ29udGVudExlbmd0aCwgQ0ZTdHJpbmdSZWYqIG1pbWVUeXBlKQor
eworICAgIENGTnVtYmVyUmVmIHZlcnNpb25OdW1iZXIgPSAoQ0ZOdW1iZXJSZWYpZGljdGlvbmFy
eVZhbHVlT2ZUeXBlKHJlcHJlc2VudGF0aW9uLCBDRlNUUigidmVyc2lvbiIpLCBDRk51bWJlckdl
dFR5cGVJRCgpKTsKKyAgICBpZiAoIXZlcnNpb25OdW1iZXIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZSh2ZXJzaW9uTnVtYmVyLCBrQ0ZOdW1iZXJD
RkluZGV4VHlwZSwgdmVyc2lvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENGQXJy
YXlSZWYgYXJjaGl2ZUxpc3RBcnJheSA9IChDRkFycmF5UmVmKWRpY3Rpb25hcnlWYWx1ZU9mVHlw
ZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoImFyY2hpdmVMaXN0IiksIENGQXJyYXlHZXRUeXBlSUQo
KSk7CisgICAgaWYgKCFhcmNoaXZlTGlzdEFycmF5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAqb2JqZWN0Q291bnQgPSBDRkFycmF5R2V0Q291bnQoYXJjaGl2ZUxpc3RBcnJheSk7Cisg
ICAgKm9iamVjdHMgPSAoQ0ZUeXBlUmVmKiltYWxsb2Moc2l6ZW9mKENGVHlwZVJlZikgKiAqb2Jq
ZWN0Q291bnQpOworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8ICpvYmplY3RDb3VudDsgKytp
KSB7CisgICAgICAgIENGVHlwZVJlZiBvYmplY3QgPSBDRkFycmF5R2V0VmFsdWVBdEluZGV4KGFy
Y2hpdmVMaXN0QXJyYXksIGkpOworICAgICAgICBpZiAob2JqZWN0ID09IHRva2VuTnVsbCkKKyAg
ICAgICAgICAgICgqb2JqZWN0cylbaV0gPSBudWxscHRyOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICAoKm9iamVjdHMpW2ldID0gb2JqZWN0OworICAgIH0KKworICAgIGlmIChwcm90b2NvbFBy
b3BlcnRpZXMpCisgICAgICAgICpwcm90b2NvbFByb3BlcnRpZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVm
KWRpY3Rpb25hcnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoInByb3RvY29sUHJv
cGVydGllcyIpLCBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisKKyAgICBpZiAoZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKQorICAgICAgICAqZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gKENGTnVtYmVy
UmVmKWRpY3Rpb25hcnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoImV4cGVjdGVk
Q29udGVudExlbmd0aCIpLCBDRk51bWJlckdldFR5cGVJRCgpKTsKKworICAgIGlmIChtaW1lVHlw
ZSkKKyAgICAgICAgKm1pbWVUeXBlID0gKENGU3RyaW5nUmVmKWRpY3Rpb25hcnlWYWx1ZU9mVHlw
ZShyZXByZXNlbnRhdGlvbiwgQ0ZTVFIoIm1pbWVUeXBlIiksIENGU3RyaW5nR2V0VHlwZUlEKCkp
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihDRlVSTFJlcXVlc3RSZWYgY2ZS
ZXF1ZXN0LCBDRlR5cGVSZWYgdG9rZW5OdWxsKQoreworICAgIENGSW5kZXggdmVyc2lvbjsKKyAg
ICBDRlR5cGVSZWYqIG9iamVjdHM7CisgICAgQ0ZJbmRleCBvYmplY3RDb3VudDsKKyAgICBDRkRp
Y3Rpb25hcnlSZWYgcHJvdG9jb2xQcm9wZXJ0aWVzOworCisgICAgLy8gRklYTUUgKDEyODg5NTE4
KTogRG8gbm90IHNlcmlhbGl6ZSBIVFRQIG1lc3NhZ2UgYm9keS4KKyAgICAvLyAxLiBJdCBjYW4g
YmUgbGFyZ2UgYW5kIHRodXMgY29zdGx5IHRvIHNlbmQgYWNyb3NzLgorICAgIC8vIDIuIEl0IGlz
IG1pc2xlYWRpbmcgdG8gcHJvdmlkZSBhIGJvZHkgd2l0aCBzb21lIHJlcXVlc3RzLCB3aGlsZSBv
dGhlcnMgdXNlIGJvZHkgc3RyZWFtcywgd2hpY2ggY2Fubm90IGJlIHNlcmlhbGl6ZWQgYXQgYWxs
LgorCisgICAgX0NGVVJMUmVxdWVzdENyZWF0ZUFyY2hpdmVMaXN0KGtDRkFsbG9jYXRvckRlZmF1
bHQsIGNmUmVxdWVzdCwgJnZlcnNpb24sICZvYmplY3RzLCAmb2JqZWN0Q291bnQsICZwcm90b2Nv
bFByb3BlcnRpZXMpOworCisgICAgLy8gVGhpcyB3aWxsIGRlYWxsb2NhdGUgdGhlIHBhc3NlZCBp
biBhcmd1bWVudHMuCisgICAgcmV0dXJuIGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9u
KHZlcnNpb24sIG9iamVjdHMsIG9iamVjdENvdW50LCBwcm90b2NvbFByb3BlcnRpZXMsIG51bGxw
dHIsIG51bGxwdHIsIHRva2VuTnVsbCk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZXF1
ZXN0UmVmPiBjcmVhdGVDRlVSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24o
Q0ZEaWN0aW9uYXJ5UmVmIHJlcHJlc2VudGF0aW9uLCBDRlR5cGVSZWYgdG9rZW5OdWxsKQorewor
ICAgIENGSW5kZXggdmVyc2lvbjsKKyAgICBDRlR5cGVSZWYqIG9iamVjdHM7CisgICAgQ0ZJbmRl
eCBvYmplY3RDb3VudDsKKyAgICBDRkRpY3Rpb25hcnlSZWYgcHJvdG9jb2xQcm9wZXJ0aWVzOwor
CisgICAgaWYgKCFjcmVhdGVBcmNoaXZlTGlzdChyZXByZXNlbnRhdGlvbiwgdG9rZW5OdWxsLCAm
dmVyc2lvbiwgJm9iamVjdHMsICZvYmplY3RDb3VudCwgJnByb3RvY29sUHJvcGVydGllcywgbnVs
bHB0ciwgbnVsbHB0cikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjZlJl
cXVlc3QgPSBhZG9wdENGKF9DRlVSTFJlcXVlc3RDcmVhdGVGcm9tQXJjaGl2ZUxpc3Qoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgdmVyc2lvbiwgb2JqZWN0cywgb2JqZWN0Q291bnQsIHByb3RvY29sUHJv
cGVydGllcykpOworICAgIGZyZWUob2JqZWN0cyk7CisgICAgcmV0dXJuIFdURk1vdmUoY2ZSZXF1
ZXN0KTsKK30KKworc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZVNlcmlh
bGl6YWJsZVJlcHJlc2VudGF0aW9uKE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgQ0ZUeXBlUmVmIHRv
a2VuTnVsbCkKK3sKKyAgICByZXR1cm4gY3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24o
W3JlcXVlc3QgX0NGVVJMUmVxdWVzdF0sIHRva2VuTnVsbCk7Cit9CisKK3N0YXRpYyBSZXRhaW5Q
dHI8TlNVUkxSZXF1ZXN0PiBjcmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVz
ZW50YXRpb24oQ0ZEaWN0aW9uYXJ5UmVmIHJlcHJlc2VudGF0aW9uLCBDRlR5cGVSZWYgdG9rZW5O
dWxsKQoreworICAgIGF1dG8gY2ZSZXF1ZXN0ID0gY3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlh
bGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcHJlc2VudGF0aW9uLCB0b2tlbk51bGwpOworICAgIGlm
ICghY2ZSZXF1ZXN0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZG9w
dE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6Y2ZSZXF1ZXN0
LmdldCgpXSk7Cit9CisKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogdm9pZCBBcmd1bWVudENv
ZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKQEAgLTc5LDcgKzIx
MCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9y
bURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRU
UFJlcXVlc3RCb2R5U3RyZWFtKG11dGFibGVSZXF1ZXN0LCBuaWwpOwogICAgIH0KIAotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkgPSBhZG9wdENGKFdLQ0ZVUkxSZXF1
ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdl
dCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOworICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IGRpY3Rpb25hcnkgPSBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXF1
ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKICAgICBJUEM6
OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKIAogICAgIC8vIFRoZSBmYWxsYmFj
ayBhcnJheSBpcyBwYXJ0IG9mIENGVVJMUmVxdWVzdCwgYnV0IGl0IGlzIG5vdCBlbmNvZGVkIGJ5
IFdLQ0ZVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24uCkBAIC0xMDYs
NyArMjM3LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBs
YXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgICAgICBbKE5TTXV0YWJsZVVS
TFJlcXVlc3QgKilyZXF1ZXN0VG9TZXJpYWxpemUgc2V0SFRUUEJvZHlTdHJlYW06bmlsXTsKICAg
ICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRD
RihXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RU
b1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gY3JlYXRlU2VyaWFsaXphYmxlUmVwcmVz
ZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYo
KSk7CiAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7CiAKICAgICAv
LyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBOU1VSTFJlcXVlc3QsIGJ1dCBpdCBpcyBu
b3QgZW5jb2RlZCBieSBXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0
aW9uLgpAQCAtMTMyLDEzICsyNjMsMTMgQEAgYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVx
dWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXIKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKLSAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjZlVSTFJlcXVlc3QgPSBhZG9wdENGKFdLQ3JlYXRlQ0ZVUkxS
ZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQ
Qzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4g
Y2ZVUkxSZXF1ZXN0ID0gY3JlYXRlQ0ZVUkxSZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKICAgICBp
ZiAoIWNmVVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVzb3VyY2VS
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGNmVVJMUmVxdWVzdC5nZXQoKSk7CiAjZWxzZQotICAg
IFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IFdLTlNVUkxSZXF1ZXN0RnJv
bVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5O
dWxsVHlwZVJlZigpKTsKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3Qg
PSBjcmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGljdGlv
bmFyeS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIGlmICghbnNVUkxSZXF1
ZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDA0NWI5YjJkNDgyZTQy
Mjc5Yzk2ZTlhMTkzYzRlZDdkMDg2Yjc5YzEuLmJkNTdhN2NiN2Y5NjU3ZWY1MWJjNTExZGVhNGNl
MTU3ZWE4NzhlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtNDU1LDcgKzQ1NSw3IEBAIFN0cmluZyBXZWJQcm9j
ZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KCkKIHsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlU3RvcmFnZVBh
dGggPSBhZG9wdE5TKChOU1N0cmluZyAqKVdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgp
KTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlU3RvcmFnZVBhdGggPSBhZG9wdE5TKChO
U1N0cmluZyAqKV9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNoZSBzaGFy
ZWRVUkxDYWNoZV0gX0NGVVJMQ2FjaGVdKSk7CiAgICAgaWYgKCFjYWNoZVN0b3JhZ2VQYXRoKQog
ICAgICAgICBjYWNoZVN0b3JhZ2VQYXRoID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0NhY2hlU3RvcmFn
ZSI7CiAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBs
YXRmb3JtRGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJQcm9jZXNz
UG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlUGF0aCA9IGFkb3B0TlMoKE5TU3RyaW5nICopV0tD
b3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIFJldGFpblB0cjxOU1N0cmluZz4g
Y2FjaGVQYXRoID0gYWRvcHROUygoTlNTdHJpbmcgKilfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVj
dG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwogICAgIGlm
ICghY2FjaGVQYXRoKQogICAgICAgICBjYWNoZVBhdGggPSBAIn4vTGlicmFyeS9DYWNoZXMvY29t
LmFwcGxlLldlYktpdC5XZWJQcm9jZXNzIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFj
ZS5tbQppbmRleCBiZGE1ZDczZGZjMTIyZjNlMDIyM2FhYWU1NTI4NGQ0YjM5ZTU3M2NlLi5hNjFi
ODQxNDUzMDM0ZmI5YzljYWI4NGJlZjZlYWFkMTAxNGJlMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5
c3RlbUludGVyZmFjZS5tbQpAQCAtMzYsMTggKzM2LDEyIEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0
ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IGluaXRPbmNlOwog
ICAgIAogICAgIGRpc3BhdGNoX29uY2UoJmluaXRPbmNlLCBeewotICAgICAgICBJTklUKENvcHlD
T05ORUNUUHJveHlSZXNwb25zZSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgSU5JVChE
cmF3QmV6ZWxlZFRleHRBcmVhKTsKICAgICAgICAgSU5JVChEcmF3TWVkaWFTbGlkZXJUcmFjayk7
CiAgICAgICAgIElOSVQoRHJhd01lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChIaXRUZXN0TWVk
aWFVSVBhcnQpOwogICAgICAgICBJTklUKE1lYXN1cmVNZWRpYVVJUGFydCk7Ci0jZW5kaWYKLSAg
ICAgICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKTsKLSAgICAg
ICAgSU5JVChTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pOwotCi0jaWYgIVBMQVRGT1JNKElPUykK
ICAgICAgICAgSU5JVChFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkKTsK
ICAgICAgICAgSU5JVChDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOwogICAg
ICAgICBJTklUKEN1cnNvcik7CkBAIC01OCwxMiArNTIsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgICAgIElOSVQoTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGlj
RGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQotICAgICAg
ICBJTklUKElzUHVibGljU3VmZml4KTsKLSNlbmRpZgotCi0gICAgICAgIElOSVQoQ2FjaGVQYXJ0
aXRpb25LZXkpOwotCiAgICAgICAgIElOSVQoRXhlcm5hbERldmljZVR5cGVGb3JQbGF5ZXIpOwog
ICAgICAgICBJTklUKEV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUlu
dGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5
c3RlbUludGVyZmFjZS5tbQppbmRleCAxNzQ2NTg2YjI0MmY1MmUwN2E5OWZlOTE1YWE2YjRmNjJh
M2JjNWQ0Li4wNjIwMmNlZWRhY2RiNzAxOTdjYmUxMGI4M2M2ZWY3NTI1MmRkMDY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tCkBAIC00Miw3ICs0Miw2IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0
ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBpZiAoZGlkSW5pdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQTEFURk9STShJT1MpCiAg
ICAgSU5JVChEcmF3QmV6ZWxlZFRleHRBcmVhKTsKICAgICBJTklUKERyYXdNZWRpYVVJUGFydCk7
CkBAIC01MCw4ICs0OSw2IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkK
ICAgICBJTklUKEhpdFRlc3RNZWRpYVVJUGFydCk7CiAgICAgSU5JVChNZWFzdXJlTWVkaWFVSVBh
cnQpOwogI2VuZGlmCi0gICAgSU5JVChTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3Ry
ZWFtKTsKLSAgICBJTklUKFNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk7CiAKICNpZiAhUExBVEZP
Uk0oSU9TKQogICAgIElOSVQoRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFy
ZCk7CkBAIC02NywxMiArNjQsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZv
aWQpCiAgICAgSU5JVChOU1JlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YSk7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi0gICAgSU5JVChJc1B1YmxpY1N1ZmZpeCk7
Ci0jZW5kaWYKLQotICAgIElOSVQoQ2FjaGVQYXJ0aXRpb25LZXkpOwotCiAgICAgSU5JVChFeGVy
bmFsRGV2aWNlVHlwZUZvclBsYXllcik7CiAgICAgSU5JVChFeGVybmFsRGV2aWNlRGlzcGxheU5h
bWVGb3JQbGF5ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggYzcyMzNiZTEzMzJkYjhiNWZhZTc3ODdjOWE2OGU2MTNmNGNhM2JmOS4uYjVlNzI2
M2YzZGYyY2RmMjA5MWE4MzI4YmJiZWY5NzQ0ZTUyYzY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODU3Myw3ICs4NTczLDcgQEAgKyAodm9pZClf
c2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsCiAgICAgaWYgKHNfZGlkU2V0
Q2FjaGVNb2RlbCAmJiBjYWNoZU1vZGVsID09IHNfY2FjaGVNb2RlbCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgTlNTdHJpbmcgKm5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBDRkJyaWRnaW5nUmVsZWFz
ZShXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgTlNTdHJpbmcgKm5zdXJs
Q2FjaGVEaXJlY3RvcnkgPSBDRkJyaWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNoZURp
cmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwogICAg
IGlmICghbnN1cmxDYWNoZURpcmVjdG9yeSkKICAgICAgICAgbnN1cmxDYWNoZURpcmVjdG9yeSA9
IE5TSG9tZURpcmVjdG9yeSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320667</attachid>
            <date>2017-09-13 11:48:25 -0700</date>
            <delta_ts>2017-09-13 13:02:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176729-20170913114825.patch</filename>
            <type>text/plain</type>
            <size>34991</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjNmM4ODQ2MTYwNmMx
MTlkNTJjNTNjNmZlNjI4MWU5YzA3MTRkNC4uYjRhOTAyYmViY2FjYmFjMWE4ZTU1N2I0MTFlZmUw
NDVkYTJlMTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA5LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ0ZdIFVwc3RyZWFtIENGTmV0
d29yay1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjcyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZUlPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUHVibGlj
U3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNQdWJsaWNTdWZmaXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldENPTk5FQ1RQcm94eUZvclN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvcHlDT05ORUNUUHJveHlSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3JpdGVTdHJlYW1DYWxsYmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBs
YXRmb3JtUmVxdWVzdCk6CisKIDIwMTctMDktMTEgIFlvc2hpYWtpIEppdHN1a2F3YSAgPFlvc2hp
YWtpLkppdHN1a2F3YUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEZpeCB0aGUgd2lu
Y2Fpcm8gYnVpbGQgYWZ0ZXIgcjIyMTgzOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZmJhMTQyYTA5
MjU3N2NiNTVlMGEzZmY2MzE1NGM1NTZjMmU4Y2U1MS4uZjE0MjY1MWQ2ZTAwYTU0OWFkYTFkYTFl
NzIwMWE0ZjIwZjg5MDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIw
MTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCisgICAgICAgIFtDRl0g
VXBzdHJlYW0gQ0ZOZXR3b3JrLXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKKzIwMTctMDktMTEgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgorCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFFUS2l0LXJlbGF0ZWQgV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDcyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmVmMzQzOTQwM2UzZTRj
OGE0MWM3NTY4NWQ1NmVlNTdiYmVjZjdlNy4uYTJlZDQwMGFiZjIyNmQ4ODZkZjU3ZDliYzIxZjIx
NzI1YjczNjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OmNyZWF0ZVNlcmlhbGl6YWJsZVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKElQQzo6ZGljdGlvbmFyeVZhbHVlT2ZUeXBlKToKKyAg
ICAgICAgKElQQzo6Y3JlYXRlQXJjaGl2ZUxpc3QpOgorICAgICAgICAoSVBDOjpjcmVhdGVDRlVS
TFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSVBDOjpj
cmVhdGVOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0
YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlN5c3RlbUludGVyZmFjZS5t
bToKKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKToKKworMjAxNy0wOS0xMSAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0g
UVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg1NmExYWVlOTgxYTlkNmYwNDMxZDFmNGM1YWYwY2E5YWQy
YTJjNzAuLjQyZDE1YWEwYWM5MTVkYzQ0N2JlM2RhNmU5YzM1YjYzZGM2OGE1MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxNy0wOS0xMSAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKKyAgICAgICAgW0NGXSBVcHN0cmVhbSBDRk5ldHdv
cmstcmVsYXRlZCBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
U3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfc2V0
Q2FjaGVNb2RlbDpdKToKKworMjAxNy0wOS0xMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CisKICAgICAgICAgW01hY10gVXBzdHJlYW0gUVRLaXQtcmVsYXRlZCBXZWJLaXRTeXN0ZW1J
bnRlcmZhY2UgZnVuY3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzY0NzIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaAppbmRleCAwYWU4MGM3ODdiOGU4MWI5YTg0ZjAxYjkxNmI4YmY3NGE5MzJkZjNj
Li4zZTU4NDNlYWQ1YjQzYzUzODgzZGY4MWI2NDBjOWNmNDM1ODQ3ZWYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMTk0LDYgKzE5NCw3IEBA
IHZvaWQgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9j
ayhDRkNhY2hlZFVSTFJlc3BvbnNlUmVmCiBleHRlcm4gQ0ZTdHJpbmdSZWYgY29uc3Qga0NGSFRU
UENvb2tpZUxvY2FsRmlsZURvbWFpbjsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQ
VmVyc2lvbjFfMTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxSZXF1ZXN0QWxsb3dB
bGxQT1NUQ2FjaGluZzsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGVVJMQ2FjaGVQYXJ0
aXRpb25LZXk7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVSTENvbm5lY3Rpb25Qcm9w
ZXJ0eVNob3VsZFNuaWZmOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZVUkxTdG9yYWdl
U2Vzc2lvbklzUHJpdmF0ZTsKIApAQCAtMjM2LDkgKzIzNywyMiBAQCBDRkFycmF5UmVmIENGSFRU
UENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsKIHZvaWQg
Q0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgQ0ZB
cnJheVJlZiBjb29raWVzLCBDRlVSTFJlZiwgQ0ZVUkxSZWYgbWFpbkRvY3VtZW50VVJMKTsKIHZv
aWQgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUNvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVm
LCBDRkhUVFBDb29raWVSZWYpOwogQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlQ29weShDRkFsbG9jYXRvclJlZiwgQ0ZVUkxSZXF1ZXN0UmVmKTsKK0NGU3Ry
aW5nUmVmIF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KENGVVJMQ2FjaGVSZWYpOworQm9v
bGVhbiBfQ0ZIb3N0SXNEb21haW5Ub3BMZXZlbChDRlN0cmluZ1JlZiBkb21haW4pOwordm9pZCBf
Q0ZVUkxSZXF1ZXN0Q3JlYXRlQXJjaGl2ZUxpc3QoQ0ZBbGxvY2F0b3JSZWYsIENGVVJMUmVxdWVz
dFJlZiwgQ0ZJbmRleCogdmVyc2lvbiwgQ0ZUeXBlUmVmKiogb2JqZWN0cywgQ0ZJbmRleCogb2Jq
ZWN0Q291bnQsIENGRGljdGlvbmFyeVJlZiogcHJvdG9jb2xQcm9wZXJ0aWVzKTsKK0NGTXV0YWJs
ZVVSTFJlcXVlc3RSZWYgX0NGVVJMUmVxdWVzdENyZWF0ZUZyb21BcmNoaXZlTGlzdChDRkFsbG9j
YXRvclJlZiwgQ0ZJbmRleCB2ZXJzaW9uLCBDRlR5cGVSZWYqIG9iamVjdHMsIENGSW5kZXggb2Jq
ZWN0Q291bnQsIENGRGljdGlvbmFyeVJlZiBwcm90b2NvbFByb3BlcnRpZXMpOwogCiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKFdJTikKIAorQ0ZOX0VYUE9SVCBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJl
YW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eTsKK0NGTl9FWFBPUlQgY29uc3QgQ0ZTdHJpbmdSZWYga0NG
U3RyZWFtUHJvcGVydHlDT05ORUNUUHJveHlIb3N0OworQ0ZOX0VYUE9SVCBjb25zdCBDRlN0cmlu
Z1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eVBvcnQ7CitDRk5fRVhQT1JUIGNvbnN0
IENGU3RyaW5nUmVmIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVEFkZGl0aW9uYWxIZWFkZXJzOwor
Q0ZOX0VYUE9SVCBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RSZXNw
b25zZTsKKworQ0ZOX0VYUE9SVCB2b2lkIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VVUkwoQ0ZI
VFRQTWVzc2FnZVJlZiwgQ0ZVUkxSZWYpOworQ0ZOX0VYUE9SVCB2b2lkIF9DRkhUVFBNZXNzYWdl
U2V0UmVzcG9uc2VQcm94eVVSTChDRkhUVFBNZXNzYWdlUmVmLCBDRlVSTFJlZik7CisKIFdURl9F
WFRFUk5fQ19FTkQKIAogI2lmIGRlZmluZWQoX19PQkpDX18pICYmICFVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZUlPUy5tbQppbmRleCBkNzMzOThlYzJiNDNkMWUzN2RiZmE4ZWJlN2Vh
NDAyYzYxZjI4ZjRmLi4xYjk2OWVjZDY4OWRkNjJiNjJmYzM0ZDViYThlOTllMWM4YmE4M2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3Rl
bUludGVyZmFjZUlPUy5tbQpAQCAtMjksMTAgKzI5LDcgQEAKIFdFQkNPUkVfRVhQT1JUIHZvaWQg
KCp3a0NsZWFyR2x5cGhWZWN0b3IpKHZvaWQqIGdseXBocyk7CiBXRUJDT1JFX0VYUE9SVCBPU1N0
YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCogc3R5bGVHcm91cCwgY29uc3QgVW5p
Q2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGdseXBocyk7CiBXRUJDT1JFX0VY
UE9SVCBpZCAoKndrQ3JlYXRlTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSkodm9pZCk7Ci1X
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0
cmVhbVJlZiwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0
cmVhbSkoQ0ZSZWFkU3RyZWFtUmVmLCBDRlN0cmluZ1JlZiBwcm94eUF1dGhvcml6YXRpb25TdHJp
bmcpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKndrU2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93
c2luZ0VuYWJsZWQpKEJPT0wpOwotV0VCQ09SRV9FWFBPUlQgQ0ZIVFRQTWVzc2FnZVJlZiAoKndr
Q29weUNPTk5FQ1RQcm94eVJlc3BvbnNlKShDRlJlYWRTdHJlYW1SZWYsIENGVVJMUmVmIHJlc3Bv
bnNlVVJMLCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7CiBX
RUJDT1JFX0VYUE9SVCB2b2lkICgqd2tTZXRMYXllckNvbnRlbnRzU2NhbGUpKENBTGF5ZXIgKik7
CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0NhcHRpb25BcHBlYXJhbmNlSGFzVXNlclByZWZl
cmVuY2VzKSh2b2lkKTsKQEAgLTQ4LDEyICs0NSw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2woKndr
Q2FwdGlvbkFwcGVhcmFuY2VHZXRSZWxhdGl2ZUNoYXJhY3RlclNpemUpKENHRmxvYXQqKTsKIFdF
QkNPUkVfRVhQT1JUIGludCgqd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUpKHZv
aWQpOwogV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYoKndrQ2FwdGlvbkFwcGVhcmFuY2VHZXRT
ZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24pKHZvaWQpOwogCi0jaWYgRU5BQkxFKFBVQkxJQ19T
VUZGSVhfTElTVCkKLVdFQkNPUkVfRVhQT1JUIGJvb2wgKCp3a0lzUHVibGljU3VmZml4KShOU1N0
cmluZyAqaG9zdCk7Ci0jZW5kaWYKLQotV0VCQ09SRV9FWFBPUlQgQ0ZTdHJpbmdSZWYgKCp3a0Nh
Y2hlUGFydGl0aW9uS2V5KSh2b2lkKTsKLQogV0VCQ09SRV9FWFBPUlQgaW50ICgqd2tFeGVybmFs
RGV2aWNlVHlwZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmlu
ZyAqKCp3a0V4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcikoQVZQbGF5ZXIgKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCmluZGV4
IDkzMGEzNDc1MzBmNDdlODljMTM4Mjk5YTMzZDJmODY5ZDEwZWY1MDYuLjNmNDMxNzIzOGVkZTMz
NzZkZWFiNmNhMDljYThhYWFiZjg0MTgwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpAQCAtMjYsMTEgKzI2LDExIEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIlB1YmxpY1N1ZmZpeC5oIgogCi0jaW1wb3J0ICJXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlLmgiCi0jaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKLQogI2lmIEVO
QUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCiAKKyNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5o
IgorI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKwogQGludGVyZmFjZSBOU1N0
cmluZyAoV2ViQ29yZU5TVVJMRXh0cmFzKQogLSAoQk9PTClfd2ViX2xvb2tzTGlrZUlQQWRkcmVz
czsKIEBlbmQKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogYm9vbCBpc1B1
YmxpY1N1ZmZpeChjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKICAgICBOU1N0cmluZyAqaG9zdCA9
IGRlY29kZUhvc3ROYW1lKGRvbWFpbik7Ci0gICAgcmV0dXJuIGhvc3QgJiYgd2tJc1B1YmxpY1N1
ZmZpeChob3N0KTsKKyAgICByZXR1cm4gaG9zdCAmJiBfQ0ZIb3N0SXNEb21haW5Ub3BMZXZlbCgo
Q0ZTdHJpbmdSZWYpaG9zdCk7CiB9CiAKIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluKGNvbnN0IFN0cmluZyYgZG9tYWluKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKaW5kZXggZjY3NTk1MDlhMTFmY2UzMzQx
M2ZlNjkwMzNhNDY4NTZmNTk3NDU1OC4uOWVjYzM0MWM1MTYyMzExNDM5YzQyZTdiZGZhMjA3ZGU2
N2QwNDUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oCkBAIC0xMzMsMTIgKzEzMyw2IEBAIGV4dGVybiBCT09MICgqd2tI
aXRUZXN0TWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3QgYm91bmRzLCBDR1BvaW50IHBvaW50
KTsKIGV4dGVybiB2b2lkICgqd2tNZWFzdXJlTWVkaWFVSVBhcnQpKGludCBwYXJ0LCBDR1JlY3Qg
KmJvdW5kcywgQ0dTaXplICpuYXR1cmFsU2l6ZSk7CiAKIGV4dGVybiB2b2lkICgqd2tTZXRDb29r
aWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkoQk9PTCk7Ci0jZW5kaWYKLWV4dGVybiB2
b2lkICgqd2tTZXRDT05ORUNUUHJveHlGb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwgQ0ZTdHJp
bmdSZWYgcHJveHlIb3N0LCBDRk51bWJlclJlZiBwcm94eVBvcnQpOwotZXh0ZXJuIHZvaWQgKCp3
a1NldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJlYW0pKENGUmVhZFN0cmVhbVJlZiwg
Q0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nKTsKLWV4dGVybiBDRkhUVFBNZXNz
YWdlUmVmICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZV
UkxSZWYgcmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJv
eHlQb3J0KTsKLQotI2lmICFQTEFURk9STShJT1MpCiBleHRlcm4gdm9pZCogd2tHZXRIeXBoZW5h
dGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CiAjZW5kaWYKIApAQCAtMTY3LDEyICsxNjEsNiBAQCBl
eHRlcm4gQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEpKENHRmxvYXQg
ZGVsdGEpOwogZXh0ZXJuIENHRmxvYXQgKCp3a05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRh
KShDR0Zsb2F0IGRlbHRhKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElT
VCkKLWV4dGVybiBib29sICgqd2tJc1B1YmxpY1N1ZmZpeCkoTlNTdHJpbmcgKmhvc3QpOwotI2Vu
ZGlmCi0KLWV4dGVybiBDRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRpb25LZXkpKHZvaWQpOwot
CiB0eXBlZGVmIGVudW0gewogICAgIHdrRXh0ZXJuYWxQbGF5YmFja1R5cGVOb25lLAogICAgIHdr
RXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQbGF5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQppbmRleCAyZWFiZDRmMTRmMzkz
MzZlMzM0MGNlOGVkZWUzN2U0ODJkZDY4MDJlLi4zNTEwZDk5YmNmNTdmNjVjMDE4OTY2OTU0MjY1
ZTJiODliYWVlYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZVN5c3RlbUludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDAsMTAgKzQwLDYgQEAgTlNUaW1lSW50ZXJ2
YWwgKCp3a0dldE5TVVJMUmVzcG9uc2VDYWxjdWxhdGVkRXhwaXJhdGlvbikoTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UKIEJPT0wgKCp3a0dldE5TVVJMUmVzcG9uc2VNdXN0UmV2YWxpZGF0ZSkoTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UpOwogdm9pZCAoKndrUG9wdXBNZW51KShOU01lbnUqLCBOU1Bv
aW50IGxvY2F0aW9uLCBmbG9hdCB3aWR0aCwgTlNWaWV3KiwgaW50IHNlbGVjdGVkSXRlbSwgTlNG
b250KiwgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSwgYm9vbCB1c2VzQ3VzdG9tQXBwZWFyYW5j
ZSk7CiAKLXZvaWQgKCp3a1NldENPTk5FQ1RQcm94eUZvclN0cmVhbSkoQ0ZSZWFkU3RyZWFtUmVm
LCBDRlN0cmluZ1JlZiBwcm94eUhvc3QsIENGTnVtYmVyUmVmIHByb3h5UG9ydCk7Ci12b2lkICgq
d2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9yU3RyZWFtKShDRlJlYWRTdHJlYW1SZWYs
IENGU3RyaW5nUmVmIHByb3h5QXV0aG9yaXphdGlvblN0cmluZyk7Ci1DRkhUVFBNZXNzYWdlUmVm
ICgqd2tDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpKENGUmVhZFN0cmVhbVJlZiwgQ0ZVUkxSZWYg
cmVzcG9uc2VVUkwsIENGU3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0
KTsKLQogdm9pZCogd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9uQmVmb3JlSW5kZXg7CiAKIGJvb2wg
KCp3a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpKHZvaWQpOwpAQCAt
NjIsMTIgKzU4LDYgQEAgQ0dGbG9hdCAoKndrTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEp
KENHRmxvYXQgZGVsdGEpOwogQ0dGbG9hdCAoKndrTlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVs
dGEpKENHRmxvYXQgZGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9M
SVNUKQotYm9vbCAoKndrSXNQdWJsaWNTdWZmaXgpKE5TU3RyaW5nICpob3N0KTsKLSNlbmRpZgot
Ci1DRlN0cmluZ1JlZiAoKndrQ2FjaGVQYXJ0aXRpb25LZXkpKHZvaWQpOwotCiBpbnQgKCp3a0V4
ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKShBVlBsYXllciAqKTsKIE5TU3RyaW5nICooKndrRXhl
cm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKShBVlBsYXllciAqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcAppbmRleCAwYjU3YWE0MzAyNTcwYzYxNDg2ODljMGUwOTYyNWM5MGQxYzhhNjIz
Li45ZTc1ZWEzMjgyNDEyZDE2YjY0MTIxOTI5YmY3YTE2ZDc0YzdiYzgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgaWYgKCFwYXJ0aXRpb24uaXNOdWxsKCkgJiYgIXBh
cnRpdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gcGFydGl0
aW9uLnV0ZjgoKTsKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXJ0aXRpb25WYWx1
ZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSkpOwotICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJv
dG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QsIHdrQ2FjaGVQYXJ0aXRpb25LZXkoKSwgcGFydGl0aW9u
VmFsdWUuZ2V0KCkpOworICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShj
ZlJlcXVlc3QsIGtDRlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRpb25WYWx1ZS5nZXQoKSk7
CiAgICAgfQogI2VuZGlmCiAKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgIH0KIAogI2lmIEVOQUJMRShDQUNIRV9Q
QVJUSVRJT05JTkcpCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZVBhcnRpdGlvbiA9
IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9j
b2xQcm9wZXJ0eUZvcktleShtX2NmUmVxdWVzdC5nZXQoKSwgd2tDYWNoZVBhcnRpdGlvbktleSgp
KSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXJ0aXRpb24gPSBhZG9wdENG
KHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJvcGVy
dHlGb3JLZXkobV9jZlJlcXVlc3QuZ2V0KCksIGtDRlVSTENhY2hlUGFydGl0aW9uS2V5KSkpOwog
ICAgIGlmIChjYWNoZVBhcnRpdGlvbikKICAgICAgICAgbV9jYWNoZVBhcnRpdGlvbiA9IGNhY2hl
UGFydGl0aW9uLmdldCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5j
cHAKaW5kZXggMDk5OGExZTg1ZmYwYzYzMzlhMmVlOGFhMzY5NDk1MzgwNDgwYTJiOS4uZWJjZDU0
YmU5ZGE1NjIyYmM2ZGI3NTA1N2UzYzhjYjE4Mzg0MTRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbENGTmV0LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Db25kaXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisjaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKICNpZiBQTEFURk9STShXSU4pCkBAIC02Miw2ICs2MywxMSBAQCBleHRlcm4gIkMi
IGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZTdHJlYW1Tb2NrZXRTZXROb0RlbGF5OwogI2ltcG9ydCA8
cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQor
U09GVF9MSU5LX0xJQlJBUlkoQ0ZOZXR3b3JrKTsKK1NPRlRfTElOS19PUFRJT05BTChDRk5ldHdv
cmssIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VQcm94eVVSTCwgdm9pZCwgX19jZGVjbCwgKENG
SFRUUE1lc3NhZ2VSZWYsIENGVVJMUmVmKSk7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0
IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFw
cGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKQEAgLTMwMiw2ICszMDgsMTMgQEAgdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJheShDRkFycmF5UmVm
IHByb3h5QXJyYXkpCiAgICAgbV9jb25uZWN0aW9uVHlwZSA9IERpcmVjdDsKIH0KIAorc3RhdGlj
IHZvaWQgc2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENG
U3RyaW5nUmVmIHByb3h5SG9zdCwgQ0ZOdW1iZXJSZWYgcHJveHlQb3J0KQoreworICAgIGNvbnN0
IHZvaWQqIHByb3h5S2V5c1tdID0geyBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eUhvc3Qs
IGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVFByb3h5UG9ydCB9OworICAgIGNvbnN0IHZvaWQqIHBy
b3h5VmFsdWVzW10gPSB7IHByb3h5SG9zdCwgcHJveHlQb3J0IH07CisgICAgYXV0byBjb25uZWN0
RGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHByb3h5S2V5cywgcHJveHlWYWx1ZXMsIHNpemVvZihwcm94eUtleXMpIC8gc2l6ZW9mKCpw
cm94eUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkoc3RyZWFt
LCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSwgY29ubmVjdERpY3Rpb25hcnkuZ2V0KCkp
OworfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMoKQogewpA
QCAtMzQ3LDcgKzM2MCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3Ry
ZWFtcygpCiAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgY2FzZSBDT05ORUNUUHJveHk6
Ci0gICAgICAgIHdrU2V0Q09OTkVDVFByb3h5Rm9yU3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQoKSwg
bV9wcm94eUhvc3QuZ2V0KCksIG1fcHJveHlQb3J0LmdldCgpKTsKKyAgICAgICAgc2V0Q09OTkVD
VFByb3h5Rm9yU3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCksIG1f
cHJveHlQb3J0LmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zOTUsNiArNDA4
LDE5IEBAIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBhdXRoZW50
aWNhdGlvblNjaGVtZUZyb21BdXRoZW50aWNhdGlvCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lVW5rbm93bjsK
IH0KKyAgICAKK3N0YXRpYyB2b2lkIHNldENPTk5FQ1RQcm94eUF1dGhvcml6YXRpb25Gb3JTdHJl
YW0oQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJpbmdSZWYgcHJveHlBdXRob3JpemF0aW9u
U3RyaW5nKQoreworICAgIGF1dG8gb3JpZ2luYWxDT05ORUNURGljdGlvbmFyeSA9IGFkb3B0Q0Yo
KENGRGljdGlvbmFyeVJlZilDRlJlYWRTdHJlYW1Db3B5UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJl
YW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSkpOworICAgIGF1dG8gY29ubmVjdERpY3Rpb25hcnkgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsIG9yaWdpbmFsQ09OTkVDVERpY3Rpb25hcnkuZ2V0KCkpKTsKKworICAgIGNvbnN0IHZvaWQq
IGhlYWRlckZpZWxkTmFtZXNbXSA9IHsgQ0ZTVFIoIlByb3h5LUF1dGhvcml6YXRpb24iKSB9Owor
ICAgIGNvbnN0IHZvaWQqIGhlYWRlckZpZWxkVmFsdWVzW10gPSB7IHByb3h5QXV0aG9yaXphdGlv
blN0cmluZyB9OworICAgIGF1dG8gYWRkaXRpb25hbEhlYWRlckZpZWxkcyA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGhlYWRlckZpZWxkTmFtZXMsIGhl
YWRlckZpZWxkVmFsdWVzLCBzaXplb2YoaGVhZGVyRmllbGROYW1lcykgLyBzaXplb2YoKmhlYWRl
ckZpZWxkVmFsdWVzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworCisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29u
bmVjdERpY3Rpb25hcnkuZ2V0KCksIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVEFkZGl0aW9uYWxI
ZWFkZXJzLCBhZGRpdGlvbmFsSGVhZGVyRmllbGRzLmdldCgpKTsKKyAgICBDRlJlYWRTdHJlYW1T
ZXRQcm9wZXJ0eShzdHJlYW0sIGtDRlN0cmVhbVByb3BlcnR5Q09OTkVDVFByb3h5LCBjb25uZWN0
RGljdGlvbmFyeS5nZXQoKSk7Cit9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6YWRk
Q09OTkVDVENyZWRlbnRpYWxzKENGSFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIHsKQEAg
LTQzNyw3ICs0NjMsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmFkZENPTk5FQ1RD
cmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9ucwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gU2V0dGluZyB0aGUgYXV0aG9yaXphdGlvbiByZXN1bHRzIGluIGEgbmV3IGNvbm5l
Y3Rpb24gYXR0ZW1wdC4KLSAgICAgICAgd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9y
U3RyZWFtKG1fcmVhZFN0cmVhbS5nZXQoKSwgcHJveHlBdXRob3JpemF0aW9uU3RyaW5nLmdldCgp
KTsKKyAgICAgICAgc2V0Q09OTkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbShtX3JlYWRT
dHJlYW0uZ2V0KCksIHByb3h5QXV0aG9yaXphdGlvblN0cmluZy5nZXQoKSk7CiAgICAgICAgIG1f
c2VudFN0b3JlZENyZWRlbnRpYWxzID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTQ5Myw2ICs1MTksMzggQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjp3cml0ZVN0cmVh
bUNhbGxiYWNrKENGV3JpdGVTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmUKICNlbmRpZgogfQogCisj
aWYgIVBMQVRGT1JNKElPUykKK3N0YXRpYyB2b2lkIHNldFJlc3BvbnNlUHJveHlVUkwoQ0ZIVFRQ
TWVzc2FnZVJlZiBtZXNzYWdlLCBDRlVSTFJlZiBwcm94eVVSTCkKK3sKKyNpZiBQTEFURk9STShX
SU4pCisgICAgaWYgKF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VQcm94eVVSTFB0cigpKQorICAg
ICAgICBfQ0ZIVFRQTWVzc2FnZVNldFJlc3BvbnNlUHJveHlVUkxQdHIoKShtZXNzYWdlLCBwcm94
eVVSTCk7CisjZWxzZQorICAgIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9uc2VQcm94eVVSTChtZXNz
YWdlLCBwcm94eVVSTCk7CisjZW5kaWYKK30KKyNlbmRpZgorCitzdGF0aWMgUmV0YWluUHRyPENG
SFRUUE1lc3NhZ2VSZWY+IGNvcHlDT05ORUNUUHJveHlSZXNwb25zZShDRlJlYWRTdHJlYW1SZWYg
c3RyZWFtLCBDRlVSTFJlZiByZXNwb25zZVVSTCwgQ0ZTdHJpbmdSZWYgcHJveHlIb3N0LCBDRk51
bWJlclJlZiBwcm94eVBvcnQpCit7CisgICAgYXV0byBtZXNzYWdlID0gYWRvcHRDRigoQ0ZIVFRQ
TWVzc2FnZVJlZilDRlJlYWRTdHJlYW1Db3B5UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJlYW1Qcm9w
ZXJ0eUNPTk5FQ1RSZXNwb25zZSkpOworICAgIC8vIENGTmV0d29yayBuZWVkcyBVUkwgdG8gYmUg
c2V0IG9uIHJlc3BvbnNlIGluIG9yZGVyIHRvIGhhbmRsZSBhdXRoZW50aWNhdGlvbiAtIGV2ZW4g
dGhvdWdoIGl0IGRvZXNuJ3Qgc2VlbSB0byBtYWtlIHNlbnNlIHRvIHByb3ZpZGUgdWx0aW1hdGUg
dGFyZ2V0IFVSTCB3aGVuIGF1dGhlbnRpY2F0aW5nIHRvIGEgcHJveHkuCisgICAgLy8gVGhpcyBp
cyBzZXQgYnkgQ0ZOZXR3b3JrIGludGVybmFsbHkgZm9yIG5vcm1hbCBIVFRQIHJlc3BvbnNlcywg
YnV0IG5vdCBmb3IgcHJveGllcy4KKyAgICBfQ0ZIVFRQTWVzc2FnZVNldFJlc3BvbnNlVVJMKG1l
c3NhZ2UuZ2V0KCksIHJlc3BvbnNlVVJMKTsKKworI2lmICFQTEFURk9STShJT1MpCisgICAgLy8g
RGl0dG8gZm9yIHByb3h5IFVSTC4KKyAgICBhdXRvIHByb3h5VVJMU3RyaW5nID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgQ0ZT
VFIoImh0dHBzOi8vJUA6JUAiKSwgcHJveHlIb3N0LCBwcm94eVBvcnQpKTsKKyAgICBhdXRvIHBy
b3h5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcHJveHlVUkxTdHJpbmcuZ2V0KCksIG51bGxwdHIpKTsKKyAgICBzZXRSZXNwb25zZVByb3h5
VVJMKG1lc3NhZ2UuZ2V0KCksIHByb3h5VVJMLmdldCgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHByb3h5SG9zdCk7CisgICAgVU5VU0VEX1BBUkFNKHByb3h5UG9ydCk7CisjZW5kaWYKKwor
ICAgIHJldHVybiBtZXNzYWdlOworfQorCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJl
YWRTdHJlYW1DYWxsYmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAo
dHlwZSkgewpAQCAtNTA2LDcgKzU2NCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
cmVhZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5cGUpCiAKICAgICAgICAgaWYg
KG1fY29ubmVjdGluZ1N1YnN0YXRlID09IFdhaXRpbmdGb3JDb25uZWN0KSB7CiAgICAgICAgICAg
ICBpZiAobV9jb25uZWN0aW9uVHlwZSA9PSBDT05ORUNUUHJveHkpIHsKLSAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gcHJveHlSZXNwb25zZSA9IGFkb3B0Q0Yod2tD
b3B5Q09OTkVDVFByb3h5UmVzcG9uc2UobV9yZWFkU3RyZWFtLmdldCgpLCBtX2h0dHBzVVJMLmdl
dCgpLCBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkpKTsKKyAgICAgICAgICAg
ICAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gcHJveHlSZXNwb25zZSA9IGNvcHlDT05O
RUNUUHJveHlSZXNwb25zZShtX3JlYWRTdHJlYW0uZ2V0KCksIG1faHR0cHNVUkwuZ2V0KCksIG1f
cHJveHlIb3N0LmdldCgpLCBtX3Byb3h5UG9ydC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm94eVJlc3BvbnNlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTU4OCw3
ICs2NDYsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OndyaXRlU3RyZWFtQ2FsbGJh
Y2soQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkKIAogICAgICAgICBpZiAobV9jb25uZWN0aW5nU3Vi
c3RhdGUgPT0gV2FpdGluZ0ZvckNvbm5lY3QpIHsKICAgICAgICAgICAgIGlmIChtX2Nvbm5lY3Rp
b25UeXBlID09IENPTk5FQ1RQcm94eSkgewotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkhU
VFBNZXNzYWdlUmVmPiBwcm94eVJlc3BvbnNlID0gYWRvcHRDRih3a0NvcHlDT05ORUNUUHJveHlS
ZXNwb25zZShtX3JlYWRTdHJlYW0uZ2V0KCksIG1faHR0cHNVUkwuZ2V0KCksIG1fcHJveHlIb3N0
LmdldCgpLCBtX3Byb3h5UG9ydC5nZXQoKSkpOworICAgICAgICAgICAgICAgIFJldGFpblB0cjxD
RkhUVFBNZXNzYWdlUmVmPiBwcm94eVJlc3BvbnNlID0gY29weUNPTk5FQ1RQcm94eVJlc3BvbnNl
KG1fcmVhZFN0cmVhbS5nZXQoKSwgbV9odHRwc1VSTC5nZXQoKSwgbV9wcm94eUhvc3QuZ2V0KCks
IG1fcHJveHlQb3J0LmdldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIXByb3h5UmVzcG9uc2Up
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0K
aW5kZXggODVhYjkxMzY1OWE0NjE0NGQ5YzQwZTMzNzhkZTY0MzZiYTUxY2QwZC4uNzlmYWVmMDlh
YjZjOGRhYmFkOTdmNzhjOWE0MGY5Yjg3ZjQzNDA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCkKICAgICB9CiAKICAgICBpZiAobV9uc1JlcXVlc3QpIHsKLSAgICAgICAg
TlNTdHJpbmcqIGNhY2hlUGFydGl0aW9uID0gW05TVVJMUHJvdG9jb2wgcHJvcGVydHlGb3JLZXk6
KE5TU3RyaW5nICopd2tDYWNoZVBhcnRpdGlvbktleSgpIGluUmVxdWVzdDptX25zUmVxdWVzdC5n
ZXQoKV07CisgICAgICAgIE5TU3RyaW5nKiBjYWNoZVBhcnRpdGlvbiA9IFtOU1VSTFByb3RvY29s
IHByb3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKV9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSBpblJl
cXVlc3Q6bV9uc1JlcXVlc3QuZ2V0KCldOwogICAgICAgICBpZiAoY2FjaGVQYXJ0aXRpb24pCiAg
ICAgICAgICAgICBtX2NhY2hlUGFydGl0aW9uID0gY2FjaGVQYXJ0aXRpb247CiAgICAgfQpAQCAt
MjA4LDcgKzIwOCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpCiAgICAgU3RyaW5nIHBhcnRpdGlvbiA9IGNhY2hlUGFydGl0aW9uKCk7CiAgICAgaWYg
KCFwYXJ0aXRpb24uaXNOdWxsKCkgJiYgIXBhcnRpdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAg
TlNTdHJpbmcgKnBhcnRpdGlvblZhbHVlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5n
OnBhcnRpdGlvbi51dGY4KCkuZGF0YSgpXTsKLSAgICAgICAgW05TVVJMUHJvdG9jb2wgc2V0UHJv
cGVydHk6cGFydGl0aW9uVmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKXdrQ2FjaGVQYXJ0aXRpb25L
ZXkoKSBpblJlcXVlc3Q6bnNSZXF1ZXN0XTsKKyAgICAgICAgW05TVVJMUHJvdG9jb2wgc2V0UHJv
cGVydHk6cGFydGl0aW9uVmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKV9rQ0ZVUkxDYWNoZVBhcnRp
dGlvbktleSBpblJlcXVlc3Q6bnNSZXF1ZXN0XTsKICAgICB9CiAKICNpZiAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmlu
ZGV4IGZkMTI0Y2JjNDY0ZmFkYmJjMDAxZTcxZGRjYTIyZTcxYmM4ZTNiY2YuLjdiNjY3NTE2MDFi
YWI0ZWMwNTVmZDEyMGIxMWMxMzM0ZWEzOWQ0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQpAQCAtMzgsNiArMzgsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNp
bXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQogI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdC5oPgpAQCAtNTcsNiArNTgsMTM2
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgSVBDIHsKIAorc3RhdGlj
IFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVTZXJpYWxpemFibGVSZXBy
ZXNlbnRhdGlvbihDRkluZGV4IHZlcnNpb24sIENGVHlwZVJlZiogb2JqZWN0cywgQ0ZJbmRleCBv
YmplY3RDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmIHByb3RvY29sUHJvcGVydGllcywgQ0ZOdW1iZXJS
ZWYgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSwgQ0ZUeXBlUmVm
IHRva2VuTnVsbCkKK3sKKyAgICBhdXRvIGFyY2hpdmVMaXN0QXJyYXkgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlQXJyYXlDYWxs
QmFja3MpKTsKKworICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IG9iamVjdENvdW50OyArK2kp
IHsKKyAgICAgICAgQ0ZUeXBlUmVmIG9iamVjdCA9IG9iamVjdHNbaV07CisgICAgICAgIGlmIChv
YmplY3QpIHsKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcmNoaXZlTGlzdEFycmF5
LmdldCgpLCBvYmplY3QpOworICAgICAgICAgICAgQ0ZSZWxlYXNlKG9iamVjdCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBBcHBlbmQgb3VyIHRva2VuIG51bGwgcmVwcmVzZW50
YXRpb24uCisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJjaGl2ZUxpc3RBcnJheS5n
ZXQoKSwgdG9rZW5OdWxsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gZGljdGlvbmFy
eSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CisKKyAgICBhdXRvIHZlcnNpb25OdW1iZXIgPSBhZG9wdENGKENGTnVt
YmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNGSW5kZXhUeXBlLCAmdmVy
c2lvbikpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RS
KCJ2ZXJzaW9uIiksIHZlcnNpb25OdW1iZXIuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJhcmNoaXZlTGlzdCIpLCBhcmNoaXZlTGlzdEFy
cmF5LmdldCgpKTsKKworICAgIGlmIChwcm90b2NvbFByb3BlcnRpZXMpIHsKKyAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInByb3RvY29sUHJvcGVy
dGllcyIpLCBwcm90b2NvbFByb3BlcnRpZXMpOworICAgICAgICBDRlJlbGVhc2UocHJvdG9jb2xQ
cm9wZXJ0aWVzKTsKKyAgICB9CisKKyAgICBpZiAoZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSB7Cisg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJleHBl
Y3RlZENvbnRlbnRMZW5ndGgiKSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKKyAgICAgICAgQ0ZS
ZWxlYXNlKGV4cGVjdGVkQ29udGVudExlbmd0aCk7CisgICAgfQorCisgICAgaWYgKG1pbWVUeXBl
KSB7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIENGU1RS
KCJtaW1lVHlwZSIpLCBtaW1lVHlwZSk7CisgICAgICAgIENGUmVsZWFzZShtaW1lVHlwZSk7Cisg
ICAgfQorCisgICAgQ0ZBbGxvY2F0b3JEZWFsbG9jYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9i
amVjdHMpOworCisgICAgcmV0dXJuIGRpY3Rpb25hcnk7Cit9CisKK3N0YXRpYyBDRlR5cGVSZWYg
ZGljdGlvbmFyeVZhbHVlT2ZUeXBlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5LCBDRlN0cmlu
Z1JlZiBrZXksIENGVHlwZUlEIHR5cGUpCit7CisgICAgQ0ZUeXBlUmVmIHZhbHVlID0gQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwga2V5KTsKKyAgICBpZiAodmFsdWUgJiYgQ0ZHZXRU
eXBlSUQodmFsdWUpID09IHR5cGUpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworc3RhdGljIGJvb2wgY3JlYXRlQXJjaGl2ZUxpc3QoQ0ZEaWN0aW9uYXJ5
UmVmIHJlcHJlc2VudGF0aW9uLCBDRlR5cGVSZWYgdG9rZW5OdWxsLCBDRkluZGV4KiB2ZXJzaW9u
LCBDRlR5cGVSZWYqKiBvYmplY3RzLCBDRkluZGV4KiBvYmplY3RDb3VudCwgQ0ZEaWN0aW9uYXJ5
UmVmKiBwcm90b2NvbFByb3BlcnRpZXMsIENGTnVtYmVyUmVmKiBleHBlY3RlZENvbnRlbnRMZW5n
dGgsIENGU3RyaW5nUmVmKiBtaW1lVHlwZSkKK3sKKyAgICBDRk51bWJlclJlZiB2ZXJzaW9uTnVt
YmVyID0gKENGTnVtYmVyUmVmKWRpY3Rpb25hcnlWYWx1ZU9mVHlwZShyZXByZXNlbnRhdGlvbiwg
Q0ZTVFIoInZlcnNpb24iKSwgQ0ZOdW1iZXJHZXRUeXBlSUQoKSk7CisgICAgaWYgKCF2ZXJzaW9u
TnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIUNGTnVtYmVyR2V0VmFs
dWUodmVyc2lvbk51bWJlciwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsIHZlcnNpb24pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBDRkFycmF5UmVmIGFyY2hpdmVMaXN0QXJyYXkgPSAoQ0ZB
cnJheVJlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RSKCJhcmNo
aXZlTGlzdCIpLCBDRkFycmF5R2V0VHlwZUlEKCkpOworICAgIGlmICghYXJjaGl2ZUxpc3RBcnJh
eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgKm9iamVjdENvdW50ID0gQ0ZBcnJheUdl
dENvdW50KGFyY2hpdmVMaXN0QXJyYXkpOworICAgICpvYmplY3RzID0gKENGVHlwZVJlZiopbWFs
bG9jKHNpemVvZihDRlR5cGVSZWYpICogKm9iamVjdENvdW50KTsKKyAgICBmb3IgKENGSW5kZXgg
aSA9IDA7IGkgPCAqb2JqZWN0Q291bnQ7ICsraSkgeworICAgICAgICBDRlR5cGVSZWYgb2JqZWN0
ID0gQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhcmNoaXZlTGlzdEFycmF5LCBpKTsKKyAgICAgICAg
aWYgKG9iamVjdCA9PSB0b2tlbk51bGwpCisgICAgICAgICAgICAoKm9iamVjdHMpW2ldID0gbnVs
bHB0cjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKCpvYmplY3RzKVtpXSA9IG9iamVjdDsK
KyAgICB9CisKKyAgICBpZiAocHJvdG9jb2xQcm9wZXJ0aWVzKQorICAgICAgICAqcHJvdG9jb2xQ
cm9wZXJ0aWVzID0gKENGRGljdGlvbmFyeVJlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVz
ZW50YXRpb24sIENGU1RSKCJwcm90b2NvbFByb3BlcnRpZXMiKSwgQ0ZEaWN0aW9uYXJ5R2V0VHlw
ZUlEKCkpOworCisgICAgaWYgKGV4cGVjdGVkQ29udGVudExlbmd0aCkKKyAgICAgICAgKmV4cGVj
dGVkQ29udGVudExlbmd0aCA9IChDRk51bWJlclJlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVw
cmVzZW50YXRpb24sIENGU1RSKCJleHBlY3RlZENvbnRlbnRMZW5ndGgiKSwgQ0ZOdW1iZXJHZXRU
eXBlSUQoKSk7CisKKyAgICBpZiAobWltZVR5cGUpCisgICAgICAgICptaW1lVHlwZSA9IChDRlN0
cmluZ1JlZilkaWN0aW9uYXJ5VmFsdWVPZlR5cGUocmVwcmVzZW50YXRpb24sIENGU1RSKCJtaW1l
VHlwZSIpLCBDRlN0cmluZ0dldFR5cGVJRCgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitz
dGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlU2VyaWFsaXphYmxlUmVwcmVz
ZW50YXRpb24oQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCwgQ0ZUeXBlUmVmIHRva2VuTnVsbCkK
K3sKKyAgICBDRkluZGV4IHZlcnNpb247CisgICAgQ0ZUeXBlUmVmKiBvYmplY3RzOworICAgIENG
SW5kZXggb2JqZWN0Q291bnQ7CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3RvY29sUHJvcGVydGll
czsKKworICAgIC8vIEZJWE1FICgxMjg4OTUxOCk6IERvIG5vdCBzZXJpYWxpemUgSFRUUCBtZXNz
YWdlIGJvZHkuCisgICAgLy8gMS4gSXQgY2FuIGJlIGxhcmdlIGFuZCB0aHVzIGNvc3RseSB0byBz
ZW5kIGFjcm9zcy4KKyAgICAvLyAyLiBJdCBpcyBtaXNsZWFkaW5nIHRvIHByb3ZpZGUgYSBib2R5
IHdpdGggc29tZSByZXF1ZXN0cywgd2hpbGUgb3RoZXJzIHVzZSBib2R5IHN0cmVhbXMsIHdoaWNo
IGNhbm5vdCBiZSBzZXJpYWxpemVkIGF0IGFsbC4KKworICAgIF9DRlVSTFJlcXVlc3RDcmVhdGVB
cmNoaXZlTGlzdChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZlJlcXVlc3QsICZ2ZXJzaW9uLCAmb2Jq
ZWN0cywgJm9iamVjdENvdW50LCAmcHJvdG9jb2xQcm9wZXJ0aWVzKTsKKworICAgIC8vIFRoaXMg
d2lsbCBkZWFsbG9jYXRlIHRoZSBwYXNzZWQgaW4gYXJndW1lbnRzLgorICAgIHJldHVybiBjcmVh
dGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbih2ZXJzaW9uLCBvYmplY3RzLCBvYmplY3RDb3Vu
dCwgcHJvdG9jb2xQcm9wZXJ0aWVzLCBudWxscHRyLCBudWxscHRyLCB0b2tlbk51bGwpOworfQor
CitzdGF0aWMgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY3JlYXRlQ0ZVUkxSZXF1ZXN0RnJv
bVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZiByZXByZXNlbnRhdGlv
biwgQ0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sKKyAgICBDRkluZGV4IHZlcnNpb247CisgICAgQ0ZU
eXBlUmVmKiBvYmplY3RzOworICAgIENGSW5kZXggb2JqZWN0Q291bnQ7CisgICAgQ0ZEaWN0aW9u
YXJ5UmVmIHByb3RvY29sUHJvcGVydGllczsKKworICAgIGlmICghY3JlYXRlQXJjaGl2ZUxpc3Qo
cmVwcmVzZW50YXRpb24sIHRva2VuTnVsbCwgJnZlcnNpb24sICZvYmplY3RzLCAmb2JqZWN0Q291
bnQsICZwcm90b2NvbFByb3BlcnRpZXMsIG51bGxwdHIsIG51bGxwdHIpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY2ZSZXF1ZXN0ID0gYWRvcHRDRihfQ0ZVUkxSZXF1ZXN0
Q3JlYXRlRnJvbUFyY2hpdmVMaXN0KGtDRkFsbG9jYXRvckRlZmF1bHQsIHZlcnNpb24sIG9iamVj
dHMsIG9iamVjdENvdW50LCBwcm90b2NvbFByb3BlcnRpZXMpKTsKKyAgICBmcmVlKG9iamVjdHMp
OworICAgIHJldHVybiBXVEZNb3ZlKGNmUmVxdWVzdCk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBjcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihOU1VSTFJl
cXVlc3QgKnJlcXVlc3QsIENGVHlwZVJlZiB0b2tlbk51bGwpCit7CisgICAgcmV0dXJuIGNyZWF0
ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKFtyZXF1ZXN0IF9DRlVSTFJlcXVlc3RdLCB0b2tl
bk51bGwpOworfQorCitzdGF0aWMgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gY3JlYXRlTlNVUkxS
ZXF1ZXN0RnJvbVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZiByZXBy
ZXNlbnRhdGlvbiwgQ0ZUeXBlUmVmIHRva2VuTnVsbCkKK3sKKyAgICBhdXRvIGNmUmVxdWVzdCA9
IGNyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXByZXNl
bnRhdGlvbiwgdG9rZW5OdWxsKTsKKyAgICBpZiAoIWNmUmVxdWVzdCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gX2lu
aXRXaXRoQ0ZVUkxSZXF1ZXN0OmNmUmVxdWVzdC5nZXQoKV0pOworfQorCiAjaWYgVVNFKENGVVJM
Q09OTkVDVElPTikKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQ
bGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QpCiB7CkBAIC03OSw3ICsyMTAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
CiAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0cmVhbShtdXRhYmxlUmVx
dWVzdCwgbmlsKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0
aW9uYXJ5ID0gYWRvcHRDRihXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2Vu
dGF0aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gY3JlYXRlU2Vy
aWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXplLmdldCgpLCBJUEM6OnRv
a2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5n
ZXQoKSk7CiAKICAgICAvLyBUaGUgZmFsbGJhY2sgYXJyYXkgaXMgcGFydCBvZiBDRlVSTFJlcXVl
c3QsIGJ1dCBpdCBpcyBub3QgZW5jb2RlZCBieSBXS0NGVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6
YWJsZVJlcHJlc2VudGF0aW9uLgpAQCAtMTA2LDcgKzIzNyw3IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QKICAgICAgICAgWyhOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdFRvU2VyaWFsaXpl
IHNldEhUVFBCb2R5U3RyZWFtOm5pbF07CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoV0tOU1VSTFJlcXVlc3RDcmVhdGVTZXJpYWxp
emFibGVSZXByZXNlbnRhdGlvbihyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCksIElQQzo6dG9rZW5O
dWxsVHlwZVJlZigpKSk7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFy
eSA9IGNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5n
ZXQoKSwgSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOwogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIs
IGRpY3Rpb25hcnkuZ2V0KCkpOwogCiAgICAgLy8gVGhlIGZhbGxiYWNrIGFycmF5IGlzIHBhcnQg
b2YgTlNVUkxSZXF1ZXN0LCBidXQgaXQgaXMgbm90IGVuY29kZWQgYnkgV0tOU1VSTFJlcXVlc3RD
cmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbi4KQEAgLTEzMiwxMyArMjYzLDEzIEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYgZGVjb2RlciwgUmVzb3VyCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCi0gICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY2ZVUkxSZXF1
ZXN0ID0gYWRvcHRDRihXS0NyZWF0ZUNGVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNl
bnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOworICAg
IFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IGNmVVJMUmVxdWVzdCA9IGNyZWF0ZUNGVVJMUmVx
dWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBJUEM6
OnRva2VuTnVsbFR5cGVSZWYoKSk7CiAgICAgaWYgKCFjZlVSTFJlcXVlc3QpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHJlc291cmNlUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChjZlVS
TFJlcXVlc3QuZ2V0KCkpOwogI2Vsc2UKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VS
TFJlcXVlc3QgPSBXS05TVVJMUmVxdWVzdEZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihk
aWN0aW9uYXJ5LmdldCgpLCBJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSk7CisgICAgUmV0YWluUHRy
PE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1ZXN0ID0gY3JlYXRlTlNVUkxSZXF1ZXN0RnJvbVNlcmlh
bGl6YWJsZVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnkuZ2V0KCksIElQQzo6dG9rZW5OdWxsVHlw
ZVJlZigpKTsKICAgICBpZiAoIW5zVVJMUmVxdWVzdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQppbmRleCAwNDViOWIyZDQ4MmU0MjI3OWM5NmU5YTE5M2M0ZWQ3ZDA4NmI3OWMxLi5i
ZDU3YTdjYjdmOTY1N2VmNTFiYzUxMWRlYTRjZTE1N2VhODc4ZWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTQ1
NSw3ICs0NTUsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6Omxl
Z2FjeVBsYXRmb3JtRGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBjYWNoZVN0b3JhZ2VQYXRoID0gYWRvcHROUygoTlNTdHJpbmcgKilXS0Nv
cHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBj
YWNoZVN0b3JhZ2VQYXRoID0gYWRvcHROUygoTlNTdHJpbmcgKilfQ0ZVUkxDYWNoZUNvcHlDYWNo
ZURpcmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwog
ICAgIGlmICghY2FjaGVTdG9yYWdlUGF0aCkKICAgICAgICAgY2FjaGVTdG9yYWdlUGF0aCA9IEAi
fi9MaWJyYXJ5L1dlYktpdC9DYWNoZVN0b3JhZ2UiOwogCkBAIC00NjQsNyArNDY0LDcgQEAgU3Ry
aW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoKQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5nPiBjYWNoZVBh
dGggPSBhZG9wdE5TKChOU1N0cmluZyAqKVdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgp
KTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGNhY2hlUGF0aCA9IGFkb3B0TlMoKE5TU3RyaW5n
ICopX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkoW1tOU1VSTENhY2hlIHNoYXJlZFVSTENh
Y2hlXSBfQ0ZVUkxDYWNoZV0pKTsKICAgICBpZiAoIWNhY2hlUGF0aCkKICAgICAgICAgY2FjaGVQ
YXRoID0gQCJ+L0xpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJLaXQuV2ViUHJvY2VzcyI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViU3lzdGVtSW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggYmRhNWQ3M2RmYzEyMmYzZTAy
MjNhYWFlNTUyODRkNGIzOWU1NzNjZS4uYTYxYjg0MTQ1MzAzNGZiOWM5Y2FiODRiZWY2ZWFhZDEw
MTRiZTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KQEAgLTM2LDE4ICsz
NiwxMiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBpbml0T25jZTsKICAgICAKICAgICBkaXNwYXRjaF9vbmNlKCZpbml0
T25jZSwgXnsKLSAgICAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogI2lmICFQ
TEFURk9STShJT1MpCiAgICAgICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7CiAgICAgICAg
IElOSVQoRHJhd01lZGlhU2xpZGVyVHJhY2spOwogICAgICAgICBJTklUKERyYXdNZWRpYVVJUGFy
dCk7CiAgICAgICAgIElOSVQoSGl0VGVzdE1lZGlhVUlQYXJ0KTsKICAgICAgICAgSU5JVChNZWFz
dXJlTWVkaWFVSVBhcnQpOwotI2VuZGlmCi0gICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5QXV0
aG9yaXphdGlvbkZvclN0cmVhbSk7Ci0gICAgICAgIElOSVQoU2V0Q09OTkVDVFByb3h5Rm9yU3Ry
ZWFtKTsKLQotI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIElOSVQoRXhlY3V0YWJsZVdhc0xp
bmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZCk7CiAgICAgICAgIElOSVQoQ29weURlZmF1bHRTZWFy
Y2hQcm92aWRlckRpc3BsYXlOYW1lKTsKICAgICAgICAgSU5JVChDdXJzb3IpOwpAQCAtNTgsMTIg
KzUyLDYgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgICAgICBJ
TklUKE5TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKTsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KFBVQkxJQ19TVUZGSVhfTElTVCkKLSAgICAgICAgSU5JVChJc1B1YmxpY1N1ZmZpeCk7Ci0jZW5k
aWYKLQotICAgICAgICBJTklUKENhY2hlUGFydGl0aW9uS2V5KTsKLQogICAgICAgICBJTklUKEV4
ZXJuYWxEZXZpY2VUeXBlRm9yUGxheWVyKTsKICAgICAgICAgSU5JVChFeGVybmFsRGV2aWNlRGlz
cGxheU5hbWVGb3JQbGF5ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KaW5kZXggMTc0NjU4
NmIyNDJmNTJlMDdhOTlmZTkxNWFhNmI0ZjYyYTNiYzVkNC4uMDYyMDJjZWVkYWNkYjcwMTk3Y2Jl
MTBiODNjNmVmNzUyNTJkZDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQpAQCAtNDIsNyAr
NDIsNiBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgaWYgKGRp
ZEluaXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIElOSVQoQ29weUNPTk5FQ1RQcm94eVJlc3Bv
bnNlKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIElOSVQoRHJhd0JlemVsZWRUZXh0QXJlYSk7
CiAgICAgSU5JVChEcmF3TWVkaWFVSVBhcnQpOwpAQCAtNTAsOCArNDksNiBAQCB2b2lkIEluaXRX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAgSU5JVChIaXRUZXN0TWVkaWFVSVBhcnQp
OwogICAgIElOSVQoTWVhc3VyZU1lZGlhVUlQYXJ0KTsKICNlbmRpZgotICAgIElOSVQoU2V0Q09O
TkVDVFByb3h5QXV0aG9yaXphdGlvbkZvclN0cmVhbSk7Ci0gICAgSU5JVChTZXRDT05ORUNUUHJv
eHlGb3JTdHJlYW0pOwogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBJTklUKEV4ZWN1dGFibGVX
YXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQpOwpAQCAtNjcsMTIgKzY0LDYgQEAgdm9pZCBJ
bml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAgIElOSVQoTlNSZWJvdW5kRGVsdGFG
b3JFbGFzdGljRGVsdGEpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNU
KQotICAgIElOSVQoSXNQdWJsaWNTdWZmaXgpOwotI2VuZGlmCi0KLSAgICBJTklUKENhY2hlUGFy
dGl0aW9uS2V5KTsKLQogICAgIElOSVQoRXhlcm5hbERldmljZVR5cGVGb3JQbGF5ZXIpOwogICAg
IElOSVQoRXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGM3MjMzYmUxMzMyZGI4YjVmYWU3
Nzg3YzlhNjhlNjEzZjRjYTNiZjkuLmI1ZTcyNjNmM2RmMmNkZjIwOTFhODMyOGJiYmVmOTc0NGU1
MmM2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTg1NzMsNyArODU3Myw3IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwp
Y2FjaGVNb2RlbAogICAgIGlmIChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBz
X2NhY2hlTW9kZWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TU3RyaW5nICpuc3VybENhY2hl
RGlyZWN0b3J5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoV0tDb3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpOworICAgIE5TU3RyaW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0gQ0ZCcmlkZ2luZ1Jl
bGVhc2UoX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkoW1tOU1VSTENhY2hlIHNoYXJlZFVS
TENhY2hlXSBfQ0ZVUkxDYWNoZV0pKTsKICAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAg
ICAgICAgIG5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>