<?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>237754</bug_id>
          
          <creation_ts>2022-03-10 20:38:31 -0800</creation_ts>
          <short_desc>Abort SQLite activities to release file lock when process is about to suspend</short_desc>
          <delta_ts>2022-03-19 00:42:45 -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>Website Storage</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>annulen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1850361</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-10 20:38:31 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850362</commentid>
    <comment_count>1</comment_count>
      <attachid>454441</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-10 20:46:21 -0800</bug_when>
    <thetext>Created attachment 454441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850372</commentid>
    <comment_count>2</comment_count>
      <attachid>454446</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-10 22:32:00 -0800</bug_when>
    <thetext>Created attachment 454446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850376</commentid>
    <comment_count>3</comment_count>
      <attachid>454447</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-10 23:10:36 -0800</bug_when>
    <thetext>Created attachment 454447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850591</commentid>
    <comment_count>4</comment_count>
      <attachid>454505</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-11 12:22:16 -0800</bug_when>
    <thetext>Created attachment 454505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850606</commentid>
    <comment_count>5</comment_count>
      <attachid>454510</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-11 14:06:21 -0800</bug_when>
    <thetext>Created attachment 454510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850609</commentid>
    <comment_count>6</comment_count>
      <attachid>454511</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-11 14:17:35 -0800</bug_when>
    <thetext>Created attachment 454511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850612</commentid>
    <comment_count>7</comment_count>
      <attachid>454512</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-11 14:31:34 -0800</bug_when>
    <thetext>Created attachment 454512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852340</commentid>
    <comment_count>8</comment_count>
      <attachid>454984</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-17 09:58:24 -0700</bug_when>
    <thetext>Created attachment 454984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852349</commentid>
    <comment_count>9</comment_count>
      <attachid>454987</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-17 10:18:57 -0700</bug_when>
    <thetext>Created attachment 454987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852612</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-17 21:39:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/90470669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852863</commentid>
    <comment_count>11</comment_count>
      <attachid>455144</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-03-18 15:29:33 -0700</bug_when>
    <thetext>Created attachment 455144
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454441</attachid>
            <date>2022-03-10 20:46:21 -0800</date>
            <delta_ts>2022-03-10 23:05:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237754-20220310204620.patch</filename>
            <type>text/plain</type>
            <size>93408</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ1OTA1MmVkMDY5YWM1
NjI0MDFiODhmYTM4MTYxMjhlYzA1ZGJiNS4uMDVjOWE2YTk0Y2ZlYzVkYzFhMWFiNTg5NjE5N2Yz
NDBjNjRlMmYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIyLTAzLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIFNRTGl0ZSBkYXRh
YmFzZSBjb25uZWN0aW9ucyBmb3IgTG9jYWxTdG9yYWdlIHdoZW4gYXNzZXJ0aW9uIGlzIGRyb3Bw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6
OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlcjo6c2V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlcjo6YmVnaW5BY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlcjo6ZW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmNoZWNrTGFzdEFjdGl2aXR5VGltZXN0YW1wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjppbnZhbGlkYXRl
QWxsQWN0aXZpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlcjo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsOjp+U1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0
U3RhdGVtZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0VHJhbnNhY3Rpb25J
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVTUUxpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjp+U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
YmVnaW5BY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmVuZEFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6aW52YWxpZGF0ZUFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6c2V0SXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uOjppc09wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjplbmFibGVFeHRlbmRlZFJlc3VsdENvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVJbk1lbW9yeVRlbXBTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZVdBTEpvdXJu
YWxNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrcG9pbnRNb2RlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlV0FMQ2hlY2twb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZUlu
dGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RDaGFuZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6bGFzdEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6bGFzdEVycm9yTWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnRhYmxlQ3JlYXRpb25RdWVy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmV4ZWN1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRNYXhpbXVt
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnBhZ2VT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVsZWFz
ZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNy
ZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpiaW5kQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OmJpbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6Y29sdW1uQmxvYkFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uSW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OnJlc2V0U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c3RlcFN0YXRlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lTdGF0ZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVUcmFuc2FjdGlvbkFu
ZEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29t
bWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjpyb2xsYmFja1RyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmluTWVtb3J5UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnBhdGggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6
flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50OjpiaW5kQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6YmluZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OmNvbHVtbkJsb2JBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudDo6Y29sdW1uSW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6c3RlcCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
U3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2Nv
cGU6On5TUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVyYXRvciBi
b29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVz
ZXRTY29wZTo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50UmVzZXRTY29wZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6b3BlcmF0b3ItPik6CisgICAgICAgICogcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6flNRTGl0
ZURhdGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb246OnJvbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oOiBBZGRlZC4KKwogMjAyMi0wMy0wOSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJy
dGMgdmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQg
cGlwZWxpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBiMWE5MjliMzYwNjE0NDQzMDA2ZjU1YjNmZDljNTYxMGZl
N2FlMzkuLjY1MWRmNzMwMWM4NjEyNzA4N2NhNDQyNjU3Y2FjY2RhMmRiMmFlZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRlIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGZvciBM
b2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMgZHJvcHBlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6Om1fbWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6OlNR
TGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktp
dDo6U1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6
OlNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkpOgorICAgICAg
ICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6Y2FjaGVkU3RhdGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6YWxsSXRlbXMpOgorICAgICAgICAoV2ViS2l0
OjpTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0
b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFy
ZWE6OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3Jh
Z2VBcmVhLmg6CisgICAgICAgICogU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRl
cjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nl
c3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVuZExhc3RBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6
OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKToK
KyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6ZW5zdXJlQXNz
ZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6
cmVsZWFzZUFzc2VydGlvbik6CisgICAgICAgICogU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRp
b25Ib2xkZXIuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjItMDMtMDkgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRvIHBhc3Mgd2Vi
cnRjIHZpZGVvIGZyYW1lIGJ1ZmZlcnMgdGhyb3VnaCBSZWFsdGltZU1lZGlhU291cmNlIGJhc2Vk
IHBpcGVsaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3MzY4NDIxYjI3NzRmZDVkNWU2YTZhZmU3OTYw
YjQyZWNiNDQ4N2M5Li4wNTc3OWFmMjBhMzQ2YzZmNTVjYTcxNmQzM2I4M2E3YTc3ZTlhYzM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjI1Miw3ICsyMjUyLDExIEBAIHBsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL1RpbWluZ0FsbG93T3Jp
Z2luLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZUF1dGhvcml6ZXIuY3BwCiBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIuY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlVHJhY2tlci5jcHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0
aW9uLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCiBwbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNl
dFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGQ1NTMyY2I5ZDhjYTU1ZGYyM2VkOGIzNzE2YTViNDY5ZDJmZjgyM2Eu
LjBhMWJmYWQ4NzI1ZjRmYjRmZjhiOWVkNTE0MzViMjgzNTk3NDdmZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwMjksNiAr
MzAyOSwxMiBAQAogCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyogQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
RDQzN0EyMUQ1N0IzRkUwMEFCODVFQSAvKiBVUkxEZWNvbXBvc2l0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZCOURDQTE4OURFMTAwMDBCQjg0
MkMgLyogVVJMRGVjb21wb3NpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzRDQzN0EzMUQ1N0I3RTIwMEFCODVFQSAvKiBKU01lZGlhTGlz
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQ3MjZGRTcxNkQ5RjIwNDAwM0E0RTZEIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENUREMTcyN0Q5MjhC
ODAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREMTUyN0Q5MjhCNjAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDFCMjdEOUVBQzYwMDEwN0M3NSAvKiBTUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDE4MjdEOUVBQzUwMDEwN0M3NSAvKiBTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5M0Q1REQxRDI3RDlFQUM2MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRDVERDFBMjdEOUVBQzYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTkzRDVERDI1MjdEQTU2RDYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudFJlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRDVERDIzMjdEQTU2RDUwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dFJlc2V0U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5M0Q1REQyQjI3REE1NzBGMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2Fj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
NUREMjcyN0RBNTcwQzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Q1REQyRDI3
REE1NzBGMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDI5MjdEQTU3MEQwMDEwN0M3
NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDZCNzcwMjU0Qjk4QTAwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2RjI1NEI5MDJEMDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzRDZCNzcxMjU0QkFCNDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNENkI3NkQyNTRCOEUxQjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3QTgy
NTUxRDQxRjAwNThERDNBIC8qIER1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QTYyNTUxRDNF
RDAwNThERDNBIC8qIER1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjkxMSw2ICsxMjkxNywx
NiBAQAogCQk5M0QwNTAzMTI1M0ExNDhDMDAyQTMwNzIgLyogQWJzdHJhY3RSYW5nZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNEMTk2MzAxRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbk9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRDE5NjMyMUQ2Q0FCODIwMEZDN0U0NyAvKiBFeGNlcHRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDE0MjdEOTI4QjQwMDEwN0M3NSAvKiBTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTNENUREMTUyN0Q5MjhCNjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMTgyN0Q5RUFDNTAwMTA3
Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMTkyN0Q5RUFDNTAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMUEyN0Q5RUFDNjAwMTA3Qzc1IC8qIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzRDVERDIzMjdEQTU2RDUwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudFJlc2V0U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzRDVERDI2MjdEQTU3MEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDI3MjdEQTU3
MEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMjgyN0RBNTcwQzAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzRDVERDI5MjdEQTU3MEQwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc2RDI1NEI4RTFCMDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3
NkUyNTRCOEUxQjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNENkI3NkYyNTRCOTAyRDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1OTIsOSArMTk2MDgsMTkg
QEAKIAkJCQkxQTJFNkU3ODBDQzU1NkQ1MDA0QTIwNjIgLyogU1FMaXRlQXV0aG9yaXplci5jcHAg
Ki8sCiAJCQkJMUEyMjQ2NDMwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZURhdGFiYXNlLmNwcCAq
LywKIAkJCQkxQTIyNDY0NDBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJhc2UuaCAqLywK
KwkJCQk5M0Q1REQxOTI3RDlFQUM1MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIuY3BwICovLAorCQkJCTkzRDVERDFBMjdEOUVBQzYwMDEwN0M3NSAvKiBTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlci5oICovLAorCQkJCTkzRDVERDE4MjdEOUVBQzUwMDEwN0M3NSAv
KiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaCAqLywKKwkJCQk5M0Q1REQxNDI3
RDkyOEI0MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk5
M0Q1REQxNTI3RDkyOEI2MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmggKi8s
CisJCQkJOTNENUREMjYyN0RBNTcwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
LmNwcCAqLywKKwkJCQk5M0Q1REQyOTI3REE1NzBEMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQuaCAqLywKKwkJCQk5M0Q1REQyMzI3REE1NkQ1MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggKi8sCiAJCQkJN0U0NzRFMUQxMjQ5NERDOTAwMjM1
MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8sCiAJCQkJN0U0NzRFMUMxMjQ5NERD
OTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovLAogCQkJCTdFNDc0RTFCMTI0
OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywKKwkJCQk5
M0Q1REQyODI3REE1NzBDMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAg
Ki8sCisJCQkJOTNENUREMjcyN0RBNTcwQzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNh
Y3Rpb24uaCAqLywKIAkJCQlCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5jcHAgKi8sCiAJCQkJQjVBNjg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVT
eXN0ZW0uaCAqLywKIAkJCQkxQTIyNDY0NTBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3RhdGVt
ZW50LmNwcCAqLywKQEAgLTM3NDM1LDggKzM3NDYxLDE0IEBACiAJCQkJOTdCQzZBM0IxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTENhbGxiYWNrV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdC
QzZBM0MxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTIyNDY0QTBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJhc2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCTkzRDVERDFEMjdEOUVBQzYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENUREMUIyN0Q5RUFDNjAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTNENUREMTcyN0Q5MjhCODAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNENUREMkQyN0RBNTcwRjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQyNTI3REE1NkQ2MDAxMDdD
NzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3RTQ3NEUxRjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3RTQ3NEUxRTEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQyQjI3REE1NzBG
MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjVBNjg0MjIwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5n
U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4MyAvKiBT
UUxpdGVJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGY1ZTAxMjRmZDEzMTMyOTdiNzlkMDA4ODBjYzMxZjJkOGI4ZWNiOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlci5jcHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIu
aCIKKworI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXImIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5n
bGV0b24oKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI+IHRyYWNrZXI7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0geworICAgICAgICB0cmFja2Vy
LmNvbnN0cnVjdCgpOworICAgIH0pOworICAgIHJldHVybiB0cmFja2VyLmdldCgpOworfQorCit2
b2lkIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJbXBsKGNvbnN0IFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbEdlbmVyYXRvciYgZ2VuZXJhdG9yKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIG1faW1wbCA9IGdlbmVyYXRvcigpLnB0cigp
OworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpiZWdpbkFjdGl2aXR5
KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQVNTRVJUKG1fYWN0aXZlQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbikpOworICAg
IG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wID0gV2FsbFRpbWU6Om5vdygpOworICAgIGlmIChtX2Fj
dGl2ZUNvbm5lY3Rpb25zLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgbV9pbXBsLT53aWxsQmVn
aW5GaXJzdEFjdGl2aXR5KCk7CisKKyAgICBtX2FjdGl2ZUNvbm5lY3Rpb25zLmFkZChjb25uZWN0
aW9uKTsKKyAgICBjb25uZWN0aW9uLnNldElzQWN0aXZlKHRydWUpOworfQorCit2b2lkIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjplbmRBY3Rpdml0eShTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisg
ICAgaWYgKCFtX2ltcGwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2FjdGl2ZUNvbm5l
Y3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKSkKKyAgICAgICAgY29ubmVjdGlvbi5zZXRJc0FjdGl2
ZShmYWxzZSk7CisKKyAgICBpZiAoIW1fYWN0aXZlQ29ubmVjdGlvbnMuY29tcHV0ZXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcCA9IFdhbGxU
aW1lOjpub3coKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcigxX3MsIFt0aW1l
c3RhbXAgPSBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcF0geworICAgICAgICBTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuY2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAo
dGltZXN0YW1wKTsKKyAgICB9KTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlcjo6Y2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAoV2FsbFRpbWUgdGltZXN0YW1wKQorewor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9pbXBsKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9sYXN0QWN0aXZpdHlUaW1lc3RhbXAgPT0gdGltZXN0YW1w
KQorICAgICAgICBtX2ltcGwtPmRpZEVuZExhc3RBY3Rpdml0eSgpOworfQorCit2b2lkIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjppbnZhbGlkYXRlQWxsQWN0aXZpdGllcygpCit7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKG1faW1wbCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9hY3RpdmVDb25uZWN0aW9u
cykKKyAgICAgICAgY29ubmVjdGlvbi5pbnZhbGlkYXRlQWN0aXZpdHkoKTsKKworICAgIG1fYWN0
aXZlQ29ubmVjdGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlcjo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCB2YWx1ZSkKK3sKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9pbXBsLT5zZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyh2YWx1ZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg0
M2JlNjRhMzZjZWEyNGU2MTVlMTI3ZGZjODFhZGI3OWUxZTg4NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tl
ci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbDsKKworY2xhc3MgU1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlciYgc2luZ2xldG9uKCk7CisgICAgdm9p
ZCBiZWdpbkFjdGl2aXR5KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIHZvaWQgZW5k
QWN0aXZpdHkoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJik7CisgICAgdXNpbmcgU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsR2VuZXJhdG9yID0gRnVuY3Rpb248UmVmPFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbD4oKT47CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRJbXBsKGNvbnN0IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbEdlbmVyYXRvciYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKKyAg
ICB2b2lkIGNoZWNrTGFzdEFjdGl2aXR5VGltZXN0YW1wKFdhbGxUaW1lKTsKKworICAgIHZvaWQg
c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCB2YWx1ZSk7Citwcml2YXRlOgorICAgIExvY2sg
bV9sb2NrOworICAgIFdhbGxUaW1lIG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wOworICAgIFdlYWtI
YXNoU2V0PFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4gbV9hY3RpdmVDb25uZWN0aW9uczsKKyAg
ICBSZWZQdHI8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsPiBtX2ltcGw7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGM3YzQ0MWJlNzUyZTNjOTBhYTZlNzc4ZmI3OTQ5N2UzYjQ5ZDJkMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlckltcGwuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbD4geworcHVibGljOgor
ICAgIHZpcnR1YWwgflNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbCgpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5GaXJzdEFjdGl2aXR5KCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRFbmRMYXN0QWN0aXZpdHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldElzSG9s
ZGluZ0xvY2tlZEZpbGVzKGJvb2wgdmFsdWUpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkwYTEwZWViY2RjODM5NzUyOWZhZjcw
MWFkOWIzMzI4YjkwNzE0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNTUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIu
aCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0
ZURhdGFiYXNlVHJhbnNhY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMg
dWludDY0X3QgbmV4dFN0YXRlbWVudElkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBzdGQ6OmF0
b21pYzx1aW50NjRfdD4gY3VycmVudFN0YXRlbWVudElkZW50aWZpZXI7CisgICAgcmV0dXJuICsr
Y3VycmVudFN0YXRlbWVudElkZW50aWZpZXI7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBuZXh0VHJh
bnNhY3Rpb25JZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+
IGN1cnJlbnRUcmFuc2FjdGlvbklkZW50aWZpZXI7CisgICAgcmV0dXJuICsrY3VycmVudFRyYW5z
YWN0aW9uSWRlbnRpZmllcjsKK30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNRTGl0ZSgpCit7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoZmxh
ZywgW10geworICAgICAgICBpZiAoaW50IHJlc3VsdCA9IHNxbGl0ZTNfaW5pdGlhbGl6ZSgpOyBy
ZXN1bHQgIT0gU1FMSVRFX09LKQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFn
ZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIHNxbGl0ZTogJXMiLCBzcWxpdGUzX2VycnN0cihyZXN1
bHQpKTsKKyAgICB9KTsKK30KKworUmVmPFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4gU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNob3Vs
ZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24ocGF0aCwgc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENs
b3NlKSk7Cit9CisKK1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6U1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRDb21taXRUcmFuc2FjdGlvbkF0
Q2xvc2UpCisgICAgOiBtX3BhdGgocGF0aCkKKyAgICAsIG1fc2hvdWxkQ29tbWl0VHJhbnNhY3Rp
b25BdENsb3NlKHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkKK3sKKyAgICBpbml0aWFs
aXplU1FMaXRlKCk7CisgICAgYmVnaW5BY3Rpdml0eSgpOworCisgICAgaWYgKCFvcGVuKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghZW5hYmxlRXh0ZW5kZWRSZXN1bHRDb2RlKCkgfHwg
IWVuYWJsZUluTWVtb3J5VGVtcFN0b3JlKCkpIHsKKyAgICAgICAgY2xvc2UoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChlbmFibGVXQUxKb3VybmFsTW9kZSgpKQorICAgICAg
ICBleGVjdXRlV0FMQ2hlY2twb2ludChDaGVja3BvaW50TW9kZTo6VHJ1bmNhdGUpOworfQorCitT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246On5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24oKQorewor
ICAgIGNsb3NlKCk7CisgICAgZW5kQWN0aXZpdHkoKTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246Om9wZW4oKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKwor
ICAgIGlmICghbV9pc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklY
TUU6IGFkZCBzdXBwb3J0IGZvciBpbi1tZW1vcnkgZGF0YWJhc2UuCisgICAgaWYgKG1fcGF0aCA9
PSBpbk1lbW9yeVBhdGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IG9wZW5G
bGFncyA9IFNRTElURV9PUEVOX0FVVE9QUk9YWSB8IFNRTElURV9PUEVOX1JFQURXUklURSB8IFNR
TElURV9PUEVOX0NSRUFURTsKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19vcGVuX3YyKEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3BhdGgpLmRhdGEoKSwgJm1fc3FsaXRl
Q29ubmVjdGlvbiwgb3BlbkZsYWdzLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0ICE9IFNRTElU
RV9PSyB8fCAhbV9zcWxpdGVDb25uZWN0aW9uKSB7CisgICAgICAgIG1fc3FsaXRlQ29ubmVjdGlv
biA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNsb3NlKCkKK3sKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgc3FsaXRlM19pbnRlcnJ1cHQobV9zcWxpdGVDb25u
ZWN0aW9uKTsKKworICAgIGlmICghc3FsaXRlM19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5l
Y3Rpb24pKSB7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBxdWVyeSA9ICJST0xMQkFDSyJfczsKKyAg
ICAgICAgaWYgKG1fc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKQorICAgICAgICAgICAg
cXVlcnkgPSAiQ09NTUlUIl9zOworICAgICAgICBzcWxpdGUzX3N0bXQqIHN0YXRlbWVudCB7IG51
bGxwdHIgfTsKKyAgICAgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfcHJlcGFyZV92MihtX3NxbGl0
ZUNvbm5lY3Rpb24sIHF1ZXJ5LmNoYXJhY3RlcnMoKSwgcXVlcnkubGVuZ3RoKCkgKyAxLCAmc3Rh
dGVtZW50LCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfT0spCisgICAg
ICAgICAgICByZXN1bHQgPSBzcWxpdGUzX3N0ZXAoc3RhdGVtZW50KTsKKyAgICAgICAgaWYgKHJl
c3VsdCAhPSBTUUxJVEVfRE9ORSkKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNRTERh
dGFiYXNlLCAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjbG9zZSBmYWlsZWQgdG8gcm9sbCBi
YWNrIHRyYW5zYWN0aW9uICglZCkgLSAoJXMpIiwgcmVzdWx0LCBzcWxpdGUzX2Vycm1zZyhtX3Nx
bGl0ZUNvbm5lY3Rpb24pKTsKKyAgICAgICAgc3FsaXRlM19yZXNldChzdGF0ZW1lbnQpOworICAg
ICAgICBzcWxpdGUzX2ZpbmFsaXplKHN0YXRlbWVudCk7CisgICAgICAgIG1fb25nb2luZ1RyYW5z
YWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8m
IHN0YXRlbWVudCA6IG1fc3RhdGVtZW50cy52YWx1ZXMoKSkgeworICAgICAgICBzcWxpdGUzX3Jl
c2V0KHN0YXRlbWVudC5zcWxpdGVTdGF0ZW1lbnQpOworICAgICAgICBzcWxpdGUzX2ZpbmFsaXpl
KHN0YXRlbWVudC5zcWxpdGVTdGF0ZW1lbnQpOworICAgIH0KKworICAgIG1fc3RhdGVtZW50cy5j
bGVhcigpOworCisgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfY2xvc2UobV9zcWxpdGVDb25uZWN0
aW9uKTsKKyAgICBpZiAocmVzdWx0ICE9IFNRTElURV9PSykKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoU1FMRGF0YWJhc2UsICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNsb3NlQ29ubmVj
dGlvbjogZmFpbGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAlcyIsIHJlc3VsdCwgc3FsaXRl
M19lcnJtc2cobV9zcWxpdGVDb25uZWN0aW9uKSk7CisKKyAgICBtX3NxbGl0ZUNvbm5lY3Rpb24g
PSBudWxscHRyOworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKK30KKwordm9pZCBTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OmJlZ2luQWN0aXZpdHkoKQoreworICAgIFNRTGl0ZURhdGFiYXNlQWN0
aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5iZWdpbkFjdGl2aXR5KCp0aGlzKTsKK30KKwordm9p
ZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuZEFjdGl2aXR5KCkKK3sKKyAgICBTUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuZW5kQWN0aXZpdHkoKnRoaXMpOwor
fQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aW52YWxpZGF0ZUFjdGl2aXR5KCkK
K3sKKyAgICBjbG9zZSgpOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c2V0
SXNBY3RpdmUoYm9vbCB2YWx1ZSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisK
KyAgICBtX2lzQWN0aXZlID0gdmFsdWU7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjppc09wZW4oKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIHJl
dHVybiAhIW1fc3FsaXRlQ29ubmVjdGlvbjsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmVuYWJsZUV4dGVuZGVkUmVzdWx0Q29kZSgpCit7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OworICAgIHJldHVybiAhIW1fc3FsaXRlQ29ubmVjdGlvbiAmJiBzcWxpdGUzX2V4
dGVuZGVkX3Jlc3VsdF9jb2RlcyhtX3NxbGl0ZUNvbm5lY3Rpb24sIDEpID09IFNRTElURV9PSzsK
K30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZUluTWVtb3J5VGVtcFN0
b3JlKCkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZSgiUFJBR01BIHRlbXBfc3RvcmUgPSBNRU1PUlki
KTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZVdBTEpvdXJuYWxN
b2RlKCkKK3sKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNyZWF0ZUludGVybmFsU3Rh
dGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgIlBSQUdNQSBqb3VybmFsX21vZGU9V0FMIl9z
IH0pOworICAgIGlmICghb3B0aW9uYWxJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9uYWxJZGVudGlmaWVyOworICAgIGJvb2wg
ZW5hYmxlZCA9IGZhbHNlOworICAgIGlmIChzdGVwU3RhdGVtZW50KGlkZW50aWZpZXIpID09IFNR
TElURV9ST1cpCisgICAgICAgIGVuYWJsZWQgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb2x1bW5UZXh0KGlkZW50aWZpZXIsIDApLCAid2FsIik7CisgICAgZGVzdHJveUludGVybmFs
U3RhdGVtZW50KGlkZW50aWZpZXIpOworCisgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgYXV0
byBzaG1QYXRoID0gbWFrZVN0cmluZyhtX3BhdGgsICItc2htIl9zKTsKKyAgICAgICAgaWYgKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoc2htUGF0aCkgJiYgIUZpbGVTeXN0ZW06Om1ha2VTYWZlVG9V
c2VNZW1vcnlNYXBGb3JQYXRoKHNobVBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiBlbmFibGVkOworfQorCitzdGF0aWMgaW50IGNoZWNrcG9pbnRN
b2RlVmFsdWUoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpDaGVja3BvaW50TW9kZSBtb2RlKQor
eworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpDaGVja3BvaW50TW9kZTo6RnVsbDoKKyAgICAgICAgcmV0dXJuIFNRTElURV9DSEVDS1BPSU5U
X0ZVTEw7CisgICAgY2FzZSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OkNoZWNrcG9pbnRNb2Rl
OjpUcnVuY2F0ZToKKyAgICAgICAgcmV0dXJuIFNRTElURV9DSEVDS1BPSU5UX1RSVU5DQVRFOwor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZVdBTENoZWNrcG9pbnQoQ2hlY2twb2ludE1vZGUg
bW9kZSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgaWYgKCFtX3NxbGl0
ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzcWxpdGUz
X3dhbF9jaGVja3BvaW50X3YyKG1fc3FsaXRlQ29ubmVjdGlvbiwgbnVsbHB0ciwgY2hlY2twb2lu
dE1vZGVWYWx1ZShtb2RlKSwgbnVsbHB0ciwgbnVsbHB0cikgPT0gU1FMSVRFX09LOworfQorCitz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZUlu
dGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHF1ZXJ5KQoreworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHNxbGl0ZTNfc3RtdCogc3FsaXRlU3RhdGVt
ZW50IHsgbnVsbHB0ciB9OworICAgIGNvbnN0IGNoYXIqIHRhaWwgPSBudWxscHRyOworICAgIGlu
dCByZXN1bHQ7CisgICAgaWYgKHF1ZXJ5LmlzOEJpdCgpICYmIHF1ZXJ5LmlzQWxsQVNDSUkoKSkK
KyAgICAgICAgcmVzdWx0ID0gc3FsaXRlM19wcmVwYXJlX3YyKG1fc3FsaXRlQ29ubmVjdGlvbiwg
cXVlcnkubGVuZ3RoKCkgPyByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihxdWVyeS5jaGFy
YWN0ZXJzOCgpKSA6ICIiLCBxdWVyeS5sZW5ndGgoKSArIDEsICZzcWxpdGVTdGF0ZW1lbnQsICZ0
YWlsKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfcHJlcGFyZV92MihtX3Nx
bGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5LnV0ZjgoKS5kYXRhKCksIHF1ZXJ5LnV0ZjgoKS5sZW5ndGgo
KSArIDEsICZzcWxpdGVTdGF0ZW1lbnQsICZ0YWlsKTsKKyAgICBpZiAodGFpbCAmJiAqdGFpbCkK
KyAgICAgICAgcmVzdWx0ID0gU1FMSVRFX0VSUk9SOworCisgICAgaWYgKHJlc3VsdCAhPSBTUUxJ
VEVfT0spIHsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShzcWxpdGVTdGF0ZW1lbnQpOworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9
IG5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKCk7CisgICAgbV9zdGF0ZW1lbnRzLmFkZChpZGVudGlm
aWVyLCBJbnRlcm5hbFN0YXRlbWVudCB7IGlkZW50aWZpZXIsIHNxbGl0ZVN0YXRlbWVudCwgc3Rk
OjpudWxsb3B0IH0pOworCisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9CisKK3ZvaWQgU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQodWludDY0X3QgaWRl
bnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgaWYgKCFtX3Nx
bGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIGl0ZXIgPSBt
X3N0YXRlbWVudHMuZmluZChpZGVudGlmaWVyKTsgaXRlciAhPSBtX3N0YXRlbWVudHMuZW5kKCkp
IHsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShpdGVyLT52YWx1ZS5zcWxpdGVTdGF0ZW1lbnQp
OworICAgICAgICBtX3N0YXRlbWVudHMucmVtb3ZlKGl0ZXIpOworICAgIH0KK30KKworaW50IFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6bGFzdENoYW5nZXMoKQoreworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gc3FsaXRlM19jaGFuZ2VzKG1fc3FsaXRlQ29ubmVjdGlvbik7
Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvcigpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgcmV0dXJuIHNxbGl0ZTNfZXJyY29k
ZShtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitjb25zdCBjaGFyKiBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246Omxhc3RFcnJvck1lc3NhZ2UoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuICJEYXRh
YmFzZSBjb25uZWN0aW9uIGlzIG5vdCBvcGVuIjsKKworICAgIHJldHVybiBzcWxpdGUzX2Vycm1z
ZyhtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjp0YWJsZUNyZWF0aW9uUXVlcnkoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCit7CisgICAg
YXV0byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBh
cmUoU3RyaW5nVmlldyB7ICJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBl
ID0gJ3RhYmxlJyBBTkQgbmFtZSA9ID87Il9zIH0pOworICAgIGlmICghb3B0aW9uYWxJZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBpZGVudGlmaWVyID0gKm9wdGlv
bmFsSWRlbnRpZmllcjsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmIChiaW5kVGV4dChpZGVu
dGlmaWVyLCAxLCB0YWJsZU5hbWUpID09IFNRTElURV9PSyAmJiBzdGVwU3RhdGVtZW50KGlkZW50
aWZpZXIpID09IFNRTElURV9ST1cpCisgICAgICAgIHJlc3VsdCA9IGNvbHVtblRleHQoaWRlbnRp
ZmllciwgMCk7CisgICAgZGVzdHJveUludGVybmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmV4
ZWN1dGUoQVNDSUlMaXRlcmFsIHF1ZXJ5KQoreworICAgIHJldHVybiBleGVjdXRlKFN0cmluZ1Zp
ZXcgeyBxdWVyeSB9KTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmV4ZWN1
dGUoU3RyaW5nVmlldyBxdWVyeSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisK
KyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfZXhlYyhtX3NxbGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5LnV0
ZjgoKS5kYXRhKCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHJldHVybiByZXN1
bHQgPT0gU1FMSVRFX09LIHx8IHJlc3VsdCA9PSBTUUxJVEVfRE9ORTsKK30KKwordm9pZCBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplKGludDY0X3Qgc2l6ZSkKK3sKKyAg
ICBpbnQgY3VycmVudFBhZ2VTaXplID0gcGFnZVNpemUoKTsKKyAgICBpZiAoIWN1cnJlbnRQYWdl
U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50NjRfdCBuZXdNYXhQYWdlQ291bnQgPSBj
dXJyZW50UGFnZVNpemUgPyBzaXplIC8gY3VycmVudFBhZ2VTaXplIDogMDsKKyAgICBhdXRvIHF1
ZXJ5ID0gbWFrZVN0cmluZygiUFJBR01BIG1heF9wYWdlX2NvdW50ID0gIiwgbmV3TWF4UGFnZUNv
dW50KTsKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNyZWF0ZUludGVybmFsU3RhdGVt
ZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgIlBSQUdNQSBwYWdlX3NpemUiX3MgfSk7CisgICAg
aWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaWRl
bnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7CisgICAgaWYgKHN0ZXBTdGF0ZW1lbnQoaWRl
bnRpZmllcikgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplIGZhaWxlZCB0byBzZXQgbWF4aW11bSBzaXplIG9m
IGRhdGFiYXNlIHRvICVsbGkgYnl0ZXMiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHNpemUpKTsK
KworICAgIGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKK30KKworaW50IFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cGFnZVNpemUoKQoreworICAgIGF1dG8gb3B0aW9uYWxJ
ZGVudGlmaWVyID0gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcg
eyAiUFJBR01BIHBhZ2Vfc2l6ZSJfcyB9KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9uYWxJZGVu
dGlmaWVyOworICAgIGludCBzaXplID0gY29sdW1uSW50KGlkZW50aWZpZXIsIDApOworICAgIGRl
c3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKKworICAgIHJldHVybiBzaXplOwor
fQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVsZWFzZU1lbW9yeSgpCit7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNfZGJfcmVsZWFzZV9tZW1vcnkobV9z
cWxpdGVDb25uZWN0aW9uKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVN0YXRlbWVudEFuZFByZXBh
cmUoQVNDSUlMaXRlcmFsIHF1ZXJ5KQoreworICAgIHJldHVybiBjcmVhdGVTdGF0ZW1lbnRBbmRQ
cmVwYXJlKFN0cmluZ1ZpZXcgeyBxdWVyeSB9KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVN0YXRl
bWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSkKK3sKKyAgICBhdXRvIG9wdGlvbmFsSWRl
bnRpZmllciA9IGNyZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShxdWVyeSk7CisgICAg
aWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4obmV3IFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50KCp0aGlzLCAqb3B0aW9uYWxJZGVudGlmaWVyKSk7Cit9CisKK3Nx
bGl0ZTNfc3RtdCogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpmaW5kU1FMaXRlU3RhdGVtZW50
KHVpbnQ2NF90IGlkZW50aWZpZXIpIGNvbnN0IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5B
TFlTSVMKK3sKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKKworICAgIGF1dG8gaXRlciA9
IG1fc3RhdGVtZW50cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyID09IG1fc3RhdGVt
ZW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gaXRlci0+
dmFsdWUuc3FsaXRlU3RhdGVtZW50OworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpiaW5kQmxvYih1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWlu
dDhfdD4gYmxvYikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgaWYgKCFt
X3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIHNx
bGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYg
KCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICBy
ZXR1cm4gc3FsaXRlM19iaW5kX2Jsb2Ioc3FsaXRlU3RhdGVtZW50LCBpbmRleCwgYmxvYi5kYXRh
KCksIGJsb2Iuc2l6ZSgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKK30KKworaW50IFNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6YmluZEJsb2IodWludDY0X3QgaWRlbnRpZmllciwgaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBT
dHJpbmdWaWV3KHRleHQpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworICAgIFVDaGFyIGFueUNo
YXJhY3RlciA9IDA7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnM7CisgICAgaWYgKHRleHQu
aXNFbXB0eSgpICYmICF0ZXh0LmlzTnVsbCgpKQorICAgICAgICBjaGFyYWN0ZXJzID0gJmFueUNo
YXJhY3RlcjsKKyAgICBlbHNlCisgICAgICAgIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENoYXJh
Y3RlcnM7CisKKyAgICByZXR1cm4gYmluZEJsb2IoaWRlbnRpZmllciwgaW5kZXgsIFNwYW4geyBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjaGFyYWN0ZXJzKSwgdGV4dC5sZW5ndGgo
KSAqIHNpemVvZihVQ2hhcikgfSk7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OmJpbmRUZXh0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBpbmRleCwgU3RyaW5nVmlldyB0ZXh0
KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0
YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxp
dGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICBpbnQgcmVz
dWx0OworICAgIGlmICh0ZXh0LmlzOEJpdCgpICYmIHRleHQuaXNBbGxBU0NJSSgpKQorICAgICAg
ICByZXN1bHQgPSBzcWxpdGUzX2JpbmRfdGV4dChzcWxpdGVTdGF0ZW1lbnQsIGluZGV4LCB0ZXh0
Lmxlbmd0aCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odGV4dC5jaGFyYWN0ZXJz
OCgpKSA6ICIiLCB0ZXh0Lmxlbmd0aCgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKKyAgICBlbHNlCisg
ICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfYmluZF90ZXh0KHNxbGl0ZVN0YXRlbWVudCwgaW5kZXgs
IHRleHQudXRmOCgpLmRhdGEoKSwgdGV4dC51dGY4KCkubGVuZ3RoKCksIFNRTElURV9UUkFOU0lF
TlQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6Y29sdW1uQmxvYkFzU3RyaW5nKHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBjb2wp
Cit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3Rh
dGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0
ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNvbnN0IHZvaWQqIGJsb2Ig
PSBzcWxpdGUzX2NvbHVtbl9ibG9iKHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKKyAgICBpZiAoIWJs
b2IpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29sdW1u
X2J5dGVzKHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFy
Kj4oYmxvYiksIHNpemUgLyBzaXplb2YoVUNoYXIpKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6Y29sdW1uSW50KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBjb2wpCit7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVtZW50
ID0gZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRl
bWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3FsaXRlM19jb2x1bW5faW50
KHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6Y29sdW1uVGV4dCh1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgY29sKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZp
bmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzcWxp
dGUzX2NvbHVtbl90ZXh0KHNxbGl0ZVN0YXRlbWVudCwgY29sKSwgc3FsaXRlM19jb2x1bW5fYnl0
ZXMoc3FsaXRlU3RhdGVtZW50LCBjb2wpKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6cmVzZXRTdGF0ZW1lbnQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5kU1FM
aXRlU3RhdGVtZW50KGlkZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3RhdGVtZW50KQorICAg
ICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfcmVz
ZXQoc3FsaXRlU3RhdGVtZW50KTsKKyAgICBzcWxpdGUzX2NsZWFyX2JpbmRpbmdzKHNxbGl0ZVN0
YXRlbWVudCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6c3RlcFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRT
UUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisg
ICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICByZXR1cm4gc3FsaXRlM19zdGVwKHNx
bGl0ZVN0YXRlbWVudCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpkZXN0
cm95U3RhdGVtZW50KHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgZGVzdHJveUludGVybmFs
U3RhdGVtZW50KGlkZW50aWZpZXIpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJh
c2VUcmFuc2FjdGlvbj4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVUcmFuc2FjdGlv
bkFuZEJlZ2luKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAo
IW1fc3FsaXRlQ29ubmVjdGlvbiB8fCBzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29u
bmVjdGlvbikpIHsKKyAgICAgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3Rk
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoc3Fs
aXRlM19leGVjKG1fc3FsaXRlQ29ubmVjdGlvbiwgIkJFR0lOIiwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0cikgIT0gU1FMSVRFX0RPTkUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
bV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbmV4dFRyYW5zYWN0aW9uSWRlbnRpZmll
cigpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bj4obmV3IFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24oKnRoaXMsICptX29uZ29pbmdUcmFuc2Fj
dGlvbklkZW50aWZpZXIpKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNv
bW1pdFRyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fb25nb2luZ1RyYW5zYWN0aW9u
SWRlbnRpZmllciB8fCAqbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyICE9IHRyYW5zYWN0
aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3FsaXRlQ29ubmVj
dGlvbiAmJiAhc3FsaXRlM19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5lY3Rpb24pKQorICAg
ICAgICBzcWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAiQ09NTUlUIiwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0cik7CisKKyAgICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIg
PSBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpyb2xs
YmFja1RyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fb25nb2luZ1RyYW5zYWN0aW9u
SWRlbnRpZmllciB8fCAqbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyICE9IHRyYW5zYWN0
aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3FsaXRlQ29ubmVj
dGlvbiAmJiAhc3FsaXRlM19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5lY3Rpb24pKQorICAg
ICAgICBzcWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAiUk9MTEJBQ0siLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyKTsKKworICAgIG1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmll
ciA9IHN0ZDo6bnVsbG9wdDsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omlz
T25nb2luZ1RyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICByZXR1cm4gbV9vbmdvaW5nVHJhbnNh
Y3Rpb25JZGVudGlmaWVyICYmICptX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPT0gdHJh
bnNhY3Rpb25JZGVudGlmaWVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjlmN2Y3Y2U3YmY4Y2VhNGRhMzI1MjdlNDhkYjBmMjM2ZDgyMDBmYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8c3FsaXRlMy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ7CitjbGFzcyBTUUxpdGVEYXRhYmFz
ZVRyYW5zYWN0aW9uOworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4geworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogaW5NZW1vcnlQYXRoKCkgeyByZXR1cm4gIjptZW1v
cnk6Il9zOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgc2hvdWxkQ29tbWl0VHJh
bnNhY3Rpb25BdENsb3NlID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb24oKTsKKworICAgIFN0cmluZyBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9w
YXRoOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc09wZW4oKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBpbnQgbGFzdENoYW5nZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgbGFzdEVycm9y
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogbGFzdEVycm9yTWVzc2FnZSgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0YWJsZUNyZWF0aW9uUXVlcnkoY29uc3QgU3RyaW5n
JiB0YWJsZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXhlY3V0ZShBU0NJSUxpdGVy
YWwgcXVlcnkpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXhlY3V0ZShTdHJpbmdWaWV3IHF1
ZXJ5KTsKKyAgICBlbnVtIGNsYXNzIENoZWNrcG9pbnRNb2RlIDogdWludDhfdCB7IEZ1bGwsIFRy
dW5jYXRlIH07CisgICAgYm9vbCBleGVjdXRlV0FMQ2hlY2twb2ludChDaGVja3BvaW50TW9kZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhpbXVtU2l6ZShpbnQ2NF90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VNZW1vcnkoKTsKKyAgICB2b2lkIGludmFsaWRhdGVB
Y3Rpdml0eSgpOworICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7CisKKyAgICAvLyBTdGF0ZW1l
bnQgb3BlcmF0aW9ucy4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnQ+IGNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoQVNDSUlMaXRlcmFs
IHF1ZXJ5KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IGNy
ZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSk7CisgICAgaW50IGJpbmRC
bG9iKHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIsIGludCBpbmRleCwgU3Bhbjxjb25zdCB1
aW50OF90PiBibG9iKTsKKyAgICBpbnQgYmluZEJsb2IodWludDY0X3Qgc3RhdGVtZW50SWRlbnRp
ZmllciwgaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIGludCBiaW5kVGV4dCh1
aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCk7
CisgICAgU3RyaW5nIGNvbHVtbkJsb2JBc1N0cmluZyh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlm
aWVyLCBpbnQgY29sKTsKKyAgICBpbnQgY29sdW1uSW50KHVpbnQ2NF90IHN0YXRlbWVudElkZW50
aWZpZXIsIGludCBjb2wpOworICAgIFN0cmluZyBjb2x1bW5UZXh0KHVpbnQ2NF90IHN0YXRlbWVu
dElkZW50aWZpZXIsIGludCBjb2wpOworICAgIGludCByZXNldFN0YXRlbWVudCh1aW50NjRfdCBz
dGF0ZW1lbnRJZGVudGlmaWVyKTsKKyAgICBpbnQgc3RlcFN0YXRlbWVudCh1aW50NjRfdCBzdGF0
ZW1lbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRlc3Ryb3lTdGF0ZW1lbnQodWludDY0X3Qgc3Rh
dGVtZW50SWRlbnRpZmllcik7CisKKyAgICAvLyBUcmFuc2FjdGlvbiBvcGVyYXRpb25zLgorICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9u
PiBjcmVhdGVUcmFuc2FjdGlvbkFuZEJlZ2luKCk7CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlv
bih1aW50NjRfdCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgcm9sbGJhY2tUcmFu
c2FjdGlvbih1aW50NjRfdCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIGJvb2wgaXNPbmdv
aW5nVHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKworcHJpdmF0
ZToKKyAgICBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29s
IHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSk7CisgICAgYm9vbCBvcGVuKCk7CisgICAg
dm9pZCBjbG9zZSgpOworICAgIHZvaWQgYmVnaW5BY3Rpdml0eSgpOworICAgIHZvaWQgZW5kQWN0
aXZpdHkoKTsKKyAgICBib29sIGVuYWJsZUV4dGVuZGVkUmVzdWx0Q29kZSgpOworICAgIGJvb2wg
ZW5hYmxlSW5NZW1vcnlUZW1wU3RvcmUoKTsKKyAgICBib29sIGVuYWJsZVdBTEpvdXJuYWxNb2Rl
KCk7CisgICAgaW50IHBhZ2VTaXplKCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gY3Jl
YXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpOworICAgIHZv
aWQgZGVzdHJveUludGVybmFsU3RhdGVtZW50KHVpbnQ2NF90IGlkZW50Zmllcik7CisgICAgc3Fs
aXRlM19zdG10KiBmaW5kU1FMaXRlU3RhdGVtZW50KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZp
ZXIpIGNvbnN0OworCisgICAgU3RyaW5nIG1fcGF0aDsKKyAgICBib29sIG1fc2hvdWxkQ29tbWl0
VHJhbnNhY3Rpb25BdENsb3NlOworICAgIExvY2sgbV9sb2NrOworICAgIHN0cnVjdCBJbnRlcm5h
bFN0YXRlbWVudCB7CisgICAgICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CisgICAgICAgIHNxbGl0
ZTNfc3RtdCogc3FsaXRlU3RhdGVtZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiB0cmFuc2FjdGlvbklkZW50aWZpZXI7CisgICAgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBJ
bnRlcm5hbFN0YXRlbWVudD4gbV9zdGF0ZW1lbnRzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2Nr
KTsKKyAgICBzcWxpdGUzKiBtX3NxbGl0ZUNvbm5lY3Rpb24gIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9sb2NrKSB7IG51bGxwdHIgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX29uZ29p
bmdUcmFuc2FjdGlvbklkZW50aWZpZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAg
IGJvb2wgbV9pc0FjdGl2ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM5
OWRlNmMzODg5MWZiNzU3ODBlMTAxNzNhYmFlNTA2YWIyYzE2NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAK
QEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIgorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICA6IG1fY29ubmVjdGlvbihj
b25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK1NRTGl0
ZURhdGFiYXNlU3RhdGVtZW50Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQoKQoreworICAgIG1f
Y29ubmVjdGlvbi0+ZGVzdHJveVN0YXRlbWVudChtX2lkZW50aWZpZXIpOworfQorCitpbnQgU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgU3Bhbjxjb25zdCB1aW50
OF90PiBibG9iKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmJpbmRCbG9iKG1faWRlbnRp
ZmllciwgaW5kZXgsIGJsb2IpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJp
bmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIHJldHVybiBtX2Nv
bm5lY3Rpb24tPmJpbmRCbG9iKG1faWRlbnRpZmllciwgaW5kZXgsIHRleHQpOworfQorCitpbnQg
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRUZXh0KGludCBpbmRleCwgU3RyaW5nVmlldyB0
ZXh0KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmJpbmRUZXh0KG1faWRlbnRpZmllciwg
aW5kZXgsIHRleHQpOworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNvbHVt
bkJsb2JBc1N0cmluZyhpbnQgY29sKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNvbHVt
bkJsb2JBc1N0cmluZyhtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6Y29sdW1uSW50KGludCBjb2wpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlv
bi0+Y29sdW1uSW50KG1faWRlbnRpZmllciwgY29sKTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50Ojpjb2x1bW5UZXh0KGludCBjb2wpCit7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi0+Y29sdW1uVGV4dChtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK2ludCBTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudDo6cmVzZXQoKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnJlc2V0
U3RhdGVtZW50KG1faWRlbnRpZmllcik7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dDo6c3RlcCgpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+c3RlcFN0YXRlbWVudChtX2lk
ZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRlN2U5MDkwZDJmNTI3OGIwNGNhMWM3OTkxOWM3NDc4YzRmYmJmNTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudCk7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBpbmRl
eCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9iKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmlu
ZEJsb2IoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIFdFQkNPUkVfRVhQT1JU
IGludCBiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNvbHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBpbnQgY29sdW1uSW50KGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBj
b2x1bW5UZXh0KGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCByZXNldCgpOworICAg
IFdFQkNPUkVfRVhQT1JUIGludCBzdGVwKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjsKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudChT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKworICAgIFJl
ZjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBt
X2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnRSZXNldFNjb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRlMjBkOWYwNjQxZTM5YzIyMTdhYmM2YmM1ODAy
MmEzMzkzNGZlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaApAQCAtMCwwICsxLDcxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50OworCitjbGFzcyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSk7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KiBz
dGF0ZW1lbnQpCisgICAgICAgIDogbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQorICAgIHsKKyAgICB9
CisKKyAgICB+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKCkKKyAgICB7CisgICAg
ICAgIGlmIChtX3N0YXRlbWVudCkKKyAgICAgICAgICAgIG1fc3RhdGVtZW50LT5yZXNldCgpOwor
ICAgIH0KKworICAgIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZShTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudFJlc2V0U2NvcGUmJiBvdGhlcikKKyAgICAgICAgOiBtX3N0YXRlbWVudChv
dGhlci5tX3N0YXRlbWVudC5nZXQoKSkKKyAgICB7CisgICAgICAgIG90aGVyLm1fc3RhdGVtZW50
ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2Nv
cGUmIG9wZXJhdG9yPShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUmJiBvdGhlcikK
KyAgICB7CisgICAgICAgIHN0ZDo6c3dhcChtX3N0YXRlbWVudCwgb3RoZXIubV9zdGF0ZW1lbnQp
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zdGF0ZW1lbnQ7IH0KKyAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0YXRlbWVudDsgfQorICAgIFNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50KiBnZXQoKSB7IHJldHVybiBtX3N0YXRlbWVudC5nZXQoKTsgfQorICAgIFNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50KiBvcGVyYXRvci0+KCkgeyByZXR1cm4gbV9zdGF0ZW1lbnQuZ2V0KCk7
IH0KKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBtX3N0
YXRlbWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkwNjhhODcxZTk0ZjBjMzhjNzU4YjVjZjU1N2JjYjA4MjZkYjJkYjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2VUcmFuc2FjdGlvbi5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgiCisKKyNp
bmNsdWRlICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9u
KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgaWRlbnRpZmll
cikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCit7Cit9CisKK1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246On5TUUxpdGVEYXRh
YmFzZVRyYW5zYWN0aW9uKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnJvbGxiYWNrVHJhbnNhY3Rp
b24obV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpj
b21taXQoKQoreworICAgIG1fY29ubmVjdGlvbi0+Y29tbWl0VHJhbnNhY3Rpb24obV9pZGVudGlm
aWVyKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpyb2xsYmFjaygpCit7
CisgICAgbV9jb25uZWN0aW9uLT5yb2xsYmFja1RyYW5zYWN0aW9uKG1faWRlbnRpZmllcik7Cit9
CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24o
KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmlzT25nb2luZ1RyYW5zYWN0aW9uKG1faWRl
bnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQxZWRkZDU3ODYxNDI4NTIyODhkYTZjZTk1MzhkNGZmOTI0YTc0ZDEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFu
c2FjdGlvbi5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb247CisK
K2NsYXNzIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24geworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24pOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRhYmFzZVRyYW5zYWN0
aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXQoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJvbGxiYWNrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc09uZ29pbmdU
cmFuc2FjdGlvbigpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb247CisgICAgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbihTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb24mLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKworICAgIFJlZjxTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNmI5ZWYxMGJlZjkxODU3OWNmNGM4
MTkzNDQxZTdmMjQwMDFmZDZlYi4uMTU1Mzk1NjlkYjVhZDgzMDQ2OWU2YjJkYjIyYTcyYTI3Yjk5
OTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJQcmVjb25uZWN0VGFzay5oIgogI2lu
Y2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCIKICNpbmNsdWRlICJSZW1vdGVX
b3JrZXJUeXBlLmgiCisjaW5jbHVkZSAiU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oIgog
I2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlclNldC5oIgpAQCAtNzks
NiArODAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFi
YXNlQWN0aXZpdHlUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oPgpAQCAtMTU5LDcgKzE2MSw3IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3
b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1lCiAgICAgLCBtX25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlm
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAsIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyKFt0aGlzXShib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKSB7IHNldElzSG9sZGluZ0xvY2tl
ZEZpbGVzKGlzSG9sZGluZ0xvY2tlZEZpbGVzKTsgfSkKKyAgICAsIG1fd2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyKFtdKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsgU1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGlzSG9s
ZGluZ0xvY2tlZEZpbGVzKTsgfSkKICNlbmRpZgogICAgICwgbV9tZXNzYWdlUG9ydENoYW5uZWxS
ZWdpc3RyeShjcmVhdGVNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgqdGhpcykpCiB7CkBAIC0x
NzcsNiArMTc5LDEyIEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAgICAgTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyZWF0ZWQoKnRoaXMpOwogI2VuZGlmCiAK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFj
a2VyOjpzaW5nbGV0b24oKS5zZXRJbXBsKFtdIHsKKyAgICAgICAgcmV0dXJuIFNRTGl0ZVByb2Nl
c3NBc3NlcnRpb25Ib2xkZXI6OmNyZWF0ZSgpOworICAgIH0pOworI2VuZGlmCisKICAgICBOZXR3
b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRkTGlzdGVuZXIoW3dlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dKGJvb2wgaXNPbkxpbmUpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAppbmRleCA0MmNlMDhiZjM1MGNmY2JhM2I1YTc1MjI5MzI2OWFlNzc4Yjk1
MTdiLi43NmIzOThjNzk1MjMzOGEwNGRkNjIyMWU1MmJmOWFmMDAwNjkwNDcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC00NzEsMTAgKzQ3
MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MoY29u
c3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJs
ZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCk7Ci0jZW5kaWYKLQogICAgIC8vIENv
bm5lY3Rpb25zIHRvIFdlYlByb2Nlc3Nlcy4KICAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+PiBtX3dlYlByb2Nl
c3NDb25uZWN0aW9uczsKIApAQCAtNTA3LDcgKzUwMyw2IEBAIHByaXZhdGU6CiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlcjsKLSAgICBSZWZQdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9ob2xkaW5n
TG9ja2VkRmlsZUFzc2VydGlvbjsKICNlbmRpZgogICAgIAogI2lmIEVOQUJMRShXRUJfUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nl
c3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbQppbmRleCA4MjdkZGY2ZWNmNGQ5MjkxZTBiZmY3NGZhNWViYjgxN2I3ZGNmZmQ3Li41
YjdjMTg1NWM4YjZjYTI4NGE5YzM1MGFkZWViMTVlYTdmNmQ0NmZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAt
OTUsMjEgKzk1LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2kKIAogI2VuZGlmIC8vICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9j
a2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKLXsKLSAgICBpZiAoIWlzSG9sZGlu
Z0xvY2tlZEZpbGVzKSB7Ci0gICAgICAgIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gPSBu
dWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1faG9sZGluZ0xvY2tl
ZEZpbGVBc3NlcnRpb24gJiYgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+aXNWYWxpZCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBzeW5jaHJvbm91c2x5IHRha2UgYSBwcm9j
ZXNzIGFzc2VydGlvbiB3aGVuIGJlZ2lubmluZyBhIFNRTGl0ZSB0cmFuc2FjdGlvbiBzbyB0aGF0
IHdlIGRvbid0IGdldCBzdXNwZW5kZWQKLSAgICAvLyB3aGlsZSBob2xkaW5nIGEgbG9ja2VkIGZp
bGUuIFdlIHdvdWxkIGdldCBraWxsZWQgaWYgc3VzcGVuZGVkIHdoaWxlIGhvbGRpbmcgbG9ja2Vk
IGZpbGVzLgotICAgIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0
aW9uOjpjcmVhdGUoZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiTmV0d29yayBQcm9jZXNzIGlzIGhv
bGRpbmcgbG9ja2VkIGZpbGVzIl9zLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFza0lu
dGVycnVwdGFibGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFy
ZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3Jh
Z2VBcmVhLmNwcAppbmRleCAxMGVjMjA3Njg1MTQ1OGNlZjE2MTkwZWYxYjkxNjZkMmYwYTQ0ZTQx
Li4xMjMyMDkwMWE5MjMzNDMzYzQyMDU5OWEzZjI1YTk3ODFjZGQ0NTI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdl
QXJlYS5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJTUUxpdGVTdG9yYWdlQXJlYS5o
IgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNh
Y3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VNYXAuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0
eSgpCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBl
OjpDb3VudEl0ZW1zKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxp
dGVTdG9yYWdlQXJlYTo6aXNFbXB0eSBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQp
IC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNn
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFy
ZWE6OmlzRW1wdHkgZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9k
YXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTI4LDIxICsxMjgsMjEgQEAgYm9vbCBT
UUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKCFtX2Rh
dGFiYXNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgc3RhdGVtZW50ID0g
bV9kYXRhYmFzZS0+dGFibGVTUUwoIkl0ZW1UYWJsZSJfcyk7CisgICAgU3RyaW5nIHN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UtPnRhYmxlQ3JlYXRpb25RdWVyeSgiSXRlbVRhYmxlIl9zKTsKICAgICBp
ZiAoc3RhdGVtZW50ID09IGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudCB8fCBzdGF0ZW1lbnQgPT0g
Y3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50QWx0ZXJuYXRpdmUpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gVGFibGUgZXhpc3RzIGJ1dCBzdGF0ZW1lbnQgaXMgd3Jvbmc7IGRyb3AgaXQu
CiAgICAgaWYgKCFzdGF0ZW1lbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmICghbV9kYXRhYmFz
ZS0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgSXRlbVRhYmxlIl9zKSkgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVU
YWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIGV4aXN0aW5nIGl0ZW0gdGFibGUgKCVkKSAt
ICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLT5leGVjdXRlKCJEUk9QIFRBQkxFIEl0ZW1UYWJs
ZSJfcykpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVT
dG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gZHJvcCBleGlzdGlu
ZyBpdGVtIHRhYmxlICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgLy8gVGFibGUgZG9lcyBub3QgZXhpc3QuCi0gICAgaWYgKCFt
X2RhdGFiYXNlLT5leGVjdXRlQ29tbWFuZChjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y3Jl
YXRlVGFibGVJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIGl0ZW0gdGFibGUgKCVkKSAtICVz
IiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsK
KyAgICBpZiAoIW1fZGF0YWJhc2UtPmV4ZWN1dGUoY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50KSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6
OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGNyZWF0ZSBpdGVtIHRhYmxlICglZCkg
LSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNz
YWdlKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTgsMTcgKzE1OCwx
MiBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjpwcmVwYXJlRGF0YWJhc2UoU2hvdWxkQ3JlYXRl
SWZOb3RFeGlzdHMgc2hvdWxkQ3JlYXRlSWZObwogICAgIGlmIChzaG91bGRDcmVhdGVJZk5vdEV4
aXN0cyA9PSBTaG91bGRDcmVhdGVJZk5vdEV4aXN0czo6Tm8gJiYgIUZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMobV9wYXRoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX2RhdGFiYXNlID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4oKTsKICAgICBGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChtX3BhdGgpKTsKLSAgICBp
ZiAoIW1fZGF0YWJhc2UtPm9wZW4obV9wYXRoKSkgeworICAgIG1fZGF0YWJhc2UgPSBXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZShtX3BhdGgsIHRydWUpLnB0cigpOwor
ICAgIGlmICghbV9kYXRhYmFzZS0+aXNPcGVuKCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpwcmVwYXJlRGF0YWJhc2UgZmFpbGVkIHRv
IG9wZW4gZGF0YWJhc2UgYXQgJyVzJyIsIG1fcGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
bV9kYXRhYmFzZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAg
ICAgIAotICAgIC8vIFNpbmNlIGEgV29ya1F1ZXVlIGlzbid0IGJvdW5kIHRvIGEgc3BlY2lmaWMg
dGhyZWFkLCB3ZSBuZWVkIHRvIGRpc2FibGUgdGhyZWFkaW5nIGNoZWNrLgotICAgIC8vIFdlIHdp
bGwgbmV2ZXIgYWNjZXNzIHRoZSBkYXRhYmFzZSBmcm9tIGRpZmZlcmVudCB0aHJlYWRzIHNpbXVs
dGFuZW91c2x5LgotICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKIAog
ICAgIGlmICghY3JlYXRlVGFibGVJZk5lY2Vzc2FyeSgpKSB7CiAgICAgICAgIG1fZGF0YWJhc2Ug
PSBudWxscHRyOwpAQCAtMTg0LDExICsxNzksMTAgQEAgYm9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6
cHJlcGFyZURhdGFiYXNlKFNob3VsZENyZWF0ZUlmTm90RXhpc3RzIHNob3VsZENyZWF0ZUlmTm8K
IHZvaWQgU1FMaXRlU3RvcmFnZUFyZWE6OnN0YXJ0VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpCiB7
CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uKQotICAgICAgICBtX3RyYW5zYWN0aW9uID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbj4oKm1fZGF0YWJhc2UpOwotCi0gICAgaWYg
KG1fdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKKyAgICAgICAgbV90cmFuc2FjdGlvbiA9IG1f
ZGF0YWJhc2UtPmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4oKTsKKyAgICAKKyAgICBpZiAoIW1f
dHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBtX3RyYW5zYWN0aW9uLT5iZWdpbigp
OwogCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2hBZnRlcih0cmFuc2FjdGlvbkR1cmF0aW9uLCBbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC0x
OTYsMTggKzE5MCwxNiBAQCB2b2lkIFNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0aW9u
SWZOZWNlc3NhcnkoKQogICAgIH0pOwogfQogCi1XZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRv
UmVzZXRTY29wZSBTUUxpdGVTdG9yYWdlQXJlYTo6Y2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5
cGUgdHlwZSkKK1dlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSBTUUxp
dGVTdG9yYWdlQXJlYTo6Y2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGUgdHlwZSkKIHsKICAg
ICBBU1NFUlQobV9kYXRhYmFzZSk7CiAgICAgQVNTRVJUKHR5cGUgPCBTdGF0ZW1lbnRUeXBlOjpJ
bnZhbGlkKTsKIAogICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKTsK
LSAgICBpZiAoIW1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0pIHsKLSAgICAgICAgaWYgKGF1dG8g
cmVzdWx0ID0gbV9kYXRhYmFzZS0+cHJlcGFyZUhlYXBTdGF0ZW1lbnQoc3RhdGVtZW50U3RyaW5n
KHR5cGUpKSkKLSAgICAgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0gPSByZXN1bHQu
dmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICB9CisgICAgaWYgKCFtX2NhY2hlZFN0YXRl
bWVudHNbaW5kZXhdKQorICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhdID0gbV9kYXRh
YmFzZS0+Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShzdGF0ZW1lbnRTdHJpbmcodHlwZSkpOwog
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHsgbV9j
YWNoZWRTdGF0ZW1lbnRzW2luZGV4XS5nZXQoKSB9OworICAgIHJldHVybiBXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgeyBtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhd
LmdldCgpIH07CiB9CiAKIEV4cGVjdGVkPFN0cmluZywgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9y
YWdlQXJlYTo6Z2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSkKQEAgLTIzNCw3ICsyMjYsNyBAQCBF
eHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1G
cm9tRGF0YWJhc2UoY29uc3QgU3RyaQogCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0
ZW1lbnQoU3RhdGVtZW50VHlwZTo6R2V0SXRlbSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3Rh
dGVtZW50LT5iaW5kVGV4dCgxLCBrZXkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24g
Y3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24g
Y3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0yNDIsNyArMjM0LDcg
QEAgRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJ
dGVtRnJvbURhdGFiYXNlKGNvbnN0IFN0cmkKICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cp
CiAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQtPmNvbHVtbkJsb2JBc1N0cmluZygwKTsKICAgICBp
ZiAocmVzdWx0ICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24g
c3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24g
c3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0yNzQsNyArMjY2LDcg
QEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gU1FMaXRlU3RvcmFnZUFyZWE6OmFsbEl0ZW1zKCkK
ICAgICAvLyBJbXBvcnQgZnJvbSBkYXRhYmFzZS4KICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hl
ZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpHZXRBbGxJdGVtcyk7CiAgICAgaWYgKCFzdGF0ZW1l
bnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VB
cmVhOjpnZXRBbGxJdGVtcyBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIs
IG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0
QWxsSXRlbXMgZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTI5Miw3ICsyODQsNyBAQCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBTUUxpdGVTdG9yYWdlQXJlYTo6YWxsSXRlbXMoKQogICAgIH0KIAogICAgIGlm
IChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3Jh
Z2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0QWxsSXRlbXMgZmFpbGVkIG9uIGV4ZWN1dGluZyBz
dGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNR
TGl0ZVN0b3JhZ2VBcmVhOjpnZXRBbGxJdGVtcyBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVu
dCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTWVzc2FnZSgpKTsKIAogICAgIHJldHVybiBpdGVtczsKIH0KQEAgLTMxMSw3ICszMDMsNyBA
QCBFeHBlY3RlZDx2b2lkLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVt
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSQogCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRT
dGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6U2V0SXRlbSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwg
c3RhdGVtZW50LT5iaW5kVGV4dCgxLCBrZXkpIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMiwgdmFs
dWUpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdl
QXJlYTo6c2V0SXRlbSBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRl
bSBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxh
c3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0z
MTksNyArMzExLDcgQEAgRXhwZWN0ZWQ8dm9pZCwgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdl
QXJlYTo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUkKICAgICBpZiAocmVzdWx0ID09
IFNRTElURV9GVUxMKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9y
OjpRdW90YUV4Y2VlZGVkKTsKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRl
bSBmYWlsZWQgb24gc3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxh
c3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSBmYWlsZWQgb24g
c3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0zNTAsNyArMzQyLDcg
QEAgRXhwZWN0ZWQ8dm9pZCwgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6cmVtb3Zl
SXRlbShJUEM6OkNvbm5lY3Rpb246OlVuaXEKIAogICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVk
U3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkRlbGV0ZUl0ZW0pOwogICAgIGlmICghc3RhdGVtZW50
IHx8IHN0YXRlbWVudC0+YmluZFRleHQoMSwga2V5KSB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRl
U3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0gZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVk
KSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VB
cmVhOjpyZW1vdmVJdGVtIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIs
IG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7
CiAgICAgfQogCkBAIC0zODEsNyArMzczLDcgQEAgRXhwZWN0ZWQ8dm9pZCwgU3RvcmFnZUVycm9y
PiBTUUxpdGVTdG9yYWdlQXJlYTo6Y2xlYXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRAogICAg
IHN0YXJ0VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwogICAgIGF1dG8gc3RhdGVtZW50ID0gY2Fj
aGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkRlbGV0ZUFsbEl0ZW1zKTsKICAgICBpZiAoIXN0
YXRlbWVudCB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyIGZhaWxl
ZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJv
cigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y2xlYXIgZmFpbGVkIG9uIGV4ZWN1dGlu
ZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJh
c2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChT
dG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmgKaW5kZXggNTJj
YzlkNjBlN2U1YTUzOTFmYzhjNDgzZmI2OGMyOTAzNjA5NzE2MC4uNjI2M2YwZjVlYjZjY2UwNWFm
MzIyNjE5NzVjN2UyMDljMzIxYjkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmgKQEAgLTI2LDggKzI2LDgg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFCYXNlLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRS
ZXNldFNjb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC02NiwxNiArNjYsMTYgQEAg
cHJpdmF0ZToKICAgICAgICAgSW52YWxpZAogICAgIH07CiAgICAgQVNDSUlMaXRlcmFsIHN0YXRl
bWVudFN0cmluZyhTdGF0ZW1lbnRUeXBlKSBjb25zdDsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnRBdXRvUmVzZXRTY29wZSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZSk7CisgICAg
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlIGNhY2hlZFN0YXRlbWVu
dChTdGF0ZW1lbnRUeXBlKTsKICAgICBFeHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4gZ2V0
SXRlbShjb25zdCBTdHJpbmcmIGtleSk7CiAgICAgRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJy
b3I+IGdldEl0ZW1Gcm9tRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBrZXkpOwogCiAgICAgU3RyaW5n
IG1fcGF0aDsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4gbV9kYXRhYmFzZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247Ci0gICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+PiBtX2NhY2hlZFN0YXRl
bWVudHM7CiAgICAgc3RkOjpvcHRpb25hbDxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4gbV9jYWNo
ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBtX2RhdGFi
YXNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0
aW9uPiBtX3RyYW5zYWN0aW9uOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+PiBtX2NhY2hlZFN0YXRlbWVudHM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0
ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA2ZjVlODY5YzIyNTJjNzIy
MGVjMzUwNzZlYWU5MWZmOTMxYzM5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwCkBAIC0wLDAgKzEsNzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlUHJvY2Vz
c0Fzc2VydGlvbkhvbGRlci5oIgorCisjaW5jbHVkZSAiUHJvY2Vzc0Fzc2VydGlvbi5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1JlZjxTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyPiBTUUxpdGVQ
cm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIpOworfQorCit2b2lkIFNRTGl0ZVByb2Nl
c3NBc3NlcnRpb25Ib2xkZXI6OndpbGxCZWdpbkZpcnN0QWN0aXZpdHkoKQoreworICAgIG1faXNQ
ZXJmb3JtaW5nQWN0aXZpdGllcyA9IHRydWU7CisgICAgZW5zdXJlQXNzZXJ0aW9uKCk7Cit9CisK
K3ZvaWQgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6ZGlkRW5kTGFzdEFjdGl2aXR5KCkK
K3sKKyAgICBtX2lzUGVyZm9ybWluZ0FjdGl2aXRpZXMgPSBmYWxzZTsKKyAgICByZWxlYXNlQXNz
ZXJ0aW9uKCk7Cit9CisKK3ZvaWQgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6c2V0SXNI
b2xkaW5nTG9ja2VkRmlsZXMoYm9vbCB2YWx1ZSkKK3sKKyAgICBtX2lzSG9sZGluZ0xvY2tlZEZp
bGVzID0gdmFsdWU7CisgICAgaWYgKG1faXNIb2xkaW5nTG9ja2VkRmlsZXMpCisgICAgICAgIGVu
c3VyZUFzc2VydGlvbigpOworICAgIGVsc2UKKyAgICAgICAgcmVsZWFzZUFzc2VydGlvbigpOwor
fQorCit2b2lkIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmVuc3VyZUFzc2VydGlvbigp
Cit7CisgICAgaWYgKG1fYXNzZXJ0aW9uICYmIG1fYXNzZXJ0aW9uLT5pc1ZhbGlkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fYXNzZXJ0aW9uID0gUHJvY2Vzc0Fzc2VydGlvbjo6Y3JlYXRl
KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIk5ldHdvcmsgUHJvY2VzcyBpcyBob2xkaW5nIGRhdGFi
YXNlIGxvY2siX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrSW50ZXJydXB0YWJs
ZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7CisgICAgbV9hc3NlcnRpb24tPnNldElu
dmFsaWRhdGlvbkhhbmRsZXIoW10geworICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsK
KyAgICAgICAgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNpbmdsZXRv
bigpLmludmFsaWRhdGVBbGxBY3Rpdml0aWVzKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6cmVsZWFzZUFzc2VydGlvbigpCit7CisgICAgaWYgKCFt
X2lzSG9sZGluZ0xvY2tlZEZpbGVzICYmICFtX2lzUGVyZm9ybWluZ0FjdGl2aXRpZXMpCisgICAg
ICAgIG1fYXNzZXJ0aW9uID0gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9s
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGJhYWFmYjkxZTg0ZGVmMzFjZDNhZjlhZTg2ZDI0ODkzZjg5OWMwYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3Nl
cnRpb25Ib2xkZXIuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxp
dGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFByb2Nlc3NBc3NlcnRpb247CisKK2NsYXNzIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25I
b2xkZXIgOiBwdWJsaWMgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBs
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI+
IGNyZWF0ZSgpOworICAgIHZvaWQgd2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpIGZpbmFsOworICAg
IHZvaWQgZGlkRW5kTGFzdEFjdGl2aXR5KCkgZmluYWw7CisgICAgdm9pZCBzZXRJc0hvbGRpbmdM
b2NrZWRGaWxlcyhib29sIHZhbHVlKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3Vy
ZUFzc2VydGlvbigpOworICAgIHZvaWQgcmVsZWFzZUFzc2VydGlvbigpOworCisgICAgYm9vbCBt
X2lzUGVyZm9ybWluZ0FjdGl2aXRpZXMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0hvbGRpbmdM
b2NrZWRGaWxlcyB7IGZhbHNlIH07CisgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1fYXNz
ZXJ0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmNwcAppbmRleCBhM2ZiYjc2MGU3NzYwNDA3OGQ4ZTUwYzE0Y2RkN2Q3Y2VhNmViNmQz
Li4zMWE4ZjFiZTE0NTVjYWM4NGM2M2JiNmQ0M2RmYzE0ODRiZTU0YTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKKyNpbmNsdWRlIDxw
YWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNsdWRlIDxwYWwvY29jb2EvTWVkaWFUb29s
Ym94U29mdExpbmsuaD4KIAogV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChNVFBsdWdpbkZvcm1h
dFJlYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBiZWMxYTNmMTM0ZTJkZDM5MjM2MTI3NTJhODlkODgx
NTc5ZTIwZjg0Li45YWJjYjIwNTkzYTIzOGZhNGNkYWZlZTNiNTBiYzI5YjExODEzZDI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKQEAgLTIzOSw2ICsyMzksNyBAQCBTaGFyZWQvUHJpbnRJbmZvLmNwcAogU2hhcmVk
L1JUQ05ldHdvcmsuY3BwCiBTaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5jcHAKIFNoYXJlZC9SZW1v
dGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwCitTaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2Vy
dGlvbkhvbGRlci5jcHAKIFNoYXJlZC9TY3JvbGxpbmdBY2NlbGVyYXRpb25DdXJ2ZS5jcHAKIFNo
YXJlZC9TZXNzaW9uU3RhdGUuY3BwCiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzdhNTk5
YjUzNDA5Y2I4ZDViZjZiNjlmMzRiYmQxOTAyMTc4ZmJmZC4uMzA2MmNkNmI5Yzg5M2RlNmYxMTFl
NGZjMjZlMGVhYWY4MjI0ZDE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTAwLDYgKzE1MDAsNyBAQAogCQk5M0I2MzFGMTI3QUJB
Q0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFRjI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5h
Z2VyLmggKi87IH07CiAJCTkzQjYzMUYzMjdBQkFEODAwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNl
UmVxdWVzdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVz
dElkZW50aWZpZXIuaCAqLzsgfTsKIAkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFn
ZUxvYWRUeXBlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OTNENUREMjAyN0RBNTU1NjAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDFF
MjdEQTU1NTUwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggKi87IH07
CiAJCTkzRDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3NkMy
NTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggKi87IH07CiAJCTkz
RDZCNzczMjU0QkI4QzcwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzY4
MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCAqLzsg
fTsKIAkJOTNENkI3ODIyNTRDQ0NGNDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRDZCNzgxMjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC01NDcxLDYgKzU0NzIsOCBAQAogCQk5
M0JBMDRFMDIxNTFBREY0MDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDRFMTIxNTFBREY0MDA3RjQ1NUYgLyogV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMUUyN0RBNTU1NTAwMTA3Qzc1
IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0Q1REQxRjI3REE1NTU1MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vz
c0Fzc2VydGlvbkhvbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNENkI3NjcyNTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Q2Qjc2ODI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc2
OTI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzkyLDYgKzczOTUsOCBAQAogCQkJ
CTgzMTNGN0U3MUY3REFFMDMwMEI5NDRFQiAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGUuaCAqLywK
IAkJCQk4M0Y5NjQ0QjFGQTBGNzYyMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVh
ZE9ubHkuY3BwICovLAogCQkJCTgzRjk2NDRDMUZBMEY3NjMwMEM0Nzc1MCAvKiBTaGFyZWRTdHJp
bmdIYXNoVGFibGVSZWFkT25seS5oICovLAorCQkJCTkzRDVERDFGMjdEQTU1NTUwMDEwN0M3NSAv
KiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcCAqLywKKwkJCQk5M0Q1REQxRTI3REE1
NTU1MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oICovLAogCQkJCTFB
NUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8sCiAJCQkJRjRB
N0NFODQyNjY3RUI0RTAwMjI4Njg1IC8qIFRleHRSZWNvZ25pdGlvblVwZGF0ZVJlc3VsdC5oICov
LAogCQkJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNEMyAvKiBUaHJlYWRTYWZlT2JqZWN0SGVhcC5o
ICovLApAQCAtMTM1OTIsNiArMTM1OTcsNyBAQAogCQkJCTkzRDZCNzcyMjU0QkI1MTkwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3
ODQyNTRDQ0QwRTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg1MjU0Q0NENDMwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENURE
MjAyN0RBNTU1NjAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzRTc5OURBMjc2MTIxMDgwMDc0MDA4QSAvKiBTUUxpdGVTdG9yYWdl
QXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EzRkVDQTIyMUY3QzA5NzAwRjI2N0NEIC8qIFN0
b3JhZ2VBY2Nlc3NTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QkVCNkQ3MjJGQjlCRDcw
MDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzY3OSw3ICsxMzY4
NSw2IEBACiAJCQkJNTc0MkEzMDgyNTM1OEEwNDAwQjdCQTE0IC8qIFdlYkF1dGhuUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyRUJCQzIyNTM2QTYwQTAw
MDU1MkIzIC8qIFdlYkF1dGhuUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
NzJFQkJDOTI1MzZBRkQ1MDAwNTUyQjMgLyogV2ViQXV0aG5Qcm9jZXNzUHJveHkuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTU3MkVCQkQwMjUzNkJCMTEwMDA1NTJCMyAvKiBXZWJBdXRoblByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDJENjM0MTIyQTBFRkRGMDBEMkZC
M0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTBEMzlG
NTI0M0JFNjQ4MDAxOTkzODggLyogV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTU1QTZFQzFDNzk4MEMyMDBFQjZBOTMgLyogV2ViQXV0b21hdGlv
blNlc3Npb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA5ZmU0OGYxODllMWExNDdhMTFjMjBm
MjgzYTU1MzU0ZTlhNTcwMmYuLmU4MzA0NjA5MzIwY2MzOTcyNmVlNTNiOWUxYWUwNDUzOWYyMmM4
ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0xMCAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICBDbG9zZSBTUUxpdGUgZGF0YWJhc2UgY29ubmVjdGlv
bnMgZm9yIExvY2FsU3RvcmFnZSB3aGVuIGFzc2VydGlvbiBpcyBkcm9wcGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc3NTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFn
ZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdl
L3Jlc291cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1l
ZGlhdGVseS5odG1sOgorCiAyMDIyLTAzLTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJSVEMgZGVjb2RlZCBmcmFtZXMgYXJlIG5vdCBjb3JyZWN0bHkg
cm90YXRlZCBpbiBjYXNlIEdQVSBQcm9jZXNzIERPTSByZW5kZXJpbmcgZmxhZyBpcyBzZXQgdG8g
dHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3N0b3JhZ2Ut
Y2xvc2UtZGF0YWJhc2Utb24taWRsZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9y
YWdlL3N0b3JhZ2UtY2xvc2UtZGF0YWJhc2Utb24taWRsZS5odG1sCmluZGV4IDAzYTc2ZGE1YTNh
YmE2ZDQ2OTNiZThkYjUzZTdhMGZlMmE3YWViZTQuLjNiZTI3N2U1ODJmNDhlNzgyOTE1NDAxMDli
MTI3ZjY4YTM1MTM0MjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFn
ZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2RvbXN0b3JhZ2Uvc3RvcmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWwKQEAg
LTIwLDkgKzIwLDEwIEBAIGZ1bmN0aW9uIGxvYWROZXh0UGFnZSgpCiBmdW5jdGlvbiBydW5UZXN0
KCkKIHsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoMCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCgwKTsKICAgICAgICAgdGVzdFJ1
bm5lci5zZXRDYWNoZU1vZGVsKDApOyAvLyBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIuCi0g
ICAgfQorICAgIH0gCiAKICAgICAvLyBUZXN0IHRvIG1ha2Ugc3VyZSB0aGUgc3RvcmFnZSB2YWx1
ZXMgZG9uJ3QgY2hhbmdlIGFmdGVyIHRoZSBkYXRhYmFzZSBpcyBjbG9zZWQuCiAgICAgaWYgKCJs
b2NhbFN0b3JhZ2UiIGluIHdpbmRvdykgewpAQCAtNDYsNyArNDcsOCBAQCBmdW5jdGlvbiBydW5U
ZXN0KCkKICAgICAgICAgICAgIGxvZyh3aW5kb3cubG9jYWxTdG9yYWdlWydiYXInXSA9PT0gJ0JB
UicgPyAnUEFTUycgOiAnRkFJTCcpOwogCiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJ
bnRlcnZhbCgzMDApOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lci5zZXRT
dG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKDMwMCk7CiAgICAgICAgICAgICAgICAg
d2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNlcy9zdG9yYWdlLWNsb3Nl
LWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVseS5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRh
YmFzZXMtaW1tZWRpYXRlbHkuaHRtbAppbmRleCA0ZTBhNDQ2ZTNlNDIzNGRmOTFhYTllNmFkZjI2
YjAzNjhlNTdiNGNjLi43YjE3MzYxNjZlNzFkNTE4MzMxMGExOWQwM2Q3N2M5ZTIyMjI0ZmIyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNlcy9zdG9yYWdlLWNsb3NlLWlk
bGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVseS5odG1sCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0
YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwKQEAgLTIsNyArMiw3IEBACiA8c2NyaXB0PgogICAgIGZ1
bmN0aW9uIHN3aW5nQmFjaygpIAogICAgIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cudGVzdFJ1bm5lci5j
bG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMpIHsKICAgICAgICAgICAgIHdpbmRvdy50ZXN0
UnVubmVyLmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpOwogICAgICAgICB9CiAgICAg
ICAgIGxvY2F0aW9uLmhyZWY9Jy4uL2RvbXN0b3JhZ2UvbG9jYWxzdG9yYWdlL2Nsb3NlLWlkbGUt
bG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVseS5odG1sJzsK
</data>
<flag name="commit-queue"
          id="482088"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454446</attachid>
            <date>2022-03-10 22:32:00 -0800</date>
            <delta_ts>2022-03-10 23:21:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237754-20220310223159.patch</filename>
            <type>text/plain</type>
            <size>93421</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ1OTA1MmVkMDY5YWM1
NjI0MDFiODhmYTM4MTYxMjhlYzA1ZGJiNS4uMDVjOWE2YTk0Y2ZlYzVkYzFhMWFiNTg5NjE5N2Yz
NDBjNjRlMmYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIyLTAzLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIFNRTGl0ZSBkYXRh
YmFzZSBjb25uZWN0aW9ucyBmb3IgTG9jYWxTdG9yYWdlIHdoZW4gYXNzZXJ0aW9uIGlzIGRyb3Bw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6
OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlcjo6c2V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlcjo6YmVnaW5BY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlcjo6ZW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmNoZWNrTGFzdEFjdGl2aXR5VGltZXN0YW1wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjppbnZhbGlkYXRl
QWxsQWN0aXZpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlcjo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsOjp+U1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0
U3RhdGVtZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0VHJhbnNhY3Rpb25J
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVTUUxpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjp+U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
YmVnaW5BY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmVuZEFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6aW52YWxpZGF0ZUFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6c2V0SXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uOjppc09wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjplbmFibGVFeHRlbmRlZFJlc3VsdENvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVJbk1lbW9yeVRlbXBTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZVdBTEpvdXJu
YWxNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrcG9pbnRNb2RlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlV0FMQ2hlY2twb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZUlu
dGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RDaGFuZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6bGFzdEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6bGFzdEVycm9yTWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnRhYmxlQ3JlYXRpb25RdWVy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmV4ZWN1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRNYXhpbXVt
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnBhZ2VT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVsZWFz
ZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNy
ZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpiaW5kQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OmJpbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6Y29sdW1uQmxvYkFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uSW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OnJlc2V0U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c3RlcFN0YXRlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lTdGF0ZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVUcmFuc2FjdGlvbkFu
ZEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29t
bWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjpyb2xsYmFja1RyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmluTWVtb3J5UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnBhdGggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6
flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50OjpiaW5kQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6YmluZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OmNvbHVtbkJsb2JBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudDo6Y29sdW1uSW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6c3RlcCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
U3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2Nv
cGU6On5TUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVyYXRvciBi
b29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVz
ZXRTY29wZTo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50UmVzZXRTY29wZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6b3BlcmF0b3ItPik6CisgICAgICAgICogcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6flNRTGl0
ZURhdGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb246OnJvbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oOiBBZGRlZC4KKwogMjAyMi0wMy0wOSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJy
dGMgdmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQg
cGlwZWxpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBiMWE5MjliMzYwNjE0NDQzMDA2ZjU1YjNmZDljNTYxMGZl
N2FlMzkuLjY1MWRmNzMwMWM4NjEyNzA4N2NhNDQyNjU3Y2FjY2RhMmRiMmFlZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRlIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGZvciBM
b2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMgZHJvcHBlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6Om1fbWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6OlNR
TGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktp
dDo6U1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6
OlNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkpOgorICAgICAg
ICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6Y2FjaGVkU3RhdGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6YWxsSXRlbXMpOgorICAgICAgICAoV2ViS2l0
OjpTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0
b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFy
ZWE6OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3Jh
Z2VBcmVhLmg6CisgICAgICAgICogU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRl
cjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nl
c3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVuZExhc3RBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6
OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKToK
KyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6ZW5zdXJlQXNz
ZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6
cmVsZWFzZUFzc2VydGlvbik6CisgICAgICAgICogU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRp
b25Ib2xkZXIuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjItMDMtMDkgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRvIHBhc3Mgd2Vi
cnRjIHZpZGVvIGZyYW1lIGJ1ZmZlcnMgdGhyb3VnaCBSZWFsdGltZU1lZGlhU291cmNlIGJhc2Vk
IHBpcGVsaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3MzY4NDIxYjI3NzRmZDVkNWU2YTZhZmU3OTYw
YjQyZWNiNDQ4N2M5Li4wNTc3OWFmMjBhMzQ2YzZmNTVjYTcxNmQzM2I4M2E3YTc3ZTlhYzM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjI1Miw3ICsyMjUyLDExIEBAIHBsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL1RpbWluZ0FsbG93T3Jp
Z2luLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZUF1dGhvcml6ZXIuY3BwCiBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIuY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlVHJhY2tlci5jcHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0
aW9uLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCiBwbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNl
dFNjb3BlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGQ1NTMyY2I5ZDhjYTU1ZGYyM2VkOGIzNzE2YTViNDY5ZDJmZjgyM2Eu
LjBhMWJmYWQ4NzI1ZjRmYjRmZjhiOWVkNTE0MzViMjgzNTk3NDdmZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwMjksNiAr
MzAyOSwxMiBAQAogCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyogQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCNTZDOUE4MUM4OTMxMjgwMEM0NTZERiAvKiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
RDQzN0EyMUQ1N0IzRkUwMEFCODVFQSAvKiBVUkxEZWNvbXBvc2l0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTZCOURDQTE4OURFMTAwMDBCQjg0
MkMgLyogVVJMRGVjb21wb3NpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzRDQzN0EzMUQ1N0I3RTIwMEFCODVFQSAvKiBKU01lZGlhTGlz
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QUQ3MjZGRTcxNkQ5RjIwNDAwM0E0RTZEIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENUREMTcyN0Q5MjhC
ODAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREMTUyN0Q5MjhCNjAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDFCMjdEOUVBQzYwMDEwN0M3NSAvKiBTUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDE4MjdEOUVBQzUwMDEwN0M3NSAvKiBTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5M0Q1REQxRDI3RDlFQUM2MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRDVERDFBMjdEOUVBQzYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTkzRDVERDI1MjdEQTU2RDYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudFJlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRDVERDIzMjdEQTU2RDUwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dFJlc2V0U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5M0Q1REQyQjI3REE1NzBGMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2Fj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
NUREMjcyN0RBNTcwQzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Q1REQyRDI3
REE1NzBGMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDI5MjdEQTU3MEQwMDEwN0M3
NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDZCNzcwMjU0Qjk4QTAwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2RjI1NEI5MDJEMDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzRDZCNzcxMjU0QkFCNDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNENkI3NkQyNTRCOEUxQjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3QTgy
NTUxRDQxRjAwNThERDNBIC8qIER1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QTYyNTUxRDNF
RDAwNThERDNBIC8qIER1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjkxMSw2ICsxMjkxNywx
NiBAQAogCQk5M0QwNTAzMTI1M0ExNDhDMDAyQTMwNzIgLyogQWJzdHJhY3RSYW5nZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNEMTk2MzAxRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbk9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRDE5NjMyMUQ2Q0FCODIwMEZDN0U0NyAvKiBFeGNlcHRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDE0MjdEOTI4QjQwMDEwN0M3NSAvKiBTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTNENUREMTUyN0Q5MjhCNjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMTgyN0Q5RUFDNTAwMTA3
Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMTkyN0Q5RUFDNTAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMUEyN0Q5RUFDNjAwMTA3Qzc1IC8qIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzRDVERDIzMjdEQTU2RDUwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudFJlc2V0U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzRDVERDI2MjdEQTU3MEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDI3MjdEQTU3
MEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMjgyN0RBNTcwQzAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzRDVERDI5MjdEQTU3MEQwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc2RDI1NEI4RTFCMDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3
NkUyNTRCOEUxQjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNENkI3NkYyNTRCOTAyRDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1OTIsOSArMTk2MDgsMTkg
QEAKIAkJCQkxQTJFNkU3ODBDQzU1NkQ1MDA0QTIwNjIgLyogU1FMaXRlQXV0aG9yaXplci5jcHAg
Ki8sCiAJCQkJMUEyMjQ2NDMwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZURhdGFiYXNlLmNwcCAq
LywKIAkJCQkxQTIyNDY0NDBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJhc2UuaCAqLywK
KwkJCQk5M0Q1REQxOTI3RDlFQUM1MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIuY3BwICovLAorCQkJCTkzRDVERDFBMjdEOUVBQzYwMDEwN0M3NSAvKiBTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlci5oICovLAorCQkJCTkzRDVERDE4MjdEOUVBQzUwMDEwN0M3NSAv
KiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaCAqLywKKwkJCQk5M0Q1REQxNDI3
RDkyOEI0MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk5
M0Q1REQxNTI3RDkyOEI2MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmggKi8s
CisJCQkJOTNENUREMjYyN0RBNTcwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
LmNwcCAqLywKKwkJCQk5M0Q1REQyOTI3REE1NzBEMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQuaCAqLywKKwkJCQk5M0Q1REQyMzI3REE1NkQ1MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggKi8sCiAJCQkJN0U0NzRFMUQxMjQ5NERDOTAwMjM1
MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8sCiAJCQkJN0U0NzRFMUMxMjQ5NERD
OTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovLAogCQkJCTdFNDc0RTFCMTI0
OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywKKwkJCQk5
M0Q1REQyODI3REE1NzBDMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAg
Ki8sCisJCQkJOTNENUREMjcyN0RBNTcwQzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNh
Y3Rpb24uaCAqLywKIAkJCQlCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5jcHAgKi8sCiAJCQkJQjVBNjg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVT
eXN0ZW0uaCAqLywKIAkJCQkxQTIyNDY0NTBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3RhdGVt
ZW50LmNwcCAqLywKQEAgLTM3NDM1LDggKzM3NDYxLDE0IEBACiAJCQkJOTdCQzZBM0IxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTENhbGxiYWNrV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdC
QzZBM0MxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTIyNDY0QTBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJhc2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCTkzRDVERDFEMjdEOUVBQzYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENUREMUIyN0Q5RUFDNjAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTNENUREMTcyN0Q5MjhCODAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNENUREMkQyN0RBNTcwRjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQyNTI3REE1NkQ2MDAxMDdD
NzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3RTQ3NEUxRjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3RTQ3NEUxRTEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQyQjI3REE1NzBG
MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjVBNjg0MjIwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5n
U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4MyAvKiBT
UUxpdGVJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGY1ZTAxMjRmZDEzMTMyOTdiNzlkMDA4ODBjYzMxZjJkOGI4ZWNiOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlci5jcHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIu
aCIKKworI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXImIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5n
bGV0b24oKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI+IHRyYWNrZXI7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0geworICAgICAgICB0cmFja2Vy
LmNvbnN0cnVjdCgpOworICAgIH0pOworICAgIHJldHVybiB0cmFja2VyLmdldCgpOworfQorCit2
b2lkIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJbXBsKGNvbnN0IFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbEdlbmVyYXRvciYgZ2VuZXJhdG9yKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIG1faW1wbCA9IGdlbmVyYXRvcigpLnB0cigp
OworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpiZWdpbkFjdGl2aXR5
KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQVNTRVJUKG1fYWN0aXZlQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbikpOworICAg
IG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wID0gV2FsbFRpbWU6Om5vdygpOworICAgIGlmIChtX2Fj
dGl2ZUNvbm5lY3Rpb25zLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgbV9pbXBsLT53aWxsQmVn
aW5GaXJzdEFjdGl2aXR5KCk7CisKKyAgICBtX2FjdGl2ZUNvbm5lY3Rpb25zLmFkZChjb25uZWN0
aW9uKTsKKyAgICBjb25uZWN0aW9uLnNldElzQWN0aXZlKHRydWUpOworfQorCit2b2lkIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjplbmRBY3Rpdml0eShTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisg
ICAgaWYgKCFtX2ltcGwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2FjdGl2ZUNvbm5l
Y3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKSkKKyAgICAgICAgY29ubmVjdGlvbi5zZXRJc0FjdGl2
ZShmYWxzZSk7CisKKyAgICBpZiAoIW1fYWN0aXZlQ29ubmVjdGlvbnMuY29tcHV0ZXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcCA9IFdhbGxU
aW1lOjpub3coKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcigxX3MsIFt0aW1l
c3RhbXAgPSBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcF0geworICAgICAgICBTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuY2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAo
dGltZXN0YW1wKTsKKyAgICB9KTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlcjo6Y2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAoV2FsbFRpbWUgdGltZXN0YW1wKQorewor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9pbXBsKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9sYXN0QWN0aXZpdHlUaW1lc3RhbXAgPT0gdGltZXN0YW1w
KQorICAgICAgICBtX2ltcGwtPmRpZEVuZExhc3RBY3Rpdml0eSgpOworfQorCit2b2lkIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjppbnZhbGlkYXRlQWxsQWN0aXZpdGllcygpCit7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKG1faW1wbCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9hY3RpdmVDb25uZWN0aW9u
cykKKyAgICAgICAgY29ubmVjdGlvbi5pbnZhbGlkYXRlQWN0aXZpdHkoKTsKKworICAgIG1fYWN0
aXZlQ29ubmVjdGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlcjo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCB2YWx1ZSkKK3sKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9pbXBsLT5zZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyh2YWx1ZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNk
NTNjNGFhNTlkNzU5ODM5YjE5NTk4NmMwNTAxODY5YzQwOTVmMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tl
ci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbDsKKworY2xhc3MgU1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlciYgc2luZ2xldG9uKCk7CisgICAgdm9p
ZCBiZWdpbkFjdGl2aXR5KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYpOworICAgIHZvaWQgZW5k
QWN0aXZpdHkoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJik7CisgICAgdXNpbmcgU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsR2VuZXJhdG9yID0gRnVuY3Rpb248UmVmPFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbD4oKT47CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRJbXBsKGNvbnN0IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbEdlbmVyYXRvciYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKKyAg
ICB2b2lkIGNoZWNrTGFzdEFjdGl2aXR5VGltZXN0YW1wKFdhbGxUaW1lKTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCB2YWx1ZSk7Citwcml2
YXRlOgorICAgIExvY2sgbV9sb2NrOworICAgIFdhbGxUaW1lIG1fbGFzdEFjdGl2aXR5VGltZXN0
YW1wOworICAgIFdlYWtIYXNoU2V0PFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4gbV9hY3RpdmVD
b25uZWN0aW9uczsKKyAgICBSZWZQdHI8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBs
PiBtX2ltcGw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM3YzQ0MWJlNzUyZTNjOTBhYTZlNzc4ZmI3OTQ5N2Uz
YjQ5ZDJkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaApAQCAtMCwwICsxLDQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
SW1wbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1w
bD4geworcHVibGljOgorICAgIHZpcnR1YWwgflNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
SW1wbCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5GaXJzdEFjdGl2aXR5KCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRMYXN0QWN0aXZpdHkoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgdmFsdWUpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkwYTEwZWVi
Y2RjODM5NzUyOWZhZjcwMWFkOWIzMzI4YjkwNzE0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCkBAIC0w
LDAgKzEsNTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXIuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIgor
I2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgdWludDY0X3QgbmV4dFN0YXRlbWVudElkZW50aWZpZXIoKQoreworICAg
IHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudFN0YXRlbWVudElkZW50aWZpZXI7
CisgICAgcmV0dXJuICsrY3VycmVudFN0YXRlbWVudElkZW50aWZpZXI7Cit9CisKK3N0YXRpYyB1
aW50NjRfdCBuZXh0VHJhbnNhY3Rpb25JZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgc3RkOjph
dG9taWM8dWludDY0X3Q+IGN1cnJlbnRUcmFuc2FjdGlvbklkZW50aWZpZXI7CisgICAgcmV0dXJu
ICsrY3VycmVudFRyYW5zYWN0aW9uSWRlbnRpZmllcjsKK30KKworc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVNRTGl0ZSgpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7CisgICAgc3Rk
OjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBpZiAoaW50IHJlc3VsdCA9IHNxbGl0ZTNf
aW5pdGlhbGl6ZSgpOyByZXN1bHQgIT0gU1FMSVRFX09LKQorICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU3RvcmFnZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIHNxbGl0ZTogJXMiLCBzcWxp
dGUzX2VycnN0cihyZXN1bHQpKTsKKyAgICB9KTsKK30KKworUmVmPFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbj4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBib29sIHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24ocGF0aCwgc2hvdWxkQ29tbWl0
VHJhbnNhY3Rpb25BdENsb3NlKSk7Cit9CisKK1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6U1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRDb21t
aXRUcmFuc2FjdGlvbkF0Q2xvc2UpCisgICAgOiBtX3BhdGgocGF0aCkKKyAgICAsIG1fc2hvdWxk
Q29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkK
K3sKKyAgICBpbml0aWFsaXplU1FMaXRlKCk7CisgICAgYmVnaW5BY3Rpdml0eSgpOworCisgICAg
aWYgKCFvcGVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZW5hYmxlRXh0ZW5kZWRS
ZXN1bHRDb2RlKCkgfHwgIWVuYWJsZUluTWVtb3J5VGVtcFN0b3JlKCkpIHsKKyAgICAgICAgY2xv
c2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChlbmFibGVXQUxKb3VybmFs
TW9kZSgpKQorICAgICAgICBleGVjdXRlV0FMQ2hlY2twb2ludChDaGVja3BvaW50TW9kZTo6VHJ1
bmNhdGUpOworfQorCitTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246On5TUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb24oKQoreworICAgIGNsb3NlKCk7CisgICAgZW5kQWN0aXZpdHkoKTsKK30KKworYm9v
bCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Om9wZW4oKQoreworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKKworICAgIGlmICghbV9pc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBpbi1tZW1vcnkgZGF0YWJhc2UuCisg
ICAgaWYgKG1fcGF0aCA9PSBpbk1lbW9yeVBhdGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaW50IG9wZW5GbGFncyA9IFNRTElURV9PUEVOX0FVVE9QUk9YWSB8IFNRTElURV9PUEVO
X1JFQURXUklURSB8IFNRTElURV9PUEVOX0NSRUFURTsKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRl
M19vcGVuX3YyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3BhdGgpLmRh
dGEoKSwgJm1fc3FsaXRlQ29ubmVjdGlvbiwgb3BlbkZsYWdzLCBudWxscHRyKTsKKyAgICBpZiAo
cmVzdWx0ICE9IFNRTElURV9PSyB8fCAhbV9zcWxpdGVDb25uZWN0aW9uKSB7CisgICAgICAgIG1f
c3FsaXRlQ29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OmNsb3NlKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1f
c3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc3FsaXRlM19pbnRlcnJ1
cHQobV9zcWxpdGVDb25uZWN0aW9uKTsKKworICAgIGlmICghc3FsaXRlM19nZXRfYXV0b2NvbW1p
dChtX3NxbGl0ZUNvbm5lY3Rpb24pKSB7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBxdWVyeSA9ICJS
T0xMQkFDSyJfczsKKyAgICAgICAgaWYgKG1fc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3Nl
KQorICAgICAgICAgICAgcXVlcnkgPSAiQ09NTUlUIl9zOworICAgICAgICBzcWxpdGUzX3N0bXQq
IHN0YXRlbWVudCB7IG51bGxwdHIgfTsKKyAgICAgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfcHJl
cGFyZV92MihtX3NxbGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5LmNoYXJhY3RlcnMoKSwgcXVlcnkubGVu
Z3RoKCkgKyAxLCAmc3RhdGVtZW50LCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBT
UUxJVEVfT0spCisgICAgICAgICAgICByZXN1bHQgPSBzcWxpdGUzX3N0ZXAoc3RhdGVtZW50KTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFNRTERhdGFiYXNlLCAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjbG9zZSBm
YWlsZWQgdG8gcm9sbCBiYWNrIHRyYW5zYWN0aW9uICglZCkgLSAoJXMpIiwgcmVzdWx0LCBzcWxp
dGUzX2Vycm1zZyhtX3NxbGl0ZUNvbm5lY3Rpb24pKTsKKyAgICAgICAgc3FsaXRlM19yZXNldChz
dGF0ZW1lbnQpOworICAgICAgICBzcWxpdGUzX2ZpbmFsaXplKHN0YXRlbWVudCk7CisgICAgICAg
IG1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6IG1fc3RhdGVtZW50cy52YWx1ZXMoKSkgeworICAg
ICAgICBzcWxpdGUzX3Jlc2V0KHN0YXRlbWVudC5zcWxpdGVTdGF0ZW1lbnQpOworICAgICAgICBz
cWxpdGUzX2ZpbmFsaXplKHN0YXRlbWVudC5zcWxpdGVTdGF0ZW1lbnQpOworICAgIH0KKworICAg
IG1fc3RhdGVtZW50cy5jbGVhcigpOworCisgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfY2xvc2Uo
bV9zcWxpdGVDb25uZWN0aW9uKTsKKyAgICBpZiAocmVzdWx0ICE9IFNRTElURV9PSykKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmNsb3NlQ29ubmVjdGlvbjogZmFpbGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAlcyIs
IHJlc3VsdCwgc3FsaXRlM19lcnJtc2cobV9zcWxpdGVDb25uZWN0aW9uKSk7CisKKyAgICBtX3Nx
bGl0ZUNvbm5lY3Rpb24gPSBudWxscHRyOworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKK30KKwor
dm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJlZ2luQWN0aXZpdHkoKQoreworICAgIFNR
TGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5iZWdpbkFjdGl2aXR5KCp0
aGlzKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuZEFjdGl2aXR5KCkK
K3sKKyAgICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuZW5kQWN0
aXZpdHkoKnRoaXMpOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aW52YWxp
ZGF0ZUFjdGl2aXR5KCkKK3sKKyAgICBjbG9zZSgpOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6c2V0SXNBY3RpdmUoYm9vbCB2YWx1ZSkKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisKKyAgICBtX2lzQWN0aXZlID0gdmFsdWU7Cit9CisKK2Jvb2wgU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjppc09wZW4oKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKKworICAgIHJldHVybiAhIW1fc3FsaXRlQ29ubmVjdGlvbjsKK30KKworYm9vbCBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZUV4dGVuZGVkUmVzdWx0Q29kZSgpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIHJldHVybiAhIW1fc3FsaXRlQ29ubmVjdGlv
biAmJiBzcWxpdGUzX2V4dGVuZGVkX3Jlc3VsdF9jb2RlcyhtX3NxbGl0ZUNvbm5lY3Rpb24sIDEp
ID09IFNRTElURV9PSzsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJs
ZUluTWVtb3J5VGVtcFN0b3JlKCkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZSgiUFJBR01BIHRlbXBf
c3RvcmUgPSBNRU1PUlkiKTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVu
YWJsZVdBTEpvdXJuYWxNb2RlKCkKK3sKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNy
ZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgIlBSQUdNQSBqb3Vy
bmFsX21vZGU9V0FMIl9zIH0pOworICAgIGlmICghb3B0aW9uYWxJZGVudGlmaWVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9uYWxJZGVudGlm
aWVyOworICAgIGJvb2wgZW5hYmxlZCA9IGZhbHNlOworICAgIGlmIChzdGVwU3RhdGVtZW50KGlk
ZW50aWZpZXIpID09IFNRTElURV9ST1cpCisgICAgICAgIGVuYWJsZWQgPSBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShjb2x1bW5UZXh0KGlkZW50aWZpZXIsIDApLCAid2FsIik7CisgICAg
ZGVzdHJveUludGVybmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworCisgICAgaWYgKGVuYWJsZWQp
IHsKKyAgICAgICAgYXV0byBzaG1QYXRoID0gbWFrZVN0cmluZyhtX3BhdGgsICItc2htIl9zKTsK
KyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc2htUGF0aCkgJiYgIUZpbGVTeXN0
ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHNobVBhdGgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBlbmFibGVkOworfQorCitzdGF0aWMg
aW50IGNoZWNrcG9pbnRNb2RlVmFsdWUoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpDaGVja3Bv
aW50TW9kZSBtb2RlKQoreworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uOjpDaGVja3BvaW50TW9kZTo6RnVsbDoKKyAgICAgICAgcmV0dXJuIFNR
TElURV9DSEVDS1BPSU5UX0ZVTEw7CisgICAgY2FzZSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OkNoZWNrcG9pbnRNb2RlOjpUcnVuY2F0ZToKKyAgICAgICAgcmV0dXJuIFNRTElURV9DSEVDS1BP
SU5UX1RSVU5DQVRFOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZVdBTENoZWNrcG9pbnQo
Q2hlY2twb2ludE1vZGUgbW9kZSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Cisg
ICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBzcWxpdGUzX3dhbF9jaGVja3BvaW50X3YyKG1fc3FsaXRlQ29ubmVjdGlvbiwgbnVs
bHB0ciwgY2hlY2twb2ludE1vZGVWYWx1ZShtb2RlKSwgbnVsbHB0ciwgbnVsbHB0cikgPT0gU1FM
SVRFX09LOworfQorCitzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmNyZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHF1ZXJ5
KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29u
bmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHNxbGl0ZTNfc3Rt
dCogc3FsaXRlU3RhdGVtZW50IHsgbnVsbHB0ciB9OworICAgIGNvbnN0IGNoYXIqIHRhaWwgPSBu
dWxscHRyOworICAgIGludCByZXN1bHQ7CisgICAgaWYgKHF1ZXJ5LmlzOEJpdCgpICYmIHF1ZXJ5
LmlzQWxsQVNDSUkoKSkKKyAgICAgICAgcmVzdWx0ID0gc3FsaXRlM19wcmVwYXJlX3YyKG1fc3Fs
aXRlQ29ubmVjdGlvbiwgcXVlcnkubGVuZ3RoKCkgPyByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihxdWVyeS5jaGFyYWN0ZXJzOCgpKSA6ICIiLCBxdWVyeS5sZW5ndGgoKSArIDEsICZzcWxp
dGVTdGF0ZW1lbnQsICZ0YWlsKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNf
cHJlcGFyZV92MihtX3NxbGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5LnV0ZjgoKS5kYXRhKCksIHF1ZXJ5
LnV0ZjgoKS5sZW5ndGgoKSArIDEsICZzcWxpdGVTdGF0ZW1lbnQsICZ0YWlsKTsKKyAgICBpZiAo
dGFpbCAmJiAqdGFpbCkKKyAgICAgICAgcmVzdWx0ID0gU1FMSVRFX0VSUk9SOworCisgICAgaWYg
KHJlc3VsdCAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShzcWxpdGVT
dGF0ZW1lbnQpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGF1
dG8gaWRlbnRpZmllciA9IG5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKCk7CisgICAgbV9zdGF0ZW1l
bnRzLmFkZChpZGVudGlmaWVyLCBJbnRlcm5hbFN0YXRlbWVudCB7IGlkZW50aWZpZXIsIHNxbGl0
ZVN0YXRlbWVudCwgc3RkOjpudWxsb3B0IH0pOworCisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9
CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpkZXN0cm95SW50ZXJuYWxTdGF0ZW1l
bnQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChhdXRvIGl0ZXIgPSBtX3N0YXRlbWVudHMuZmluZChpZGVudGlmaWVyKTsgaXRlciAhPSBtX3N0
YXRlbWVudHMuZW5kKCkpIHsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShpdGVyLT52YWx1ZS5z
cWxpdGVTdGF0ZW1lbnQpOworICAgICAgICBtX3N0YXRlbWVudHMucmVtb3ZlKGl0ZXIpOworICAg
IH0KK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6bGFzdENoYW5nZXMoKQorewor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3FsaXRlM19jaGFuZ2VzKG1fc3Fs
aXRlQ29ubmVjdGlvbik7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RF
cnJvcigpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxp
dGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgcmV0dXJu
IHNxbGl0ZTNfZXJyY29kZShtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitjb25zdCBjaGFyKiBT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvck1lc3NhZ2UoKQoreworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAg
ICAgcmV0dXJuICJEYXRhYmFzZSBjb25uZWN0aW9uIGlzIG5vdCBvcGVuIjsKKworICAgIHJldHVy
biBzcWxpdGUzX2Vycm1zZyhtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitTdHJpbmcgU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjp0YWJsZUNyZWF0aW9uUXVlcnkoY29uc3QgU3RyaW5nJiB0YWJs
ZU5hbWUpCit7CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0
YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyB7ICJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21h
c3RlciBXSEVSRSB0eXBlID0gJ3RhYmxlJyBBTkQgbmFtZSA9ID87Il9zIH0pOworICAgIGlmICgh
b3B0aW9uYWxJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBpZGVu
dGlmaWVyID0gKm9wdGlvbmFsSWRlbnRpZmllcjsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlm
IChiaW5kVGV4dChpZGVudGlmaWVyLCAxLCB0YWJsZU5hbWUpID09IFNRTElURV9PSyAmJiBzdGVw
U3RhdGVtZW50KGlkZW50aWZpZXIpID09IFNRTElURV9ST1cpCisgICAgICAgIHJlc3VsdCA9IGNv
bHVtblRleHQoaWRlbnRpZmllciwgMCk7CisgICAgZGVzdHJveUludGVybmFsU3RhdGVtZW50KGlk
ZW50aWZpZXIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OmV4ZWN1dGUoQVNDSUlMaXRlcmFsIHF1ZXJ5KQoreworICAgIHJldHVybiBl
eGVjdXRlKFN0cmluZ1ZpZXcgeyBxdWVyeSB9KTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OmV4ZWN1dGUoU3RyaW5nVmlldyBxdWVyeSkKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfZXhlYyhtX3NxbGl0ZUNvbm5l
Y3Rpb24sIHF1ZXJ5LnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwor
ICAgIHJldHVybiByZXN1bHQgPT0gU1FMSVRFX09LIHx8IHJlc3VsdCA9PSBTUUxJVEVfRE9ORTsK
K30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplKGludDY0
X3Qgc2l6ZSkKK3sKKyAgICBpbnQgY3VycmVudFBhZ2VTaXplID0gcGFnZVNpemUoKTsKKyAgICBp
ZiAoIWN1cnJlbnRQYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50NjRfdCBuZXdN
YXhQYWdlQ291bnQgPSBjdXJyZW50UGFnZVNpemUgPyBzaXplIC8gY3VycmVudFBhZ2VTaXplIDog
MDsKKyAgICBhdXRvIHF1ZXJ5ID0gbWFrZVN0cmluZygiUFJBR01BIG1heF9wYWdlX2NvdW50ID0g
IiwgbmV3TWF4UGFnZUNvdW50KTsKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNyZWF0
ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgIlBSQUdNQSBwYWdlX3Np
emUiX3MgfSk7CisgICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7CisgICAgaWYgKHN0
ZXBTdGF0ZW1lbnQoaWRlbnRpZmllcikgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgTE9HX0VSUk9S
KCJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplIGZhaWxlZCB0byBzZXQg
bWF4aW11bSBzaXplIG9mIGRhdGFiYXNlIHRvICVsbGkgYnl0ZXMiLCBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KHNpemUpKTsKKworICAgIGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVy
KTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cGFnZVNpemUoKQoreworICAg
IGF1dG8gb3B0aW9uYWxJZGVudGlmaWVyID0gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVw
YXJlKFN0cmluZ1ZpZXcgeyAiUFJBR01BIHBhZ2Vfc2l6ZSJfcyB9KTsKKyAgICBpZiAoIW9wdGlv
bmFsSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhdXRvIGlkZW50aWZpZXIg
PSAqb3B0aW9uYWxJZGVudGlmaWVyOworICAgIGludCBzaXplID0gY29sdW1uSW50KGlkZW50aWZp
ZXIsIDApOworICAgIGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKKworICAg
IHJldHVybiBzaXplOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVsZWFz
ZU1lbW9yeSgpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFt
X3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNfZGJfcmVs
ZWFzZV9tZW1vcnkobV9zcWxpdGVDb25uZWN0aW9uKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNR
TGl0ZURhdGFiYXNlU3RhdGVtZW50PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVN0
YXRlbWVudEFuZFByZXBhcmUoQVNDSUlMaXRlcmFsIHF1ZXJ5KQoreworICAgIHJldHVybiBjcmVh
dGVTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgeyBxdWVyeSB9KTsKK30KKworc3RkOjp1
bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSkKK3sKKyAgICBh
dXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNyZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFy
ZShxdWVyeSk7CisgICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudD4obmV3IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KCp0aGlzLCAqb3B0aW9uYWxJZGVudGlm
aWVyKSk7Cit9CisKK3NxbGl0ZTNfc3RtdCogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpmaW5k
U1FMaXRlU3RhdGVtZW50KHVpbnQ2NF90IGlkZW50aWZpZXIpIGNvbnN0IFdURl9JR05PUkVTX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKKwor
ICAgIGF1dG8gaXRlciA9IG1fc3RhdGVtZW50cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChp
dGVyID09IG1fc3RhdGVtZW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gaXRlci0+dmFsdWUuc3FsaXRlU3RhdGVtZW50OworfQorCitpbnQgU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uOjpiaW5kQmxvYih1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgaW5kZXgs
IFNwYW48Y29uc3QgdWludDhfdD4gYmxvYikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRp
Zmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVf
RVJST1I7CisKKyAgICByZXR1cm4gc3FsaXRlM19iaW5kX2Jsb2Ioc3FsaXRlU3RhdGVtZW50LCBp
bmRleCwgYmxvYi5kYXRhKCksIGJsb2Iuc2l6ZSgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKK30KKwor
aW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmluZEJsb2IodWludDY0X3QgaWRlbnRpZmll
ciwgaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgYXV0byB1cGNvbnZlcnRl
ZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHRleHQpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwor
ICAgIFVDaGFyIGFueUNoYXJhY3RlciA9IDA7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnM7
CisgICAgaWYgKHRleHQuaXNFbXB0eSgpICYmICF0ZXh0LmlzTnVsbCgpKQorICAgICAgICBjaGFy
YWN0ZXJzID0gJmFueUNoYXJhY3RlcjsKKyAgICBlbHNlCisgICAgICAgIGNoYXJhY3RlcnMgPSB1
cGNvbnZlcnRlZENoYXJhY3RlcnM7CisKKyAgICByZXR1cm4gYmluZEJsb2IoaWRlbnRpZmllciwg
aW5kZXgsIFNwYW4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjaGFyYWN0ZXJz
KSwgdGV4dC5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikgfSk7Cit9CisKK2ludCBTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OmJpbmRUZXh0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBpbmRleCwg
U3RyaW5nVmlldyB0ZXh0KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7
CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7
CisKKyAgICBpbnQgcmVzdWx0OworICAgIGlmICh0ZXh0LmlzOEJpdCgpICYmIHRleHQuaXNBbGxB
U0NJSSgpKQorICAgICAgICByZXN1bHQgPSBzcWxpdGUzX2JpbmRfdGV4dChzcWxpdGVTdGF0ZW1l
bnQsIGluZGV4LCB0ZXh0Lmxlbmd0aCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
dGV4dC5jaGFyYWN0ZXJzOCgpKSA6ICIiLCB0ZXh0Lmxlbmd0aCgpLCBTUUxJVEVfVFJBTlNJRU5U
KTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfYmluZF90ZXh0KHNxbGl0ZVN0
YXRlbWVudCwgaW5kZXgsIHRleHQudXRmOCgpLmRhdGEoKSwgdGV4dC51dGY4KCkubGVuZ3RoKCks
IFNRTElURV9UUkFOU0lFTlQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3RyaW5nIFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uQmxvYkFzU3RyaW5nKHVpbnQ2NF90IGlkZW50
aWZpZXIsIGludCBjb2wpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAg
YXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsK
KyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNv
bnN0IHZvaWQqIGJsb2IgPSBzcWxpdGUzX2NvbHVtbl9ibG9iKHNxbGl0ZVN0YXRlbWVudCwgY29s
KTsKKyAgICBpZiAoIWJsb2IpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpbnQgc2l6ZSA9
IHNxbGl0ZTNfY29sdW1uX2J5dGVzKHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKKyAgICBpZiAoc2l6
ZSA8IDApCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19j
YXN0PGNvbnN0IFVDaGFyKj4oYmxvYiksIHNpemUgLyBzaXplb2YoVUNoYXIpKTsKK30KKworaW50
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uSW50KHVpbnQ2NF90IGlkZW50aWZpZXIs
IGludCBjb2wpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byog
c3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBp
ZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3Fs
aXRlM19jb2x1bW5faW50KHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKK30KKworU3RyaW5nIFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uVGV4dCh1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQg
Y29sKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0
ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFz
cWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChzcWxpdGUzX2NvbHVtbl90ZXh0KHNxbGl0ZVN0YXRlbWVudCwgY29sKSwgc3Fs
aXRlM19jb2x1bW5fYnl0ZXMoc3FsaXRlU3RhdGVtZW50LCBjb2wpKTsKK30KKworaW50IFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVzZXRTdGF0ZW1lbnQodWludDY0X3QgaWRlbnRpZmllcikK
K3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0
ZW1lbnQgPSBmaW5kU1FMaXRlU3RhdGVtZW50KGlkZW50aWZpZXIpOworICAgIGlmICghc3FsaXRl
U3RhdGVtZW50KQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgaW50IHJlc3Vs
dCA9IHNxbGl0ZTNfcmVzZXQoc3FsaXRlU3RhdGVtZW50KTsKKyAgICBzcWxpdGUzX2NsZWFyX2Jp
bmRpbmdzKHNxbGl0ZVN0YXRlbWVudCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50IFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c3RlcFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGlmaWVy
KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0
YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxp
dGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICByZXR1cm4g
c3FsaXRlM19zdGVwKHNxbGl0ZVN0YXRlbWVudCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uOjpkZXN0cm95U3RhdGVtZW50KHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAg
ZGVzdHJveUludGVybmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworfQorCitzdGQ6OnVuaXF1ZV9w
dHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpj
cmVhdGVUcmFuc2FjdGlvbkFuZEJlZ2luKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbiB8fCBzcWxpdGUzX2dldF9hdXRvY29t
bWl0KG1fc3FsaXRlQ29ubmVjdGlvbikpIHsKKyAgICAgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25J
ZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBpZiAoc3FsaXRlM19leGVjKG1fc3FsaXRlQ29ubmVjdGlvbiwgIkJFR0lOIiwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0cikgIT0gU1FMSVRFX0RPTkUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbmV4dFRyYW5z
YWN0aW9uSWRlbnRpZmllcigpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbj4obmV3IFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24oKnRoaXMsICpt
X29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIpKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OmNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fb25n
b2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciB8fCAqbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlm
aWVyICE9IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KG1fc3FsaXRlQ29ubmVjdGlvbiAmJiAhc3FsaXRlM19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNv
bm5lY3Rpb24pKQorICAgICAgICBzcWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAiQ09N
TUlUIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisKKyAgICBtX29uZ29pbmdUcmFuc2Fj
dGlvbklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uOjpyb2xsYmFja1RyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fb25n
b2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciB8fCAqbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlm
aWVyICE9IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KG1fc3FsaXRlQ29ubmVjdGlvbiAmJiAhc3FsaXRlM19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNv
bm5lY3Rpb24pKQorICAgICAgICBzcWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAiUk9M
TEJBQ0siLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKworICAgIG1fb25nb2luZ1RyYW5z
YWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRl
bnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICByZXR1cm4g
bV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyICYmICptX29uZ29pbmdUcmFuc2FjdGlvbklk
ZW50aWZpZXIgPT0gdHJhbnNhY3Rpb25JZGVudGlmaWVyOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI2MmVhYzY0MjZlNThhNjY4NWJmMThmNjhm
ZGJlZmYzZTI0ZWQxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8c3FsaXRlMy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ7CitjbGFz
cyBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4gewor
cHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogaW5NZW1vcnlQYXRoKCkg
eyByZXR1cm4gIjptZW1vcnk6IjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNo
b3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB+U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uKCk7CisKKyAgICBTdHJpbmcgcGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0aDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPcGVuKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RDaGFuZ2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
aW50IGxhc3RFcnJvcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGxhc3RFcnJv
ck1lc3NhZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGFibGVDcmVhdGlvblF1ZXJ5
KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1
dGUoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUo
U3RyaW5nVmlldyBxdWVyeSk7CisgICAgZW51bSBjbGFzcyBDaGVja3BvaW50TW9kZSA6IHVpbnQ4
X3QgeyBGdWxsLCBUcnVuY2F0ZSB9OworICAgIGJvb2wgZXhlY3V0ZVdBTENoZWNrcG9pbnQoQ2hl
Y2twb2ludE1vZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWF4aW11bVNpemUoaW50
NjRfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxlYXNlTWVtb3J5KCk7CisgICAgdm9p
ZCBpbnZhbGlkYXRlQWN0aXZpdHkoKTsKKyAgICB2b2lkIHNldElzQWN0aXZlKGJvb2wpOworCisg
ICAgLy8gU3RhdGVtZW50IG9wZXJhdGlvbnMuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlx
dWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJl
KEFTQ0lJTGl0ZXJhbCBxdWVyeSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50PiBjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpOwor
ICAgIGludCBiaW5kQmxvYih1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgaW5kZXgs
IFNwYW48Y29uc3QgdWludDhfdD4gYmxvYik7CisgICAgaW50IGJpbmRCbG9iKHVpbnQ2NF90IHN0
YXRlbWVudElkZW50aWZpZXIsIGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBp
bnQgYmluZFRleHQodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllciwgaW50IGluZGV4LCBTdHJp
bmdWaWV3IHRleHQpOworICAgIFN0cmluZyBjb2x1bW5CbG9iQXNTdHJpbmcodWludDY0X3Qgc3Rh
dGVtZW50SWRlbnRpZmllciwgaW50IGNvbCk7CisgICAgaW50IGNvbHVtbkludCh1aW50NjRfdCBz
dGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgY29sKTsKKyAgICBTdHJpbmcgY29sdW1uVGV4dCh1aW50
NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgY29sKTsKKyAgICBpbnQgcmVzZXRTdGF0ZW1l
bnQodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllcik7CisgICAgaW50IHN0ZXBTdGF0ZW1lbnQo
dWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllcik7CisgICAgdm9pZCBkZXN0cm95U3RhdGVtZW50
KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIpOworCisgICAgLy8gVHJhbnNhY3Rpb24gb3Bl
cmF0aW9ucy4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJh
c2VUcmFuc2FjdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25BbmRCZWdpbigpOworICAgIHZvaWQgY29t
bWl0VHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lk
IHJvbGxiYWNrVHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAg
ICBib29sIGlzT25nb2luZ1RyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7CisKK3ByaXZhdGU6CisgICAgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgYm9vbCBzaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpOworICAgIGJvb2wg
b3BlbigpOworICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGJlZ2luQWN0aXZpdHkoKTsKKyAg
ICB2b2lkIGVuZEFjdGl2aXR5KCk7CisgICAgYm9vbCBlbmFibGVFeHRlbmRlZFJlc3VsdENvZGUo
KTsKKyAgICBib29sIGVuYWJsZUluTWVtb3J5VGVtcFN0b3JlKCk7CisgICAgYm9vbCBlbmFibGVX
QUxKb3VybmFsTW9kZSgpOworICAgIGludCBwYWdlU2l6ZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGNyZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHF1
ZXJ5KTsKKyAgICB2b2lkIGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGZp
ZXIpOworICAgIHNxbGl0ZTNfc3RtdCogZmluZFNRTGl0ZVN0YXRlbWVudCh1aW50NjRfdCBzdGF0
ZW1lbnRJZGVudGlmaWVyKSBjb25zdDsKKworICAgIFN0cmluZyBtX3BhdGg7CisgICAgYm9vbCBt
X3Nob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZTsKKyAgICBMb2NrIG1fbG9jazsKKyAgICBz
dHJ1Y3QgSW50ZXJuYWxTdGF0ZW1lbnQgeworICAgICAgICB1aW50NjRfdCBpZGVudGlmaWVyOwor
ICAgICAgICBzcWxpdGUzX3N0bXQqIHNxbGl0ZVN0YXRlbWVudDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gdHJhbnNhY3Rpb25JZGVudGlmaWVyOworICAgIH07CisgICAgSGFzaE1h
cDx1aW50NjRfdCwgSW50ZXJuYWxTdGF0ZW1lbnQ+IG1fc3RhdGVtZW50cyBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fbG9jayk7CisgICAgc3FsaXRlMyogbV9zcWxpdGVDb25uZWN0aW9uICBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fbG9jaykgeyBudWxscHRyIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9sb2NrKTsKKyAgICBib29sIG1faXNBY3RpdmUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2sp
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQzOTlkZTZjMzg4OTFmYjc1NzgwZTEwMTczYWJhZTUwNmFiMmMxNjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCIKKworI2luY2x1ZGUg
IlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NR
TGl0ZURhdGFiYXNlU3RhdGVtZW50OjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudChTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgOiBt
X2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQor
eworfQorCitTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
KCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmRlc3Ryb3lTdGF0ZW1lbnQobV9pZGVudGlmaWVyKTsK
K30KKworaW50IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsIFNw
YW48Y29uc3QgdWludDhfdD4gYmxvYikKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5iaW5k
QmxvYihtX2lkZW50aWZpZXIsIGluZGV4LCBibG9iKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLT5iaW5kQmxvYihtX2lkZW50aWZpZXIsIGluZGV4LCB0ZXh0
KTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kVGV4dChpbnQgaW5kZXgs
IFN0cmluZ1ZpZXcgdGV4dCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5iaW5kVGV4dCht
X2lkZW50aWZpZXIsIGluZGV4LCB0ZXh0KTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50Ojpjb2x1bW5CbG9iQXNTdHJpbmcoaW50IGNvbCkKK3sKKyAgICByZXR1cm4gbV9jb25u
ZWN0aW9uLT5jb2x1bW5CbG9iQXNTdHJpbmcobV9pZGVudGlmaWVyLCBjb2wpOworfQorCitpbnQg
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtbkludChpbnQgY29sKQoreworICAgIHJldHVy
biBtX2Nvbm5lY3Rpb24tPmNvbHVtbkludChtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK1N0cmlu
ZyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6Y29sdW1uVGV4dChpbnQgY29sKQoreworICAgIHJl
dHVybiBtX2Nvbm5lY3Rpb24tPmNvbHVtblRleHQobV9pZGVudGlmaWVyLCBjb2wpOworfQorCitp
bnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OnJlc2V0KCkKK3sKKyAgICByZXR1cm4gbV9jb25u
ZWN0aW9uLT5yZXNldFN0YXRlbWVudChtX2lkZW50aWZpZXIpOworfQorCitpbnQgU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQ6OnN0ZXAoKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnN0ZXBT
dGF0ZW1lbnQobV9pZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZTdlOTA5MGQyZjUyNzhiMDRjYTFjNzk5MTljNzQ3OGM0ZmJiZjUx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlU3RhdGVtZW50LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb247CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQpOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IH5TUUxpdGVEYXRhYmFzZVN0YXRlbWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5k
QmxvYihpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4gYmxvYik7CisgICAgV0VCQ09SRV9F
WFBPUlQgaW50IGJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBpbnQgYmluZFRleHQoaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb2x1bW5CbG9iQXNTdHJpbmcoaW50IGNvbCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvbHVtbkludChpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgY29sdW1uVGV4dChpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
cmVzZXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgc3RlcCgpOworCitwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb247CisgICAgU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgaWRlbnRpZmll
cik7CisKKyAgICBSZWY8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Cisg
ICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50UmVzZXRTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZTIwZDlmMDY0MWUzOWMy
MjE3YWJjNmJjNTgwMjJhMzM5MzRmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmgKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudDsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNl
dFNjb3BlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dFJlc2V0U2NvcGUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IGV4cGxpY2l0IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZShTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudCogc3RhdGVtZW50KQorICAgICAgICA6IG1fc3RhdGVtZW50KHN0YXRlbWVudCkK
KyAgICB7CisgICAgfQorCisgICAgflNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSgp
CisgICAgeworICAgICAgICBpZiAobV9zdGF0ZW1lbnQpCisgICAgICAgICAgICBtX3N0YXRlbWVu
dC0+cmVzZXQoKTsKKyAgICB9CisKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2Nv
cGUoU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlJiYgb3RoZXIpCisgICAgICAgIDog
bV9zdGF0ZW1lbnQob3RoZXIubV9zdGF0ZW1lbnQuZ2V0KCkpCisgICAgeworICAgICAgICBvdGhl
ci5tX3N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgfQorCisgICAgU1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnRSZXNldFNjb3BlJiBvcGVyYXRvcj0oU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNj
b3BlJiYgb3RoZXIpCisgICAgeworICAgICAgICBzdGQ6OnN3YXAobV9zdGF0ZW1lbnQsIG90aGVy
Lm1fc3RhdGVtZW50KTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fc3RhdGVtZW50OyB9CisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zdGF0ZW1lbnQ7IH0KKyAgICBTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudCogZ2V0KCkgeyByZXR1cm4gbV9zdGF0ZW1lbnQuZ2V0KCk7IH0K
KyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIG1fc3Rh
dGVtZW50LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2Vha1B0cjxTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudD4gbV9zdGF0ZW1lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRy
YW5zYWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDY4YTg3MWU5NGYwYzM4Yzc1OGI1Y2Y1NTdiY2Iw
ODI2ZGIyZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFuc2Fj
dGlvbi5oIgorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6U1FMaXRlRGF0YWJh
c2VUcmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2
NF90IGlkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9u
Ojp+U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbigpCit7CisgICAgbV9jb25uZWN0aW9uLT5yb2xs
YmFja1RyYW5zYWN0aW9uKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbjo6Y29tbWl0KCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbW1pdFRyYW5zYWN0
aW9uKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6
cm9sbGJhY2soKQoreworICAgIG1fY29ubmVjdGlvbi0+cm9sbGJhY2tUcmFuc2FjdGlvbihtX2lk
ZW50aWZpZXIpOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246OmlzT25nb2lu
Z1RyYW5zYWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5pc09uZ29pbmdUcmFu
c2FjdGlvbihtX2lkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNh
Y3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MWVkZGQ1Nzg2MTQyODUyMjg4ZGE2Y2U5NTM4ZDRmZjkyNGE3
NGQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlVHJhbnNhY3Rpb24uaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uOworCitjbGFzcyBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKTsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0KCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByb2xsYmFjaygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNPbmdvaW5nVHJhbnNhY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOworICAgIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24o
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgaWRlbnRpZmllcik7CisKKyAgICBS
ZWY8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgdWludDY0X3Qg
bV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDZiOWVmMTBi
ZWY5MTg1NzljZjRjODE5MzQ0MWU3ZjI0MDAxZmQ2ZWIuLjE1NTM5NTY5ZGI1YWQ4MzA0NjllNmIy
ZGIyMmE3MmEyN2I5OTkyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiUHJlY29ubmVj
dFRhc2suaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgiCiAjaW5j
bHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgorI2luY2x1ZGUgIlNRTGl0ZVByb2Nlc3NBc3NlcnRp
b25Ib2xkZXIuaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNp
bmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJT
ZXQuaCIKQEAgLTc5LDYgKzgwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dT
ZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KQEAgLTE1OSw3ICsxNjEsNyBAQCBOZXR3b3Jr
UHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZQogICAgICwgbV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigq
dGhpcykKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3dlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlcihbdGhpc10oYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykgeyBzZXRJ
c0hvbGRpbmdMb2NrZWRGaWxlcyhpc0hvbGRpbmdMb2NrZWRGaWxlcyk7IH0pCisgICAgLCBtX3dl
YlNRTGl0ZURhdGFiYXNlVHJhY2tlcihbXShib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKSB7IFNR
TGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRJc0hvbGRpbmdMb2Nr
ZWRGaWxlcyhpc0hvbGRpbmdMb2NrZWRGaWxlcyk7IH0pCiAjZW5kaWYKICAgICAsIG1fbWVzc2Fn
ZVBvcnRDaGFubmVsUmVnaXN0cnkoY3JlYXRlTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKnRo
aXMpKQogewpAQCAtMTc3LDYgKzE3OSwxMiBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nl
c3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogICAg
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6bmV0d29ya1Byb2Nlc3NDcmVhdGVkKCp0aGlz
KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0SW1wbChbXSB7CisgICAgICAgIHJldHVy
biBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpjcmVhdGUoKTsKKyAgICB9KTsKKyNlbmRp
ZgorCiAgICAgTmV0d29ya1N0YXRlTm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZExpc3RlbmVyKFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XShib29sIGlzT25MaW5lKSB7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNDJjZTA4YmYzNTBjZmNiYTNiNWE3NTIy
OTMyNjlhZTc3OGI5NTE3Yi4uNzZiMzk4Yzc5NTIzMzhhMDRkZDYyMjFlNTJiZjlhZjAwMDY5MDQ3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApA
QCAtNDcxLDEwICs0NzEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVB
c05vQWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hl
bWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwotI2VuZGlm
Ci0KICAgICAvLyBDb25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCiAgICAgSGFzaE1hcDxXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Pj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CiAKQEAgLTUwNyw3ICs1MDMsNiBAQCBwcml2YXRl
OgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNr
ZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI7Ci0gICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRp
b24+IG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb247CiAjZW5kaWYKICAgICAKICNpZiBFTkFC
TEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9z
L05ldHdvcmtQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya1Byb2Nlc3NJT1MubW0KaW5kZXggODI3ZGRmNmVjZjRkOTI5MWUwYmZmNzRmYTVlYmI4
MTdiN2RjZmZkNy4uNWI3YzE4NTVjOGI2Y2EyODRhOWMzNTBhZGVlYjE1ZWE3ZjZkNDZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nl
c3NJT1MubW0KQEAgLTk1LDIxICs5NSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU2Vy
dmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAKICNl
bmRpZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCi17Ci0gICAg
aWYgKCFpc0hvbGRpbmdMb2NrZWRGaWxlcykgewotICAgICAgICBtX2hvbGRpbmdMb2NrZWRGaWxl
QXNzZXJ0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICht
X2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uICYmIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRp
b24tPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2Ugc3luY2hyb25vdXNs
eSB0YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gd2hlbiBiZWdpbm5pbmcgYSBTUUxpdGUgdHJhbnNh
Y3Rpb24gc28gdGhhdCB3ZSBkb24ndCBnZXQgc3VzcGVuZGVkCi0gICAgLy8gd2hpbGUgaG9sZGlu
ZyBhIGxvY2tlZCBmaWxlLiBXZSB3b3VsZCBnZXQga2lsbGVkIGlmIHN1c3BlbmRlZCB3aGlsZSBo
b2xkaW5nIGxvY2tlZCBmaWxlcy4KLSAgICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uID0g
UHJvY2Vzc0Fzc2VydGlvbjo6Y3JlYXRlKGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIk5ldHdvcmsg
UHJvY2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyJfcywgUHJvY2Vzc0Fzc2VydGlvblR5cGU6
OkZpbmlzaFRhc2tJbnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NR
TGl0ZVN0b3JhZ2VBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKaW5kZXggMTBlYzIwNzY4NTE0NThjZWYxNjE5MGVmMWI5
MTY2ZDJmMGE0NGU0MS4uMTIzMjA5MDFhOTIzMzQzM2M0MjA1OTlhM2YyNWE5NzgxY2RkNDUyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0
b3JhZ2VBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U1FMaXRlU3RvcmFnZUFyZWEuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiU1FMaXRl
U3RvcmFnZUFyZWEuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRh
YmFzZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgU1FMaXRlU3RvcmFn
ZUFyZWE6OmlzRW1wdHkoKQogCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0ZW1lbnQo
U3RhdGVtZW50VHlwZTo6Q291bnRJdGVtcyk7CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVt
ZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihT
dG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmlzRW1wdHkgZmFpbGVkIG9uIGV4ZWN1dGluZyBz
dGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNR
TGl0ZVN0b3JhZ2VBcmVhOjppc0VtcHR5IGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICgl
ZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JN
ZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEyOCwyMSArMTI4
LDIxIEBAIGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkoKQog
ICAgIGlmICghbV9kYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5n
IHN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRhYmxlU1FMKCJJdGVtVGFibGUiX3MpOworICAgIFN0
cmluZyBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLT50YWJsZUNyZWF0aW9uUXVlcnkoIkl0ZW1UYWJs
ZSJfcyk7CiAgICAgaWYgKHN0YXRlbWVudCA9PSBjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQgfHwg
c3RhdGVtZW50ID09IGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudEFsdGVybmF0aXZlKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRhYmxlIGV4aXN0cyBidXQgc3RhdGVtZW50IGlzIHdy
b25nOyBkcm9wIGl0LgogICAgIGlmICghc3RhdGVtZW50LmlzRW1wdHkoKSkgewotICAgICAgICBp
ZiAoIW1fZGF0YWJhc2UtPmV4ZWN1dGVDb21tYW5kKCJEUk9QIFRBQkxFIEl0ZW1UYWJsZSJfcykp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdl
QXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gZHJvcCBleGlzdGluZyBpdGVt
IHRhYmxlICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIGlmICghbV9kYXRhYmFzZS0+ZXhlY3V0ZSgiRFJPUCBU
QUJMRSBJdGVtVGFibGUiX3MpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9y
YWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkgZmFpbGVkIHRv
IGRyb3AgZXhpc3RpbmcgaXRlbSB0YWJsZSAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJy
b3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRhYmxlIGRvZXMgbm90IGV4aXN0
LgotICAgIGlmICghbV9kYXRhYmFzZS0+ZXhlY3V0ZUNvbW1hbmQoY3JlYXRlSXRlbVRhYmxlU3Rh
dGVtZW50KSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3Rv
cmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGNyZWF0ZSBpdGVtIHRh
YmxlICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0
RXJyb3JNc2coKSk7CisgICAgaWYgKCFtX2RhdGFiYXNlLT5leGVjdXRlKGNyZWF0ZUl0ZW1UYWJs
ZVN0YXRlbWVudCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0
ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBjcmVhdGUgaXRl
bSB0YWJsZSAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+
bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
MTU4LDE3ICsxNTgsMTIgQEAgYm9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6cHJlcGFyZURhdGFiYXNl
KFNob3VsZENyZWF0ZUlmTm90RXhpc3RzIHNob3VsZENyZWF0ZUlmTm8KICAgICBpZiAoc2hvdWxk
Q3JlYXRlSWZOb3RFeGlzdHMgPT0gU2hvdWxkQ3JlYXRlSWZOb3RFeGlzdHM6Ok5vICYmICFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1fcGF0aCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
bV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAg
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgobV9w
YXRoKSk7Ci0gICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuKG1fcGF0aCkpIHsKKyAgICBtX2RhdGFi
YXNlID0gV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGUobV9wYXRoLCB0
cnVlKS5wdHIoKTsKKyAgICBpZiAoIW1fZGF0YWJhc2UtPmlzT3BlbigpKSB7CiAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6cHJlcGFyZURhdGFi
YXNlIGZhaWxlZCB0byBvcGVuIGRhdGFiYXNlIGF0ICclcyciLCBtX3BhdGgudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgICAgICAKLSAgICAvLyBTaW5jZSBhIFdvcmtRdWV1ZSBpc24ndCBib3VuZCB0
byBhIHNwZWNpZmljIHRocmVhZCwgd2UgbmVlZCB0byBkaXNhYmxlIHRocmVhZGluZyBjaGVjay4K
LSAgICAvLyBXZSB3aWxsIG5ldmVyIGFjY2VzcyB0aGUgZGF0YWJhc2UgZnJvbSBkaWZmZXJlbnQg
dGhyZWFkcyBzaW11bHRhbmVvdXNseS4KLSAgICBtX2RhdGFiYXNlLT5kaXNhYmxlVGhyZWFkaW5n
Q2hlY2tzKCk7CiAKICAgICBpZiAoIWNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkoKSkgewogICAgICAg
ICBtX2RhdGFiYXNlID0gbnVsbHB0cjsKQEAgLTE4NCwxMSArMTc5LDEwIEBAIGJvb2wgU1FMaXRl
U3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZShTaG91bGRDcmVhdGVJZk5vdEV4aXN0cyBzaG91
bGRDcmVhdGVJZk5vCiB2b2lkIFNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0aW9uSWZO
ZWNlc3NhcnkoKQogewogICAgIGlmICghbV90cmFuc2FjdGlvbikKLSAgICAgICAgbV90cmFuc2Fj
dGlvbiA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24+KCptX2RhdGFiYXNl
KTsKLQotICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCisgICAgICAgIG1fdHJh
bnNhY3Rpb24gPSBtX2RhdGFiYXNlLT5jcmVhdGVUcmFuc2FjdGlvbkFuZEJlZ2luKCk7CisgICAg
CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgbV90cmFuc2Fj
dGlvbi0+YmVnaW4oKTsKIAogICAgIG1fcXVldWUtPmRpc3BhdGNoQWZ0ZXIodHJhbnNhY3Rpb25E
dXJhdGlvbiwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgaWYgKHdl
YWtUaGlzKQpAQCAtMTk2LDE4ICsxOTAsMTYgQEAgdm9pZCBTUUxpdGVTdG9yYWdlQXJlYTo6c3Rh
cnRUcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCkKICAgICB9KTsKIH0KIAotV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgU1FMaXRlU3RvcmFnZUFyZWE6OmNhY2hlZFN0YXRlbWVu
dChTdGF0ZW1lbnRUeXBlIHR5cGUpCitXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJl
c2V0U2NvcGUgU1FMaXRlU3RvcmFnZUFyZWE6OmNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBl
IHR5cGUpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2UpOwogICAgIEFTU0VSVCh0eXBlIDwgU3Rh
dGVtZW50VHlwZTo6SW52YWxpZCk7CiAKICAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4odHlwZSk7Ci0gICAgaWYgKCFtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhdKSB7Ci0gICAg
ICAgIGlmIChhdXRvIHJlc3VsdCA9IG1fZGF0YWJhc2UtPnByZXBhcmVIZWFwU3RhdGVtZW50KHN0
YXRlbWVudFN0cmluZyh0eXBlKSkpCi0gICAgICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbaW5k
ZXhdID0gcmVzdWx0LnZhbHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgfQorICAgIGlmICgh
bV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XSkKKyAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW2lu
ZGV4XSA9IG1fZGF0YWJhc2UtPmNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoc3RhdGVtZW50U3Ry
aW5nKHR5cGUpKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVz
ZXRTY29wZSB7IG1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0uZ2V0KCkgfTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlIHsgbV9jYWNoZWRTdGF0
ZW1lbnRzW2luZGV4XS5nZXQoKSB9OwogfQogCiBFeHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJv
cj4gU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpCkBAIC0yMzQs
NyArMjI2LDcgQEAgRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VB
cmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlKGNvbnN0IFN0cmkKIAogICAgIGF1dG8gc3RhdGVtZW50
ID0gY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkdldEl0ZW0pOwogICAgIGlmICghc3Rh
dGVtZW50IHx8IHN0YXRlbWVudC0+YmluZFRleHQoMSwga2V5KSkgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJh
c2UgZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJh
c2UgZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0KIApAQCAt
MjQyLDcgKzIzNCw3IEBAIEV4cGVjdGVkPFN0cmluZywgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9y
YWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZShjb25zdCBTdHJpCiAgICAgaWYgKHJlc3VsdCA9
PSBTUUxJVEVfUk9XKQogICAgICAgICByZXR1cm4gc3RhdGVtZW50LT5jb2x1bW5CbG9iQXNTdHJp
bmcoMCk7CiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJh
c2UgZmFpbGVkIG9uIHN0ZXBwaW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJh
c2UgZmFpbGVkIG9uIHN0ZXBwaW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0KIApAQCAt
Mjc0LDcgKzI2Niw3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFNRTGl0ZVN0b3JhZ2VBcmVh
OjphbGxJdGVtcygpCiAgICAgLy8gSW1wb3J0IGZyb20gZGF0YWJhc2UuCiAgICAgYXV0byBzdGF0
ZW1lbnQgPSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6R2V0QWxsSXRlbXMpOwogICAg
IGlmICghc3RhdGVtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJT
UUxpdGVTdG9yYWdlQXJlYTo6Z2V0QWxsSXRlbXMgZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVu
dCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3Rv
cmFnZUFyZWE6OmdldEFsbEl0ZW1zIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAt
ICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3Nh
Z2UoKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0yOTIsNyArMjg0LDcgQEAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gU1FMaXRlU3RvcmFnZUFyZWE6OmFsbEl0ZW1zKCkKICAg
ICB9CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmdldEFsbEl0ZW1zIGZhaWxlZCBv
biBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigp
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0QWxsSXRlbXMgZmFpbGVkIG9uIGV4ZWN1
dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0
YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAKICAgICByZXR1cm4gaXRlbXM7CiB9CkBAIC0z
MTEsNyArMzAzLDcgQEAgRXhwZWN0ZWQ8dm9pZCwgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdl
QXJlYTo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUkKIAogICAgIGF1dG8gc3RhdGVt
ZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OlNldEl0ZW0pOwogICAgIGlmICgh
c3RhdGVtZW50IHx8IHN0YXRlbWVudC0+YmluZFRleHQoMSwga2V5KSB8fCBzdGF0ZW1lbnQtPmJp
bmRCbG9iKDIsIHZhbHVlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAi
U1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0ZW0gZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVudCAo
JWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
TXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFn
ZUFyZWE6OnNldEl0ZW0gZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwog
ICAgIH0KIApAQCAtMzE5LDcgKzMxMSw3IEBAIEV4cGVjdGVkPHZvaWQsIFN0b3JhZ2VFcnJvcj4g
U1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJCiAgICAg
aWYgKHJlc3VsdCA9PSBTUUxJVEVfRlVMTCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KFN0b3JhZ2VFcnJvcjo6UXVvdGFFeGNlZWRlZCk7CiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVf
RE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFn
ZUFyZWE6OnNldEl0ZW0gZmFpbGVkIG9uIHN0ZXBwaW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0
ZW0gZmFpbGVkIG9uIHN0ZXBwaW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0KIApAQCAt
MzUwLDcgKzM0Miw3IEBAIEV4cGVjdGVkPHZvaWQsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFn
ZUFyZWE6OnJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxCiAKICAgICBhdXRvIHN0YXRl
bWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpEZWxldGVJdGVtKTsKICAgICBp
ZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGtleSkgfHwgc3RhdGVtZW50
LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3Rv
cmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtIGZhaWxlZCBvbiBleGVjdXRpbmcg
c3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNl
LT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJT
UUxpdGVTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbSBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVu
dCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJv
cjo6RGF0YWJhc2UpOwogICAgIH0KIApAQCAtMzgxLDcgKzM3Myw3IEBAIEV4cGVjdGVkPHZvaWQs
IFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyKElQQzo6Q29ubmVjdGlvbjo6
VW5pcXVlSUQKICAgICBzdGFydFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKICAgICBhdXRvIHN0
YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpEZWxldGVBbGxJdGVtcyk7
CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVh
OjpjbGVhciBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyIGZhaWxl
ZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJv
cigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJl
YS5oCmluZGV4IDUyY2M5ZDYwZTdlNWE1MzkxZmM4YzQ4M2ZiNjhjMjkwMzYwOTcxNjAuLjYyNjNm
MGY1ZWI2Y2NlMDVhZjMyMjYxOTc1YzdlMjA5YzMyMWI5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5oCkBA
IC0yNiw4ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhQmFz
ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFi
YXNlU3RhdGVtZW50UmVzZXRTY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNjYs
MTYgKzY2LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIEludmFsaWQKICAgICB9OwogICAgIEFTQ0lJ
TGl0ZXJhbCBzdGF0ZW1lbnRTdHJpbmcoU3RhdGVtZW50VHlwZSkgY29uc3Q7Ci0gICAgV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVu
dFR5cGUpOworICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSBj
YWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZSk7CiAgICAgRXhwZWN0ZWQ8U3RyaW5nLCBTdG9y
YWdlRXJyb3I+IGdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIEV4cGVjdGVkPFN0cmlu
ZywgU3RvcmFnZUVycm9yPiBnZXRJdGVtRnJvbURhdGFiYXNlKGNvbnN0IFN0cmluZyYga2V5KTsK
IAogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9u
OwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Pj4g
bV9jYWNoZWRTdGF0ZW1lbnRzOwogICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4+IG1fY2FjaGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbj4gbV9kYXRhYmFzZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Pj4gbV9jYWNoZWRTdGF0ZW1lbnRz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNmY1
ZTg2OWMyMjUyYzcyMjBlYzM1MDc2ZWFlOTFmZjkzMWMzOTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcApAQCAt
MCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCIKKworI2luY2x1ZGUgIlByb2Nlc3NBc3Nl
cnRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhv
bGRlcj4gU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyKTsKK30KKwordm9p
ZCBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjp3aWxsQmVnaW5GaXJzdEFjdGl2aXR5KCkK
K3sKKyAgICBtX2lzUGVyZm9ybWluZ0FjdGl2aXRpZXMgPSB0cnVlOworICAgIGVuc3VyZUFzc2Vy
dGlvbigpOworfQorCit2b2lkIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVuZExh
c3RBY3Rpdml0eSgpCit7CisgICAgbV9pc1BlcmZvcm1pbmdBY3Rpdml0aWVzID0gZmFsc2U7Cisg
ICAgcmVsZWFzZUFzc2VydGlvbigpOworfQorCit2b2lkIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25I
b2xkZXI6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgdmFsdWUpCit7CisgICAgbV9pc0hv
bGRpbmdMb2NrZWRGaWxlcyA9IHZhbHVlOworICAgIGlmIChtX2lzSG9sZGluZ0xvY2tlZEZpbGVz
KQorICAgICAgICBlbnN1cmVBc3NlcnRpb24oKTsKKyAgICBlbHNlCisgICAgICAgIHJlbGVhc2VB
c3NlcnRpb24oKTsKK30KKwordm9pZCBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjplbnN1
cmVBc3NlcnRpb24oKQoreworICAgIGlmIChtX2Fzc2VydGlvbiAmJiBtX2Fzc2VydGlvbi0+aXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Fzc2VydGlvbiA9IFByb2Nlc3NBc3Nl
cnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMg
aG9sZGluZyBkYXRhYmFzZSBsb2NrIl9zLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFz
a0ludGVycnVwdGFibGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOworICAgIG1fYXNz
ZXJ0aW9uLT5zZXRJbnZhbGlkYXRpb25IYW5kbGVyKFtdIHsKKyAgICAgICAgQVNTRVJUKGlzTWFp
blJ1bkxvb3AoKSk7CisgICAgICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFj
a2VyOjpzaW5nbGV0b24oKS5pbnZhbGlkYXRlQWxsQWN0aXZpdGllcygpOworICAgIH0pOworfQor
Cit2b2lkIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OnJlbGVhc2VBc3NlcnRpb24oKQor
eworICAgIGlmICghbV9pc0hvbGRpbmdMb2NrZWRGaWxlcyAmJiAhbV9pc1BlcmZvcm1pbmdBY3Rp
dml0aWVzKQorICAgICAgICBtX2Fzc2VydGlvbiA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vz
c0Fzc2VydGlvbkhvbGRlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fz
c2VydGlvbkhvbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiYWFhZmI5MWU4NGRlZjMxY2QzYWY5YWU4NmQy
NDg5M2Y4OTljMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxp
dGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJvY2Vzc0Fzc2VydGlvbi5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBQcm9jZXNzQXNzZXJ0aW9uOworCitjbGFzcyBTUUxpdGVQcm9j
ZXNzQXNzZXJ0aW9uSG9sZGVyIDogcHVibGljIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZp
dHlUcmFja2VySW1wbCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTUUxpdGVQcm9jZXNzQXNz
ZXJ0aW9uSG9sZGVyPiBjcmVhdGUoKTsKKyAgICB2b2lkIHdpbGxCZWdpbkZpcnN0QWN0aXZpdHko
KSBmaW5hbDsKKyAgICB2b2lkIGRpZEVuZExhc3RBY3Rpdml0eSgpIGZpbmFsOworICAgIHZvaWQg
c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCB2YWx1ZSkgZmluYWw7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBlbnN1cmVBc3NlcnRpb24oKTsKKyAgICB2b2lkIHJlbGVhc2VBc3NlcnRpb24oKTsK
KworICAgIGJvb2wgbV9pc1BlcmZvcm1pbmdBY3Rpdml0aWVzIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faXNIb2xkaW5nTG9ja2VkRmlsZXMgeyBmYWxzZSB9OworICAgIFJlZlB0cjxQcm9jZXNzQXNz
ZXJ0aW9uPiBtX2Fzc2VydGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXggYTNmYmI3NjBlNzc2MDQwNzhkOGU1MGMxNGNk
ZDdkN2NlYTZlYjZkMy4uMzFhOGYxYmUxNDU1Y2FjODRjNjNiYjZkNDNkZmMxNDg0YmU1NGE2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01l
ZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgog
CisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW5jbHVkZSA8cGFsL2Nv
Y29hL01lZGlhVG9vbGJveFNvZnRMaW5rLmg+CiAKIFdURl9ERUNMQVJFX0NGX1RZUEVfVFJBSVQo
TVRQbHVnaW5Gb3JtYXRSZWFkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggYmVjMWEzZjEzNGUyZGQzOTIz
NjEyNzUyYTg5ZDg4MTU3OWUyMGY4NC4uOWFiY2IyMDU5M2EyMzhmYTRjZGFmZWUzYjUwYmMyOWIx
MTgxM2QyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yMzksNiArMjM5LDcgQEAgU2hhcmVkL1ByaW50SW5m
by5jcHAKIFNoYXJlZC9SVENOZXR3b3JrLmNwcAogU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuY3Bw
CiBTaGFyZWQvUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcAorU2hhcmVkL1NRTGl0
ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwCiBTaGFyZWQvU2Nyb2xsaW5nQWNjZWxlcmF0aW9u
Q3VydmUuY3BwCiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAogU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDc3YTU5OWI1MzQwOWNiOGQ1YmY2YjY5ZjM0YmJkMTkwMjE3OGZiZmQuLjMwNjJjZDZi
OWM4OTNkZTZmMTExZTRmYzI2ZTBlYWFmODIyNGQxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUwMCw2ICsxNTAwLDcgQEAKIAkJ
OTNCNjMxRjEyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0
IC8qIFF1b3RhTWFuYWdlci5oICovOyB9OwogCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQgLyog
UXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyogUXVvdGFJ
bmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi87IH07CiAJCTkzQkRFQjAxMTcxREQ3QUYwMEJG
RUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdl
TG9hZFR5cGVzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTkzRDVERDIwMjdEQTU1NTYwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNz
ZXJ0aW9uSG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q1REQxRTI3REE1NTU1MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhv
bGRlci5oICovOyB9OwogCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5o
ICovOyB9OwogCQk5M0Q2Qjc3MzI1NEJCOEM3MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q2Qjc2ODI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmggKi87IH07CiAJCTkzRDZCNzgyMjU0Q0NDRjQwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc4MTI1NENDQUJDMDA1OEREM0EgLyogU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtNTQ3MSw2ICs1
NDcyLDggQEAKIAkJOTNCQTA0RTAyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0RTEyMTUxQURGNDAw
N0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5
cGVzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2Fk
VHlwZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDFFMjdE
QTU1NTUwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMUYyN0RBNTU1NTAwMTA3Qzc1IC8q
IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzY3MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3NjgyNTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNENkI3NjkyNTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uUHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2du
aXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM5Miw2ICs3
Mzk1LDggQEAKIAkJCQk4MzEzRjdFNzFGN0RBRTAzMDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFz
aFRhYmxlLmggKi8sCiAJCQkJODNGOTY0NEIxRkEwRjc2MjAwQzQ3NzUwIC8qIFNoYXJlZFN0cmlu
Z0hhc2hUYWJsZVJlYWRPbmx5LmNwcCAqLywKIAkJCQk4M0Y5NjQ0QzFGQTBGNzYzMDBDNDc3NTAg
LyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuaCAqLywKKwkJCQk5M0Q1REQxRjI3REE1
NTU1MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAgKi8sCisJCQkJ
OTNENUREMUUyN0RBNTU1NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIu
aCAqLywKIAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5o
ICovLAogCQkJCUY0QTdDRTg0MjY2N0VCNEUwMDIyODY4NSAvKiBUZXh0UmVjb2duaXRpb25VcGRh
dGVSZXN1bHQuaCAqLywKIAkJCQk3QkUzN0Y2RjI3QjE0NzVGMDA3QTZDRDMgLyogVGhyZWFkU2Fm
ZU9iamVjdEhlYXAuaCAqLywKQEAgLTEzNTkyLDYgKzEzNTk3LDcgQEAKIAkJCQk5M0Q2Qjc3MjI1
NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRDZCNzg0MjU0Q0NEMEUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NTI1NENDRDQzMDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTkzRDVERDIwMjdEQTU1NTYwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9u
SG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlEQTI3NjEyMTA4MDA3NDAwOEEgLyog
U1FMaXRlU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBM0ZFQ0EyMjFGN0MwOTcw
MEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkJF
QjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovLApAQCAt
MTM2NzksNyArMTM2ODUsNiBAQAogCQkJCTU3NDJBMzA4MjUzNThBMDQwMEI3QkExNCAvKiBXZWJB
dXRoblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MkVC
QkMyMjUzNkE2MEEwMDA1NTJCMyAvKiBXZWJBdXRoblByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTcyRUJCQzkyNTM2QUZENTAwMDU1MkIzIC8qIFdlYkF1dGhuUHJvY2Vzc1By
b3h5LmggaW4gSGVhZGVycyAqLywKLQkJCQk1NzJFQkJEMDI1MzZCQjExMDAwNTUyQjMgLyogV2Vi
QXV0aG5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQyRDYzNDEy
MkEwRUZERjAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTkwRDM5RjUyNDNCRTY0ODAwMTk5Mzg4IC8qIFdlYkF1dG9tYXRpb25ET01XaW5kb3dP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwOWZlNDhmMTg5
ZTFhMTQ3YTExYzIwZjI4M2E1NTM1NGU5YTU3MDJmLi5lODMwNDYwOTMyMGNjMzk3MjZlZTUzYjll
MWFlMDQ1MzlmMjJjOGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMTAgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRlIGRhdGFi
YXNlIGNvbm5lY3Rpb25zIGZvciBMb2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMgZHJvcHBl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9y
YWdlL2RvbXN0b3JhZ2Uvc3RvcmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1k
YXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbDoKKwogMjAyMi0wMy0wOSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUlRDIGRlY29kZWQgZnJhbWVzIGFyZSBu
b3QgY29ycmVjdGx5IHJvdGF0ZWQgaW4gY2FzZSBHUFUgUHJvY2VzcyBET00gcmVuZGVyaW5nIGZs
YWcgaXMgc2V0IHRvIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3Rv
cmFnZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvZG9tc3RvcmFnZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbAppbmRl
eCAwM2E3NmRhNWEzYWJhNmQ0NjkzYmU4ZGI1M2U3YTBmZTJhN2FlYmU0Li4zYmUyNzdlNTgyZjQ4
ZTc4MjkxNTQwMTA5YjEyN2Y2OGEzNTEzNDI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2RvbXN0b3JhZ2Uvc3RvcmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3N0b3JhZ2UtY2xvc2UtZGF0YWJhc2Utb24t
aWRsZS5odG1sCkBAIC0yMCw5ICsyMCwxMCBAQCBmdW5jdGlvbiBsb2FkTmV4dFBhZ2UoKQogZnVu
Y3Rpb24gcnVuVGVzdCgpCiB7CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKDApOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoMCk7CiAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FjaGVNb2RlbCgwKTsgLy8gV2ViQ2FjaGVNb2RlbERvY3Vt
ZW50Vmlld2VyLgotICAgIH0KKyAgICB9IAogCiAgICAgLy8gVGVzdCB0byBtYWtlIHN1cmUgdGhl
IHN0b3JhZ2UgdmFsdWVzIGRvbid0IGNoYW5nZSBhZnRlciB0aGUgZGF0YWJhc2UgaXMgY2xvc2Vk
LgogICAgIGlmICgibG9jYWxTdG9yYWdlIiBpbiB3aW5kb3cpIHsKQEAgLTQ2LDcgKzQ3LDggQEAg
ZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgICAgICBsb2cod2luZG93LmxvY2FsU3RvcmFnZVsn
YmFyJ10gPT09ICdCQVInID8gJ1BBU1MnIDogJ0ZBSUwnKTsKIAogICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdl
RGF0YWJhc2VJZGxlSW50ZXJ2YWwoMzAwKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCgzMDApOwogICAg
ICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9yZXNvdXJjZXMv
c3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1sb2Nh
bHN0b3JhZ2UtZGF0YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwKaW5kZXggNGUwYTQ0NmUzZTQyMzRk
ZjkxYWE5ZTZhZGYyNmIwMzY4ZTU3YjRjYy4uN2IxNzM2MTY2ZTcxZDUxODMzMTBhMTlkMDNkNzdj
OWUyMjIyNGZiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9yZXNvdXJjZXMvc3Rv
cmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9j
YWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVseS5odG1sCkBAIC0yLDcgKzIsNyBAQAogPHNj
cmlwdD4KICAgICBmdW5jdGlvbiBzd2luZ0JhY2soKSAKICAgICB7Ci0gICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LnRlc3RSdW5uZXIuY2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKSB7CiAgICAgICAgICAg
ICB3aW5kb3cudGVzdFJ1bm5lci5jbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKTsKICAg
ICAgICAgfQogICAgICAgICBsb2NhdGlvbi5ocmVmPScuLi9kb21zdG9yYWdlL2xvY2Fsc3RvcmFn
ZS9jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbCc7Cg==
</data>
<flag name="commit-queue"
          id="482090"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454447</attachid>
            <date>2022-03-10 23:10:36 -0800</date>
            <delta_ts>2022-03-11 12:22:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237754-20220310231035.patch</filename>
            <type>text/plain</type>
            <size>94344</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ1OTA1MmVkMDY5YWM1
NjI0MDFiODhmYTM4MTYxMjhlYzA1ZGJiNS4uMDVjOWE2YTk0Y2ZlYzVkYzFhMWFiNTg5NjE5N2Yz
NDBjNjRlMmYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIyLTAzLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIFNRTGl0ZSBkYXRh
YmFzZSBjb25uZWN0aW9ucyBmb3IgTG9jYWxTdG9yYWdlIHdoZW4gYXNzZXJ0aW9uIGlzIGRyb3Bw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6
OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlcjo6c2V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlcjo6YmVnaW5BY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlcjo6ZW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmNoZWNrTGFzdEFjdGl2aXR5VGltZXN0YW1wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjppbnZhbGlkYXRl
QWxsQWN0aXZpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlcjo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsOjp+U1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0
U3RhdGVtZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0VHJhbnNhY3Rpb25J
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVTUUxpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjp+U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
YmVnaW5BY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmVuZEFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6aW52YWxpZGF0ZUFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6c2V0SXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uOjppc09wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjplbmFibGVFeHRlbmRlZFJlc3VsdENvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVJbk1lbW9yeVRlbXBTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZVdBTEpvdXJu
YWxNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrcG9pbnRNb2RlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlV0FMQ2hlY2twb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZUlu
dGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RDaGFuZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6bGFzdEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6bGFzdEVycm9yTWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnRhYmxlQ3JlYXRpb25RdWVy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmV4ZWN1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRNYXhpbXVt
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnBhZ2VT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVsZWFz
ZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNy
ZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpiaW5kQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OmJpbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6Y29sdW1uQmxvYkFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uSW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OnJlc2V0U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c3RlcFN0YXRlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lTdGF0ZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVUcmFuc2FjdGlvbkFu
ZEJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29t
bWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjpyb2xsYmFja1RyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmluTWVtb3J5UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnBhdGggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6
flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50OjpiaW5kQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6YmluZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OmNvbHVtbkJsb2JBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudDo6Y29sdW1uSW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6c3RlcCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
U3RhdGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2Nv
cGU6On5TUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVyYXRvciBi
b29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVz
ZXRTY29wZTo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50UmVzZXRTY29wZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6b3BlcmF0b3ItPik6CisgICAgICAgICogcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6flNRTGl0
ZURhdGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb246OnJvbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oOiBBZGRlZC4KKwogMjAyMi0wMy0wOSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJy
dGMgdmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdoIFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQg
cGlwZWxpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBiMWE5MjliMzYwNjE0NDQzMDA2ZjU1YjNmZDljNTYxMGZl
N2FlMzkuLjY1MWRmNzMwMWM4NjEyNzA4N2NhNDQyNjU3Y2FjY2RhMmRiMmFlZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRlIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGZvciBM
b2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMgZHJvcHBlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6Om1fbWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6OlNR
TGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktp
dDo6U1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6
OlNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkpOgorICAgICAg
ICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6Y2FjaGVkU3RhdGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6YWxsSXRlbXMpOgorICAgICAgICAoV2ViS2l0
OjpTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0
b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFy
ZWE6OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3Jh
Z2VBcmVhLmg6CisgICAgICAgICogU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRl
cjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nl
c3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVuZExhc3RBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6
OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKToK
KyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6ZW5zdXJlQXNz
ZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6
cmVsZWFzZUFzc2VydGlvbik6CisgICAgICAgICogU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRp
b25Ib2xkZXIuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjItMDMtMDkgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRvIHBhc3Mgd2Vi
cnRjIHZpZGVvIGZyYW1lIGJ1ZmZlcnMgdGhyb3VnaCBSZWFsdGltZU1lZGlhU291cmNlIGJhc2Vk
IHBpcGVsaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYWUwODg1ZjMyNmNlNDBhNmYwMWVmZDNh
MzlhMzNiMWVlNTJjNDNiMy4uZTk3YjFiMGQwMGI4ZDEwMDZiMDU5MzQwNTA3Y2RiNTk3MTFiZDBj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNzgxLDggKzE3ODEsMTQgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgcGxhdGZvcm0vc3FsL1NRTFZhbHVlLmgK
ICAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorICAgIHBsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlQWN0aXZpdHlUcmFja2VySW1wbC5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbi5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmgK
KyAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmgKICAg
ICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgKICAgICBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgKKyAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbi5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAog
ICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxp
dGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDczNjg0MjFiMjc3
NGZkNWQ1ZTZhNmFmZTc5NjBiNDJlY2I0NDg3YzkuLjA1Nzc5YWYyMGEzNDZjNmY1NWNhNzE2ZDMz
YjgzYTdhNzdlOWFjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjUyLDcgKzIyNTIsMTEgQEAgcGxh
dGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKIHBsYXRmb3JtL25ldHdv
cmsvVGltaW5nQWxsb3dPcmlnaW4uY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9yaXplci5j
cHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb24uY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwCiBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcAorcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5j
cHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRl
U3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDU1MzJjYjlkOGNhNTVkZjIzZWQ4YjM3
MTZhNWI0NjlkMmZmODIzYS4uMGExYmZhZDg3MjVmNGZiNGZmOGI5ZWQ1MTQzNWIyODM1OTc0N2Zk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMzAyOSw2ICszMDI5LDEyIEBACiAJCTkzRDQzN0EwMUQ1N0IxOUEwMEFCODVFQSAv
KiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1NkM5QTgxQzg5MzEyODAwQzQ1NkRGIC8qIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTIxRDU3QjNGRTAwQUI4NUVBIC8qIFVSTERlY29tcG9zaXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkI5
RENBMTg5REUxMDAwMEJCODQyQyAvKiBVUkxEZWNvbXBvc2l0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTMxRDU3QjdFMjAwQUI4
NUVBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDcyNkZFNzE2RDlGMjA0MDAzQTRFNkQgLyogSlNNZWRpYUxpc3RD
dXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5M0Q1REQxNzI3RDkyOEI4MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQxNTI3
RDkyOEI2MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENUREMUIyN0Q5RUFDNjAw
MTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREMTgyN0Q5RUFDNTAwMTA3
Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDFEMjdEOUVBQzYwMDEw
N0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREMUEyN0Q5RUFDNjAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENUREMjUyN0RBNTZENjAwMTA3Qzc1IC8qIFNR
TGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREMjMyN0RBNTZENTAwMTA3Qzc1IC8qIFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDJCMjdEQTU3MEYwMDEwN0M3NSAvKiBTUUxp
dGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Q1REQyNzI3REE1NzBDMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTkzRDVERDJEMjdEQTU3MEYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENURE
MjkyN0RBNTcwRDAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3NzAyNTRCOThB
MDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZGMjU0QjkwMkQwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3NzEyNTRCQUI0NTAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2RDI1NEI4RTFCMDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5M0Q2QjdBODI1NTFENDFGMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlv
blByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3Zp
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTEyOTExLDYgKzEyOTE3LDE2IEBACiAJCTkzRDA1MDMxMjUzQTE0OEMwMDJBMzA3MiAvKiBBYnN0
cmFjdFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UmFuZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhj
ZXB0aW9uT3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uT3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3
IC8qIEV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMTQyN0Q5MjhCNDAwMTA3
Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQxNTI3RDkyOEI2MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1
REQxODI3RDlFQUM1MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZp
dHlUcmFja2VySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQxOTI3
RDlFQUM1MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQxQTI3RDlFQUM2
MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMjMyN0RBNTZENTAwMTA3Qzc1IC8qIFNR
TGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMjYyN0RBNTcwQjAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTNENUREMjcyN0RBNTcwQzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFuc2Fj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQyODI3REE1NzBDMDAx
MDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMjkyN0RBNTcwRDAwMTA3Qzc1IC8qIFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNR
TGl0ZURhdGFiYXNlU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RDZCNzZEMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0Q2Qjc2RTI1NEI4RTFCMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25V
cGRhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc2RjI1NEI5MDJEMDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
OTU5Miw5ICsxOTYwOCwxOSBAQAogCQkJCTFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxp
dGVBdXRob3JpemVyLmNwcCAqLywKIAkJCQkxQTIyNDY0MzBDQzk4RERCMDBDMDUyNDAgLyogU1FM
aXRlRGF0YWJhc2UuY3BwICovLAogCQkJCTFBMjI0NjQ0MENDOThEREIwMEMwNTI0MCAvKiBTUUxp
dGVEYXRhYmFzZS5oICovLAorCQkJCTkzRDVERDE5MjdEOUVBQzUwMDEwN0M3NSAvKiBTUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHAgKi8sCisJCQkJOTNENUREMUEyN0Q5RUFDNjAwMTA3
Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggKi8sCisJCQkJOTNENUREMTgy
N0Q5RUFDNTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICov
LAorCQkJCTkzRDVERDE0MjdEOTI4QjQwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwICovLAorCQkJCTkzRDVERDE1MjdEOTI4QjYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb24uaCAqLywKKwkJCQk5M0Q1REQyNjI3REE1NzBCMDAxMDdDNzUgLyogU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnQuY3BwICovLAorCQkJCTkzRDVERDI5MjdEQTU3MEQwMDEwN0M3NSAv
KiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oICovLAorCQkJCTkzRDVERDIzMjdEQTU2RDUwMDEw
N0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaCAqLywKIAkJCQk3RTQ3
NEUxRDEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJ
CQk3RTQ3NEUxQzEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi8s
CiAJCQkJN0U0NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC5oICovLAorCQkJCTkzRDVERDI4MjdEQTU3MEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFz
ZVRyYW5zYWN0aW9uLmNwcCAqLywKKwkJCQk5M0Q1REQyNzI3REE1NzBDMDAxMDdDNzUgLyogU1FM
aXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oICovLAogCQkJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4
OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2
ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovLAogCQkJCTFBMjI0NjQ1MENDOThEREIwMEMwNTI0
MCAvKiBTUUxpdGVTdGF0ZW1lbnQuY3BwICovLApAQCAtMzc0MzUsOCArMzc0NjEsMTQgQEAKIAkJ
CQk5N0JDNkEzQjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMQ2FsbGJhY2tXcmFwcGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0JDNkEzQzE1MDVGMDgxMDAxQjc0QUMgLyogU1FMRXJyb3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMjI0NjRBMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFz
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENUREMUQyN0Q5RUFDNjAwMTA3Qzc1IC8qIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQxQjI3
RDlFQUM2MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0Q1REQxNzI3RDkyOEI4MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQyRDI3REE1NzBGMDAxMDdD
NzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDVE
RDI1MjdEQTU2RDYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdFNDc0RTFGMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVE
YXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNDc0RTFFMTI0OTREQzkwMDIz
NTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTkzRDVERDJCMjdEQTU3MEYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCNUE2ODQyMjBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmls
ZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8q
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRUMxMzAxQzUw
QUJGNTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0
aXZpdHlUcmFja2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjVlMDEyNGZkMTMxMzI5N2I3OWQwMDg4MGNj
MzFmMmQ4YjhlY2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcApAQCAtMCwwICsxLDEyMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlci5oIgorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXJJbXBsLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlciYgU1FMaXRlRGF0YWJhc2VBY3Rp
dml0eVRyYWNrZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcj4gdHJhY2tlcjsKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFsmXSB7
CisgICAgICAgIHRyYWNrZXIuY29uc3RydWN0KCk7CisgICAgfSk7CisgICAgcmV0dXJuIHRyYWNr
ZXIuZ2V0KCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNldElt
cGwoY29uc3QgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsR2VuZXJhdG9yJiBnZW5l
cmF0b3IpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgbV9pbXBsID0g
Z2VuZXJhdG9yKCkucHRyKCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXI6OmJlZ2luQWN0aXZpdHkoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQor
eworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9pbXBsKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9hY3RpdmVDb25uZWN0aW9ucy5jb250YWlucyhj
b25uZWN0aW9uKSk7CisgICAgbV9sYXN0QWN0aXZpdHlUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93
KCk7CisgICAgaWYgKG1fYWN0aXZlQ29ubmVjdGlvbnMuY29tcHV0ZXNFbXB0eSgpKQorICAgICAg
ICBtX2ltcGwtPndpbGxCZWdpbkZpcnN0QWN0aXZpdHkoKTsKKworICAgIG1fYWN0aXZlQ29ubmVj
dGlvbnMuYWRkKGNvbm5lY3Rpb24pOworICAgIGNvbm5lY3Rpb24uc2V0SXNBY3RpdmUodHJ1ZSk7
Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmVuZEFjdGl2aXR5KFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1fYWN0aXZlQ29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24pKQorICAgICAgICBjb25u
ZWN0aW9uLnNldElzQWN0aXZlKGZhbHNlKTsKKworICAgIGlmICghbV9hY3RpdmVDb25uZWN0aW9u
cy5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdEFjdGl2aXR5
VGltZXN0YW1wID0gV2FsbFRpbWU6Om5vdygpOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aEFmdGVyKDFfcywgW3RpbWVzdGFtcCA9IG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wXSB7CisgICAg
ICAgIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5jaGVja0xhc3RB
Y3Rpdml0eVRpbWVzdGFtcCh0aW1lc3RhbXApOworICAgIH0pOworfQorCit2b2lkIFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyOjpjaGVja0xhc3RBY3Rpdml0eVRpbWVzdGFtcChXYWxsVGlt
ZSB0aW1lc3RhbXApCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYg
KCFtX2ltcGwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2xhc3RBY3Rpdml0eVRpbWVz
dGFtcCA9PSB0aW1lc3RhbXApCisgICAgICAgIG1faW1wbC0+ZGlkRW5kTGFzdEFjdGl2aXR5KCk7
Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmludmFsaWRhdGVBbGxB
Y3Rpdml0aWVzKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAo
bV9pbXBsKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBt
X2FjdGl2ZUNvbm5lY3Rpb25zKQorICAgICAgICBjb25uZWN0aW9uLmludmFsaWRhdGVBY3Rpdml0
eSgpOworCisgICAgbV9hY3RpdmVDb25uZWN0aW9ucy5jbGVhcigpOworfQorCit2b2lkIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIHZh
bHVlKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9pbXBs
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ltcGwtPnNldElzSG9sZGluZ0xvY2tlZEZpbGVz
KHZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44M2Q1M2M0YWE1OWQ3NTk4MzliMTk1OTg2YzA1MDE4NjljNDA5NWYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlQWN0aXZpdHlUcmFja2VyLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSA8d3RmL1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBs
OworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlciB7CitwdWJsaWM6CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyJiBzaW5n
bGV0b24oKTsKKyAgICB2b2lkIGJlZ2luQWN0aXZpdHkoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
Jik7CisgICAgdm9pZCBlbmRBY3Rpdml0eShTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mKTsKKyAg
ICB1c2luZyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGxHZW5lcmF0b3IgPSBGdW5j
dGlvbjxSZWY8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsPigpPjsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEltcGwoY29uc3QgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXJJbXBsR2VuZXJhdG9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlQWxs
QWN0aXZpdGllcygpOworICAgIHZvaWQgY2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAoV2FsbFRp
bWUpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhi
b29sIHZhbHVlKTsKK3ByaXZhdGU6CisgICAgTG9jayBtX2xvY2s7CisgICAgV2FsbFRpbWUgbV9s
YXN0QWN0aXZpdHlUaW1lc3RhbXA7CisgICAgV2Vha0hhc2hTZXQ8U1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uPiBtX2FjdGl2ZUNvbm5lY3Rpb25zOworICAgIFJlZlB0cjxTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlckltcGw+IG1faW1wbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzdjNDQxYmU3NTJlM2M5
MGFhNmU3NzhmYjc5NDk3ZTNiNDlkMmQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJh
c2VBY3Rpdml0eVRyYWNrZXJJbXBsIDogcHVibGljIFJlZkNvdW50ZWQ8U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXJJbXBsPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1FMaXRlRGF0YWJh
c2VBY3Rpdml0eVRyYWNrZXJJbXBsKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZp
cnN0QWN0aXZpdHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEVuZExhc3RBY3Rpdml0eSgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCB2YWx1
ZSkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNDcyZWUyZjg3ZjU5ZWIwNTVmZDlkYmY4ZTE4NjZhZjJiNWFjMjY1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCIK
KyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZURh
dGFiYXNlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB1aW50NjRfdCBuZXh0U3RhdGVtZW50SWRlbnRpZmll
cigpCit7CisgICAgc3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50U3RhdGVtZW50
SWRlbnRpZmllcjsKKyAgICByZXR1cm4gKytjdXJyZW50U3RhdGVtZW50SWRlbnRpZmllcjsKK30K
Kworc3RhdGljIHVpbnQ2NF90IG5leHRUcmFuc2FjdGlvbklkZW50aWZpZXIoKQoreworICAgIHN0
YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudFRyYW5zYWN0aW9uSWRlbnRpZmllcjsK
KyAgICByZXR1cm4gKytjdXJyZW50VHJhbnNhY3Rpb25JZGVudGlmaWVyOworfQorCitzdGF0aWMg
dm9pZCBpbml0aWFsaXplU1FMaXRlKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShmbGFnLCBbXSB7CisgICAgICAgIGlmIChpbnQgcmVzdWx0
ID0gc3FsaXRlM19pbml0aWFsaXplKCk7IHJlc3VsdCAhPSBTUUxJVEVfT0spCisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgc3FsaXRl
OiAlcyIsIHNxbGl0ZTNfZXJyc3RyKHJlc3VsdCkpOworICAgIH0pOworfQorCitSZWY8U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uPiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZShjb25z
dCBTdHJpbmcmIHBhdGgsIGJvb2wgc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbihwYXRoLCBz
aG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpKTsKK30KKworU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29s
IHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkKKyAgICA6IG1fcGF0aChwYXRoKQorICAg
ICwgbV9zaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2Uoc2hvdWxkQ29tbWl0VHJhbnNhY3Rp
b25BdENsb3NlKQoreworICAgIGluaXRpYWxpemVTUUxpdGUoKTsKKyAgICBiZWdpbkFjdGl2aXR5
KCk7CisKKyAgICBpZiAoIW9wZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFlbmFi
bGVFeHRlbmRlZFJlc3VsdENvZGUoKSB8fCAhZW5hYmxlSW5NZW1vcnlUZW1wU3RvcmUoKSkgewor
ICAgICAgICBjbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGVuYWJs
ZVdBTEpvdXJuYWxNb2RlKCkpCisgICAgICAgIGV4ZWN1dGVXQUxDaGVja3BvaW50KENoZWNrcG9p
bnRNb2RlOjpUcnVuY2F0ZSk7Cit9CisKK1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6flNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbigpCit7CisgICAgY2xvc2UoKTsKKyAgICBlbmRBY3Rpdml0eSgp
OworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6b3BlbigpCit7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX2lzQWN0aXZlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIGluLW1lbW9yeSBk
YXRhYmFzZS4KKyAgICBpZiAobV9wYXRoID09IGluTWVtb3J5UGF0aCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpbnQgb3BlbkZsYWdzID0gU1FMSVRFX09QRU5fQVVUT1BST1hZIHwg
U1FMSVRFX09QRU5fUkVBRFdSSVRFIHwgU1FMSVRFX09QRU5fQ1JFQVRFOworICAgIGludCByZXN1
bHQgPSBzcWxpdGUzX29wZW5fdjIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KG1fcGF0aCkuZGF0YSgpLCAmbV9zcWxpdGVDb25uZWN0aW9uLCBvcGVuRmxhZ3MsIG51bGxwdHIp
OworICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX09LIHx8ICFtX3NxbGl0ZUNvbm5lY3Rpb24pIHsK
KyAgICAgICAgbV9zcWxpdGVDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKwor
ICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzcWxp
dGUzX2ludGVycnVwdChtX3NxbGl0ZUNvbm5lY3Rpb24pOworCisgICAgaWYgKCFzcWxpdGUzX2dl
dF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVjdGlvbikpIHsKKyAgICAgICAgQVNDSUlMaXRlcmFs
IHF1ZXJ5ID0gIlJPTExCQUNLIl9zOworICAgICAgICBpZiAobV9zaG91bGRDb21taXRUcmFuc2Fj
dGlvbkF0Q2xvc2UpCisgICAgICAgICAgICBxdWVyeSA9ICJDT01NSVQiX3M7CisgICAgICAgIHNx
bGl0ZTNfc3RtdCogc3RhdGVtZW50IHsgbnVsbHB0ciB9OworICAgICAgICBpbnQgcmVzdWx0ID0g
c3FsaXRlM19wcmVwYXJlX3YyKG1fc3FsaXRlQ29ubmVjdGlvbiwgcXVlcnkuY2hhcmFjdGVycygp
LCBxdWVyeS5sZW5ndGgoKSArIDEsICZzdGF0ZW1lbnQsIG51bGxwdHIpOworICAgICAgICBpZiAo
cmVzdWx0ID09IFNRTElURV9PSykKKyAgICAgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfc3RlcChz
dGF0ZW1lbnQpOworICAgICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQorICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmNsb3NlIGZhaWxlZCB0byByb2xsIGJhY2sgdHJhbnNhY3Rpb24gKCVkKSAtICglcykiLCBy
ZXN1bHQsIHNxbGl0ZTNfZXJybXNnKG1fc3FsaXRlQ29ubmVjdGlvbikpOworICAgICAgICBzcWxp
dGUzX3Jlc2V0KHN0YXRlbWVudCk7CisgICAgICAgIHNxbGl0ZTNfZmluYWxpemUoc3RhdGVtZW50
KTsKKyAgICAgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpudWxsb3B0
OworICAgIH0KKworICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogbV9zdGF0ZW1lbnRzLnZhbHVl
cygpKSB7CisgICAgICAgIHNxbGl0ZTNfcmVzZXQoc3RhdGVtZW50LnNxbGl0ZVN0YXRlbWVudCk7
CisgICAgICAgIHNxbGl0ZTNfZmluYWxpemUoc3RhdGVtZW50LnNxbGl0ZVN0YXRlbWVudCk7Cisg
ICAgfQorCisgICAgbV9zdGF0ZW1lbnRzLmNsZWFyKCk7CisKKyAgICBpbnQgcmVzdWx0ID0gc3Fs
aXRlM19jbG9zZShtX3NxbGl0ZUNvbm5lY3Rpb24pOworICAgIGlmIChyZXN1bHQgIT0gU1FMSVRF
X09LKQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6Y2xvc2VDb25uZWN0aW9uOiBmYWlsZWQgdG8gY2xvc2UgZGF0YWJhc2Ug
KCVkKSAtICVzIiwgcmVzdWx0LCBzcWxpdGUzX2Vycm1zZyhtX3NxbGl0ZUNvbm5lY3Rpb24pKTsK
KworICAgIG1fc3FsaXRlQ29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgbV9pc0FjdGl2ZSA9IGZh
bHNlOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmVnaW5BY3Rpdml0eSgp
Cit7CisgICAgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNpbmdsZXRvbigpLmJlZ2lu
QWN0aXZpdHkoKnRoaXMpOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5k
QWN0aXZpdHkoKQoreworICAgIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0
b24oKS5lbmRBY3Rpdml0eSgqdGhpcyk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjppbnZhbGlkYXRlQWN0aXZpdHkoKQoreworICAgIGNsb3NlKCk7Cit9CisKK3ZvaWQgU1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRJc0FjdGl2ZShib29sIHZhbHVlKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIG1faXNBY3RpdmUgPSB2YWx1ZTsKK30KKwor
Ym9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmlzT3BlbigpCit7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbG9jayB9OworCisgICAgcmV0dXJuICEhbV9zcWxpdGVDb25uZWN0aW9uOworfQor
Citib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5hYmxlRXh0ZW5kZWRSZXN1bHRDb2Rl
KCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgcmV0dXJuICEhbV9zcWxp
dGVDb25uZWN0aW9uICYmIHNxbGl0ZTNfZXh0ZW5kZWRfcmVzdWx0X2NvZGVzKG1fc3FsaXRlQ29u
bmVjdGlvbiwgMSkgPT0gU1FMSVRFX09LOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6ZW5hYmxlSW5NZW1vcnlUZW1wU3RvcmUoKQoreworICAgIHJldHVybiBleGVjdXRlKCJQ
UkFHTUEgdGVtcF9zdG9yZSA9IE1FTU9SWSIpOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6ZW5hYmxlV0FMSm91cm5hbE1vZGUoKQoreworICAgIGF1dG8gb3B0aW9uYWxJZGVu
dGlmaWVyID0gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgeyAi
UFJBR01BIGpvdXJuYWxfbW9kZT1XQUwiX3MgfSk7CisgICAgaWYgKCFvcHRpb25hbElkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRp
b25hbElkZW50aWZpZXI7CisgICAgYm9vbCBlbmFibGVkID0gZmFsc2U7CisgICAgaWYgKHN0ZXBT
dGF0ZW1lbnQoaWRlbnRpZmllcikgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgZW5hYmxlZCA9IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbHVtblRleHQoaWRlbnRpZmllciwgMCksICJ3
YWwiKTsKKyAgICBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisKKyAgICBp
ZiAoZW5hYmxlZCkgeworICAgICAgICBhdXRvIHNobVBhdGggPSBtYWtlU3RyaW5nKG1fcGF0aCwg
Ii1zaG0iX3MpOworICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzaG1QYXRoKSAm
JiAhRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoc2htUGF0aCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIGVuYWJsZWQ7Cit9
CisKK3N0YXRpYyBpbnQgY2hlY2twb2ludE1vZGVWYWx1ZShTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OkNoZWNrcG9pbnRNb2RlIG1vZGUpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2Fz
ZSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OkNoZWNrcG9pbnRNb2RlOjpGdWxsOgorICAgICAg
ICByZXR1cm4gU1FMSVRFX0NIRUNLUE9JTlRfRlVMTDsKKyAgICBjYXNlIFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6Q2hlY2twb2ludE1vZGU6OlRydW5jYXRlOgorICAgICAgICByZXR1cm4gU1FM
SVRFX0NIRUNLUE9JTlRfVFJVTkNBVEU7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlV0FM
Q2hlY2twb2ludChDaGVja3BvaW50TW9kZSBtb2RlKQoreworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHNxbGl0ZTNfd2FsX2NoZWNrcG9pbnRfdjIobV9zcWxpdGVDb25u
ZWN0aW9uLCBudWxscHRyLCBjaGVja3BvaW50TW9kZVZhbHVlKG1vZGUpLCBudWxscHRyLCBudWxs
cHRyKSA9PSBTUUxJVEVfT0s7Cit9CisKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmlu
Z1ZpZXcgcXVlcnkpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICgh
bV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
c3FsaXRlM19zdG10KiBzcWxpdGVTdGF0ZW1lbnQgeyBudWxscHRyIH07CisgICAgY29uc3QgY2hh
ciogdGFpbCA9IG51bGxwdHI7CisgICAgaW50IHJlc3VsdDsKKyAgICBpZiAocXVlcnkuaXM4Qml0
KCkgJiYgcXVlcnkuaXNBbGxBU0NJSSgpKQorICAgICAgICByZXN1bHQgPSBzcWxpdGUzX3ByZXBh
cmVfdjIobV9zcWxpdGVDb25uZWN0aW9uLCBxdWVyeS5sZW5ndGgoKSA/IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KHF1ZXJ5LmNoYXJhY3RlcnM4KCkpIDogIiIsIHF1ZXJ5Lmxlbmd0aCgp
ICsgMSwgJnNxbGl0ZVN0YXRlbWVudCwgJnRhaWwpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0
ID0gc3FsaXRlM19wcmVwYXJlX3YyKG1fc3FsaXRlQ29ubmVjdGlvbiwgcXVlcnkudXRmOCgpLmRh
dGEoKSwgcXVlcnkudXRmOCgpLmxlbmd0aCgpICsgMSwgJnNxbGl0ZVN0YXRlbWVudCwgJnRhaWwp
OworICAgIGlmICh0YWlsICYmICp0YWlsKQorICAgICAgICByZXN1bHQgPSBTUUxJVEVfRVJST1I7
CisKKyAgICBpZiAocmVzdWx0ICE9IFNRTElURV9PSykgeworICAgICAgICBzcWxpdGUzX2ZpbmFs
aXplKHNxbGl0ZVN0YXRlbWVudCk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
fQorCisgICAgYXV0byBpZGVudGlmaWVyID0gbmV4dFN0YXRlbWVudElkZW50aWZpZXIoKTsKKyAg
ICBtX3N0YXRlbWVudHMuYWRkKGlkZW50aWZpZXIsIEludGVybmFsU3RhdGVtZW50IHsgaWRlbnRp
Zmllciwgc3FsaXRlU3RhdGVtZW50LCBzdGQ6Om51bGxvcHQgfSk7CisKKyAgICByZXR1cm4gaWRl
bnRpZmllcjsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lJbnRl
cm5hbFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGF1dG8gaXRlciA9IG1fc3RhdGVtZW50cy5maW5kKGlkZW50aWZpZXIpOyBp
dGVyICE9IG1fc3RhdGVtZW50cy5lbmQoKSkgeworICAgICAgICBzcWxpdGUzX2ZpbmFsaXplKGl0
ZXItPnZhbHVlLnNxbGl0ZVN0YXRlbWVudCk7CisgICAgICAgIG1fc3RhdGVtZW50cy5yZW1vdmUo
aXRlcik7CisgICAgfQorfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpsYXN0Q2hh
bmdlcygpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxp
dGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBzcWxpdGUzX2No
YW5nZXMobV9zcWxpdGVDb25uZWN0aW9uKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6bGFzdEVycm9yKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAg
aWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisK
KyAgICByZXR1cm4gc3FsaXRlM19lcnJjb2RlKG1fc3FsaXRlQ29ubmVjdGlvbik7Cit9CisKK2Nv
bnN0IGNoYXIqIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6bGFzdEVycm9yTWVzc2FnZSgpCit7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxpdGVDb25uZWN0
aW9uKQorICAgICAgICByZXR1cm4gIkRhdGFiYXNlIGNvbm5lY3Rpb24gaXMgbm90IG9wZW4iOwor
CisgICAgcmV0dXJuIHNxbGl0ZTNfZXJybXNnKG1fc3FsaXRlQ29ubmVjdGlvbik7Cit9CisKK1N0
cmluZyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnRhYmxlQ3JlYXRpb25RdWVyeShjb25zdCBT
dHJpbmcmIHRhYmxlTmFtZSkKK3sKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNyZWF0
ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgIlNFTEVDVCBzcWwgRlJP
TSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAndGFibGUnIEFORCBuYW1lID0gPzsiX3MgfSk7
CisgICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9uYWxJZGVudGlmaWVyOworICAgIFN0cmluZyByZXN1
bHQ7CisgICAgaWYgKGJpbmRUZXh0KGlkZW50aWZpZXIsIDEsIHRhYmxlTmFtZSkgPT0gU1FMSVRF
X09LICYmIHN0ZXBTdGF0ZW1lbnQoaWRlbnRpZmllcikgPT0gU1FMSVRFX1JPVykKKyAgICAgICAg
cmVzdWx0ID0gY29sdW1uVGV4dChpZGVudGlmaWVyLCAwKTsKKyAgICBkZXN0cm95SW50ZXJuYWxT
dGF0ZW1lbnQoaWRlbnRpZmllcik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZShBU0NJSUxpdGVyYWwgcXVlcnkpCit7Cisg
ICAgcmV0dXJuIGV4ZWN1dGUoU3RyaW5nVmlldyB7IHF1ZXJ5IH0pOworfQorCitib29sIFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZShTdHJpbmdWaWV3IHF1ZXJ5KQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19leGVjKG1f
c3FsaXRlQ29ubmVjdGlvbiwgcXVlcnkudXRmOCgpLmRhdGEoKSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0cik7CisgICAgcmV0dXJuIHJlc3VsdCA9PSBTUUxJVEVfT0sgfHwgcmVzdWx0ID09IFNR
TElURV9ET05FOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c2V0TWF4aW11
bVNpemUoaW50NjRfdCBzaXplKQoreworICAgIGludCBjdXJyZW50UGFnZVNpemUgPSBwYWdlU2l6
ZSgpOworICAgIGlmICghY3VycmVudFBhZ2VTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bnQ2NF90IG5ld01heFBhZ2VDb3VudCA9IGN1cnJlbnRQYWdlU2l6ZSA/IHNpemUgLyBjdXJyZW50
UGFnZVNpemUgOiAwOworICAgIGF1dG8gcXVlcnkgPSBtYWtlU3RyaW5nKCJQUkFHTUEgbWF4X3Bh
Z2VfY291bnQgPSAiLCBuZXdNYXhQYWdlQ291bnQpOworICAgIGF1dG8gb3B0aW9uYWxJZGVudGlm
aWVyID0gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgeyAiUFJB
R01BIHBhZ2Vfc2l6ZSJfcyB9KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBpZGVudGlmaWVyID0gKm9wdGlvbmFsSWRlbnRpZmllcjsK
KyAgICBpZiAoc3RlcFN0YXRlbWVudChpZGVudGlmaWVyKSAhPSBTUUxJVEVfUk9XKQorICAgICAg
ICBMT0dfRVJST1IoIlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c2V0TWF4aW11bVNpemUgZmFp
bGVkIHRvIHNldCBtYXhpbXVtIHNpemUgb2YgZGF0YWJhc2UgdG8gJWxsaSBieXRlcyIsIHN0YXRp
Y19jYXN0PGxvbmcgbG9uZz4oc2l6ZSkpOworCisgICAgZGVzdHJveUludGVybmFsU3RhdGVtZW50
KGlkZW50aWZpZXIpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpwYWdlU2l6
ZSgpCit7CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRl
bWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyB7ICJQUkFHTUEgcGFnZV9zaXplIl9zIH0pOworICAg
IGlmICghb3B0aW9uYWxJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGF1dG8g
aWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7CisgICAgaW50IHNpemUgPSBjb2x1bW5J
bnQoaWRlbnRpZmllciwgMCk7CisgICAgZGVzdHJveUludGVybmFsU3RhdGVtZW50KGlkZW50aWZp
ZXIpOworCisgICAgcmV0dXJuIHNpemU7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjpyZWxlYXNlTWVtb3J5KCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisK
KyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc3Fs
aXRlM19kYl9yZWxlYXNlX21lbW9yeShtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitzdGQ6OnVu
aXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShBU0NJSUxpdGVyYWwgcXVlcnkpCit7CisgICAg
cmV0dXJuIGNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyB7IHF1ZXJ5IH0pOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IFNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHF1ZXJ5
KQoreworICAgIGF1dG8gb3B0aW9uYWxJZGVudGlmaWVyID0gY3JlYXRlSW50ZXJuYWxTdGF0ZW1l
bnRBbmRQcmVwYXJlKHF1ZXJ5KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50PihuZXcgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQoKnRoaXMsICpvcHRp
b25hbElkZW50aWZpZXIpKTsKK30KKworc3FsaXRlM19zdG10KiBTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmZpbmRTUUxpdGVTdGF0ZW1lbnQodWludDY0X3QgaWRlbnRpZmllcikgY29uc3QgV1RG
X0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUworeworICAgIEFTU0VSVChtX2xvY2suaXNI
ZWxkKCkpOworCisgICAgYXV0byBpdGVyID0gbV9zdGF0ZW1lbnRzLmZpbmQoaWRlbnRpZmllcik7
CisgICAgaWYgKGl0ZXIgPT0gbV9zdGF0ZW1lbnRzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiBpdGVyLT52YWx1ZS5zcWxpdGVTdGF0ZW1lbnQ7Cit9CisKK2lu
dCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJpbmRCbG9iKHVpbnQ2NF90IGlkZW50aWZpZXIs
IGludCBpbmRleCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9iKQoreworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRl
bWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0
dXJuIFNRTElURV9FUlJPUjsKKworICAgIHJldHVybiBzcWxpdGUzX2JpbmRfYmxvYihzcWxpdGVT
dGF0ZW1lbnQsIGluZGV4LCBibG9iLmRhdGEoKSwgYmxvYi5zaXplKCksIFNRTElURV9UUkFOU0lF
TlQpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiaW5kQmxvYih1aW50NjRf
dCBpZGVudGlmaWVyLCBpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBhdXRv
IHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcodGV4dCkudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCk7CisgICAgVUNoYXIgYW55Q2hhcmFjdGVyID0gMDsKKyAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVyczsKKyAgICBpZiAodGV4dC5pc0VtcHR5KCkgJiYgIXRleHQuaXNOdWxsKCkpCisg
ICAgICAgIGNoYXJhY3RlcnMgPSAmYW55Q2hhcmFjdGVyOworICAgIGVsc2UKKyAgICAgICAgY2hh
cmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKworICAgIHJldHVybiBiaW5kQmxvYihp
ZGVudGlmaWVyLCBpbmRleCwgU3BhbiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGNoYXJhY3RlcnMpLCB0ZXh0Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSB9KTsKK30KKworaW50
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmluZFRleHQodWludDY0X3QgaWRlbnRpZmllciwg
aW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudChp
ZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIFNR
TElURV9FUlJPUjsKKworICAgIGludCByZXN1bHQ7CisgICAgaWYgKHRleHQuaXM4Qml0KCkgJiYg
dGV4dC5pc0FsbEFTQ0lJKCkpCisgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfYmluZF90ZXh0KHNx
bGl0ZVN0YXRlbWVudCwgaW5kZXgsIHRleHQubGVuZ3RoKCkgPyByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPih0ZXh0LmNoYXJhY3RlcnM4KCkpIDogIiIsIHRleHQubGVuZ3RoKCksIFNRTElU
RV9UUkFOU0lFTlQpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gc3FsaXRlM19iaW5kX3Rl
eHQoc3FsaXRlU3RhdGVtZW50LCBpbmRleCwgdGV4dC51dGY4KCkuZGF0YSgpLCB0ZXh0LnV0Zjgo
KS5sZW5ndGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitTdHJpbmcgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5CbG9iQXNTdHJpbmcodWlu
dDY0X3QgaWRlbnRpZmllciwgaW50IGNvbCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5kU1FMaXRlU3RhdGVtZW50KGlk
ZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3RhdGVtZW50KQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgY29uc3Qgdm9pZCogYmxvYiA9IHNxbGl0ZTNfY29sdW1uX2Jsb2Ioc3FsaXRlU3Rh
dGVtZW50LCBjb2wpOworICAgIGlmICghYmxvYikKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGludCBzaXplID0gc3FsaXRlM19jb2x1bW5fYnl0ZXMoc3FsaXRlU3RhdGVtZW50LCBjb2wpOwor
ICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBTdHJp
bmcoc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihibG9iKSwgc2l6ZSAvIHNpemVvZihVQ2hhcikp
OworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5JbnQodWludDY0X3Qg
aWRlbnRpZmllciwgaW50IGNvbCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisK
KyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5kU1FMaXRlU3RhdGVtZW50KGlkZW50aWZp
ZXIpOworICAgIGlmICghc3FsaXRlU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHJldHVybiBzcWxpdGUzX2NvbHVtbl9pbnQoc3FsaXRlU3RhdGVtZW50LCBjb2wpOworfQorCitT
dHJpbmcgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5UZXh0KHVpbnQ2NF90IGlkZW50
aWZpZXIsIGludCBjb2wpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAg
YXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsK
KyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHNxbGl0ZTNfY29sdW1uX3RleHQoc3FsaXRlU3RhdGVtZW50
LCBjb2wpLCBzcWxpdGUzX2NvbHVtbl9ieXRlcyhzcWxpdGVTdGF0ZW1lbnQsIGNvbCkpOworfQor
CitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpyZXNldFN0YXRlbWVudCh1aW50NjRfdCBp
ZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8q
IHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAg
aWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAg
ICBpbnQgcmVzdWx0ID0gc3FsaXRlM19yZXNldChzcWxpdGVTdGF0ZW1lbnQpOworICAgIHNxbGl0
ZTNfY2xlYXJfYmluZGluZ3Moc3FsaXRlU3RhdGVtZW50KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzdGVwU3RhdGVtZW50KHVpbnQ2NF90
IGlkZW50aWZpZXIpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0
byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAg
ICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsKKwor
ICAgIHJldHVybiBzcWxpdGUzX3N0ZXAoc3FsaXRlU3RhdGVtZW50KTsKK30KKwordm9pZCBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lTdGF0ZW1lbnQodWludDY0X3QgaWRlbnRpZmll
cikKK3sKKyAgICBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQoaWRlbnRpZmllcik7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uPiBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4oKQoreworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uIHx8IHNxbGl0ZTNf
Z2V0X2F1dG9jb21taXQobV9zcWxpdGVDb25uZWN0aW9uKSkgeworICAgICAgICBtX29uZ29pbmdU
cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIGlmIChzcWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAi
QkVHSU4iLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSAhPSBTUUxJVEVfRE9ORSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIg
PSBuZXh0VHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uPihuZXcgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bigqdGhpcywgKm1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllcikpOworfQorCit2b2lkIFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29tbWl0VHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IGlmICghbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyIHx8ICptX29uZ29pbmdUcmFuc2Fj
dGlvbklkZW50aWZpZXIgIT0gdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9zcWxpdGVDb25uZWN0aW9uICYmICFzcWxpdGUzX2dldF9hdXRvY29tbWl0
KG1fc3FsaXRlQ29ubmVjdGlvbikpCisgICAgICAgIHNxbGl0ZTNfZXhlYyhtX3NxbGl0ZUNvbm5l
Y3Rpb24sICJDT01NSVQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKworICAgIG1fb25n
b2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IGlmICghbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyIHx8ICptX29uZ29pbmdUcmFuc2Fj
dGlvbklkZW50aWZpZXIgIT0gdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9zcWxpdGVDb25uZWN0aW9uICYmICFzcWxpdGUzX2dldF9hdXRvY29tbWl0
KG1fc3FsaXRlQ29ubmVjdGlvbikpCisgICAgICAgIHNxbGl0ZTNfZXhlYyhtX3NxbGl0ZUNvbm5l
Y3Rpb24sICJST0xMQkFDSyIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworCisgICAgbV9v
bmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OworfQorCitib29sIFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24odWludDY0X3QgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKwor
ICAgIHJldHVybiBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgJiYgKm1fb25nb2luZ1Ry
YW5zYWN0aW9uSWRlbnRpZmllciA9PSB0cmFuc2FjdGlvbklkZW50aWZpZXI7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjYyZWFjNjQyNmU1OGE2
Njg1YmYxOGY2OGZkYmVmZjNlMjRlZDEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMTA1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxzcWxpdGUzLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudDsKK2NsYXNzIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb247CisKK2NsYXNzIFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb24+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbk1l
bW9yeVBhdGgoKSB7IHJldHVybiAiOm1lbW9yeToiOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGJvb2wgc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlID0gZmFsc2UpOworICAgIFdF
QkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24oKTsKKworICAgIFN0cmluZyBw
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c09wZW4oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgbGFzdENoYW5nZXMoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBpbnQgbGFzdEVycm9yKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hh
ciogbGFzdEVycm9yTWVzc2FnZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0YWJsZUNy
ZWF0aW9uUXVlcnkoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgZXhlY3V0ZShBU0NJSUxpdGVyYWwgcXVlcnkpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgZXhlY3V0ZShTdHJpbmdWaWV3IHF1ZXJ5KTsKKyAgICBlbnVtIGNsYXNzIENoZWNrcG9pbnRN
b2RlIDogdWludDhfdCB7IEZ1bGwsIFRydW5jYXRlIH07CisgICAgYm9vbCBleGVjdXRlV0FMQ2hl
Y2twb2ludChDaGVja3BvaW50TW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhp
bXVtU2l6ZShpbnQ2NF90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VNZW1vcnko
KTsKKyAgICB2b2lkIGludmFsaWRhdGVBY3Rpdml0eSgpOworICAgIHZvaWQgc2V0SXNBY3RpdmUo
Ym9vbCk7CisKKyAgICAvLyBTdGF0ZW1lbnQgb3BlcmF0aW9ucy4KKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IGNyZWF0ZVN0YXRlbWVu
dEFuZFByZXBhcmUoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IGNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmll
dyBxdWVyeSk7CisgICAgaW50IGJpbmRCbG9iKHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIs
IGludCBpbmRleCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9iKTsKKyAgICBpbnQgYmluZEJsb2Io
dWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllciwgaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHRl
eHQpOworICAgIGludCBiaW5kVGV4dCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQg
aW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCk7CisgICAgU3RyaW5nIGNvbHVtbkJsb2JBc1N0cmluZyh1
aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgY29sKTsKKyAgICBpbnQgY29sdW1uSW50
KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIsIGludCBjb2wpOworICAgIFN0cmluZyBjb2x1
bW5UZXh0KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIsIGludCBjb2wpOworICAgIGludCBy
ZXNldFN0YXRlbWVudCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyKTsKKyAgICBpbnQgc3Rl
cFN0YXRlbWVudCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGRlc3Ry
b3lTdGF0ZW1lbnQodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllcik7CisKKyAgICAvLyBUcmFu
c2FjdGlvbiBvcGVyYXRpb25zLgorICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxT
UUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbkFuZEJlZ2luKCk7Cisg
ICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbih1aW50NjRfdCB0cmFuc2FjdGlvbklkZW50aWZpZXIp
OworICAgIHZvaWQgcm9sbGJhY2tUcmFuc2FjdGlvbih1aW50NjRfdCB0cmFuc2FjdGlvbklkZW50
aWZpZXIpOworICAgIGJvb2wgaXNPbmdvaW5nVHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24o
Y29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSk7
CisgICAgYm9vbCBvcGVuKCk7CisgICAgdm9pZCBjbG9zZSgpOworICAgIHZvaWQgYmVnaW5BY3Rp
dml0eSgpOworICAgIHZvaWQgZW5kQWN0aXZpdHkoKTsKKyAgICBib29sIGVuYWJsZUV4dGVuZGVk
UmVzdWx0Q29kZSgpOworICAgIGJvb2wgZW5hYmxlSW5NZW1vcnlUZW1wU3RvcmUoKTsKKyAgICBi
b29sIGVuYWJsZVdBTEpvdXJuYWxNb2RlKCk7CisgICAgaW50IHBhZ2VTaXplKCk7CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0
cmluZ1ZpZXcgcXVlcnkpOworICAgIHZvaWQgZGVzdHJveUludGVybmFsU3RhdGVtZW50KHVpbnQ2
NF90IGlkZW50Zmllcik7CisgICAgc3FsaXRlM19zdG10KiBmaW5kU1FMaXRlU3RhdGVtZW50KHVp
bnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIpIGNvbnN0OworCisgICAgU3RyaW5nIG1fcGF0aDsK
KyAgICBib29sIG1fc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlOworICAgIExvY2sgbV9s
b2NrOworICAgIHN0cnVjdCBJbnRlcm5hbFN0YXRlbWVudCB7CisgICAgICAgIHVpbnQ2NF90IGlk
ZW50aWZpZXI7CisgICAgICAgIHNxbGl0ZTNfc3RtdCogc3FsaXRlU3RhdGVtZW50OworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB0cmFuc2FjdGlvbklkZW50aWZpZXI7CisgICAgfTsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBJbnRlcm5hbFN0YXRlbWVudD4gbV9zdGF0ZW1lbnRzIFdU
Rl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBzcWxpdGUzKiBtX3NxbGl0ZUNvbm5lY3Rp
b24gIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKSB7IG51bGxwdHIgfTsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2xvY2spOworICAgIGJvb2wgbV9pc0FjdGl2ZSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fbG9jaykgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRl
bWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM5OWRlNmMzODg5MWZiNzU3ODBlMTAxNzNhYmFlNTA2YWIy
YzE2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZVN0YXRlbWVudC5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIgor
CisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgaWRlbnRpZmll
cikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCit7Cit9CisKK1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojp+U1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQoKQoreworICAgIG1fY29ubmVjdGlvbi0+ZGVzdHJveVN0YXRlbWVudChtX2lk
ZW50aWZpZXIpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRCbG9iKGlu
dCBpbmRleCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9iKQoreworICAgIHJldHVybiBtX2Nvbm5l
Y3Rpb24tPmJpbmRCbG9iKG1faWRlbnRpZmllciwgaW5kZXgsIGJsb2IpOworfQorCitpbnQgU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
ZXh0KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmJpbmRCbG9iKG1faWRlbnRpZmllciwg
aW5kZXgsIHRleHQpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRUZXh0
KGludCBpbmRleCwgU3RyaW5nVmlldyB0ZXh0KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24t
PmJpbmRUZXh0KG1faWRlbnRpZmllciwgaW5kZXgsIHRleHQpOworfQorCitTdHJpbmcgU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKQoreworICAgIHJl
dHVybiBtX2Nvbm5lY3Rpb24tPmNvbHVtbkJsb2JBc1N0cmluZyhtX2lkZW50aWZpZXIsIGNvbCk7
Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6Y29sdW1uSW50KGludCBjb2wpCit7
CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+Y29sdW1uSW50KG1faWRlbnRpZmllciwgY29sKTsK
K30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5UZXh0KGludCBjb2wp
Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+Y29sdW1uVGV4dChtX2lkZW50aWZpZXIsIGNv
bCk7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6cmVzZXQoKQoreworICAgIHJl
dHVybiBtX2Nvbm5lY3Rpb24tPnJlc2V0U3RhdGVtZW50KG1faWRlbnRpZmllcik7Cit9CisKK2lu
dCBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6c3RlcCgpCit7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi0+c3RlcFN0YXRlbWVudChtX2lkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVN0YXRlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlN2U5MDkwZDJmNTI3OGIwNGNhMWM3OTkxOWM3
NDc4YzRmYmJmNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjsKKworY2xhc3MgU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCk7CitwdWJsaWM6CisgICAgV0VC
Q09SRV9FWFBPUlQgflNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgaW50IGJpbmRCbG9iKGludCBpbmRleCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9iKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZEJsb2IoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHRl
eHQpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1Zp
ZXcgdGV4dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvbHVtbkJsb2JBc1N0cmluZyhp
bnQgY29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY29sdW1uSW50KGludCBjb2wpOworICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb2x1bW5UZXh0KGludCBjb2wpOworICAgIFdFQkNPUkVf
RVhQT1JUIGludCByZXNldCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBzdGVwKCk7CisKK3By
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjsKKyAgICBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudChTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mLCB1aW50NjRf
dCBpZGVudGlmaWVyKTsKKworICAgIFJlZjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRlMjBk
OWYwNjQxZTM5YzIyMTdhYmM2YmM1ODAyMmEzMzkzNGZlZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2Nv
cGUuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OworCitjbGFzcyBTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudFJlc2V0U2NvcGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50UmVzZXRTY29wZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKFNR
TGl0ZURhdGFiYXNlU3RhdGVtZW50KiBzdGF0ZW1lbnQpCisgICAgICAgIDogbV9zdGF0ZW1lbnQo
c3RhdGVtZW50KQorICAgIHsKKyAgICB9CisKKyAgICB+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRS
ZXNldFNjb3BlKCkKKyAgICB7CisgICAgICAgIGlmIChtX3N0YXRlbWVudCkKKyAgICAgICAgICAg
IG1fc3RhdGVtZW50LT5yZXNldCgpOworICAgIH0KKworICAgIFNRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50UmVzZXRTY29wZShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUmJiBvdGhlcikK
KyAgICAgICAgOiBtX3N0YXRlbWVudChvdGhlci5tX3N0YXRlbWVudC5nZXQoKSkKKyAgICB7Cisg
ICAgICAgIG90aGVyLm1fc3RhdGVtZW50ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUmIG9wZXJhdG9yPShTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudFJlc2V0U2NvcGUmJiBvdGhlcikKKyAgICB7CisgICAgICAgIHN0ZDo6c3dhcChtX3N0YXRl
bWVudCwgb3RoZXIubV9zdGF0ZW1lbnQpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zdGF0ZW1l
bnQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0YXRlbWVudDsg
fQorICAgIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KiBnZXQoKSB7IHJldHVybiBtX3N0YXRlbWVu
dC5nZXQoKTsgfQorICAgIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KiBvcGVyYXRvci0+KCkgeyBy
ZXR1cm4gbV9zdGF0ZW1lbnQuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50PiBtX3N0YXRlbWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNjhhODcxZTk0ZjBjMzhjNzU4
YjVjZjU1N2JjYjA4MjZkYjJkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRh
YmFzZVRyYW5zYWN0aW9uLmgiCisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpT
UUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9u
KQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK1NRTGl0ZURhdGFiYXNl
VHJhbnNhY3Rpb246On5TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKCkKK3sKKyAgICBtX2Nvbm5l
Y3Rpb24tPnJvbGxiYWNrVHJhbnNhY3Rpb24obV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBTUUxp
dGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpjb21taXQoKQoreworICAgIG1fY29ubmVjdGlvbi0+Y29t
bWl0VHJhbnNhY3Rpb24obV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZVRy
YW5zYWN0aW9uOjpyb2xsYmFjaygpCit7CisgICAgbV9jb25uZWN0aW9uLT5yb2xsYmFja1RyYW5z
YWN0aW9uKG1faWRlbnRpZmllcik7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24oKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmlz
T25nb2luZ1RyYW5zYWN0aW9uKG1faWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxZWRkZDU3ODYxNDI4NTIyODhkYTZjZTk1
MzhkNGZmOTI0YTc0ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb247CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24g
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24pOwor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IH5TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b21taXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJvbGxiYWNrKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc09uZ29pbmdUcmFuc2FjdGlvbigpOworCitwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb247CisgICAgU1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mLCB1aW50NjRfdCBpZGVudGlmaWVy
KTsKKworICAgIFJlZjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAg
ICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggNmI5ZWYxMGJlZjkxODU3OWNmNGM4MTkzNDQxZTdmMjQwMDFmZDZlYi4uMTU1Mzk1NjlkYjVh
ZDgzMDQ2OWU2YjJkYjIyYTcyYTI3Yjk5OTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRl
ICJQcmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmUuaCIKICNpbmNsdWRlICJSZW1vdGVXb3JrZXJUeXBlLmgiCisjaW5jbHVkZSAiU1FMaXRlUHJv
Y2Vzc0Fzc2VydGlvbkhvbGRlci5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJTdG9y
YWdlTWFuYWdlclNldC5oIgpAQCAtNzksNiArODAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpAQCAtMTU5LDcgKzE2MSw3
IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAgICAgLCBtX25ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAs
IG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyKFt0aGlzXShib29sIGlzSG9sZGluZ0xvY2tlZEZp
bGVzKSB7IHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGlzSG9sZGluZ0xvY2tlZEZpbGVzKTsgfSkK
KyAgICAsIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyKFtdKGJvb2wgaXNIb2xkaW5nTG9ja2Vk
RmlsZXMpIHsgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldElz
SG9sZGluZ0xvY2tlZEZpbGVzKGlzSG9sZGluZ0xvY2tlZEZpbGVzKTsgfSkKICNlbmRpZgogICAg
ICwgbV9tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeShjcmVhdGVNZXNzYWdlUG9ydENoYW5uZWxS
ZWdpc3RyeSgqdGhpcykpCiB7CkBAIC0xNzcsNiArMTc5LDEyIEBAIE5ldHdvcmtQcm9jZXNzOjpO
ZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1lCiAgICAgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0Ny
ZWF0ZWQoKnRoaXMpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFNR
TGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRJbXBsKFtdIHsKKyAg
ICAgICAgcmV0dXJuIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmNyZWF0ZSgpOworICAg
IH0pOworI2VuZGlmCisKICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCkuYWRk
TGlzdGVuZXIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKGJvb2wgaXNPbkxpbmUpIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA0MmNlMDhiZjM1MGNm
Y2JhM2I1YTc1MjI5MzI2OWFlNzc4Yjk1MTdiLi43NmIzOThjNzk1MjMzOGEwNGRkNjIyMWU1MmJm
OWFmMDAwNjkwNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCkBAIC00NzEsMTAgKzQ3MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3Rl
clVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZWdp
c3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9v
bCk7Ci0jZW5kaWYKLQogICAgIC8vIENvbm5lY3Rpb25zIHRvIFdlYlByb2Nlc3Nlcy4KICAgICBI
YXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBSZWY8TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+PiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uczsKIApAQCAtNTA3LDcgKzUwMyw2
IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKLSAgICBSZWZQdHI8UHJv
Y2Vzc0Fzc2VydGlvbj4gbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbjsKICNlbmRpZgogICAg
IAogI2lmIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCA4MjdkZGY2ZWNmNGQ5MjkxZTBi
ZmY3NGZhNWViYjgxN2I3ZGNmZmQ3Li41YjdjMTg1NWM4YjZjYTI4NGE5YzM1MGFkZWViMTVlYTdm
NmQ0NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9O
ZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtOTUsMjEgKzk1LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxl
cjx2b2kKIAogI2VuZGlmIC8vICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxl
cykKLXsKLSAgICBpZiAoIWlzSG9sZGluZ0xvY2tlZEZpbGVzKSB7Ci0gICAgICAgIG1faG9sZGlu
Z0xvY2tlZEZpbGVBc3NlcnRpb24gPSBudWxscHRyOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gJiYgbV9ob2xkaW5nTG9ja2Vk
RmlsZUFzc2VydGlvbi0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBz
eW5jaHJvbm91c2x5IHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiB3aGVuIGJlZ2lubmluZyBhIFNR
TGl0ZSB0cmFuc2FjdGlvbiBzbyB0aGF0IHdlIGRvbid0IGdldCBzdXNwZW5kZWQKLSAgICAvLyB3
aGlsZSBob2xkaW5nIGEgbG9ja2VkIGZpbGUuIFdlIHdvdWxkIGdldCBraWxsZWQgaWYgc3VzcGVu
ZGVkIHdoaWxlIGhvbGRpbmcgbG9ja2VkIGZpbGVzLgotICAgIG1faG9sZGluZ0xvY2tlZEZpbGVB
c3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpjcmVhdGUoZ2V0Q3VycmVudFByb2Nlc3NJRCgp
LCAiTmV0d29yayBQcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZpbGVzIl9zLCBQcm9jZXNzQXNz
ZXJ0aW9uVHlwZTo6RmluaXNoVGFza0ludGVycnVwdGFibGUsIFByb2Nlc3NBc3NlcnRpb246Ok1v
ZGU6OlN5bmMpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcAppbmRleCAxMGVjMjA3Njg1MTQ1OGNl
ZjE2MTkwZWYxYjkxNjZkMmYwYTQ0ZTQxLi4xMjMyMDkwMWE5MjMzNDMzYzQyMDU5OWEzZjI1YTk3
ODFjZGQ0NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNs
dWRlICJTUUxpdGVTdG9yYWdlQXJlYS5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUZp
bGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3Jh
Z2VNYXAuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBT
UUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0eSgpCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hl
ZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpDb3VudEl0ZW1zKTsKICAgICBpZiAoIXN0YXRlbWVu
dCB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0eSBmYWlsZWQgb24g
ZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwg
bV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihT
dG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmlzRW1wdHkgZmFpbGVkIG9uIGV4ZWN1dGluZyBz
dGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAt
MTI4LDIxICsxMjgsMjEgQEAgYm9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5l
Y2Vzc2FyeSgpCiAgICAgaWYgKCFtX2RhdGFiYXNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBTdHJpbmcgc3RhdGVtZW50ID0gbV9kYXRhYmFzZS0+dGFibGVTUUwoIkl0ZW1UYWJsZSJf
cyk7CisgICAgU3RyaW5nIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRhYmxlQ3JlYXRpb25RdWVy
eSgiSXRlbVRhYmxlIl9zKTsKICAgICBpZiAoc3RhdGVtZW50ID09IGNyZWF0ZUl0ZW1UYWJsZVN0
YXRlbWVudCB8fCBzdGF0ZW1lbnQgPT0gY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50QWx0ZXJuYXRp
dmUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVGFibGUgZXhpc3RzIGJ1dCBzdGF0
ZW1lbnQgaXMgd3Jvbmc7IGRyb3AgaXQuCiAgICAgaWYgKCFzdGF0ZW1lbnQuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZS0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgSXRl
bVRhYmxlIl9zKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNR
TGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIGV4
aXN0aW5nIGl0ZW0gdGFibGUgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLT5leGVj
dXRlKCJEUk9QIFRBQkxFIEl0ZW1UYWJsZSJfcykpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2Fy
eSBmYWlsZWQgdG8gZHJvcCBleGlzdGluZyBpdGVtIHRhYmxlICglZCkgLSAlcyIsIG1fZGF0YWJh
c2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gVGFibGUgZG9l
cyBub3QgZXhpc3QuCi0gICAgaWYgKCFtX2RhdGFiYXNlLT5leGVjdXRlQ29tbWFuZChjcmVhdGVJ
dGVtVGFibGVTdGF0ZW1lbnQpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2Us
ICJTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3Jl
YXRlIGl0ZW0gdGFibGUgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0
YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICBpZiAoIW1fZGF0YWJhc2UtPmV4ZWN1dGUoY3Jl
YXRlSXRlbVRhYmxlU3RhdGVtZW50KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9y
YWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkgZmFpbGVkIHRv
IGNyZWF0ZSBpdGVtIHRhYmxlICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC0xNTgsMTcgKzE1OCwxMiBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjpwcmVw
YXJlRGF0YWJhc2UoU2hvdWxkQ3JlYXRlSWZOb3RFeGlzdHMgc2hvdWxkQ3JlYXRlSWZObwogICAg
IGlmIChzaG91bGRDcmVhdGVJZk5vdEV4aXN0cyA9PSBTaG91bGRDcmVhdGVJZk5vdEV4aXN0czo6
Tm8gJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wYXRoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBtX2RhdGFiYXNlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZT4oKTsKICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFy
ZW50UGF0aChtX3BhdGgpKTsKLSAgICBpZiAoIW1fZGF0YWJhc2UtPm9wZW4obV9wYXRoKSkgewor
ICAgIG1fZGF0YWJhc2UgPSBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0
ZShtX3BhdGgsIHRydWUpLnB0cigpOworICAgIGlmICghbV9kYXRhYmFzZS0+aXNPcGVuKCkpIHsK
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpw
cmVwYXJlRGF0YWJhc2UgZmFpbGVkIHRvIG9wZW4gZGF0YWJhc2UgYXQgJyVzJyIsIG1fcGF0aC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9kYXRhYmFzZSA9IG51bGxwdHI7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgICAgIAotICAgIC8vIFNpbmNlIGEgV29ya1F1ZXVlIGlz
bid0IGJvdW5kIHRvIGEgc3BlY2lmaWMgdGhyZWFkLCB3ZSBuZWVkIHRvIGRpc2FibGUgdGhyZWFk
aW5nIGNoZWNrLgotICAgIC8vIFdlIHdpbGwgbmV2ZXIgYWNjZXNzIHRoZSBkYXRhYmFzZSBmcm9t
IGRpZmZlcmVudCB0aHJlYWRzIHNpbXVsdGFuZW91c2x5LgotICAgIG1fZGF0YWJhc2UtPmRpc2Fi
bGVUaHJlYWRpbmdDaGVja3MoKTsKIAogICAgIGlmICghY3JlYXRlVGFibGVJZk5lY2Vzc2FyeSgp
KSB7CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOwpAQCAtMTg0LDExICsxNzksMTAgQEAg
Ym9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6cHJlcGFyZURhdGFiYXNlKFNob3VsZENyZWF0ZUlmTm90
RXhpc3RzIHNob3VsZENyZWF0ZUlmTm8KIHZvaWQgU1FMaXRlU3RvcmFnZUFyZWE6OnN0YXJ0VHJh
bnNhY3Rpb25JZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uKQotICAgICAg
ICBtX3RyYW5zYWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbj4o
Km1fZGF0YWJhc2UpOwotCi0gICAgaWYgKG1fdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKKyAg
ICAgICAgbV90cmFuc2FjdGlvbiA9IG1fZGF0YWJhc2UtPmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVn
aW4oKTsKKyAgICAKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX3RyYW5zYWN0aW9uLT5iZWdpbigpOwogCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2hBZnRlcih0
cmFuc2FjdGlvbkR1cmF0aW9uLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAg
ICAgICBpZiAod2Vha1RoaXMpCkBAIC0xOTYsMTggKzE5MCwxNiBAQCB2b2lkIFNRTGl0ZVN0b3Jh
Z2VBcmVhOjpzdGFydFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKQogICAgIH0pOwogfQogCi1XZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBTUUxpdGVTdG9yYWdlQXJlYTo6Y2Fj
aGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGUgdHlwZSkKK1dlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50UmVzZXRTY29wZSBTUUxpdGVTdG9yYWdlQXJlYTo6Y2FjaGVkU3RhdGVtZW50KFN0
YXRlbWVudFR5cGUgdHlwZSkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZSk7CiAgICAgQVNTRVJU
KHR5cGUgPCBTdGF0ZW1lbnRUeXBlOjpJbnZhbGlkKTsKIAogICAgIGF1dG8gaW5kZXggPSBzdGF0
aWNfY2FzdDx1aW50OF90Pih0eXBlKTsKLSAgICBpZiAoIW1fY2FjaGVkU3RhdGVtZW50c1tpbmRl
eF0pIHsKLSAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gbV9kYXRhYmFzZS0+cHJlcGFyZUhlYXBT
dGF0ZW1lbnQoc3RhdGVtZW50U3RyaW5nKHR5cGUpKSkKLSAgICAgICAgICAgIG1fY2FjaGVkU3Rh
dGVtZW50c1tpbmRleF0gPSByZXN1bHQudmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICB9
CisgICAgaWYgKCFtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhdKQorICAgICAgICBtX2NhY2hlZFN0
YXRlbWVudHNbaW5kZXhdID0gbV9kYXRhYmFzZS0+Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShz
dGF0ZW1lbnRTdHJpbmcodHlwZSkpOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudEF1dG9SZXNldFNjb3BlIHsgbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XS5nZXQoKSB9Owor
ICAgIHJldHVybiBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgeyBt
X2NhY2hlZFN0YXRlbWVudHNbaW5kZXhdLmdldCgpIH07CiB9CiAKIEV4cGVjdGVkPFN0cmluZywg
U3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbShjb25zdCBTdHJpbmcmIGtl
eSkKQEAgLTIzNCw3ICsyMjYsNyBAQCBFeHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4gU1FM
aXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UoY29uc3QgU3RyaQogCiAgICAgYXV0
byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6R2V0SXRlbSk7CiAg
ICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCgxLCBrZXkpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRl
bUZyb21EYXRhYmFzZSBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRl
bUZyb21EYXRhYmFzZSBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAg
ICAgfQogCkBAIC0yNDIsNyArMjM0LDcgQEAgRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+
IFNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlKGNvbnN0IFN0cmkKICAgICBp
ZiAocmVzdWx0ID09IFNRTElURV9ST1cpCiAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQtPmNvbHVt
bkJsb2JBc1N0cmluZygwKTsKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRl
bUZyb21EYXRhYmFzZSBmYWlsZWQgb24gc3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRl
bUZyb21EYXRhYmFzZSBmYWlsZWQgb24gc3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAg
ICAgfQogCkBAIC0yNzQsNyArMjY2LDcgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gU1FMaXRl
U3RvcmFnZUFyZWE6OmFsbEl0ZW1zKCkKICAgICAvLyBJbXBvcnQgZnJvbSBkYXRhYmFzZS4KICAg
ICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpHZXRBbGxJ
dGVtcyk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
U3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRBbGxJdGVtcyBmYWlsZWQgb24gY3JlYXRp
bmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2Us
ICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0QWxsSXRlbXMgZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRl
bWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTI5Miw3
ICsyODQsNyBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBTUUxpdGVTdG9yYWdlQXJlYTo6YWxs
SXRlbXMoKQogICAgIH0KIAogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpCi0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0QWxsSXRl
bXMgZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+
bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRBbGxJdGVtcyBmYWls
ZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJy
b3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKIAogICAgIHJldHVybiBpdGVt
czsKIH0KQEAgLTMxMSw3ICszMDMsNyBAQCBFeHBlY3RlZDx2b2lkLCBTdG9yYWdlRXJyb3I+IFNR
TGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSQogCiAgICAg
YXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6U2V0SXRlbSk7
CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCgxLCBrZXkpIHx8IHN0
YXRlbWVudC0+YmluZEJsb2IoMiwgdmFsdWUpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSBmYWlsZWQgb24gY3JlYXRpbmcg
c3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNl
LT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJT
UUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICgl
ZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JN
ZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpE
YXRhYmFzZSk7CiAgICAgfQogCkBAIC0zMTksNyArMzExLDcgQEAgRXhwZWN0ZWQ8dm9pZCwgU3Rv
cmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbShJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUkKICAgICBpZiAocmVzdWx0ID09IFNRTElURV9GVUxMKQogICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpRdW90YUV4Y2VlZGVkKTsKICAgICBpZiAocmVzdWx0
ICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJT
UUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSBmYWlsZWQgb24gc3RlcHBpbmcgc3RhdGVtZW50ICgl
ZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JN
c2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdl
QXJlYTo6c2V0SXRlbSBmYWlsZWQgb24gc3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAg
ICAgfQogCkBAIC0zNTAsNyArMzQyLDcgQEAgRXhwZWN0ZWQ8dm9pZCwgU3RvcmFnZUVycm9yPiBT
UUxpdGVTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb246OlVuaXEKIAogICAg
IGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkRlbGV0ZUl0
ZW0pOwogICAgIGlmICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+YmluZFRleHQoMSwga2V5KSB8
fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0gZmFpbGVkIG9u
IGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCks
IG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
U3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtIGZhaWxlZCBvbiBleGVjdXRp
bmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
U3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0zODEsNyArMzczLDcgQEAgRXhw
ZWN0ZWQ8dm9pZCwgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6Y2xlYXIoSVBDOjpD
b25uZWN0aW9uOjpVbmlxdWVJRAogICAgIHN0YXJ0VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwog
ICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkRlbGV0
ZUFsbEl0ZW1zKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBT
UUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRl
U3RvcmFnZUFyZWE6OmNsZWFyIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6
Y2xlYXIgZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVT
dG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0
ZVN0b3JhZ2VBcmVhLmgKaW5kZXggNTJjYzlkNjBlN2U1YTUzOTFmYzhjNDgzZmI2OGMyOTAzNjA5
NzE2MC4uNjI2M2YwZjVlYjZjY2UwNWFmMzIyNjE5NzVjN2UyMDljMzIxYjkyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVh
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3Jh
Z2VBcmVhLmgKQEAgLTI2LDggKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU3Rv
cmFnZUFyZWFCYXNlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC02NiwxNiArNjYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgSW52YWxpZAogICAgIH07
CiAgICAgQVNDSUlMaXRlcmFsIHN0YXRlbWVudFN0cmluZyhTdGF0ZW1lbnRUeXBlKSBjb25zdDsK
LSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBjYWNoZWRTdGF0ZW1l
bnQoU3RhdGVtZW50VHlwZSk7CisgICAgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRS
ZXNldFNjb3BlIGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlKTsKICAgICBFeHBlY3RlZDxT
dHJpbmcsIFN0b3JhZ2VFcnJvcj4gZ2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSk7CiAgICAgRXhw
ZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+IGdldEl0ZW1Gcm9tRGF0YWJhc2UoY29uc3QgU3Ry
aW5nJiBrZXkpOwogCiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1
ZXVlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4gbV9kYXRh
YmFzZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24+IG1f
dHJhbnNhY3Rpb247Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQ+PiBtX2NhY2hlZFN0YXRlbWVudHM7CiAgICAgc3RkOjpvcHRpb25hbDxIYXNoTWFw
PFN0cmluZywgU3RyaW5nPj4gbV9jYWNoZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uPiBtX2RhdGFiYXNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOworICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+PiBtX2NhY2hl
ZFN0YXRlbWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzA2ZjVlODY5YzIyNTJjNzIyMGVjMzUwNzZlYWU5MWZmOTMxYzM5MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xk
ZXIuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oIgorCisjaW5jbHVkZSAi
UHJvY2Vzc0Fzc2VydGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VBY3Rp
dml0eVRyYWNrZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxTUUxpdGVQcm9jZXNz
QXNzZXJ0aW9uSG9sZGVyPiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpjcmVhdGUoKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIp
OworfQorCit2b2lkIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OndpbGxCZWdpbkZpcnN0
QWN0aXZpdHkoKQoreworICAgIG1faXNQZXJmb3JtaW5nQWN0aXZpdGllcyA9IHRydWU7CisgICAg
ZW5zdXJlQXNzZXJ0aW9uKCk7Cit9CisKK3ZvaWQgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRl
cjo6ZGlkRW5kTGFzdEFjdGl2aXR5KCkKK3sKKyAgICBtX2lzUGVyZm9ybWluZ0FjdGl2aXRpZXMg
PSBmYWxzZTsKKyAgICByZWxlYXNlQXNzZXJ0aW9uKCk7Cit9CisKK3ZvaWQgU1FMaXRlUHJvY2Vz
c0Fzc2VydGlvbkhvbGRlcjo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCB2YWx1ZSkKK3sK
KyAgICBtX2lzSG9sZGluZ0xvY2tlZEZpbGVzID0gdmFsdWU7CisgICAgaWYgKG1faXNIb2xkaW5n
TG9ja2VkRmlsZXMpCisgICAgICAgIGVuc3VyZUFzc2VydGlvbigpOworICAgIGVsc2UKKyAgICAg
ICAgcmVsZWFzZUFzc2VydGlvbigpOworfQorCit2b2lkIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25I
b2xkZXI6OmVuc3VyZUFzc2VydGlvbigpCit7CisgICAgaWYgKG1fYXNzZXJ0aW9uICYmIG1fYXNz
ZXJ0aW9uLT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXNzZXJ0aW9uID0g
UHJvY2Vzc0Fzc2VydGlvbjo6Y3JlYXRlKGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIk5ldHdvcmsg
UHJvY2VzcyBpcyBob2xkaW5nIGRhdGFiYXNlIGxvY2siX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBl
OjpGaW5pc2hUYXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7
CisgICAgbV9hc3NlcnRpb24tPnNldEludmFsaWRhdGlvbkhhbmRsZXIoW10geworICAgICAgICBB
U1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICAgICAgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI6OnNpbmdsZXRvbigpLmludmFsaWRhdGVBbGxBY3Rpdml0aWVzKCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6cmVsZWFzZUFz
c2VydGlvbigpCit7CisgICAgaWYgKCFtX2lzSG9sZGluZ0xvY2tlZEZpbGVzICYmICFtX2lzUGVy
Zm9ybWluZ0FjdGl2aXRpZXMpCisgICAgICAgIG1fYXNzZXJ0aW9uID0gbnVsbHB0cjsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
UUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxp
dGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJhYWFmYjkxZTg0ZGVmMzFj
ZDNhZjlhZTg2ZDI0ODkzZjg5OWMwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaApAQCAtMCwwICsxLDUxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFByb2Nlc3NBc3NlcnRpb247CisKK2NsYXNz
IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIgOiBwdWJsaWMgV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNRTGl0
ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI+IGNyZWF0ZSgpOworICAgIHZvaWQgd2lsbEJlZ2luRmly
c3RBY3Rpdml0eSgpIGZpbmFsOworICAgIHZvaWQgZGlkRW5kTGFzdEFjdGl2aXR5KCkgZmluYWw7
CisgICAgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIHZhbHVlKSBmaW5hbDsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUFzc2VydGlvbigpOworICAgIHZvaWQgcmVsZWFzZUFz
c2VydGlvbigpOworCisgICAgYm9vbCBtX2lzUGVyZm9ybWluZ0FjdGl2aXRpZXMgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9pc0hvbGRpbmdMb2NrZWRGaWxlcyB7IGZhbHNlIH07CisgICAgUmVmUHRy
PFByb2Nlc3NBc3NlcnRpb24+IG1fYXNzZXJ0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCBhM2ZiYjc2MGU3NzYwNDA3
OGQ4ZTUwYzE0Y2RkN2Q3Y2VhNmViNmQzLi4zMWE4ZjFiZTE0NTVjYWM4NGM2M2JiNmQ0M2RmYzE0
ODRiZTU0YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvV29y
a1F1ZXVlLmg+CiAKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNs
dWRlIDxwYWwvY29jb2EvTWVkaWFUb29sYm94U29mdExpbmsuaD4KIAogV1RGX0RFQ0xBUkVfQ0Zf
VFlQRV9UUkFJVChNVFBsdWdpbkZvcm1hdFJlYWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBiZWMxYTNm
MTM0ZTJkZDM5MjM2MTI3NTJhODlkODgxNTc5ZTIwZjg0Li45YWJjYjIwNTkzYTIzOGZhNGNkYWZl
ZTNiNTBiYzI5YjExODEzZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTIzOSw2ICsyMzksNyBAQCBTaGFy
ZWQvUHJpbnRJbmZvLmNwcAogU2hhcmVkL1JUQ05ldHdvcmsuY3BwCiBTaGFyZWQvUlRDUGFja2V0
T3B0aW9ucy5jcHAKIFNoYXJlZC9SZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwCitT
aGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAKIFNoYXJlZC9TY3JvbGxpbmdB
Y2NlbGVyYXRpb25DdXJ2ZS5jcHAKIFNoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCiBTaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNzdhNTk5YjUzNDA5Y2I4ZDViZjZiNjlmMzRiYmQxOTAyMTc4ZmJm
ZC4uMzA2MmNkNmI5Yzg5M2RlNmYxMTFlNGZjMjZlMGVhYWY4MjI0ZDE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTAwLDYgKzE1
MDAsNyBAQAogCQk5M0I2MzFGMTI3QUJBQ0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFFRjI3QUJB
Q0E5MDA0NDNBNDQgLyogUXVvdGFNYW5hZ2VyLmggKi87IH07CiAJCTkzQjYzMUYzMjdBQkFEODAw
MDQ0M0E0NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUYyMjdBQkFEN0YwMDQ0M0E0
NCAvKiBRdW90YUluY3JlYXNlUmVxdWVzdElkZW50aWZpZXIuaCAqLzsgfTsKIAkJOTNCREVCMDEx
NzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkRFQjAwMTcxREQ3QUYwMEJGRUUx
QiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENUREMjAyN0RBNTU1NjAwMTA3Qzc1IC8qIFNRTGl0
ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRDVERDFFMjdEQTU1NTUwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNz
QXNzZXJ0aW9uSG9sZGVyLmggKi87IH07CiAJCTkzRDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENkI3NkMyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyLmggKi87IH07CiAJCTkzRDZCNzczMjU0QkI4QzcwMDU4REQzQSAvKiBXZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRDZCNzY4MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJOTNENkI3ODIyNTRDQ0NGNDAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzgxMjU0Q0NBQkMwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBA
IC01NDcxLDYgKzU0NzIsOCBAQAogCQk5M0JBMDRFMDIxNTFBREY0MDA3RjQ1NUYgLyogV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNX
U2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JBMDRF
MTIxNTFBREY0MDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBX
S1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNENUREMUUyN0RBNTU1NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlUHJvY2Vzc0Fzc2VydGlv
bkhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQxRjI3REE1NTU1
MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3NjcyNTRCN0JDNjAwNThERDNB
IC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc2ODI1NEI3QkM2MDA1OEREM0EgLyog
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Q2Qjc2OTI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVj
b2duaXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
cGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03MzkyLDYgKzczOTUsOCBAQAogCQkJCTgzMTNGN0U3MUY3REFFMDMwMEI5NDRFQiAvKiBTaGFy
ZWRTdHJpbmdIYXNoVGFibGUuaCAqLywKIAkJCQk4M0Y5NjQ0QjFGQTBGNzYyMDBDNDc3NTAgLyog
U2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuY3BwICovLAogCQkJCTgzRjk2NDRDMUZBMEY3
NjMwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5oICovLAorCQkJCTkz
RDVERDFGMjdEQTU1NTUwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNw
cCAqLywKKwkJCQk5M0Q1REQxRTI3REE1NTU1MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2Vy
dGlvbkhvbGRlci5oICovLAogCQkJCTFBNUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hl
Y2tlclN0YXRlLmggKi8sCiAJCQkJRjRBN0NFODQyNjY3RUI0RTAwMjI4Njg1IC8qIFRleHRSZWNv
Z25pdGlvblVwZGF0ZVJlc3VsdC5oICovLAogCQkJCTdCRTM3RjZGMjdCMTQ3NUYwMDdBNkNEMyAv
KiBUaHJlYWRTYWZlT2JqZWN0SGVhcC5oICovLApAQCAtMTM1OTIsNiArMTM1OTcsNyBAQAogCQkJ
CTkzRDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODQyNTRDQ0QwRTAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg1MjU0Q0NE
NDMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzUmVwbGllcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNENUREMjAyN0RBNTU1NjAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nl
c3NBc3NlcnRpb25Ib2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTc5OURBMjc2MTIxMDgw
MDc0MDA4QSAvKiBTUUxpdGVTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EzRkVD
QTIyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2QkVCNkQ3MjJGQjlCRDcwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMzY3OSw3ICsxMzY4NSw2IEBACiAJCQkJNTc0MkEzMDgyNTM1OEEwNDAwQjdC
QTE0IC8qIFdlYkF1dGhuUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTcyRUJCQzIyNTM2QTYwQTAwMDU1MkIzIC8qIFdlYkF1dGhuUHJvY2Vzc01lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzJFQkJDOTI1MzZBRkQ1MDAwNTUyQjMgLyogV2ViQXV0
aG5Qcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3MkVCQkQwMjUzNkJCMTEwMDA1
NTJCMyAvKiBXZWJBdXRoblByb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNDJENjM0MTIyQTBFRkRGMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTBEMzlGNTI0M0JFNjQ4MDAxOTkzODggLyogV2ViQXV0b21hdGlv
bkRPTVdpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU1QTZFQzFDNzk4MEMy
MDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDA5ZmU0OGYxODllMWExNDdhMTFjMjBmMjgzYTU1MzU0ZTlhNTcwMmYuLmU4MzA0NjA5MzIwY2Mz
OTcyNmVlNTNiOWUxYWUwNDUzOWYyMmM4ZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0w
My0xMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBDbG9zZSBT
UUxpdGUgZGF0YWJhc2UgY29ubmVjdGlvbnMgZm9yIExvY2FsU3RvcmFnZSB3aGVuIGFzc2VydGlv
biBpcyBkcm9wcGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzc3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUu
aHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL3Jlc291cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9j
YWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVseS5odG1sOgorCiAyMDIyLTAzLTA5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJSVEMgZGVjb2RlZCBm
cmFtZXMgYXJlIG5vdCBjb3JyZWN0bHkgcm90YXRlZCBpbiBjYXNlIEdQVSBQcm9jZXNzIERPTSBy
ZW5kZXJpbmcgZmxhZyBpcyBzZXQgdG8gdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9kb21zdG9yYWdlL3N0b3JhZ2UtY2xvc2UtZGF0YWJhc2Utb24taWRsZS5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3N0b3JhZ2UtY2xvc2UtZGF0YWJhc2Utb24taWRs
ZS5odG1sCmluZGV4IDAzYTc2ZGE1YTNhYmE2ZDQ2OTNiZThkYjUzZTdhMGZlMmE3YWViZTQuLjNi
ZTI3N2U1ODJmNDhlNzgyOTE1NDAxMDliMTI3ZjY4YTM1MTM0MjUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc3RvcmFnZS1jbG9zZS1k
YXRhYmFzZS1vbi1pZGxlLmh0bWwKQEAgLTIwLDkgKzIwLDEwIEBAIGZ1bmN0aW9uIGxvYWROZXh0
UGFnZSgpCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoMCk7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50
ZXJ2YWwpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRl
cnZhbCgwKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRDYWNoZU1vZGVsKDApOyAvLyBXZWJDYWNo
ZU1vZGVsRG9jdW1lbnRWaWV3ZXIuCi0gICAgfQorICAgIH0gCiAKICAgICAvLyBUZXN0IHRvIG1h
a2Ugc3VyZSB0aGUgc3RvcmFnZSB2YWx1ZXMgZG9uJ3QgY2hhbmdlIGFmdGVyIHRoZSBkYXRhYmFz
ZSBpcyBjbG9zZWQuCiAgICAgaWYgKCJsb2NhbFN0b3JhZ2UiIGluIHdpbmRvdykgewpAQCAtNDYs
NyArNDcsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgICAgIGxvZyh3aW5kb3cubG9j
YWxTdG9yYWdlWydiYXInXSA9PT0gJ0JBUicgPyAnUEFTUycgOiAnRkFJTCcpOwogCiAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCgzMDApOworICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFs
KDMwMCk7CiAgICAgICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L3Jlc291cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1l
ZGlhdGVseS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9z
ZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbAppbmRleCA0ZTBh
NDQ2ZTNlNDIzNGRmOTFhYTllNmFkZjI2YjAzNjhlNTdiNGNjLi43YjE3MzYxNjZlNzFkNTE4MzMx
MGExOWQwM2Q3N2M5ZTIyMjI0ZmIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL3Jl
c291cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlh
dGVseS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xv
c2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwKQEAgLTIsNyAr
Miw3IEBACiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHN3aW5nQmFjaygpIAogICAgIHsKLSAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
ciAmJiB3aW5kb3cudGVzdFJ1bm5lci5jbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMpIHsK
ICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFi
YXNlcygpOwogICAgICAgICB9CiAgICAgICAgIGxvY2F0aW9uLmhyZWY9Jy4uL2RvbXN0b3JhZ2Uv
bG9jYWxzdG9yYWdlL2Nsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVs
eS5odG1sJzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454505</attachid>
            <date>2022-03-11 12:22:16 -0800</date>
            <delta_ts>2022-03-11 14:06:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237754-20220311122215.patch</filename>
            <type>text/plain</type>
            <size>94292</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ1OTA1MmVkMDY5YWM1
NjI0MDFiODhmYTM4MTYxMjhlYzA1ZGJiNS4uZGYzYTlhMzA0MTAxNzZlMTU3YjEwNDYzZTZkOWIy
NTYyNGNmMDNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIyLTAzLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIFNRTGl0ZSBkYXRh
YmFzZSBjb25uZWN0aW9ucyBmb3IgTG9jYWxTdG9yYWdlIHdoZW4gYXNzZXJ0aW9uIGlzIGRyb3Bw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpiZWdpbkFjdGl2aXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjplbmRBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6Y2hlY2tM
YXN0QWN0aXZpdHlUaW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI6OmludmFsaWRhdGVBbGxBY3Rpdml0aWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlckltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlckltcGw6On5TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRUcmFuc2FjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdGlhbGl6ZVNRTGl0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246On5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiZWdpbkFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5kQWN0aXZpdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppbnZhbGlkYXRlQWN0aXZpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRJc0FjdGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmlzT3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZUV4dGVuZGVkUmVz
dWx0Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVu
YWJsZUluTWVtb3J5VGVtcFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6ZW5hYmxlV0FMSm91cm5hbE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2hl
Y2twb2ludE1vZGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmV4ZWN1dGVXQUxDaGVja3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZGVzdHJveUludGVybmFs
U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
bGFzdENoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpsYXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpsYXN0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6dGFibGVDcmVhdGlvblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6cGFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJpbmRCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmluZFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5CbG9iQXNTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5JbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5UZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVzZXRTdGF0
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzdGVw
U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
ZGVzdHJveVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppc09uZ29pbmdUcmFuc2Fj
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aW5N
ZW1vcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
cGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OldURl9HVUFSREVEX0JZX0xPQ0spOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVN0YXRlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6Y29sdW1uQmxvYkFzU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5JbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtblRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpzdGVwKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6U1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVz
ZXRTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0
U2NvcGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudFJlc2V0U2NvcGU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVyYXRvciEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVy
YXRvci0+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bjo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uOjp+U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpjb21taXQpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6cm9sbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmg6IEFk
ZGVkLgorCiAyMDIyLTAzLTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBbGxvdyB0byBwYXNzIHdlYnJ0YyB2aWRlbyBmcmFtZSBidWZmZXJzIHRocm91Z2gg
UmVhbHRpbWVNZWRpYVNvdXJjZSBiYXNlZCBwaXBlbGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGIxYTkyOWIz
NjA2MTQ0NDMwMDZmNTViM2ZkOWM1NjEwZmU3YWUzOS4uMmE3YmE1OGRmYjMxZjIyOGE2NGQzYTU1
ZjJkYTA1ODc1MTUxMWIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMi0wMy0xMSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBDbG9zZSBTUUxpdGUg
ZGF0YWJhc2UgY29ubmVjdGlvbnMgZm9yIExvY2FsU3RvcmFnZSB3aGVuIGFzc2VydGlvbiBpcyBk
cm9wcGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzc3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6bV9tZXNzYWdl
UG9ydENoYW5uZWxSZWdpc3RyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRG
aWxlcyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVT
dG9yYWdlQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjppc0Vt
cHR5KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6cHJlcGFyZURh
dGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OnN0YXJ0VHJhbnNh
Y3Rpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpj
YWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0
SXRlbUZyb21EYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjph
bGxJdGVtcyk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtKToK
KyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0pOgorICAgICAg
ICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6Y2xlYXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuaDoKKyAgICAgICAgKiBTaGFyZWQvU1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpT
UUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpT
UUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjp3aWxsQmVnaW5GaXJzdEFjdGl2aXR5KToKKyAg
ICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6ZGlkRW5kTGFzdEFj
dGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6
c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVQcm9jZXNz
QXNzZXJ0aW9uSG9sZGVyOjplbnN1cmVBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpTUUxp
dGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpyZWxlYXNlQXNzZXJ0aW9uKToKKyAgICAgICAgKiBT
aGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBT
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKwogMjAyMi0wMy0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWxsb3cgdG8gcGFzcyB3ZWJydGMgdmlkZW8gZnJhbWUgYnVmZmVycyB0aHJvdWdo
IFJlYWx0aW1lTWVkaWFTb3VyY2UgYmFzZWQgcGlwZWxpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCBhZTA4ODVmMzI2Y2U0MGE2ZjAxZWZkM2EzOWEzM2IxZWU1MmM0M2IzLi5lOTdiMWIwZDAwYjhk
MTAwNmIwNTkzNDA1MDdjZGI1OTcxMWJkMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE3ODEs
OCArMTc4MSwxNCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAg
ICBwbGF0Zm9ybS9zcWwvU1FMVmFsdWUuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgKKyAg
ICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgKKyAgICBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgKKyAgICBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaAorICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGUuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAor
ICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgKICAgICBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggNzM2ODQyMWIyNzc0ZmQ1ZDVlNmE2YWZlNzk2MGI0MmVjYjQ0ODdjOS4u
MDU3NzlhZjIwYTM0NmM2ZjU1Y2E3MTZkMzNiODNhN2E3N2U5YWMzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTIyNTIsNyArMjI1MiwxMSBAQCBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50LmNwcAogcGxhdGZvcm0vbmV0d29yay9UaW1pbmdBbGxvd09yaWdpbi5jcHAKIHBsYXRm
b3JtL3NxbC9TUUxpdGVBdXRob3JpemVyLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcAorcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcAorcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAKK3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZVN0YXRlbWVudC5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKIHBsYXRm
b3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkNTUzMmNiOWQ4Y2E1NWRmMjNlZDhiMzcxNmE1YjQ2OWQyZmY4MjNhLi4wYTFiZmFkODcyNWY0
ZmI0ZmY4YjllZDUxNDM1YjI4MzU5NzQ3ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDI5LDYgKzMwMjksMTIgQEAKIAkJ
OTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU2QzlBODFD
ODkzMTI4MDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMjFENTdCM0ZF
MDBBQjg1RUEgLyogVVJMRGVjb21wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTERlY29t
cG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0Q0MzdBMzFENTdCN0UyMDBBQjg1RUEgLyogSlNNZWRpYUxpc3RDdXN0b20uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENzI2RkU3MTZEOUYy
MDQwMDNBNEU2RCAvKiBKU01lZGlhTGlzdEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDE3MjdEOTI4QjgwMDEwN0M3NSAvKiBT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRDVERDE1MjdEOTI4QjYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5M0Q1REQxQjI3RDlFQUM2MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0
eVRyYWNrZXJJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q1REQxODI3RDlFQUM1MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXJJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTNENUREMUQyN0Q5RUFDNjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlU
cmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0Q1REQxQTI3RDlFQUM2MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Q1
REQyNTI3REE1NkQ2MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3Bl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQy
MzI3REE1NkQ1MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENURE
MkIyN0RBNTcwRjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDI3MjdEQTU3MEMw
MDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENUREMkQyN0RBNTcwRjAwMTA3Qzc1
IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQyOTI3REE1NzBEMDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0Q2Qjc3MDI1NEI5OEEwMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNENkI3NkYyNTRCOTAyRDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
M0Q2Qjc3MTI1NEJBQjQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZEMjU0QjhF
MUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDZCN0E4MjU1MUQ0MUYwMDU4REQz
QSAvKiBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0E2MjU1MUQzRUQwMDU4REQzQSAvKiBE
dW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI5MTEsNiArMTI5MTcsMTYgQEAKIAkJOTNEMDUw
MzEyNTNBMTQ4QzAwMkEzMDcyIC8qIEFic3RyYWN0UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQWJzdHJhY3RSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDE5
NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25Pci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeGNlcHRpb25Pci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0Q1REQxNDI3RDkyOEI0MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDE1MjdE
OTI4QjYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDE4MjdEOUVBQzUwMDEwN0M3NSAvKiBTUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzRDVERDE5MjdEOUVBQzUwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzRDVERDFBMjdEOUVBQzYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1
REQyMzI3REE1NkQ1MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3Bl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50UmVzZXRTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQyNjI3
REE1NzBCMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQyNzI3REE1NzBDMDAxMDdDNzUgLyog
U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzRDVERDI4MjdEQTU3MEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQy
OTI3REE1NzBEMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3NkQyNTRCOEUxQjAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzZFMjU0QjhFMUIwMDU4
REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRDZCNzZGMjU0QjkwMkQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTkyLDkgKzE5NjA4LDE5IEBACiAJCQkJMUEyRTZF
NzgwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwICovLAogCQkJCTFBMjI0
NjQzMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5jcHAgKi8sCiAJCQkJMUEyMjQ2
NDQwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZURhdGFiYXNlLmggKi8sCisJCQkJOTNENUREMTky
N0Q5RUFDNTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCAqLywK
KwkJCQk5M0Q1REQxQTI3RDlFQUM2MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIuaCAqLywKKwkJCQk5M0Q1REQxODI3RDlFQUM1MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJh
c2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggKi8sCisJCQkJOTNENUREMTQyN0Q5MjhCNDAwMTA3Qzc1
IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJOTNENUREMTUyN0Q5MjhC
NjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oICovLAorCQkJCTkzRDVERDI2
MjdEQTU3MEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAgKi8sCisJCQkJ
OTNENUREMjkyN0RBNTcwRDAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggKi8s
CisJCQkJOTNENUREMjMyN0RBNTZENTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
UmVzZXRTY29wZS5oICovLAogCQkJCTdFNDc0RTFEMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVE
YXRhYmFzZVRyYWNrZXIuY3BwICovLAogCQkJCTdFNDc0RTFDMTI0OTREQzkwMDIzNTM2NCAvKiBT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaCAqLywKIAkJCQk3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQg
LyogU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8sCisJCQkJOTNENUREMjgyN0RBNTcw
QzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwICovLAorCQkJCTkzRDVE
RDI3MjdEQTU3MEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi8sCiAJ
CQkJQjVBNjg0MjMwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwICovLAog
CQkJCUI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggKi8sCiAJ
CQkJMUEyMjQ2NDUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCkBA
IC0zNzQzNSw4ICszNzQ2MSwxNCBAQAogCQkJCTk3QkM2QTNCMTUwNUYwODEwMDFCNzRBQyAvKiBT
UUxDYWxsYmFja1dyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTNDMTUwNUYwODEw
MDFCNzRBQyAvKiBTUUxFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMjQ2NEEwQ0M5OERE
QjAwQzA1MjQwIC8qIFNRTGl0ZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQx
RDI3RDlFQUM2MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTkzRDVERDFCMjdEOUVBQzYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlckltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDVERDE3MjdEOTI4
QjgwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTkzRDVERDJEMjdEQTU3MEYwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTNENUREMjUyN0RBNTZENjAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0NzRFMUYx
MjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0U0NzRFMUUxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENUREMkIyN0RBNTcwRjAwMTA3Qzc1IC8qIFNR
TGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUI1QTY4NDIyMEZG
QUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29y
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdi
NTUwZmZmYjBkZGY5YjVjZjdkYWVlNzJmZjUxNzUwMDQ0OTlkZTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXIuY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgiCisKKyNpbmNsdWRl
ICJTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaCIKKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlU
cmFja2VyJiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkKK3sKKyAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
PiB0cmFja2VyOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgdHJhY2tlci5jb25zdHJ1Y3QoKTsK
KyAgICB9KTsKKyAgICByZXR1cm4gdHJhY2tlci5nZXQoKTsKK30KKwordm9pZCBTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlcjo6c2V0SW1wbChjb25zdCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlckltcGxHZW5lcmF0b3ImIGdlbmVyYXRvcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CisKKyAgICBtX2ltcGwgPSBnZW5lcmF0b3IoKS5wdHIoKTsKK30KKwordm9pZCBT
UUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6YmVnaW5BY3Rpdml0eShTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OworCisgICAgQVNTRVJUKG1fYWN0aXZlQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbikp
OworCisgICAgbV9sYXN0QWN0aXZpdHlUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCk7CisgICAg
aWYgKG1faW1wbCAmJiBtX2FjdGl2ZUNvbm5lY3Rpb25zLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAg
ICAgbV9pbXBsLT53aWxsQmVnaW5GaXJzdEFjdGl2aXR5KCk7CisKKyAgICBtX2FjdGl2ZUNvbm5l
Y3Rpb25zLmFkZChjb25uZWN0aW9uKTsKKyAgICBjb25uZWN0aW9uLnNldElzQWN0aXZlKHRydWUp
OworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjplbmRBY3Rpdml0eShT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OworCisgICAgaWYgKG1fYWN0aXZlQ29ubmVjdGlvbnMucmVtb3ZlKGNvbm5l
Y3Rpb24pKQorICAgICAgICBjb25uZWN0aW9uLnNldElzQWN0aXZlKGZhbHNlKTsKKworICAgIGlm
ICghbV9hY3RpdmVDb25uZWN0aW9ucy5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wID0gV2FsbFRpbWU6Om5vdygpOworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKDFfcywgW3RpbWVzdGFtcCA9IG1fbGFzdEFjdGl2
aXR5VGltZXN0YW1wXSB7CisgICAgICAgIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpz
aW5nbGV0b24oKS5jaGVja0xhc3RBY3Rpdml0eVRpbWVzdGFtcCh0aW1lc3RhbXApOworICAgIH0p
OworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpjaGVja0xhc3RBY3Rp
dml0eVRpbWVzdGFtcChXYWxsVGltZSB0aW1lc3RhbXApCit7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OworCisgICAgaWYgKG1faW1wbCAmJiBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcCA9
PSB0aW1lc3RhbXApCisgICAgICAgIG1faW1wbC0+ZGlkRW5kTGFzdEFjdGl2aXR5KCk7Cit9CisK
K3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmludmFsaWRhdGVBbGxBY3Rpdml0
aWVzKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBmb3IgKGF1dG8m
IGNvbm5lY3Rpb24gOiBtX2FjdGl2ZUNvbm5lY3Rpb25zKQorICAgICAgICBjb25uZWN0aW9uLmlu
dmFsaWRhdGVBY3Rpdml0eSgpOworCisgICAgbV9hY3RpdmVDb25uZWN0aW9ucy5jbGVhcigpOwor
fQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJc0hvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sIHZhbHVlKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKwor
ICAgIGlmIChtX2ltcGwpCisgICAgICAgIG1faW1wbC0+c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMo
dmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFiMjEyNDZkNzIzNDNkMzRiNzIyYzY1MDNlNDYwOTAyYWI2NWJkNTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2VBY3Rpdml0eVRyYWNrZXIuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
IDx3dGYvV2FsbFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGw7
CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyIHsKK3B1YmxpYzoKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXImIHNpbmds
ZXRvbigpOworICAgIHZvaWQgYmVnaW5BY3Rpdml0eShTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24m
KTsKKyAgICB2b2lkIGVuZEFjdGl2aXR5KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYpOworICAg
IHVzaW5nIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbEdlbmVyYXRvciA9IEZ1bmN0
aW9uPFJlZjxTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGw+KCk+OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SW1wbChjb25zdCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tl
ckltcGxHZW5lcmF0b3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGVBbGxB
Y3Rpdml0aWVzKCk7CisgICAgdm9pZCBjaGVja0xhc3RBY3Rpdml0eVRpbWVzdGFtcChXYWxsVGlt
ZSk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJv
b2wgdmFsdWUpOworcHJpdmF0ZToKKyAgICBMb2NrIG1fbG9jazsKKyAgICBXYWxsVGltZSBtX2xh
c3RBY3Rpdml0eVRpbWVzdGFtcDsKKyAgICBXZWFrSGFzaFNldDxTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb24+IG1fYWN0aXZlQ29ubmVjdGlvbnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwor
ICAgIFJlZlB0cjxTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGw+IG1faW1wbCBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rp
dml0eVRyYWNrZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM3YzQ0MWJlNzUyZTNjOTBh
YTZlNzc4ZmI3OTQ5N2UzYjQ5ZDJkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaApAQCAtMCww
ICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNl
QWN0aXZpdHlUcmFja2VySW1wbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNRTGl0ZURhdGFiYXNlQWN0
aXZpdHlUcmFja2VySW1wbD4geworcHVibGljOgorICAgIHZpcnR1YWwgflNRTGl0ZURhdGFiYXNl
QWN0aXZpdHlUcmFja2VySW1wbCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5GaXJz
dEFjdGl2aXR5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRMYXN0QWN0aXZpdHkoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgdmFsdWUp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWY5YWVlMzliODFiMDE4Mjk5NjkwMGEwYjk5OTU3NzBjNWQ2M2ZmYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsNTYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgiCisj
aW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRh
YmFzZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgdWludDY0X3QgbmV4dFN0YXRlbWVudElkZW50aWZpZXIo
KQoreworICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudFN0YXRlbWVudElk
ZW50aWZpZXI7CisgICAgcmV0dXJuICsrY3VycmVudFN0YXRlbWVudElkZW50aWZpZXI7Cit9CisK
K3N0YXRpYyB1aW50NjRfdCBuZXh0VHJhbnNhY3Rpb25JZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0
aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnRUcmFuc2FjdGlvbklkZW50aWZpZXI7Cisg
ICAgcmV0dXJuICsrY3VycmVudFRyYW5zYWN0aW9uSWRlbnRpZmllcjsKK30KKworc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVNRTGl0ZSgpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBpZiAoaW50IHJlc3VsdCA9
IHNxbGl0ZTNfaW5pdGlhbGl6ZSgpOyByZXN1bHQgIT0gU1FMSVRFX09LKQorICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBzcWxp
dGU6ICVzIiwgc3FsaXRlM19lcnJzdHIocmVzdWx0KSk7CisgICAgfSk7Cit9CisKK1JlZjxTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb24+IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uKHBhdGgs
IHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkpOworfQorCitTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGJv
b2wgc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKQorICAgIDogbV9wYXRoKHBhdGgpCisg
ICAgLCBtX3Nob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZShzaG91bGRDb21taXRUcmFuc2Fj
dGlvbkF0Q2xvc2UpCit7CisgICAgaW5pdGlhbGl6ZVNRTGl0ZSgpOworICAgIGJlZ2luQWN0aXZp
dHkoKTsKKworICAgIGlmICghb3BlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWVu
YWJsZUV4dGVuZGVkUmVzdWx0Q29kZSgpIHx8ICFlbmFibGVJbk1lbW9yeVRlbXBTdG9yZSgpKSB7
CisgICAgICAgIGNsb3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZW5h
YmxlV0FMSm91cm5hbE1vZGUoKSkKKyAgICAgICAgZXhlY3V0ZVdBTENoZWNrcG9pbnQoQ2hlY2tw
b2ludE1vZGU6OlRydW5jYXRlKTsKK30KKworU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjp+U1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uKCkKK3sKKyAgICBjbG9zZSgpOworICAgIGVuZEFjdGl2aXR5
KCk7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpvcGVuKCkKK3sKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1faXNBY3RpdmUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3IgaW4tbWVtb3J5
IGRhdGFiYXNlLgorICAgIGlmIChtX3BhdGggPT0gaW5NZW1vcnlQYXRoKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGludCBvcGVuRmxhZ3MgPSBTUUxJVEVfT1BFTl9BVVRPUFJPWFkg
fCBTUUxJVEVfT1BFTl9SRUFEV1JJVEUgfCBTUUxJVEVfT1BFTl9DUkVBVEU7CisgICAgaW50IHJl
c3VsdCA9IHNxbGl0ZTNfb3Blbl92MihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24obV9wYXRoKS5kYXRhKCksICZtX3NxbGl0ZUNvbm5lY3Rpb24sIG9wZW5GbGFncywgbnVsbHB0
cik7CisgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfT0sgfHwgIW1fc3FsaXRlQ29ubmVjdGlvbikg
eworICAgICAgICBtX3NxbGl0ZUNvbm5lY3Rpb24gPSBudWxscHRyOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpjbG9zZSgpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owor
CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNx
bGl0ZTNfaW50ZXJydXB0KG1fc3FsaXRlQ29ubmVjdGlvbik7CisKKyAgICBpZiAoIXNxbGl0ZTNf
Z2V0X2F1dG9jb21taXQobV9zcWxpdGVDb25uZWN0aW9uKSkgeworICAgICAgICBBU0NJSUxpdGVy
YWwgcXVlcnkgPSAiUk9MTEJBQ0siX3M7CisgICAgICAgIGlmIChtX3Nob3VsZENvbW1pdFRyYW5z
YWN0aW9uQXRDbG9zZSkKKyAgICAgICAgICAgIHF1ZXJ5ID0gIkNPTU1JVCJfczsKKyAgICAgICAg
c3FsaXRlM19zdG10KiBzdGF0ZW1lbnQgeyBudWxscHRyIH07CisgICAgICAgIGludCByZXN1bHQg
PSBzcWxpdGUzX3ByZXBhcmVfdjIobV9zcWxpdGVDb25uZWN0aW9uLCBxdWVyeS5jaGFyYWN0ZXJz
KCksIHF1ZXJ5Lmxlbmd0aCgpICsgMSwgJnN0YXRlbWVudCwgbnVsbHB0cik7CisgICAgICAgIGlm
IChyZXN1bHQgPT0gU1FMSVRFX09LKQorICAgICAgICAgICAgcmVzdWx0ID0gc3FsaXRlM19zdGVw
KHN0YXRlbWVudCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpCisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6Y2xvc2UgZmFpbGVkIHRvIHJvbGwgYmFjayB0cmFuc2FjdGlvbiAoJWQpIC0gKCVzKSIs
IHJlc3VsdCwgc3FsaXRlM19lcnJtc2cobV9zcWxpdGVDb25uZWN0aW9uKSk7CisgICAgICAgIHNx
bGl0ZTNfcmVzZXQoc3RhdGVtZW50KTsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShzdGF0ZW1l
bnQpOworICAgICAgICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om51bGxv
cHQ7CisgICAgfQorCisgICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBtX3N0YXRlbWVudHMudmFs
dWVzKCkpIHsKKyAgICAgICAgc3FsaXRlM19yZXNldChzdGF0ZW1lbnQuc3FsaXRlU3RhdGVtZW50
KTsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShzdGF0ZW1lbnQuc3FsaXRlU3RhdGVtZW50KTsK
KyAgICB9CisKKyAgICBtX3N0YXRlbWVudHMuY2xlYXIoKTsKKworICAgIGludCByZXN1bHQgPSBz
cWxpdGUzX2Nsb3NlKG1fc3FsaXRlQ29ubmVjdGlvbik7CisgICAgaWYgKHJlc3VsdCAhPSBTUUxJ
VEVfT0spCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNRTERhdGFiYXNlLCAiU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uOjpjbG9zZUNvbm5lY3Rpb246IGZhaWxlZCB0byBjbG9zZSBkYXRhYmFz
ZSAoJWQpIC0gJXMiLCByZXN1bHQsIHNxbGl0ZTNfZXJybXNnKG1fc3FsaXRlQ29ubmVjdGlvbikp
OworCisgICAgbV9zcWxpdGVDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICBtX2lzQWN0aXZlID0g
ZmFsc2U7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiZWdpbkFjdGl2aXR5
KCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFNRTGl0ZURhdGFiYXNlQWN0aXZp
dHlUcmFja2VyOjpzaW5nbGV0b24oKS5iZWdpbkFjdGl2aXR5KCp0aGlzKTsKKyNlbHNlCisgICAg
c2V0SXNBY3RpdmUodHJ1ZSk7CisjZW5kaWYKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmVuZEFjdGl2aXR5KCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFNR
TGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5lbmRBY3Rpdml0eSgqdGhp
cyk7CisjZWxzZQorICAgIHNldElzQWN0aXZlKGZhbHNlKTsKKyNlbmRpZgorfQorCit2b2lkIFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aW52YWxpZGF0ZUFjdGl2aXR5KCkKK3sKKyAgICBjbG9z
ZSgpOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c2V0SXNBY3RpdmUoYm9v
bCB2YWx1ZSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBtX2lzQWN0
aXZlID0gdmFsdWU7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppc09wZW4o
KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIHJldHVybiAhIW1fc3Fs
aXRlQ29ubmVjdGlvbjsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJs
ZUV4dGVuZGVkUmVzdWx0Q29kZSgpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owor
ICAgIHJldHVybiAhIW1fc3FsaXRlQ29ubmVjdGlvbiAmJiBzcWxpdGUzX2V4dGVuZGVkX3Jlc3Vs
dF9jb2RlcyhtX3NxbGl0ZUNvbm5lY3Rpb24sIDEpID09IFNRTElURV9PSzsKK30KKworYm9vbCBT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZUluTWVtb3J5VGVtcFN0b3JlKCkKK3sKKyAg
ICByZXR1cm4gZXhlY3V0ZSgiUFJBR01BIHRlbXBfc3RvcmUgPSBNRU1PUlkiKTsKK30KKworYm9v
bCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZVdBTEpvdXJuYWxNb2RlKCkKK3sKKyAg
ICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNyZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJl
cGFyZShTdHJpbmdWaWV3IHsgIlBSQUdNQSBqb3VybmFsX21vZGU9V0FMIl9zIH0pOworICAgIGlm
ICghb3B0aW9uYWxJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSAqb3B0aW9uYWxJZGVudGlmaWVyOworICAgIGJvb2wgZW5hYmxlZCA9IGZh
bHNlOworICAgIGlmIChzdGVwU3RhdGVtZW50KGlkZW50aWZpZXIpID09IFNRTElURV9ST1cpCisg
ICAgICAgIGVuYWJsZWQgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb2x1bW5UZXh0
KGlkZW50aWZpZXIsIDApLCAid2FsIik7CisgICAgZGVzdHJveUludGVybmFsU3RhdGVtZW50KGlk
ZW50aWZpZXIpOworCisgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgYXV0byBzaG1QYXRoID0g
bWFrZVN0cmluZyhtX3BhdGgsICItc2htIl9zKTsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMoc2htUGF0aCkgJiYgIUZpbGVTeXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBG
b3JQYXRoKHNobVBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiBlbmFibGVkOworfQorCitzdGF0aWMgaW50IGNoZWNrcG9pbnRNb2RlVmFsdWUoU1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjpDaGVja3BvaW50TW9kZSBtb2RlKQoreworICAgIHN3aXRj
aCAobW9kZSkgeworICAgIGNhc2UgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpDaGVja3BvaW50
TW9kZTo6RnVsbDoKKyAgICAgICAgcmV0dXJuIFNRTElURV9DSEVDS1BPSU5UX0ZVTEw7CisgICAg
Y2FzZSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OkNoZWNrcG9pbnRNb2RlOjpUcnVuY2F0ZToK
KyAgICAgICAgcmV0dXJuIFNRTElURV9DSEVDS1BPSU5UX1RSVU5DQVRFOworICAgIH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6ZXhlY3V0ZVdBTENoZWNrcG9pbnQoQ2hlY2twb2ludE1vZGUgbW9kZSkKK3sKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzcWxpdGUzX3dhbF9jaGVja3Bv
aW50X3YyKG1fc3FsaXRlQ29ubmVjdGlvbiwgbnVsbHB0ciwgY2hlY2twb2ludE1vZGVWYWx1ZSht
b2RlKSwgbnVsbHB0ciwgbnVsbHB0cikgPT0gU1FMSVRFX09LOworfQorCitzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZUludGVybmFsU3RhdGVt
ZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHF1ZXJ5KQoreworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIHNxbGl0ZTNfc3RtdCogc3FsaXRlU3RhdGVtZW50IHsgbnVsbHB0
ciB9OworICAgIGNvbnN0IGNoYXIqIHRhaWwgPSBudWxscHRyOworICAgIGludCByZXN1bHQ7Cisg
ICAgaWYgKHF1ZXJ5LmlzOEJpdCgpICYmIHF1ZXJ5LmlzQWxsQVNDSUkoKSkKKyAgICAgICAgcmVz
dWx0ID0gc3FsaXRlM19wcmVwYXJlX3YyKG1fc3FsaXRlQ29ubmVjdGlvbiwgcXVlcnkubGVuZ3Ro
KCkgPyByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihxdWVyeS5jaGFyYWN0ZXJzOCgpKSA6
ICIiLCBxdWVyeS5sZW5ndGgoKSArIDEsICZzcWxpdGVTdGF0ZW1lbnQsICZ0YWlsKTsKKyAgICBl
bHNlCisgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfcHJlcGFyZV92MihtX3NxbGl0ZUNvbm5lY3Rp
b24sIHF1ZXJ5LnV0ZjgoKS5kYXRhKCksIHF1ZXJ5LnV0ZjgoKS5sZW5ndGgoKSArIDEsICZzcWxp
dGVTdGF0ZW1lbnQsICZ0YWlsKTsKKyAgICBpZiAodGFpbCAmJiAqdGFpbCkKKyAgICAgICAgcmVz
dWx0ID0gU1FMSVRFX0VSUk9SOworCisgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfT0spIHsKKyAg
ICAgICAgc3FsaXRlM19maW5hbGl6ZShzcWxpdGVTdGF0ZW1lbnQpOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IG5leHRTdGF0ZW1l
bnRJZGVudGlmaWVyKCk7CisgICAgbV9zdGF0ZW1lbnRzLmFkZChpZGVudGlmaWVyLCBJbnRlcm5h
bFN0YXRlbWVudCB7IGlkZW50aWZpZXIsIHNxbGl0ZVN0YXRlbWVudCwgc3RkOjpudWxsb3B0IH0p
OworCisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uOjpkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQodWludDY0X3QgaWRlbnRpZmllcikKK3sK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIGl0ZXIgPSBtX3N0YXRlbWVudHMu
ZmluZChpZGVudGlmaWVyKTsgaXRlciAhPSBtX3N0YXRlbWVudHMuZW5kKCkpIHsKKyAgICAgICAg
c3FsaXRlM19maW5hbGl6ZShpdGVyLT52YWx1ZS5zcWxpdGVTdGF0ZW1lbnQpOworICAgICAgICBt
X3N0YXRlbWVudHMucmVtb3ZlKGl0ZXIpOworICAgIH0KK30KKworaW50IFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6bGFzdENoYW5nZXMoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gc3FsaXRlM19jaGFuZ2VzKG1fc3FsaXRlQ29ubmVjdGlvbik7Cit9CisKK2ludCBT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvcigpCit7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1
cm4gU1FMSVRFX0VSUk9SOworCisgICAgcmV0dXJuIHNxbGl0ZTNfZXJyY29kZShtX3NxbGl0ZUNv
bm5lY3Rpb24pOworfQorCitjb25zdCBjaGFyKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxh
c3RFcnJvck1lc3NhZ2UoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBp
ZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuICJEYXRhYmFzZSBjb25uZWN0
aW9uIGlzIG5vdCBvcGVuIjsKKworICAgIHJldHVybiBzcWxpdGUzX2Vycm1zZyhtX3NxbGl0ZUNv
bm5lY3Rpb24pOworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjp0YWJsZUNy
ZWF0aW9uUXVlcnkoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCit7CisgICAgYXV0byBvcHRpb25h
bElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmll
dyB7ICJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ3RhYmxlJyBB
TkQgbmFtZSA9ID87Il9zIH0pOworICAgIGlmICghb3B0aW9uYWxJZGVudGlmaWVyKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgYXV0byBpZGVudGlmaWVyID0gKm9wdGlvbmFsSWRlbnRpZmll
cjsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmIChiaW5kVGV4dChpZGVudGlmaWVyLCAxLCB0
YWJsZU5hbWUpID09IFNRTElURV9PSyAmJiBzdGVwU3RhdGVtZW50KGlkZW50aWZpZXIpID09IFNR
TElURV9ST1cpCisgICAgICAgIHJlc3VsdCA9IGNvbHVtblRleHQoaWRlbnRpZmllciwgMCk7Cisg
ICAgZGVzdHJveUludGVybmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmV4ZWN1dGUoQVNDSUlM
aXRlcmFsIHF1ZXJ5KQoreworICAgIHJldHVybiBleGVjdXRlKFN0cmluZ1ZpZXcgeyBxdWVyeSB9
KTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmV4ZWN1dGUoU3RyaW5nVmll
dyBxdWVyeSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1f
c3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IHJlc3Vs
dCA9IHNxbGl0ZTNfZXhlYyhtX3NxbGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5LnV0ZjgoKS5kYXRhKCks
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgIHJldHVybiByZXN1bHQgPT0gU1FMSVRF
X09LIHx8IHJlc3VsdCA9PSBTUUxJVEVfRE9ORTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OnNldE1heGltdW1TaXplKGludDY0X3Qgc2l6ZSkKK3sKKyAgICBpbnQgY3VycmVu
dFBhZ2VTaXplID0gcGFnZVNpemUoKTsKKyAgICBpZiAoIWN1cnJlbnRQYWdlU2l6ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaW50NjRfdCBuZXdNYXhQYWdlQ291bnQgPSBjdXJyZW50UGFnZVNp
emUgPyBzaXplIC8gY3VycmVudFBhZ2VTaXplIDogMDsKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRp
ZmllciA9IGNyZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShtYWtlU3RyaW5nKCJQUkFH
TUEgbWF4X3BhZ2VfY291bnQgPSAiLCBuZXdNYXhQYWdlQ291bnQpKTsKKyAgICBpZiAoIW9wdGlv
bmFsSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBpZGVudGlmaWVyID0g
Km9wdGlvbmFsSWRlbnRpZmllcjsKKyAgICBpZiAoc3RlcFN0YXRlbWVudChpZGVudGlmaWVyKSAh
PSBTUUxJVEVfUk9XKQorICAgICAgICBMT0dfRVJST1IoIlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6c2V0TWF4aW11bVNpemUgZmFpbGVkIHRvIHNldCBtYXhpbXVtIHNpemUgb2YgZGF0YWJhc2Ug
dG8gJWxsaSBieXRlcyIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oc2l6ZSkpOworCisgICAgZGVz
dHJveUludGVybmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworfQorCitpbnQgU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpwYWdlU2l6ZSgpCit7CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIg
PSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyB7ICJQUkFHTUEg
cGFnZV9zaXplIl9zIH0pOworICAgIGlmICghb3B0aW9uYWxJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7Cisg
ICAgaW50IHNpemUgPSBjb2x1bW5JbnQoaWRlbnRpZmllciwgMCk7CisgICAgZGVzdHJveUludGVy
bmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworCisgICAgcmV0dXJuIHNpemU7Cit9CisKK3ZvaWQg
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpyZWxlYXNlTWVtb3J5KCkKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc3FsaXRlM19kYl9yZWxlYXNlX21lbW9yeShtX3NxbGl0ZUNvbm5l
Y3Rpb24pOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShBU0NJSUxp
dGVyYWwgcXVlcnkpCit7CisgICAgcmV0dXJuIGNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoU3Ry
aW5nVmlldyB7IHF1ZXJ5IH0pOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ+IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlU3RhdGVtZW50QW5kUHJl
cGFyZShTdHJpbmdWaWV3IHF1ZXJ5KQoreworICAgIGF1dG8gb3B0aW9uYWxJZGVudGlmaWVyID0g
Y3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKHF1ZXJ5KTsKKyAgICBpZiAoIW9wdGlv
bmFsSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PihuZXcgU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQoKnRoaXMsICpvcHRpb25hbElkZW50aWZpZXIpKTsKK30KKworc3FsaXRlM19zdG10
KiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmZpbmRTUUxpdGVTdGF0ZW1lbnQodWludDY0X3Qg
aWRlbnRpZmllcikgY29uc3QgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUworewor
ICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOworCisgICAgYXV0byBpdGVyID0gbV9zdGF0ZW1l
bnRzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXIgPT0gbV9zdGF0ZW1lbnRzLmVuZCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBpdGVyLT52YWx1ZS5zcWxp
dGVTdGF0ZW1lbnQ7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJpbmRCbG9i
KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBpbmRleCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9i
KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29u
bmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogc3FsaXRlU3RhdGVt
ZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0
YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsKKworICAgIHJldHVybiBzcWxp
dGUzX2JpbmRfYmxvYihzcWxpdGVTdGF0ZW1lbnQsIGluZGV4LCBibG9iLmRhdGEoKSwgYmxvYi5z
aXplKCksIFNRTElURV9UUkFOU0lFTlQpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjpiaW5kQmxvYih1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKK3sKKyAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXco
dGV4dCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgVUNoYXIgYW55Q2hhcmFjdGVyID0g
MDsKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczsKKyAgICBpZiAodGV4dC5pc0VtcHR5KCkg
JiYgIXRleHQuaXNOdWxsKCkpCisgICAgICAgIGNoYXJhY3RlcnMgPSAmYW55Q2hhcmFjdGVyOwor
ICAgIGVsc2UKKyAgICAgICAgY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKwor
ICAgIHJldHVybiBiaW5kQmxvYihpZGVudGlmaWVyLCBpbmRleCwgU3BhbiB7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNoYXJhY3RlcnMpLCB0ZXh0Lmxlbmd0aCgpICogc2l6ZW9m
KFVDaGFyKSB9KTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmluZFRleHQo
dWludDY0X3QgaWRlbnRpZmllciwgaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVtZW50ID0g
ZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVu
dCkKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsKKworICAgIGludCByZXN1bHQ7CisgICAg
aWYgKHRleHQuaXM4Qml0KCkgJiYgdGV4dC5pc0FsbEFTQ0lJKCkpCisgICAgICAgIHJlc3VsdCA9
IHNxbGl0ZTNfYmluZF90ZXh0KHNxbGl0ZVN0YXRlbWVudCwgaW5kZXgsIHRleHQubGVuZ3RoKCkg
PyByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih0ZXh0LmNoYXJhY3RlcnM4KCkpIDogIiIs
IHRleHQubGVuZ3RoKCksIFNRTElURV9UUkFOU0lFTlQpOworICAgIGVsc2UKKyAgICAgICAgcmVz
dWx0ID0gc3FsaXRlM19iaW5kX3RleHQoc3FsaXRlU3RhdGVtZW50LCBpbmRleCwgdGV4dC51dGY4
KCkuZGF0YSgpLCB0ZXh0LnV0ZjgoKS5sZW5ndGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpj
b2x1bW5CbG9iQXNTdHJpbmcodWludDY0X3QgaWRlbnRpZmllciwgaW50IGNvbCkKK3sKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBm
aW5kU1FMaXRlU3RhdGVtZW50KGlkZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3RhdGVtZW50
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgY29uc3Qgdm9pZCogYmxvYiA9IHNxbGl0ZTNf
Y29sdW1uX2Jsb2Ioc3FsaXRlU3RhdGVtZW50LCBjb2wpOworICAgIGlmICghYmxvYikKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGludCBzaXplID0gc3FsaXRlM19jb2x1bW5fYnl0ZXMoc3Fs
aXRlU3RhdGVtZW50LCBjb2wpOworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIHJldHVybiBTdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihibG9iKSwg
c2l6ZSAvIHNpemVvZihVQ2hhcikpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
Ojpjb2x1bW5JbnQodWludDY0X3QgaWRlbnRpZmllciwgaW50IGNvbCkKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5kU1FM
aXRlU3RhdGVtZW50KGlkZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3RhdGVtZW50KQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBzcWxpdGUzX2NvbHVtbl9pbnQoc3FsaXRlU3Rh
dGVtZW50LCBjb2wpOworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1
bW5UZXh0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBjb2wpCit7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0
YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHNxbGl0ZTNfY29sdW1u
X3RleHQoc3FsaXRlU3RhdGVtZW50LCBjb2wpLCBzcWxpdGUzX2NvbHVtbl9ieXRlcyhzcWxpdGVT
dGF0ZW1lbnQsIGNvbCkpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpyZXNl
dFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1l
bnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVy
biBTUUxJVEVfRVJST1I7CisKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19yZXNldChzcWxpdGVT
dGF0ZW1lbnQpOworICAgIHNxbGl0ZTNfY2xlYXJfYmluZGluZ3Moc3FsaXRlU3RhdGVtZW50KTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpz
dGVwU3RhdGVtZW50KHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRl
bWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0
dXJuIFNRTElURV9FUlJPUjsKKworICAgIHJldHVybiBzcWxpdGUzX3N0ZXAoc3FsaXRlU3RhdGVt
ZW50KTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lTdGF0ZW1l
bnQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQo
aWRlbnRpZmllcik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVRyYW5zYWN0
aW9uPiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4o
KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9zcWxpdGVD
b25uZWN0aW9uIHx8IHNxbGl0ZTNfZ2V0X2F1dG9jb21taXQobV9zcWxpdGVDb25uZWN0aW9uKSkg
eworICAgICAgICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmIChzcWxpdGUzX2V4ZWMo
bV9zcWxpdGVDb25uZWN0aW9uLCAiQkVHSU4iLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSAh
PSBTUUxJVEVfRE9ORSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX29uZ29pbmdU
cmFuc2FjdGlvbklkZW50aWZpZXIgPSBuZXh0VHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uPihuZXcgU1FM
aXRlRGF0YWJhc2VUcmFuc2FjdGlvbigqdGhpcywgKm1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRp
ZmllcikpOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29tbWl0VHJhbnNh
Y3Rpb24odWludDY0X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVy
IHx8ICptX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgIT0gdHJhbnNhY3Rpb25JZGVudGlm
aWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zcWxpdGVDb25uZWN0aW9uICYmICFz
cWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVjdGlvbikpCisgICAgICAgIHNxbGl0
ZTNfZXhlYyhtX3NxbGl0ZUNvbm5lY3Rpb24sICJDT01NSVQiLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyKTsKKworICAgIG1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6bnVs
bG9wdDsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNh
Y3Rpb24odWludDY0X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVy
IHx8ICptX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgIT0gdHJhbnNhY3Rpb25JZGVudGlm
aWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zcWxpdGVDb25uZWN0aW9uICYmICFz
cWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVjdGlvbikpCisgICAgICAgIHNxbGl0
ZTNfZXhlYyhtX3NxbGl0ZUNvbm5lY3Rpb24sICJST0xMQkFDSyIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIpOworCisgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpu
dWxsb3B0OworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aXNPbmdvaW5nVHJh
bnNhY3Rpb24odWludDY0X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQoreworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKKworICAgIHJldHVybiBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50
aWZpZXIgJiYgKm1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciA9PSB0cmFuc2FjdGlvbklk
ZW50aWZpZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44YjYyZWFjNjQyNmU1OGE2Njg1YmYxOGY2OGZkYmVmZjNlMjRlZDEzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbi5oCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxzcWxpdGUzLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDsKK2NsYXNzIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b247CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
ZXhwciBjb25zdCBjaGFyKiBpbk1lbW9yeVBhdGgoKSB7IHJldHVybiAiOm1lbW9yeToiOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENs
b3NlID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24oKTsKKworICAgIFN0cmluZyBwYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc09wZW4oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgbGFz
dENoYW5nZXMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgbGFzdEVycm9yKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgY2hhciogbGFzdEVycm9yTWVzc2FnZSgpOworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB0YWJsZUNyZWF0aW9uUXVlcnkoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUp
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXhlY3V0ZShBU0NJSUxpdGVyYWwgcXVlcnkpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXhlY3V0ZShTdHJpbmdWaWV3IHF1ZXJ5KTsKKyAgICBl
bnVtIGNsYXNzIENoZWNrcG9pbnRNb2RlIDogdWludDhfdCB7IEZ1bGwsIFRydW5jYXRlIH07Cisg
ICAgYm9vbCBleGVjdXRlV0FMQ2hlY2twb2ludChDaGVja3BvaW50TW9kZSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRNYXhpbXVtU2l6ZShpbnQ2NF90KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbGVhc2VNZW1vcnkoKTsKKyAgICB2b2lkIGludmFsaWRhdGVBY3Rpdml0eSgpOwor
ICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7CisKKyAgICAvLyBTdGF0ZW1lbnQgb3BlcmF0aW9u
cy4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnQ+IGNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IGNyZWF0ZVN0YXRlbWVu
dEFuZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSk7CisgICAgaW50IGJpbmRCbG9iKHVpbnQ2NF90
IHN0YXRlbWVudElkZW50aWZpZXIsIGludCBpbmRleCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9i
KTsKKyAgICBpbnQgYmluZEJsb2IodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllciwgaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIGludCBiaW5kVGV4dCh1aW50NjRfdCBzdGF0
ZW1lbnRJZGVudGlmaWVyLCBpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCk7CisgICAgU3RyaW5n
IGNvbHVtbkJsb2JBc1N0cmluZyh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgY29s
KTsKKyAgICBpbnQgY29sdW1uSW50KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIsIGludCBj
b2wpOworICAgIFN0cmluZyBjb2x1bW5UZXh0KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIs
IGludCBjb2wpOworICAgIGludCByZXNldFN0YXRlbWVudCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVu
dGlmaWVyKTsKKyAgICBpbnQgc3RlcFN0YXRlbWVudCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGRlc3Ryb3lTdGF0ZW1lbnQodWludDY0X3Qgc3RhdGVtZW50SWRlbnRp
Zmllcik7CisKKyAgICAvLyBUcmFuc2FjdGlvbiBvcGVyYXRpb25zLgorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uPiBjcmVhdGVUcmFu
c2FjdGlvbkFuZEJlZ2luKCk7CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbih1aW50NjRfdCB0
cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIHZvaWQgcm9sbGJhY2tUcmFuc2FjdGlvbih1aW50
NjRfdCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIGJvb2wgaXNPbmdvaW5nVHJhbnNhY3Rp
b24odWludDY0X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNob3VsZENvbW1p
dFRyYW5zYWN0aW9uQXRDbG9zZSk7CisgICAgYm9vbCBvcGVuKCk7CisgICAgdm9pZCBjbG9zZSgp
OworICAgIHZvaWQgYmVnaW5BY3Rpdml0eSgpOworICAgIHZvaWQgZW5kQWN0aXZpdHkoKTsKKyAg
ICBib29sIGVuYWJsZUV4dGVuZGVkUmVzdWx0Q29kZSgpOworICAgIGJvb2wgZW5hYmxlSW5NZW1v
cnlUZW1wU3RvcmUoKTsKKyAgICBib29sIGVuYWJsZVdBTEpvdXJuYWxNb2RlKCk7CisgICAgaW50
IHBhZ2VTaXplKCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gY3JlYXRlSW50ZXJuYWxT
dGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpOworICAgIHZvaWQgZGVzdHJveUlu
dGVybmFsU3RhdGVtZW50KHVpbnQ2NF90IGlkZW50Zmllcik7CisgICAgc3FsaXRlM19zdG10KiBm
aW5kU1FMaXRlU3RhdGVtZW50KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIpIGNvbnN0Owor
CisgICAgU3RyaW5nIG1fcGF0aDsKKyAgICBib29sIG1fc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25B
dENsb3NlOworICAgIExvY2sgbV9sb2NrOworICAgIHN0cnVjdCBJbnRlcm5hbFN0YXRlbWVudCB7
CisgICAgICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CisgICAgICAgIHNxbGl0ZTNfc3RtdCogc3Fs
aXRlU3RhdGVtZW50OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB0cmFuc2FjdGlv
bklkZW50aWZpZXI7CisgICAgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBJbnRlcm5hbFN0YXRl
bWVudD4gbV9zdGF0ZW1lbnRzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBzcWxp
dGUzKiBtX3NxbGl0ZUNvbm5lY3Rpb24gIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKSB7IG51
bGxwdHIgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX29uZ29pbmdUcmFuc2FjdGlv
bklkZW50aWZpZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIGJvb2wgbV9pc0Fj
dGl2ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM5OWRlNmMzODg5MWZi
NzU3ODBlMTAxNzNhYmFlNTA2YWIyYzE2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAKQEAgLTAsMCArMSw4
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudC5oIgorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OlNR
TGl0ZURhdGFiYXNlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQor
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK1NRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQoKQoreworICAgIG1fY29ubmVjdGlvbi0+
ZGVzdHJveVN0YXRlbWVudChtX2lkZW50aWZpZXIpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9iKQor
eworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmJpbmRCbG9iKG1faWRlbnRpZmllciwgaW5kZXgs
IGJsb2IpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmJp
bmRCbG9iKG1faWRlbnRpZmllciwgaW5kZXgsIHRleHQpOworfQorCitpbnQgU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ6OmJpbmRUZXh0KGludCBpbmRleCwgU3RyaW5nVmlldyB0ZXh0KQoreworICAg
IHJldHVybiBtX2Nvbm5lY3Rpb24tPmJpbmRUZXh0KG1faWRlbnRpZmllciwgaW5kZXgsIHRleHQp
OworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtbkJsb2JBc1N0cmlu
ZyhpbnQgY29sKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNvbHVtbkJsb2JBc1N0cmlu
ZyhtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6
Y29sdW1uSW50KGludCBjb2wpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+Y29sdW1uSW50
KG1faWRlbnRpZmllciwgY29sKTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
Ojpjb2x1bW5UZXh0KGludCBjb2wpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+Y29sdW1u
VGV4dChtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dDo6cmVzZXQoKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnJlc2V0U3RhdGVtZW50KG1f
aWRlbnRpZmllcik7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6c3RlcCgpCit7
CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+c3RlcFN0YXRlbWVudChtX2lkZW50aWZpZXIpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlN2U5MDkw
ZDJmNTI3OGIwNGNhMWM3OTkxOWM3NDc4YzRmYmJmNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dCk7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBpbmRleCwgU3Bhbjxjb25z
dCB1aW50OF90PiBibG9iKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZEJsb2IoaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kVGV4
dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGNvbHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY29s
dW1uSW50KGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb2x1bW5UZXh0KGlu
dCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCByZXNldCgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBzdGVwKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjsKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudChTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb24mLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKworICAgIFJlZjxTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3Bl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWRlMjBkOWYwNjQxZTM5YzIyMTdhYmM2YmM1ODAyMmEzMzkzNGZlZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OworCitj
bGFzcyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSk7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnRSZXNldFNjb3BlKFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KiBzdGF0ZW1lbnQpCisg
ICAgICAgIDogbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQorICAgIHsKKyAgICB9CisKKyAgICB+U1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKCkKKyAgICB7CisgICAgICAgIGlmIChtX3N0
YXRlbWVudCkKKyAgICAgICAgICAgIG1fc3RhdGVtZW50LT5yZXNldCgpOworICAgIH0KKworICAg
IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZShTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dFJlc2V0U2NvcGUmJiBvdGhlcikKKyAgICAgICAgOiBtX3N0YXRlbWVudChvdGhlci5tX3N0YXRl
bWVudC5nZXQoKSkKKyAgICB7CisgICAgICAgIG90aGVyLm1fc3RhdGVtZW50ID0gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUmIG9wZXJhdG9y
PShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUmJiBvdGhlcikKKyAgICB7CisgICAg
ICAgIHN0ZDo6c3dhcChtX3N0YXRlbWVudCwgb3RoZXIubV9zdGF0ZW1lbnQpOworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9zdGF0ZW1lbnQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFtX3N0YXRlbWVudDsgfQorICAgIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KiBnZXQo
KSB7IHJldHVybiBtX3N0YXRlbWVudC5nZXQoKTsgfQorICAgIFNRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50KiBvcGVyYXRvci0+KCkgeyByZXR1cm4gbV9zdGF0ZW1lbnQuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBXZWFrUHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBtX3N0YXRlbWVudDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkwNjhhODcxZTk0ZjBjMzhjNzU4YjVjZjU1N2JjYjA4MjZkYjJkYjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bi5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgiCisKKyNpbmNsdWRlICJTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKFNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICA6IG1f
Y29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCit7
Cit9CisKK1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246On5TUUxpdGVEYXRhYmFzZVRyYW5zYWN0
aW9uKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnJvbGxiYWNrVHJhbnNhY3Rpb24obV9pZGVudGlm
aWVyKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpjb21taXQoKQorewor
ICAgIG1fY29ubmVjdGlvbi0+Y29tbWl0VHJhbnNhY3Rpb24obV9pZGVudGlmaWVyKTsKK30KKwor
dm9pZCBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpyb2xsYmFjaygpCit7CisgICAgbV9jb25u
ZWN0aW9uLT5yb2xsYmFja1RyYW5zYWN0aW9uKG1faWRlbnRpZmllcik7Cit9CisKK2Jvb2wgU1FM
aXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24oKQoreworICAgIHJl
dHVybiBtX2Nvbm5lY3Rpb24tPmlzT25nb2luZ1RyYW5zYWN0aW9uKG1faWRlbnRpZmllcik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MDI5
M2UyYmZiOGQyZDcyZTRlODVjNmIzODc5OTM4MmIyM2IwOTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOworCitjbGFzcyBT
UUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKTsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbigpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByb2xsYmFjaygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPbmdvaW5nVHJhbnNhY3Rp
b24oKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOworICAgIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24oU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uJiwgdWludDY0X3QgaWRlbnRpZmllcik7CisKKyAgICBSZWY8U1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDZiOWVmMTBiZWY5MTg1NzljZjRjODE5MzQ0MWU3
ZjI0MDAxZmQ2ZWIuLjE1NTM5NTY5ZGI1YWQ4MzA0NjllNmIyZGIyMmE3MmEyN2I5OTkyYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBA
IC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgiCiAjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlw
ZS5oIgorI2luY2x1ZGUgIlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCIKICNpbmNsdWRl
ICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNz
U3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXQuaCIKQEAgLTc5LDYgKzgwLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bkRhdGEuaD4KQEAgLTE1OSw3ICsxNjEsNyBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nl
c3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogICAg
ICwgbV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigqdGhpcykKICNlbmRpZgogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcihbdGhp
c10oYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykgeyBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhp
c0hvbGRpbmdMb2NrZWRGaWxlcyk7IH0pCisgICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
cihbXShib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKSB7IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlU
cmFja2VyOjpzaW5nbGV0b24oKS5zZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhpc0hvbGRpbmdMb2Nr
ZWRGaWxlcyk7IH0pCiAjZW5kaWYKICAgICAsIG1fbWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnko
Y3JlYXRlTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKnRoaXMpKQogewpAQCAtMTc3LDYgKzE3
OSwxMiBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0lu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogICAgIExlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlcjo6bmV0d29ya1Byb2Nlc3NDcmVhdGVkKCp0aGlzKTsKICNlbmRpZgogCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2lu
Z2xldG9uKCkuc2V0SW1wbChbXSB7CisgICAgICAgIHJldHVybiBTUUxpdGVQcm9jZXNzQXNzZXJ0
aW9uSG9sZGVyOjpjcmVhdGUoKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgTmV0d29ya1N0YXRl
Tm90aWZpZXI6OnNpbmdsZXRvbigpLmFkZExpc3RlbmVyKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9XShib29sIGlzT25MaW5lKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggNDJjZTA4YmYzNTBjZmNiYTNiNWE3NTIyOTMyNjlhZTc3OGI5NTE3Yi4uNzZi
Mzk4Yzc5NTIzMzhhMDRkZDYyMjFlNTJiZjlhZjAwMDY5MDQ3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNDcxLDEwICs0NzEsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwotI2VuZGlmCi0KICAgICAvLyBDb25uZWN0aW9u
cyB0byBXZWJQcm9jZXNzZXMuCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciwgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9jZXNzQ29ubmVj
dGlvbnM7CiAKQEAgLTUwNyw3ICs1MDMsNiBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXI7Ci0gICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1faG9sZGluZ0xvY2tlZEZp
bGVBc3NlcnRpb247CiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0K
aW5kZXggODI3ZGRmNmVjZjRkOTI5MWUwYmZmNzRmYTVlYmI4MTdiN2RjZmZkNy4uNWI3YzE4NTVj
OGI2Y2EyODRhOWMzNTBhZGVlYjE1ZWE3ZjZkNDZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KQEAgLTk1LDIxICs5
NSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50
T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAKICNlbmRpZiAvLyAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVz
KGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCi17Ci0gICAgaWYgKCFpc0hvbGRpbmdMb2NrZWRG
aWxlcykgewotICAgICAgICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uID0gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2hvbGRpbmdMb2NrZWRGaWxlQXNz
ZXJ0aW9uICYmIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24tPmlzVmFsaWQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gV2Ugc3luY2hyb25vdXNseSB0YWtlIGEgcHJvY2VzcyBhc3Nl
cnRpb24gd2hlbiBiZWdpbm5pbmcgYSBTUUxpdGUgdHJhbnNhY3Rpb24gc28gdGhhdCB3ZSBkb24n
dCBnZXQgc3VzcGVuZGVkCi0gICAgLy8gd2hpbGUgaG9sZGluZyBhIGxvY2tlZCBmaWxlLiBXZSB3
b3VsZCBnZXQga2lsbGVkIGlmIHN1c3BlbmRlZCB3aGlsZSBob2xkaW5nIGxvY2tlZCBmaWxlcy4K
LSAgICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uID0gUHJvY2Vzc0Fzc2VydGlvbjo6Y3Jl
YXRlKGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIk5ldHdvcmsgUHJvY2VzcyBpcyBob2xkaW5nIGxv
Y2tlZCBmaWxlcyJfcywgUHJvY2Vzc0Fzc2VydGlvblR5cGU6OkZpbmlzaFRhc2tJbnRlcnJ1cHRh
YmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5j
cHAKaW5kZXggMTBlYzIwNzY4NTE0NThjZWYxNjE5MGVmMWI5MTY2ZDJmMGE0NGU0MS4uMTIzMjA5
MDFhOTIzMzQzM2M0MjA1OTlhM2YyNWE5NzgxY2RkNDUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3Bw
CkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiU1FMaXRlU3RvcmFnZUFyZWEuaCIKIAogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
UUxpdGVTdGF0ZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OmlzRW1wdHkoKQogCiAg
ICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6Q291bnRJ
dGVtcyk7CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRF
X1JPVykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFn
ZUFyZWE6OmlzRW1wdHkgZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwg
bV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjppc0Vt
cHR5IGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEyOCwyMSArMTI4LDIxIEBAIGJvb2wgU1FMaXRlU3Rv
cmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkoKQogICAgIGlmICghbV9kYXRhYmFzZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIHN0YXRlbWVudCA9IG1fZGF0YWJh
c2UtPnRhYmxlU1FMKCJJdGVtVGFibGUiX3MpOworICAgIFN0cmluZyBzdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLT50YWJsZUNyZWF0aW9uUXVlcnkoIkl0ZW1UYWJsZSJfcyk7CiAgICAgaWYgKHN0YXRl
bWVudCA9PSBjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQgfHwgc3RhdGVtZW50ID09IGNyZWF0ZUl0
ZW1UYWJsZVN0YXRlbWVudEFsdGVybmF0aXZlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIFRhYmxlIGV4aXN0cyBidXQgc3RhdGVtZW50IGlzIHdyb25nOyBkcm9wIGl0LgogICAgIGlm
ICghc3RhdGVtZW50LmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoIW1fZGF0YWJhc2UtPmV4ZWN1
dGVDb21tYW5kKCJEUk9QIFRBQkxFIEl0ZW1UYWJsZSJfcykpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5l
Y2Vzc2FyeSBmYWlsZWQgdG8gZHJvcCBleGlzdGluZyBpdGVtIHRhYmxlICglZCkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgIGlmICghbV9kYXRhYmFzZS0+ZXhlY3V0ZSgiRFJPUCBUQUJMRSBJdGVtVGFibGUiX3MpKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFy
ZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGRyb3AgZXhpc3RpbmcgaXRlbSB0
YWJsZSAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIC8vIFRhYmxlIGRvZXMgbm90IGV4aXN0LgotICAgIGlmICghbV9kYXRhYmFz
ZS0+ZXhlY3V0ZUNvbW1hbmQoY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50KSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxl
SWZOZWNlc3NhcnkgZmFpbGVkIHRvIGNyZWF0ZSBpdGVtIHRhYmxlICglZCkgLSAlcyIsIG1fZGF0
YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgaWYg
KCFtX2RhdGFiYXNlLT5leGVjdXRlKGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudCkpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVU
YWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBjcmVhdGUgaXRlbSB0YWJsZSAoJWQpIC0gJXMiLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTU4LDE3ICsxNTgsMTIgQEAgYm9v
bCBTUUxpdGVTdG9yYWdlQXJlYTo6cHJlcGFyZURhdGFiYXNlKFNob3VsZENyZWF0ZUlmTm90RXhp
c3RzIHNob3VsZENyZWF0ZUlmTm8KICAgICBpZiAoc2hvdWxkQ3JlYXRlSWZOb3RFeGlzdHMgPT0g
U2hvdWxkQ3JlYXRlSWZOb3RFeGlzdHM6Ok5vICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1f
cGF0aCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERp
cmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgobV9wYXRoKSk7Ci0gICAgaWYgKCFtX2Rh
dGFiYXNlLT5vcGVuKG1fcGF0aCkpIHsKKyAgICBtX2RhdGFiYXNlID0gV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGUobV9wYXRoLCB0cnVlKS5wdHIoKTsKKyAgICBpZiAo
IW1fZGF0YWJhc2UtPmlzT3BlbigpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3Jh
Z2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6cHJlcGFyZURhdGFiYXNlIGZhaWxlZCB0byBvcGVuIGRh
dGFiYXNlIGF0ICclcyciLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fZGF0YWJh
c2UgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgICAgICAKLSAg
ICAvLyBTaW5jZSBhIFdvcmtRdWV1ZSBpc24ndCBib3VuZCB0byBhIHNwZWNpZmljIHRocmVhZCwg
d2UgbmVlZCB0byBkaXNhYmxlIHRocmVhZGluZyBjaGVjay4KLSAgICAvLyBXZSB3aWxsIG5ldmVy
IGFjY2VzcyB0aGUgZGF0YWJhc2UgZnJvbSBkaWZmZXJlbnQgdGhyZWFkcyBzaW11bHRhbmVvdXNs
eS4KLSAgICBtX2RhdGFiYXNlLT5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAKICAgICBpZiAo
IWNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkoKSkgewogICAgICAgICBtX2RhdGFiYXNlID0gbnVsbHB0
cjsKQEAgLTE4NCwxMSArMTc5LDEwIEBAIGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVE
YXRhYmFzZShTaG91bGRDcmVhdGVJZk5vdEV4aXN0cyBzaG91bGRDcmVhdGVJZk5vCiB2b2lkIFNR
TGl0ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKQogewogICAgIGlm
ICghbV90cmFuc2FjdGlvbikKLSAgICAgICAgbV90cmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6U1FMaXRlVHJhbnNhY3Rpb24+KCptX2RhdGFiYXNlKTsKLQotICAgIGlmIChtX3RyYW5z
YWN0aW9uLT5pblByb2dyZXNzKCkpCisgICAgICAgIG1fdHJhbnNhY3Rpb24gPSBtX2RhdGFiYXNl
LT5jcmVhdGVUcmFuc2FjdGlvbkFuZEJlZ2luKCk7CisgICAgCisgICAgaWYgKCFtX3RyYW5zYWN0
aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgbV90cmFuc2FjdGlvbi0+YmVnaW4oKTsKIAogICAg
IG1fcXVldWUtPmRpc3BhdGNoQWZ0ZXIodHJhbnNhY3Rpb25EdXJhdGlvbiwgW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQpAQCAtMTk2LDE4ICsx
OTAsMTYgQEAgdm9pZCBTUUxpdGVTdG9yYWdlQXJlYTo6c3RhcnRUcmFuc2FjdGlvbklmTmVjZXNz
YXJ5KCkKICAgICB9KTsKIH0KIAotV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2Nv
cGUgU1FMaXRlU3RvcmFnZUFyZWE6OmNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlIHR5cGUp
CitXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgU1FMaXRlU3RvcmFn
ZUFyZWE6OmNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlIHR5cGUpCiB7CiAgICAgQVNTRVJU
KG1fZGF0YWJhc2UpOwogICAgIEFTU0VSVCh0eXBlIDwgU3RhdGVtZW50VHlwZTo6SW52YWxpZCk7
CiAKICAgICBhdXRvIGluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odHlwZSk7Ci0gICAgaWYg
KCFtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhdKSB7Ci0gICAgICAgIGlmIChhdXRvIHJlc3VsdCA9
IG1fZGF0YWJhc2UtPnByZXBhcmVIZWFwU3RhdGVtZW50KHN0YXRlbWVudFN0cmluZyh0eXBlKSkp
Ci0gICAgICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhdID0gcmVzdWx0LnZhbHVlKCku
bW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgfQorICAgIGlmICghbV9jYWNoZWRTdGF0ZW1lbnRzW2lu
ZGV4XSkKKyAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XSA9IG1fZGF0YWJhc2UtPmNy
ZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoc3RhdGVtZW50U3RyaW5nKHR5cGUpKTsKIAotICAgIHJl
dHVybiBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSB7IG1fY2FjaGVkU3Rh
dGVtZW50c1tpbmRleF0uZ2V0KCkgfTsKKyAgICByZXR1cm4gV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnRSZXNldFNjb3BlIHsgbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XS5nZXQoKSB9
OwogfQogCiBFeHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6
OmdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpCkBAIC0yMzQsNyArMjI2LDcgQEAgRXhwZWN0ZWQ8
U3RyaW5nLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFi
YXNlKGNvbnN0IFN0cmkKIAogICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0
YXRlbWVudFR5cGU6OkdldEl0ZW0pOwogICAgIGlmICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+
YmluZFRleHQoMSwga2V5KSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAi
U1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UgZmFpbGVkIG9uIGNyZWF0aW5n
IHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAi
U1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UgZmFpbGVkIG9uIGNyZWF0aW5n
IHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0
b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0KIApAQCAtMjQyLDcgKzIzNCw3IEBAIEV4cGVj
dGVkPFN0cmluZywgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21E
YXRhYmFzZShjb25zdCBTdHJpCiAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKQogICAgICAg
ICByZXR1cm4gc3RhdGVtZW50LT5jb2x1bW5CbG9iQXNTdHJpbmcoMCk7CiAgICAgaWYgKHJlc3Vs
dCAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAi
U1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UgZmFpbGVkIG9uIHN0ZXBwaW5n
IHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAi
U1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UgZmFpbGVkIG9uIHN0ZXBwaW5n
IHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0
b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0KIApAQCAtMjc0LDcgKzI2Niw3IEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IFNRTGl0ZVN0b3JhZ2VBcmVhOjphbGxJdGVtcygpCiAgICAgLy8g
SW1wb3J0IGZyb20gZGF0YWJhc2UuCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0ZW1l
bnQoU3RhdGVtZW50VHlwZTo6R2V0QWxsSXRlbXMpOwogICAgIGlmICghc3RhdGVtZW50KSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0
QWxsSXRlbXMgZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmdldEFsbEl0ZW1z
IGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCkBAIC0yOTIsNyArMjg0LDcgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gU1FMaXRlU3RvcmFnZUFyZWE6OmFsbEl0ZW1zKCkKICAgICB9CiAKICAgICBpZiAocmVzdWx0
ICE9IFNRTElURV9ET05FKQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FM
aXRlU3RvcmFnZUFyZWE6OmdldEFsbEl0ZW1zIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50
ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9y
YWdlQXJlYTo6Z2V0QWxsSXRlbXMgZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAt
ICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3Nh
Z2UoKSk7CiAKICAgICByZXR1cm4gaXRlbXM7CiB9CkBAIC0zMTEsNyArMzAzLDcgQEAgRXhwZWN0
ZWQ8dm9pZCwgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbShJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUkKIAogICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50
KFN0YXRlbWVudFR5cGU6OlNldEl0ZW0pOwogICAgIGlmICghc3RhdGVtZW50IHx8IHN0YXRlbWVu
dC0+YmluZFRleHQoMSwga2V5KSB8fCBzdGF0ZW1lbnQtPmJpbmRCbG9iKDIsIHZhbHVlKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OnNl
dEl0ZW0gZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNl
LT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0ZW0gZmFpbGVk
IG9uIGNyZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3Io
KSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0KIApAQCAtMzE5LDcgKzMx
MSw3IEBAIEV4cGVjdGVkPHZvaWQsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OnNl
dEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJCiAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVf
RlVMTCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6UXVvdGFF
eGNlZWRlZCk7CiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0ZW0gZmFpbGVk
IG9uIHN0ZXBwaW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3Io
KSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0ZW0gZmFpbGVkIG9uIHN0ZXBwaW5n
IHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0
b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0KIApAQCAtMzUwLDcgKzM0Miw3IEBAIEV4cGVj
dGVkPHZvaWQsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0oSVBD
OjpDb25uZWN0aW9uOjpVbmlxCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVu
dChTdGF0ZW1lbnRUeXBlOjpEZWxldGVJdGVtKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0
ZW1lbnQtPmJpbmRUZXh0KDEsIGtleSkgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VB
cmVhOjpyZW1vdmVJdGVtIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIs
IG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6cmVt
b3ZlSXRlbSBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0K
IApAQCAtMzgxLDcgKzM3Myw3IEBAIEV4cGVjdGVkPHZvaWQsIFN0b3JhZ2VFcnJvcj4gU1FMaXRl
U3RvcmFnZUFyZWE6OmNsZWFyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQKICAgICBzdGFydFRy
YW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRl
bWVudChTdGF0ZW1lbnRUeXBlOjpEZWxldGVBbGxJdGVtcyk7CiAgICAgaWYgKCFzdGF0ZW1lbnQg
fHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpjbGVhciBmYWlsZWQgb24gZXhl
Y3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9k
YXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9y
YWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVt
ZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0
RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVy
cm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5oCmluZGV4IDUyY2M5ZDYwZTdl
NWE1MzkxZmM4YzQ4M2ZiNjhjMjkwMzYwOTcxNjAuLjYyNjNmMGY1ZWI2Y2NlMDVhZjMyMjYxOTc1
YzdlMjA5YzMyMWI5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5oCkBAIC0yNiw4ICsyNiw4IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhQmFzZS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlRGF0YWJhc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudEF1
dG9SZXNldFNjb3BlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29w
ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNjYsMTYgKzY2LDE2IEBAIHByaXZhdGU6
CiAgICAgICAgIEludmFsaWQKICAgICB9OwogICAgIEFTQ0lJTGl0ZXJhbCBzdGF0ZW1lbnRTdHJp
bmcoU3RhdGVtZW50VHlwZSkgY29uc3Q7Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0
b1Jlc2V0U2NvcGUgY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGUpOworICAgIFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVt
ZW50VHlwZSk7CiAgICAgRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+IGdldEl0ZW0oY29u
c3QgU3RyaW5nJiBrZXkpOwogICAgIEV4cGVjdGVkPFN0cmluZywgU3RvcmFnZUVycm9yPiBnZXRJ
dGVtRnJvbURhdGFiYXNlKGNvbnN0IFN0cmluZyYga2V5KTsKIAogICAgIFN0cmluZyBtX3BhdGg7
CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2U7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNRTGl0ZVRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwotICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Pj4gbV9jYWNoZWRTdGF0ZW1lbnRzOwog
ICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IG1fY2FjaGU7CisgICAg
UmVmUHRyPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4gbV9kYXRhYmFzZTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4gbV90
cmFuc2FjdGlvbjsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50Pj4gbV9jYWNoZWRTdGF0ZW1lbnRzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9jZXNz
QXNzZXJ0aW9uSG9sZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NB
c3NlcnRpb25Ib2xkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNmY1ZTg2OWMyMjUyYzcyMjBlYzM1MDc2
ZWFlOTFmZjkzMWMzOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
UUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNRTGl0ZVByb2Nlc3NBc3NlcnRp
b25Ib2xkZXIuaCIKKworI2luY2x1ZGUgIlByb2Nlc3NBc3NlcnRpb24uaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitSZWY8U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcj4gU1FMaXRlUHJvY2Vzc0Fz
c2VydGlvbkhvbGRlcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTUUxp
dGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyKTsKK30KKwordm9pZCBTUUxpdGVQcm9jZXNzQXNzZXJ0
aW9uSG9sZGVyOjp3aWxsQmVnaW5GaXJzdEFjdGl2aXR5KCkKK3sKKyAgICBtX2lzUGVyZm9ybWlu
Z0FjdGl2aXRpZXMgPSB0cnVlOworICAgIGVuc3VyZUFzc2VydGlvbigpOworfQorCit2b2lkIFNR
TGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVuZExhc3RBY3Rpdml0eSgpCit7CisgICAg
bV9pc1BlcmZvcm1pbmdBY3Rpdml0aWVzID0gZmFsc2U7CisgICAgcmVsZWFzZUFzc2VydGlvbigp
OworfQorCit2b2lkIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OnNldElzSG9sZGluZ0xv
Y2tlZEZpbGVzKGJvb2wgdmFsdWUpCit7CisgICAgbV9pc0hvbGRpbmdMb2NrZWRGaWxlcyA9IHZh
bHVlOworICAgIGlmIChtX2lzSG9sZGluZ0xvY2tlZEZpbGVzKQorICAgICAgICBlbnN1cmVBc3Nl
cnRpb24oKTsKKyAgICBlbHNlCisgICAgICAgIHJlbGVhc2VBc3NlcnRpb24oKTsKK30KKwordm9p
ZCBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjplbnN1cmVBc3NlcnRpb24oKQoreworICAg
IGlmIChtX2Fzc2VydGlvbiAmJiBtX2Fzc2VydGlvbi0+aXNWYWxpZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2Fzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJy
ZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBkYXRhYmFzZSBsb2Nr
Il9zLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFza0ludGVycnVwdGFibGUsIFByb2Nl
c3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOworICAgIG1fYXNzZXJ0aW9uLT5zZXRJbnZhbGlkYXRp
b25IYW5kbGVyKFtdIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgICAg
IFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5pbnZh
bGlkYXRlQWxsQWN0aXZpdGllcygpOworICAgIH0pOworfQorCit2b2lkIFNRTGl0ZVByb2Nlc3NB
c3NlcnRpb25Ib2xkZXI6OnJlbGVhc2VBc3NlcnRpb24oKQoreworICAgIGlmICghbV9pc0hvbGRp
bmdMb2NrZWRGaWxlcyAmJiAhbV9pc1BlcmZvcm1pbmdBY3Rpdml0aWVzKQorICAgICAgICBtX2Fz
c2VydGlvbiA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBiYWFhZmI5MWU4NGRlZjMxY2QzYWY5YWU4NmQyNDg5M2Y4OTljMGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9s
ZGVyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiUHJvY2Vzc0Fzc2VydGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJh
c2VBY3Rpdml0eVRyYWNrZXJJbXBsLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQ
cm9jZXNzQXNzZXJ0aW9uOworCitjbGFzcyBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyIDog
cHVibGljIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyPiBjcmVhdGUo
KTsKKyAgICB2b2lkIHdpbGxCZWdpbkZpcnN0QWN0aXZpdHkoKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZEVuZExhc3RBY3Rpdml0eSgpIGZpbmFsOworICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMoYm9vbCB2YWx1ZSkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVBc3NlcnRp
b24oKTsKKyAgICB2b2lkIHJlbGVhc2VBc3NlcnRpb24oKTsKKworICAgIGJvb2wgbV9pc1BlcmZv
cm1pbmdBY3Rpdml0aWVzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNIb2xkaW5nTG9ja2VkRmls
ZXMgeyBmYWxzZSB9OworICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2Fzc2VydGlvbjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5j
cHAKaW5kZXggYTNmYmI3NjBlNzc2MDQwNzhkOGU1MGMxNGNkZDdkN2NlYTZlYjZkMy4uMzFhOGYx
YmUxNDU1Y2FjODRjNjNiYjZkNDNkZmMxNDg0YmU1NGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCisjaW5jbHVkZSA8cGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmg+CiAjaW5jbHVkZSA8cGFsL2NvY29hL01lZGlhVG9vbGJveFNvZnRM
aW5rLmg+CiAKIFdURl9ERUNMQVJFX0NGX1RZUEVfVFJBSVQoTVRQbHVnaW5Gb3JtYXRSZWFkZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggYmVjMWEzZjEzNGUyZGQzOTIzNjEyNzUyYTg5ZDg4MTU3OWUyMGY4
NC4uOWFiY2IyMDU5M2EyMzhmYTRjZGFmZWUzYjUwYmMyOWIxMTgxM2QyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CkBAIC0yMzksNiArMjM5LDcgQEAgU2hhcmVkL1ByaW50SW5mby5jcHAKIFNoYXJlZC9SVENOZXR3
b3JrLmNwcAogU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuY3BwCiBTaGFyZWQvUmVtb3RlV29ya2Vy
SW5pdGlhbGl6YXRpb25EYXRhLmNwcAorU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xk
ZXIuY3BwCiBTaGFyZWQvU2Nyb2xsaW5nQWNjZWxlcmF0aW9uQ3VydmUuY3BwCiBTaGFyZWQvU2Vz
c2lvblN0YXRlLmNwcAogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc3YTU5OWI1MzQwOWNi
OGQ1YmY2YjY5ZjM0YmJkMTkwMjE3OGZiZmQuLjMwNjJjZDZiOWM4OTNkZTZmMTExZTRmYzI2ZTBl
YWFmODIyNGQxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTUwMCw2ICsxNTAwLDcgQEAKIAkJOTNCNjMxRjEyN0FCQUNBOTAwNDQz
QTQ0IC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oICov
OyB9OwogCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlm
aWVyLmggKi87IH07CiAJCTkzQkRFQjAxMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlw
ZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDIw
MjdEQTU1NTYwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQxRTI3REE1NTU1
MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oICovOyB9OwogCQk5M0Q2
Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZDMjU0Qjg5NTgw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oICovOyB9OwogCQk5M0Q2Qjc3MzI1
NEJCOEM3MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2ODI1NEI3QkM2
MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggKi87IH07CiAJCTkz
RDZCNzgyMjU0Q0NDRjQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Q2Qjc4MTI1NENDQUJDMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtNTQ3MSw2ICs1NDcyLDggQEAKIAkJOTNCQTA0RTAy
MTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0RTEyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JE
RUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDFFMjdEQTU1NTUwMDEwN0M3NSAvKiBTUUxp
dGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNENUREMUYyN0RBNTU1NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRp
b25Ib2xkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRDZCNzY3MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNE
NkI3NjgyNTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3NjkyNTRCN0JD
NjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM5Miw2ICs3Mzk1LDggQEAKIAkJCQk4MzEzRjdF
NzFGN0RBRTAzMDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlLmggKi8sCiAJCQkJODNG
OTY0NEIxRkEwRjc2MjAwQzQ3NzUwIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmNw
cCAqLywKIAkJCQk4M0Y5NjQ0QzFGQTBGNzYzMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRh
YmxlUmVhZE9ubHkuaCAqLywKKwkJCQk5M0Q1REQxRjI3REE1NTU1MDAxMDdDNzUgLyogU1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAgKi8sCisJCQkJOTNENUREMUUyN0RBNTU1NTAwMTA3
Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCAqLywKIAkJCQkxQTVFNERBMzEy
RDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oICovLAogCQkJCUY0QTdDRTg0MjY2
N0VCNEUwMDIyODY4NSAvKiBUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1bHQuaCAqLywKIAkJCQk3
QkUzN0Y2RjI3QjE0NzVGMDA3QTZDRDMgLyogVGhyZWFkU2FmZU9iamVjdEhlYXAuaCAqLywKQEAg
LTEzNTkyLDYgKzEzNTk3LDcgQEAKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0MjU0Q0NE
MEUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0Q2Qjc4NTI1NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDVERDIwMjdEQTU1
NTYwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0U3OTlEQTI3NjEyMTA4MDA3NDAwOEEgLyogU1FMaXRlU3RvcmFnZUFyZWEuaCBp
biBIZWFkZXJzICovLAogCQkJCTdBM0ZFQ0EyMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNj
ZXNzU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4Njcg
LyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovLApAQCAtMTM2NzksNyArMTM2ODUsNiBAQAog
CQkJCTU3NDJBMzA4MjUzNThBMDQwMEI3QkExNCAvKiBXZWJBdXRoblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MkVCQkMyMjUzNkE2MEEwMDA1NTJCMyAv
KiBXZWJBdXRoblByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyRUJCQzky
NTM2QUZENTAwMDU1MkIzIC8qIFdlYkF1dGhuUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywK
LQkJCQk1NzJFQkJEMDI1MzZCQjExMDAwNTUyQjMgLyogV2ViQXV0aG5Qcm9jZXNzUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQyRDYzNDEyMkEwRUZERjAwRDJGQjNBIC8qIFdl
YkF1dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwRDM5RjUyNDNCRTY0
ODAwMTk5Mzg4IC8qIFdlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwOWZlNDhmMTg5ZTFhMTQ3YTExYzIwZjI4M2E1NTM1
NGU5YTU3MDJmLi40MzJjMTFkODEzZDY2MDg1YWI4MmIyZjJlYmY2OTkzZTk2ZjY2MDA3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRlIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGZvciBM
b2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMgZHJvcHBlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc3RvcmFn
ZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9yZXNvdXJj
ZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHku
aHRtbDoKKwogMjAyMi0wMy0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViUlRDIGRlY29kZWQgZnJhbWVzIGFyZSBub3QgY29ycmVjdGx5IHJvdGF0ZWQg
aW4gY2FzZSBHUFUgUHJvY2VzcyBET00gcmVuZGVyaW5nIGZsYWcgaXMgc2V0IHRvIHRydWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zdG9yYWdlLWNsb3NlLWRh
dGFiYXNlLW9uLWlkbGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zdG9y
YWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbAppbmRleCAwM2E3NmRhNWEzYWJhNmQ0Njkz
YmU4ZGI1M2U3YTBmZTJhN2FlYmU0Li5iZDE4MWQ3NGUzMTFjNTliYzk1MGVjZmFmZjhmODYzOTUy
ZmY4MDM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc3RvcmFn
ZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9k
b21zdG9yYWdlL3N0b3JhZ2UtY2xvc2UtZGF0YWJhc2Utb24taWRsZS5odG1sCkBAIC0yMCw3ICsy
MCw4IEBAIGZ1bmN0aW9uIGxvYWROZXh0UGFnZSgpCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdl
RGF0YWJhc2VJZGxlSW50ZXJ2YWwoMCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lci5z
ZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCgwKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRD
YWNoZU1vZGVsKDApOyAvLyBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIuCiAgICAgfQogCkBA
IC00Niw3ICs0Nyw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICAgICAgbG9nKHdpbmRv
dy5sb2NhbFN0b3JhZ2VbJ2JhciddID09PSAnQkFSJyA/ICdQQVNTJyA6ICdGQUlMJyk7CiAKICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKDMwMCk7CisgICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCkK
KyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50
ZXJ2YWwoMzAwKTsKICAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0YWJhc2Vz
LWltbWVkaWF0ZWx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNlcy9zdG9yYWdl
LWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVseS5odG1sCmluZGV4
IDRlMGE0NDZlM2U0MjM0ZGY5MWFhOWU2YWRmMjZiMDM2OGU1N2I0Y2MuLjdiMTczNjE2NmU3MWQ1
MTgzMzEwYTE5ZDAzZDc3YzllMjIyMjRmYjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0YWJhc2VzLWlt
bWVkaWF0ZWx5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9yZXNvdXJjZXMvc3RvcmFn
ZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbApAQCAt
Miw3ICsyLDcgQEAKIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gc3dpbmdCYWNrKCkgCiAgICAgewot
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyICYmIHdpbmRvdy50ZXN0UnVubmVyLmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNl
cykgewogICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuY2xvc2VJZGxlTG9jYWxTdG9yYWdl
RGF0YWJhc2VzKCk7CiAgICAgICAgIH0KICAgICAgICAgbG9jYXRpb24uaHJlZj0nLi4vZG9tc3Rv
cmFnZS9sb2NhbHN0b3JhZ2UvY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0YWJhc2VzLWltbWVk
aWF0ZWx5Lmh0bWwnOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454510</attachid>
            <date>2022-03-11 14:06:21 -0800</date>
            <delta_ts>2022-03-11 14:27:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237754-20220311140620.patch</filename>
            <type>text/plain</type>
            <size>100166</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQwMzQyNzcyYzcyYThl
MzhjOGJkMTVlYjAwOTczNTk4NTdlYmRmOC4uODhhNTVmYTMwMzYzM2M1YjdhZWRiN2ZiMGM1M2E0
MTc5OWZhMDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIyLTAzLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIFNRTGl0ZSBkYXRh
YmFzZSBjb25uZWN0aW9ucyBmb3IgTG9jYWxTdG9yYWdlIHdoZW4gYXNzZXJ0aW9uIGlzIGRyb3Bw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpiZWdpbkFjdGl2aXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjplbmRBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6Y2hlY2tM
YXN0QWN0aXZpdHlUaW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI6OmludmFsaWRhdGVBbGxBY3Rpdml0aWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlckltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlckltcGw6On5TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRUcmFuc2FjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdGlhbGl6ZVNRTGl0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246On5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiZWdpbkFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5kQWN0aXZpdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppbnZhbGlkYXRlQWN0aXZpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRJc0FjdGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmlzT3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZUV4dGVuZGVkUmVz
dWx0Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVu
YWJsZUluTWVtb3J5VGVtcFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6ZW5hYmxlV0FMSm91cm5hbE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2hl
Y2twb2ludE1vZGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmV4ZWN1dGVXQUxDaGVja3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZGVzdHJveUludGVybmFs
U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
bGFzdENoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpsYXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpsYXN0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6dGFibGVDcmVhdGlvblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6cGFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJpbmRCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmluZFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5CbG9iQXNTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5JbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5UZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVzZXRTdGF0
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzdGVw
U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
ZGVzdHJveVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppc09uZ29pbmdUcmFuc2Fj
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aW5N
ZW1vcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
cGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OldURl9HVUFSREVEX0JZX0xPQ0spOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVN0YXRlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6Y29sdW1uQmxvYkFzU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5JbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtblRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpzdGVwKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6U1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVz
ZXRTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0
U2NvcGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudFJlc2V0U2NvcGU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVyYXRvciEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVy
YXRvci0+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bjo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uOjp+U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpjb21taXQpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6cm9sbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmg6IEFk
ZGVkLgorCiAyMDIyLTAzLTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciAtW1VJVGV4dElucHV0IHJlbW92ZUVt
b2ppQWx0ZXJuYXRpdmVzXSBvbiBXS0NvbnRlbnRWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVkZDBlM2JkNDBj
MDA0NGY0MWJmYTE4N2Q1ZmIwNDRkMWYxNzFjOGIuLjYxNzQ1YTk2NDUwOWZkNmQ0YTBjYzdhMWJk
MzVlNjI1ZTQ3N2Q3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTEgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRlIGRh
dGFiYXNlIGNvbm5lY3Rpb25zIGZvciBMb2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMgZHJv
cHBlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Om1fbWVzc2FnZVBv
cnRDaGFubmVsUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3Rv
cmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0
eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0
aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6Y2Fj
aGVkU3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0
ZW1Gcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6YWxs
SXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKToKKyAgICAgICAg
KFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmg6CisgICAgICAgICogU2hhcmVkL1NRTGl0
ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSk6CisgICAg
ICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVuZExhc3RBY3Rp
dml0eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OnNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fz
c2VydGlvbkhvbGRlcjo6ZW5zdXJlQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6cmVsZWFzZUFzc2VydGlvbik6CisgICAgICAgICogU2hh
cmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaDogQWRkZWQuCisgICAgICAgICogU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKIDIwMjItMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBEZWxheSByZXNwb25zaXZlbmVzcyBjaGVja3MgZm9yIHRoZSBOZXR3b3JrIFByb2Nlc3Mg
dW50aWwgaXQgaGFzIGZpbmlzaGVkIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCA3MzY0NDJhMDhhNzQ1MDBhMzUyZjA0YzJlMTA2ZDhjNDFlN2E0ZmM1Li43NTFkMThhZTUzY2Zl
YmI4ZTY0YTZjNWQ0YWZhYjU0YzY2ZDY2MjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE3ODAs
OCArMTc4MCwxNCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAg
ICBwbGF0Zm9ybS9zcWwvU1FMVmFsdWUuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgKKyAg
ICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgKKyAgICBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgKKyAgICBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaAorICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGUuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAor
ICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgKICAgICBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggNWM3YjczZWIyMDVlMDllYzI0NmUwMTFkMGE1MDJkY2Q0YzFkY2E1MC4u
ZDUzMzkxYjJkNmUxNjYzNTg4MGM5ZmE3MTc1OWM3ZjYyMzgxZjQ1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTIyNTIsNyArMjI1MiwxMSBAQCBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50LmNwcAogcGxhdGZvcm0vbmV0d29yay9UaW1pbmdBbGxvd09yaWdpbi5jcHAKIHBsYXRm
b3JtL3NxbC9TUUxpdGVBdXRob3JpemVyLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcAorcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcAorcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAKK3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZVN0YXRlbWVudC5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKIHBsYXRm
b3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4NmJlMWIwNjYzNzBjMGYwZGY4MjA5ZDExNWEzZGQzNDQ3MzBjNmY0Li5iNjcyZDI5YTQ4Yzg2
YzAyMjVkZjBlYzZmNzZjMDNlMTA5MDkzZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDI2LDYgKzMwMjYsMTIgQEAKIAkJ
OTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU2QzlBODFD
ODkzMTI4MDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMjFENTdCM0ZF
MDBBQjg1RUEgLyogVVJMRGVjb21wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTERlY29t
cG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0Q0MzdBMzFENTdCN0UyMDBBQjg1RUEgLyogSlNNZWRpYUxpc3RDdXN0b20uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENzI2RkU3MTZEOUYy
MDQwMDNBNEU2RCAvKiBKU01lZGlhTGlzdEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDQyMjdEQkZGMEIwMDEwN0M3NSAvKiBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENUREMzgyN0RCRkYwMzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50LmggKi87IH07CisJCTkzRDVERDQ0MjdEQkZGMEIwMDEwN0M3NSAvKiBTUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Q1REQzQTI3REJGRjA0MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFu
c2FjdGlvbi5oICovOyB9OworCQk5M0Q1REQ0NTI3REJGRjBCMDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQzQjI3REJGRjA1MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggKi87IH07CisJCTkzRDVERDQ3MjdEQkZGMEIwMDEwN0M3
NSAvKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDNEMjdEQkZGMDgwMDEwN0M3NSAvKiBTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJOTNENURENDgyN0RCRkYwQzAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREM0UyN0RCRkYwOTAwMTA3Qzc1IC8qIFNR
TGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICovOyB9OworCQk5M0Q1REQ0OTI3REJG
RjBDMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDNGMjdEQkZGMEEwMDEw
N0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oICovOyB9OwogCQk5M0Q2Qjc3
MDI1NEI5OEEwMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3NkYyNTRCOTAy
RDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q2Qjc3MTI1NEJBQjQ1MDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZEMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRDZCN0E4MjU1MUQ0MUYwMDU4REQzQSAvKiBEdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRDZCN0E2MjU1MUQzRUQwMDU4REQzQSAvKiBEdW1teVNwZWVjaFJlY29nbml0
aW9uUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTI4OTksNiArMTI5MDUsMTYgQEAKIAkJOTNEMDUwMzEyNTNBMTQ4QzAwMkEzMDcy
IC8qIEFic3RyYWN0UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RSYW5nZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0
NyAvKiBFeGNlcHRpb25Pci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNl
cHRpb25Pci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0QxOTYzMjFENkNBQjgy
MDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzNzI3REJG
RjAzMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDM4MjdEQkZGMDMwMDEwN0M3NSAvKiBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0Q1REQzOTI3REJGRjA0MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVRy
YW5zYWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREM0EyN0RC
RkYwNDAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzQjI3REJGRjA1MDAxMDdDNzUgLyogU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0Q1REQzQzI3REJGRjA3MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
M0Q1REQzRDI3REJGRjA4MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzRTI3REJGRjA5MDAxMDdDNzUg
LyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzRjI3REJGRjBBMDAxMDdDNzUgLyogU1FM
aXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNENURENDAyN0RCRkYwQTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0
aXZpdHlUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNR
TGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNENkI3NkQyNTRCOEUxQjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzZFMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzZGMjU0QjkwMkQw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE5NTgwLDkgKzE5NTk2LDE5IEBACiAJCQkJMUEyRTZFNzgwQ0M1NTZENTAwNEEyMDYy
IC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwICovLAogCQkJCTFBMjI0NjQzMENDOThEREIwMEMwNTI0
MCAvKiBTUUxpdGVEYXRhYmFzZS5jcHAgKi8sCiAJCQkJMUEyMjQ2NDQwQ0M5OEREQjAwQzA1MjQw
IC8qIFNRTGl0ZURhdGFiYXNlLmggKi8sCisJCQkJOTNENURENDAyN0RCRkYwQTAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCAqLywKKwkJCQk5M0Q1REQzRjI3REJG
RjBBMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCAqLywKKwkJCQk5
M0Q1REQzRTI3REJGRjA5MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJ
bXBsLmggKi8sCisJCQkJOTNENUREMzcyN0RCRkYwMzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJOTNENUREM0QyN0RCRkYwODAwMTA3Qzc1IC8qIFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbi5oICovLAorCQkJCTkzRDVERDNDMjdEQkZGMDcwMDEwN0M3NSAv
KiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAgKi8sCisJCQkJOTNENUREMzgyN0RCRkYwMzAw
MTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggKi8sCisJCQkJOTNENUREM0IyN0RC
RkYwNTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oICovLAog
CQkJCTdFNDc0RTFEMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3Bw
ICovLAogCQkJCTdFNDc0RTFDMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuaCAqLywKIAkJCQk3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VU
cmFja2VyQ2xpZW50LmggKi8sCisJCQkJOTNENUREMzkyN0RCRkYwNDAwMTA3Qzc1IC8qIFNRTGl0
ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwICovLAorCQkJCTkzRDVERDNBMjdEQkZGMDQwMDEwN0M3
NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi8sCiAJCQkJQjVBNjg0MjMwRkZBQkVB
QTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwICovLAogCQkJCUI1QTY4NDIxMEZGQUJF
OTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggKi8sCiAJCQkJMUEyMjQ2NDUwQ0M5OERE
QjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCkBAIC0yODE3MCwxOCArMjgxOTYs
MTggQEAKIAkJCQlBQTJBNUFCRDE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzLmNw
cCAqLywKIAkJCQlBQTJBNUFCRTE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzLmgg
Ki8sCiAJCQkJQUEyQTVBQkYxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpcy5pZGwg
Ki8sCi0JCQkJQUEyQTVBQzAxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc0V2ZW50
LmNwcCAqLywKLQkJCQlBQTJBNUFDMTE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lz
RXZlbnQuaCAqLywKLQkJCQlBQTJBNUFDMjE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhl
c2lzRXZlbnQuaWRsICovLAotCQkJCTI5RjgzRUM5MjdENTk0RTUwMEUxRjBGRCAvKiBTcGVlY2hT
eW50aGVzaXNFdmVudEluaXQuaCAqLywKLQkJCQkyOUY4M0VDQjI3RDU5NTI2MDBFMUYwRkQgLyog
U3BlZWNoU3ludGhlc2lzRXZlbnRJbml0LmlkbCAqLywKIAkJCQkyOUY4M0VDNjI3RDMxOTI2MDBF
MUYwRkQgLyogU3BlZWNoU3ludGhlc2lzRXJyb3JDb2RlLmggKi8sCiAJCQkJMjlGODNFQ0UyN0Q1
RkE2MzAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0Vycm9yQ29kZS5pZGwgKi8sCiAJCQkJMjlG
ODNFQzQyN0QzMTVBMjAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0Vycm9yRXZlbnQuY3BwICov
LAogCQkJCTI5RjgzRUMzMjdEMzE1QTIwMEUxRjBGRCAvKiBTcGVlY2hTeW50aGVzaXNFcnJvckV2
ZW50LmggKi8sCiAJCQkJMjlGODNFQzUyN0QzMTVCODAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNp
c0Vycm9yRXZlbnQuaWRsICovLAotCQkJCTI5RjgzRUNGMjdENkM3MkEwMEUxRjBGRCAvKiBTcGVl
Y2hTeW50aGVzaXNFcnJvckV2ZW50SW5pdC5pZGwgKi8sCiAJCQkJMjlGODNFRDAyN0Q2Qzg4NTAw
RTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0Vycm9yRXZlbnRJbml0LmggKi8sCisJCQkJMjlGODNF
Q0YyN0Q2QzcyQTAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0Vycm9yRXZlbnRJbml0LmlkbCAq
LywKKwkJCQlBQTJBNUFDMDE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzRXZlbnQu
Y3BwICovLAorCQkJCUFBMkE1QUMxMTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNF
dmVudC5oICovLAorCQkJCUFBMkE1QUMyMTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVz
aXNFdmVudC5pZGwgKi8sCisJCQkJMjlGODNFQzkyN0Q1OTRFNTAwRTFGMEZEIC8qIFNwZWVjaFN5
bnRoZXNpc0V2ZW50SW5pdC5oICovLAorCQkJCTI5RjgzRUNCMjdENTk1MjYwMEUxRjBGRCAvKiBT
cGVlY2hTeW50aGVzaXNFdmVudEluaXQuaWRsICovLAogCQkJCUFBMkE1QUM0MTZBNDg1RDUwMDk3
NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwICovLAogCQkJCUFBMkE1QUM1MTZB
NDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCAqLywKIAkJCQlBQTJB
NUFDMzE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmlkbCAqLywK
QEAgLTMzNDUyLDggKzMzNDc4LDYgQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAotCQkJCTY1NjU4
MEY0MDlEMTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggaW4gSGVhZGVycyAqLywK
LQkJCQk2NTY1ODE1MTA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0
U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyog
QWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAtMzQyMDMsNiArMzQyMjcsNyBA
QAogCQkJCUE4MEU2Q0ZGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzFGMDVGODAyNTEyNDQyRTAwNzFFNjkzIC8qIENTU1Byb3BlcnR5QW5pbWF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTMxNzEzNDFGQkU3OERCMDBGNzU4REUgLyogQ1NT
UHJvcGVydHlCbGVuZGluZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU2NTgwRjQwOUQx
MkIyMDAwMEU2MUQ3IC8qIENTU1Byb3BlcnR5TmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0
NkQzNzQ2MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTQ5Qzc3MDUxRDZFMzlFQTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ2RDM3NDYxRDZEMDFENTAwNzcwODRGIC8qIENT
U1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDI0NSw2ICsz
NDI3MCw3IEBACiAJCQkJNEJBRkQwRDkyMTkyMUVBMDAwQzBBQjY0IC8qIENTU1VucGFyc2VkVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0VFMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNCQkMyNDcyMzgzNTUyNjAwNkVDMzlGIC8qIENT
U1ZhbHVlS2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk2NTY1ODE1MTA5RDEzMDQzMDAwRTYxRDcg
LyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTkwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU1ZhbHVlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5QkQ5RkEx
MzFGRDJFRDAwM0M1NkYwIC8qIENTU1ZhbHVlUG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ0
NENCRTgxRDg4NjFDMjAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlRGF0YS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zNDkxOCw2ICszNDk0NCw3IEBACiAJCQkJQThDRkY3QTcwQTE1Njk3ODAwMEE0MjM0IC8q
IEhUTUxNb2RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEIwMDE4OTI2RTdGMjFGMDA2
RUFBQkUgLyogSFRNTE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThERjNGRDQwOTdG
QTBGQzAwNTI5ODFCIC8qIEhUTUxOYW1lQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QThEMDZCMzkwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTg3MUQ0NUEwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxPYmplY3RFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEVBNzlGMTBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTE9MaXN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMzY5REUwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxP
cHRHcm91cEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzU0NjMsNiArMzU0OTAsNyBAQAog
CQkJCUJDNjQ2NDk4MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzY5NDU2M0QxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRTM3RTAwNjEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwu
aCBpbiBIZWFkZXJzICovLAorCQkJCTE0MDNCQTBGMDlFQjE4RjkwMDc5N0M3RiAvKiBKU0RPTVdp
bmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpT
RE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUyRkJCQkMwREUyN0NCNjAwMDFE
Mzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjBDQkYzNjFE
NEJDRDBFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLywK
QEAgLTM1Njg3LDYgKzM1NzE1LDcgQEAKIAkJCQlBOUQyNDdGODBENzU3RTM0MDBGREY5NTkgLyog
SlNOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3RDUxMDI1MUVENzRCNTgwMERBNEM4
NyAvKiBKU05hdmlnYXRvckNyZWRlbnRpYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY4ODZD
MDFGMzI5MjMxMDBDMTkzRUYgLyogSlNOYXZpZ2F0b3JTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxNERDMEQzODA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzk0MzlDMzExNkNGNDk0MDA0OEM3NTAgLyogSlNOb2RlQ3VzdG9tLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDExNUI3MzA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTc1MEQ4RTBBOTBFNTIxMDAwRkYyMTUgLyogSlNOb2Rl
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzU4NTEsMTIgKzM1ODgwLDYgQEAKIAkJCQlC
Q0UwMTM5QjBDMEJFRjE4MDA0Mzg2MEEgLyogSlNTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBRDcyNkZFRTE2REExMUJDMDAzQTRFNkQgLyogSlNTdHlsZVNoZWV0Q3VzdG9tLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODRFQkQ4MzBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0
TGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThEMDZCMzkwQTI2NURDRDAwNUU3MjAzIC8qIEhU
TUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTQwM0JBMEYwOUVCMThGOTAwNzk3QzdGIC8q
IEpTRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKLQkJCQkxNERDMEQzODA5RkVEMDczMDA3QjAy
MzUgLyogSlNOb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwOEM3QTJDNzEwREM3NDYyMDAyRDM2
OEIgLyogU1ZHTmFtZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBMTQxNEI2MTNBMEYwNTAwMDE5
OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDRDU4
REZCMUY5NTY1QTUwMDExMjc5MSAvKiBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcx
RjIxODkxREE1N0M1NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjREOTEyOTIxM0NBOTUxRTAwRDIxOTE1IC8qIEpTU1ZHQWx0R2x5cGhEZWZF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM3MzM1LDYgKzM3MzU4LDcgQEAKIAkJCQk0NkVG
MTQyQTFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTMzMDlFMTAwOTlFNjQ5MjAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1
dGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlCOERCREI0QzEzMEIwRjhBMDBGNUNEQjEg
LyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0NENThERkIxRjk1
NjVBNTAwMTEyNzkxIC8qIFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0M5NzIyRTFG
OTNFMzM2MDAwNEQ0Q0YgLyogU2V0dGluZ3NCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUJC
QTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogU0ZyYW1lVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGM0RENDUwMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTM3NDM3LDggKzM3NDYxLDE0IEBACiAJCQkJOTdCQzZBM0IxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTENhbGxiYWNrV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBM0MxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIyNDY0QTBDQzk4
RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDVE
RDQ5MjdEQkZGMEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNENURENDgyN0RCRkYwQzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFi
YXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENURENDcyN0RC
RkYwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNENURENDIyN0RCRkYwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0NTI3REJGRjBCMDAxMDdDNzUgLyogU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTQ3NEUx
RjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3RTQ3NEUxRTEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2Vy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0NDI3REJGRjBCMDAxMDdDNzUgLyog
U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVBNjg0MjIw
RkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJCYWNraW5nU3RvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4MyAvKiBTUUxpdGVJREJDdXJz
b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzc2NjIsNiArMzc2OTIsNyBAQAogCQkJCUIyMjI3QTRC
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyQTFGMkIxMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNzaW5nR2x5cGhFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E0RTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTVBhdGhF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEM3QTJDNzEwREM3NDYyMDAyRDM2OEIgLyog
U1ZHTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTU4RDUwMURENjlBMUUwMDEyODU1MiAv
KiBTVkdOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTUxMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdOdW1iZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1NzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTM4MTA2
LDYgKzM4MTM3LDcgQEAKIAkJCQlBNTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDgyMjMxMTFFMzg2OUI4MDA2
NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NURGRUJBQjcxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMUExNDE0QjYxM0EwRjA1MDAwMTk5OTZDIC8qIFdlYktpdEZvbnRGYW1pbHlO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNDUxREE2MzlCQTAwQTdGQjI2IC8qIFdl
YktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDA2MjE1MTFE
QTYzQTlGMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQwNjIxNEUxREE2M0E4RTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5cy5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjU1MGZm
ZmIwZGRmOWI1Y2Y3ZGFlZTcyZmY1MTc1MDA0NDk5ZGUxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNw
cApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oIgorCisjaW5jbHVkZSAiU1FM
aXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tl
ciYgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcj4gdHJh
Y2tlcjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFsmXSB7CisgICAgICAgIHRyYWNrZXIuY29uc3RydWN0KCk7CisgICAg
fSk7CisgICAgcmV0dXJuIHRyYWNrZXIuZ2V0KCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI6OnNldEltcGwoY29uc3QgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXJJbXBsR2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OworCisgICAgbV9pbXBsID0gZ2VuZXJhdG9yKCkucHRyKCk7Cit9CisKK3ZvaWQgU1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmJlZ2luQWN0aXZpdHkoU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKwor
ICAgIEFTU0VSVChtX2FjdGl2ZUNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24pKTsKKwor
ICAgIG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wID0gV2FsbFRpbWU6Om5vdygpOworICAgIGlmICht
X2ltcGwgJiYgbV9hY3RpdmVDb25uZWN0aW9ucy5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIG1f
aW1wbC0+d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpOworCisgICAgbV9hY3RpdmVDb25uZWN0aW9u
cy5hZGQoY29ubmVjdGlvbik7CisgICAgY29ubmVjdGlvbi5zZXRJc0FjdGl2ZSh0cnVlKTsKK30K
Kwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6ZW5kQWN0aXZpdHkoU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKworICAgIGlmIChtX2FjdGl2ZUNvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9u
KSkKKyAgICAgICAgY29ubmVjdGlvbi5zZXRJc0FjdGl2ZShmYWxzZSk7CisKKyAgICBpZiAoIW1f
YWN0aXZlQ29ubmVjdGlvbnMuY29tcHV0ZXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcCA9IFdhbGxUaW1lOjpub3coKTsKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2hBZnRlcigxX3MsIFt0aW1lc3RhbXAgPSBtX2xhc3RBY3Rpdml0eVRp
bWVzdGFtcF0geworICAgICAgICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xl
dG9uKCkuY2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAodGltZXN0YW1wKTsKKyAgICB9KTsKK30K
Kwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6Y2hlY2tMYXN0QWN0aXZpdHlU
aW1lc3RhbXAoV2FsbFRpbWUgdGltZXN0YW1wKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKKworICAgIGlmIChtX2ltcGwgJiYgbV9sYXN0QWN0aXZpdHlUaW1lc3RhbXAgPT0gdGlt
ZXN0YW1wKQorICAgICAgICBtX2ltcGwtPmRpZEVuZExhc3RBY3Rpdml0eSgpOworfQorCit2b2lk
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjppbnZhbGlkYXRlQWxsQWN0aXZpdGllcygp
Cit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgZm9yIChhdXRvJiBjb25u
ZWN0aW9uIDogbV9hY3RpdmVDb25uZWN0aW9ucykKKyAgICAgICAgY29ubmVjdGlvbi5pbnZhbGlk
YXRlQWN0aXZpdHkoKTsKKworICAgIG1fYWN0aXZlQ29ubmVjdGlvbnMuY2xlYXIoKTsKK30KKwor
dm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMoYm9vbCB2YWx1ZSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBp
ZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwtPnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKHZhbHVl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hYjIxMjQ2ZDcyMzQzZDM0YjcyMmM2NTAzZTQ2MDkwMmFiNjViZDU4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0
aXZpdHlUcmFja2VyLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsOworCitj
bGFzcyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlciB7CitwdWJsaWM6CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyJiBzaW5nbGV0b24o
KTsKKyAgICB2b2lkIGJlZ2luQWN0aXZpdHkoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJik7Cisg
ICAgdm9pZCBlbmRBY3Rpdml0eShTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mKTsKKyAgICB1c2lu
ZyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGxHZW5lcmF0b3IgPSBGdW5jdGlvbjxS
ZWY8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsPigpPjsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEltcGwoY29uc3QgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBs
R2VuZXJhdG9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlQWxsQWN0aXZp
dGllcygpOworICAgIHZvaWQgY2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAoV2FsbFRpbWUpOwor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIHZh
bHVlKTsKK3ByaXZhdGU6CisgICAgTG9jayBtX2xvY2s7CisgICAgV2FsbFRpbWUgbV9sYXN0QWN0
aXZpdHlUaW1lc3RhbXA7CisgICAgV2Vha0hhc2hTZXQ8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
PiBtX2FjdGl2ZUNvbm5lY3Rpb25zIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBS
ZWZQdHI8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsPiBtX2ltcGwgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2xvY2spOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlU
cmFja2VySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
QWN0aXZpdHlUcmFja2VySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjN2M0NDFiZTc1MmUzYzkwYWE2ZTc3
OGZiNzk0OTdlM2I0OWQyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgKQEAgLTAsMCArMSw0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlckltcGwgOiBwdWJsaWMgUmVmQ291bnRlZDxTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlckltcGw+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlckltcGwoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRmlyc3RBY3Rp
dml0eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kTGFzdEFjdGl2aXR5KCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIHZhbHVlKSA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVmOWFlZTM5YjgxYjAxODI5OTY5MDBhMGI5OTk1NzcwYzVkNjNmZmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmNwcApAQCAtMCwwICsxLDU2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oIgorI2luY2x1
ZGUgIlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIHVpbnQ2NF90IG5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKCkKK3sK
KyAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnRTdGF0ZW1lbnRJZGVudGlm
aWVyOworICAgIHJldHVybiArK2N1cnJlbnRTdGF0ZW1lbnRJZGVudGlmaWVyOworfQorCitzdGF0
aWMgdWludDY0X3QgbmV4dFRyYW5zYWN0aW9uSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHN0
ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50VHJhbnNhY3Rpb25JZGVudGlmaWVyOworICAgIHJl
dHVybiArK2N1cnJlbnRUcmFuc2FjdGlvbklkZW50aWZpZXI7Cit9CisKK3N0YXRpYyB2b2lkIGlu
aXRpYWxpemVTUUxpdGUoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBmbGFnOworICAg
IHN0ZDo6Y2FsbF9vbmNlKGZsYWcsIFtdIHsKKyAgICAgICAgaWYgKGludCByZXN1bHQgPSBzcWxp
dGUzX2luaXRpYWxpemUoKTsgcmVzdWx0ICE9IFNRTElURV9PSykKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFNRTERhdGFiYXNlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgc3FsaXRlOiAl
cyIsIHNxbGl0ZTNfZXJyc3RyKHJlc3VsdCkpOworICAgIH0pOworfQorCitSZWY8U1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uPiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZShjb25zdCBT
dHJpbmcmIHBhdGgsIGJvb2wgc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbihwYXRoLCBzaG91
bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpKTsKK30KKworU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNo
b3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkKKyAgICA6IG1fcGF0aChwYXRoKQorICAgICwg
bV9zaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2Uoc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25B
dENsb3NlKQoreworICAgIGluaXRpYWxpemVTUUxpdGUoKTsKKyAgICBiZWdpbkFjdGl2aXR5KCk7
CisKKyAgICBpZiAoIW9wZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFlbmFibGVF
eHRlbmRlZFJlc3VsdENvZGUoKSB8fCAhZW5hYmxlSW5NZW1vcnlUZW1wU3RvcmUoKSkgeworICAg
ICAgICBjbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGVuYWJsZVdB
TEpvdXJuYWxNb2RlKCkpCisgICAgICAgIGV4ZWN1dGVXQUxDaGVja3BvaW50KENoZWNrcG9pbnRN
b2RlOjpUcnVuY2F0ZSk7Cit9CisKK1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6flNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbigpCit7CisgICAgY2xvc2UoKTsKKyAgICBlbmRBY3Rpdml0eSgpOwor
fQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6b3BlbigpCit7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX2lzQWN0aXZlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIGluLW1lbW9yeSBkYXRh
YmFzZS4KKyAgICBpZiAobV9wYXRoID09IGluTWVtb3J5UGF0aCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpbnQgb3BlbkZsYWdzID0gU1FMSVRFX09QRU5fQVVUT1BST1hZIHwgU1FM
SVRFX09QRU5fUkVBRFdSSVRFIHwgU1FMSVRFX09QRU5fQ1JFQVRFOworICAgIGludCByZXN1bHQg
PSBzcWxpdGUzX29wZW5fdjIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1f
cGF0aCkuZGF0YSgpLCAmbV9zcWxpdGVDb25uZWN0aW9uLCBvcGVuRmxhZ3MsIG51bGxwdHIpOwor
ICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX09LIHx8ICFtX3NxbGl0ZUNvbm5lY3Rpb24pIHsKKyAg
ICAgICAgbV9zcWxpdGVDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6Y2xvc2UoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzcWxpdGUz
X2ludGVycnVwdChtX3NxbGl0ZUNvbm5lY3Rpb24pOworCisgICAgaWYgKCFzcWxpdGUzX2dldF9h
dXRvY29tbWl0KG1fc3FsaXRlQ29ubmVjdGlvbikpIHsKKyAgICAgICAgQVNDSUlMaXRlcmFsIHF1
ZXJ5ID0gIlJPTExCQUNLIl9zOworICAgICAgICBpZiAobV9zaG91bGRDb21taXRUcmFuc2FjdGlv
bkF0Q2xvc2UpCisgICAgICAgICAgICBxdWVyeSA9ICJDT01NSVQiX3M7CisgICAgICAgIHNxbGl0
ZTNfc3RtdCogc3RhdGVtZW50IHsgbnVsbHB0ciB9OworICAgICAgICBpbnQgcmVzdWx0ID0gc3Fs
aXRlM19wcmVwYXJlX3YyKG1fc3FsaXRlQ29ubmVjdGlvbiwgcXVlcnkuY2hhcmFjdGVycygpLCBx
dWVyeS5sZW5ndGgoKSArIDEsICZzdGF0ZW1lbnQsIG51bGxwdHIpOworICAgICAgICBpZiAocmVz
dWx0ID09IFNRTElURV9PSykKKyAgICAgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfc3RlcChzdGF0
ZW1lbnQpOworICAgICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQorICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OmNsb3NlIGZhaWxlZCB0byByb2xsIGJhY2sgdHJhbnNhY3Rpb24gKCVkKSAtICglcykiLCByZXN1
bHQsIHNxbGl0ZTNfZXJybXNnKG1fc3FsaXRlQ29ubmVjdGlvbikpOworICAgICAgICBzcWxpdGUz
X3Jlc2V0KHN0YXRlbWVudCk7CisgICAgICAgIHNxbGl0ZTNfZmluYWxpemUoc3RhdGVtZW50KTsK
KyAgICAgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpudWxsb3B0Owor
ICAgIH0KKworICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogbV9zdGF0ZW1lbnRzLnZhbHVlcygp
KSB7CisgICAgICAgIHNxbGl0ZTNfcmVzZXQoc3RhdGVtZW50LnNxbGl0ZVN0YXRlbWVudCk7Cisg
ICAgICAgIHNxbGl0ZTNfZmluYWxpemUoc3RhdGVtZW50LnNxbGl0ZVN0YXRlbWVudCk7CisgICAg
fQorCisgICAgbV9zdGF0ZW1lbnRzLmNsZWFyKCk7CisKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRl
M19jbG9zZShtX3NxbGl0ZUNvbm5lY3Rpb24pOworICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX09L
KQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6Y2xvc2VDb25uZWN0aW9uOiBmYWlsZWQgdG8gY2xvc2UgZGF0YWJhc2UgKCVk
KSAtICVzIiwgcmVzdWx0LCBzcWxpdGUzX2Vycm1zZyhtX3NxbGl0ZUNvbm5lY3Rpb24pKTsKKwor
ICAgIG1fc3FsaXRlQ29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNl
OworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmVnaW5BY3Rpdml0eSgpCit7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlcjo6c2luZ2xldG9uKCkuYmVnaW5BY3Rpdml0eSgqdGhpcyk7CisjZWxzZQorICAgIHNldElz
QWN0aXZlKHRydWUpOworI2VuZGlmCit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjplbmRBY3Rpdml0eSgpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBTUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuZW5kQWN0aXZpdHkoKnRoaXMpOwor
I2Vsc2UKKyAgICBzZXRJc0FjdGl2ZShmYWxzZSk7CisjZW5kaWYKK30KKwordm9pZCBTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246OmludmFsaWRhdGVBY3Rpdml0eSgpCit7CisgICAgY2xvc2UoKTsK
K30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnNldElzQWN0aXZlKGJvb2wgdmFs
dWUpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgbV9pc0FjdGl2ZSA9
IHZhbHVlOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aXNPcGVuKCkKK3sK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICByZXR1cm4gISFtX3NxbGl0ZUNv
bm5lY3Rpb247Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVFeHRl
bmRlZFJlc3VsdENvZGUoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBy
ZXR1cm4gISFtX3NxbGl0ZUNvbm5lY3Rpb24gJiYgc3FsaXRlM19leHRlbmRlZF9yZXN1bHRfY29k
ZXMobV9zcWxpdGVDb25uZWN0aW9uLCAxKSA9PSBTUUxJVEVfT0s7Cit9CisKK2Jvb2wgU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVJbk1lbW9yeVRlbXBTdG9yZSgpCit7CisgICAgcmV0
dXJuIGV4ZWN1dGUoIlBSQUdNQSB0ZW1wX3N0b3JlID0gTUVNT1JZIik7Cit9CisKK2Jvb2wgU1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVXQUxKb3VybmFsTW9kZSgpCit7CisgICAgYXV0
byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUo
U3RyaW5nVmlldyB7ICJQUkFHTUEgam91cm5hbF9tb2RlPVdBTCJfcyB9KTsKKyAgICBpZiAoIW9w
dGlvbmFsSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBpZGVu
dGlmaWVyID0gKm9wdGlvbmFsSWRlbnRpZmllcjsKKyAgICBib29sIGVuYWJsZWQgPSBmYWxzZTsK
KyAgICBpZiAoc3RlcFN0YXRlbWVudChpZGVudGlmaWVyKSA9PSBTUUxJVEVfUk9XKQorICAgICAg
ICBlbmFibGVkID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29sdW1uVGV4dChpZGVu
dGlmaWVyLCAwKSwgIndhbCIpOworICAgIGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlm
aWVyKTsKKworICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgIGF1dG8gc2htUGF0aCA9IG1ha2VT
dHJpbmcobV9wYXRoLCAiLXNobSJfcyk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHNobVBhdGgpICYmICFGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0
aChzaG1QYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gZW5hYmxlZDsKK30KKworc3RhdGljIGludCBjaGVja3BvaW50TW9kZVZhbHVlKFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6Q2hlY2twb2ludE1vZGUgbW9kZSkKK3sKKyAgICBzd2l0Y2ggKG1v
ZGUpIHsKKyAgICBjYXNlIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Q2hlY2twb2ludE1vZGU6
OkZ1bGw6CisgICAgICAgIHJldHVybiBTUUxJVEVfQ0hFQ0tQT0lOVF9GVUxMOworICAgIGNhc2Ug
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpDaGVja3BvaW50TW9kZTo6VHJ1bmNhdGU6CisgICAg
ICAgIHJldHVybiBTUUxJVEVfQ0hFQ0tQT0lOVF9UUlVOQ0FURTsKKyAgICB9CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmV4ZWN1dGVXQUxDaGVja3BvaW50KENoZWNrcG9pbnRNb2RlIG1vZGUpCit7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc3FsaXRlM193YWxfY2hlY2twb2ludF92
MihtX3NxbGl0ZUNvbm5lY3Rpb24sIG51bGxwdHIsIGNoZWNrcG9pbnRNb2RlVmFsdWUobW9kZSks
IG51bGxwdHIsIG51bGxwdHIpID09IFNRTElURV9PSzsKK30KKworc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFu
ZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBzcWxpdGUzX3N0bXQqIHNxbGl0ZVN0YXRlbWVudCB7IG51bGxwdHIgfTsK
KyAgICBjb25zdCBjaGFyKiB0YWlsID0gbnVsbHB0cjsKKyAgICBpbnQgcmVzdWx0OworICAgIGlm
IChxdWVyeS5pczhCaXQoKSAmJiBxdWVyeS5pc0FsbEFTQ0lJKCkpCisgICAgICAgIHJlc3VsdCA9
IHNxbGl0ZTNfcHJlcGFyZV92MihtX3NxbGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5Lmxlbmd0aCgpID8g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocXVlcnkuY2hhcmFjdGVyczgoKSkgOiAiIiwg
cXVlcnkubGVuZ3RoKCkgKyAxLCAmc3FsaXRlU3RhdGVtZW50LCAmdGFpbCk7CisgICAgZWxzZQor
ICAgICAgICByZXN1bHQgPSBzcWxpdGUzX3ByZXBhcmVfdjIobV9zcWxpdGVDb25uZWN0aW9uLCBx
dWVyeS51dGY4KCkuZGF0YSgpLCBxdWVyeS51dGY4KCkubGVuZ3RoKCkgKyAxLCAmc3FsaXRlU3Rh
dGVtZW50LCAmdGFpbCk7CisgICAgaWYgKHRhaWwgJiYgKnRhaWwpCisgICAgICAgIHJlc3VsdCA9
IFNRTElURV9FUlJPUjsKKworICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
IHNxbGl0ZTNfZmluYWxpemUoc3FsaXRlU3RhdGVtZW50KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBuZXh0U3RhdGVtZW50SWRl
bnRpZmllcigpOworICAgIG1fc3RhdGVtZW50cy5hZGQoaWRlbnRpZmllciwgSW50ZXJuYWxTdGF0
ZW1lbnQgeyBpZGVudGlmaWVyLCBzcWxpdGVTdGF0ZW1lbnQsIHN0ZDo6bnVsbG9wdCB9KTsKKwor
ICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6ZGVzdHJveUludGVybmFsU3RhdGVtZW50KHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBpdGVyID0gbV9zdGF0ZW1lbnRzLmZpbmQo
aWRlbnRpZmllcik7IGl0ZXIgIT0gbV9zdGF0ZW1lbnRzLmVuZCgpKSB7CisgICAgICAgIHNxbGl0
ZTNfZmluYWxpemUoaXRlci0+dmFsdWUuc3FsaXRlU3RhdGVtZW50KTsKKyAgICAgICAgbV9zdGF0
ZW1lbnRzLnJlbW92ZShpdGVyKTsKKyAgICB9Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246Omxhc3RDaGFuZ2VzKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Cisg
ICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0
dXJuIHNxbGl0ZTNfY2hhbmdlcyhtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitpbnQgU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpsYXN0RXJyb3IoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIFNR
TElURV9FUlJPUjsKKworICAgIHJldHVybiBzcWxpdGUzX2VycmNvZGUobV9zcWxpdGVDb25uZWN0
aW9uKTsKK30KKworY29uc3QgY2hhciogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpsYXN0RXJy
b3JNZXNzYWdlKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgaWYgKCFt
X3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiAiRGF0YWJhc2UgY29ubmVjdGlvbiBp
cyBub3Qgb3BlbiI7CisKKyAgICByZXR1cm4gc3FsaXRlM19lcnJtc2cobV9zcWxpdGVDb25uZWN0
aW9uKTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6dGFibGVDcmVhdGlv
blF1ZXJ5KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQoreworICAgIGF1dG8gb3B0aW9uYWxJZGVu
dGlmaWVyID0gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgeyAi
U0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZSA9ICd0YWJsZScgQU5EIG5h
bWUgPSA/OyJfcyB9KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRlbnRpZmllcikKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7Cisg
ICAgU3RyaW5nIHJlc3VsdDsKKyAgICBpZiAoYmluZFRleHQoaWRlbnRpZmllciwgMSwgdGFibGVO
YW1lKSA9PSBTUUxJVEVfT0sgJiYgc3RlcFN0YXRlbWVudChpZGVudGlmaWVyKSA9PSBTUUxJVEVf
Uk9XKQorICAgICAgICByZXN1bHQgPSBjb2x1bW5UZXh0KGlkZW50aWZpZXIsIDApOworICAgIGRl
c3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlKEFTQ0lJTGl0ZXJh
bCBxdWVyeSkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZShTdHJpbmdWaWV3IHsgcXVlcnkgfSk7Cit9
CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlKFN0cmluZ1ZpZXcgcXVl
cnkpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX3NxbGl0
ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCByZXN1bHQgPSBz
cWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCBxdWVyeS51dGY4KCkuZGF0YSgpLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICByZXR1cm4gcmVzdWx0ID09IFNRTElURV9PSyB8
fCByZXN1bHQgPT0gU1FMSVRFX0RPTkU7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjpzZXRNYXhpbXVtU2l6ZShpbnQ2NF90IHNpemUpCit7CisgICAgaW50IGN1cnJlbnRQYWdl
U2l6ZSA9IHBhZ2VTaXplKCk7CisgICAgaWYgKCFjdXJyZW50UGFnZVNpemUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGludDY0X3QgbmV3TWF4UGFnZUNvdW50ID0gY3VycmVudFBhZ2VTaXplID8g
c2l6ZSAvIGN1cnJlbnRQYWdlU2l6ZSA6IDA7CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIg
PSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUobWFrZVN0cmluZygiUFJBR01BIG1h
eF9wYWdlX2NvdW50ID0gIiwgbmV3TWF4UGFnZUNvdW50KSk7CisgICAgaWYgKCFvcHRpb25hbElk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRp
b25hbElkZW50aWZpZXI7CisgICAgaWYgKHN0ZXBTdGF0ZW1lbnQoaWRlbnRpZmllcikgIT0gU1FM
SVRFX1JPVykKKyAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnNl
dE1heGltdW1TaXplIGZhaWxlZCB0byBzZXQgbWF4aW11bSBzaXplIG9mIGRhdGFiYXNlIHRvICVs
bGkgYnl0ZXMiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHNpemUpKTsKKworICAgIGRlc3Ryb3lJ
bnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6cGFnZVNpemUoKQoreworICAgIGF1dG8gb3B0aW9uYWxJZGVudGlmaWVyID0gY3Jl
YXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgeyAiUFJBR01BIHBhZ2Vf
c2l6ZSJfcyB9KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9uYWxJZGVudGlmaWVyOworICAgIGlu
dCBzaXplID0gY29sdW1uSW50KGlkZW50aWZpZXIsIDApOworICAgIGRlc3Ryb3lJbnRlcm5hbFN0
YXRlbWVudChpZGVudGlmaWVyKTsKKworICAgIHJldHVybiBzaXplOworfQorCit2b2lkIFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVsZWFzZU1lbW9yeSgpCit7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIHNxbGl0ZTNfZGJfcmVsZWFzZV9tZW1vcnkobV9zcWxpdGVDb25uZWN0aW9u
KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoQVNDSUlMaXRlcmFs
IHF1ZXJ5KQoreworICAgIHJldHVybiBjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1Zp
ZXcgeyBxdWVyeSB9KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUo
U3RyaW5nVmlldyBxdWVyeSkKK3sKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNyZWF0
ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShxdWVyeSk7CisgICAgaWYgKCFvcHRpb25hbElk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4obmV3IFNRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50KCp0aGlzLCAqb3B0aW9uYWxJZGVudGlmaWVyKSk7Cit9CisKK3NxbGl0ZTNfc3RtdCogU1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjpmaW5kU1FMaXRlU3RhdGVtZW50KHVpbnQ2NF90IGlkZW50
aWZpZXIpIGNvbnN0IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBB
U1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKKworICAgIGF1dG8gaXRlciA9IG1fc3RhdGVtZW50cy5m
aW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyID09IG1fc3RhdGVtZW50cy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gaXRlci0+dmFsdWUuc3FsaXRlU3Rh
dGVtZW50OworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiaW5kQmxvYih1aW50
NjRfdCBpZGVudGlmaWVyLCBpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4gYmxvYikKK3sK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9
IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1l
bnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICByZXR1cm4gc3FsaXRlM19i
aW5kX2Jsb2Ioc3FsaXRlU3RhdGVtZW50LCBpbmRleCwgYmxvYi5kYXRhKCksIGJsb2Iuc2l6ZSgp
LCBTUUxJVEVfVFJBTlNJRU5UKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
YmluZEJsb2IodWludDY0X3QgaWRlbnRpZmllciwgaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHRl
eHQpCit7CisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHRleHQp
LnVwY29udmVydGVkQ2hhcmFjdGVycygpOworICAgIFVDaGFyIGFueUNoYXJhY3RlciA9IDA7Cisg
ICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnM7CisgICAgaWYgKHRleHQuaXNFbXB0eSgpICYmICF0
ZXh0LmlzTnVsbCgpKQorICAgICAgICBjaGFyYWN0ZXJzID0gJmFueUNoYXJhY3RlcjsKKyAgICBl
bHNlCisgICAgICAgIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisKKyAgICBy
ZXR1cm4gYmluZEJsb2IoaWRlbnRpZmllciwgaW5kZXgsIFNwYW4geyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihjaGFyYWN0ZXJzKSwgdGV4dC5sZW5ndGgoKSAqIHNpemVvZihVQ2hh
cikgfSk7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJpbmRUZXh0KHVpbnQ2
NF90IGlkZW50aWZpZXIsIGludCBpbmRleCwgU3RyaW5nVmlldyB0ZXh0KQoreworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRT
UUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisg
ICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICBpbnQgcmVzdWx0OworICAgIGlmICh0
ZXh0LmlzOEJpdCgpICYmIHRleHQuaXNBbGxBU0NJSSgpKQorICAgICAgICByZXN1bHQgPSBzcWxp
dGUzX2JpbmRfdGV4dChzcWxpdGVTdGF0ZW1lbnQsIGluZGV4LCB0ZXh0Lmxlbmd0aCgpID8gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odGV4dC5jaGFyYWN0ZXJzOCgpKSA6ICIiLCB0ZXh0
Lmxlbmd0aCgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9
IHNxbGl0ZTNfYmluZF90ZXh0KHNxbGl0ZVN0YXRlbWVudCwgaW5kZXgsIHRleHQudXRmOCgpLmRh
dGEoKSwgdGV4dC51dGY4KCkubGVuZ3RoKCksIFNRTElURV9UUkFOU0lFTlQpOworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1u
QmxvYkFzU3RyaW5nKHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBjb2wpCit7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNR
TGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNvbnN0IHZvaWQqIGJsb2IgPSBzcWxpdGUzX2NvbHVt
bl9ibG9iKHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKKyAgICBpZiAoIWJsb2IpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29sdW1uX2J5dGVzKHNxbGl0ZVN0
YXRlbWVudCwgY29sKTsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oYmxvYiksIHNpemUg
LyBzaXplb2YoVUNoYXIpKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29s
dW1uSW50KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBjb2wpCit7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0
YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3FsaXRlM19jb2x1bW5faW50KHNxbGl0ZVN0YXRlbWVu
dCwgY29sKTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uVGV4
dCh1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgY29sKQoreworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1l
bnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzcWxpdGUzX2NvbHVtbl90ZXh0
KHNxbGl0ZVN0YXRlbWVudCwgY29sKSwgc3FsaXRlM19jb2x1bW5fYnl0ZXMoc3FsaXRlU3RhdGVt
ZW50LCBjb2wpKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVzZXRTdGF0
ZW1lbnQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5kU1FMaXRlU3RhdGVtZW50KGlk
ZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gU1FM
SVRFX0VSUk9SOworCisgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfcmVzZXQoc3FsaXRlU3RhdGVt
ZW50KTsKKyAgICBzcWxpdGUzX2NsZWFyX2JpbmRpbmdzKHNxbGl0ZVN0YXRlbWVudCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c3RlcFN0
YXRlbWVudCh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQo
aWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBT
UUxJVEVfRVJST1I7CisKKyAgICByZXR1cm4gc3FsaXRlM19zdGVwKHNxbGl0ZVN0YXRlbWVudCk7
Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpkZXN0cm95U3RhdGVtZW50KHVp
bnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgZGVzdHJveUludGVybmFsU3RhdGVtZW50KGlkZW50
aWZpZXIpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4g
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVUcmFuc2FjdGlvbkFuZEJlZ2luKCkKK3sK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVj
dGlvbiB8fCBzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVjdGlvbikpIHsKKyAg
ICAgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoc3FsaXRlM19leGVjKG1fc3Fs
aXRlQ29ubmVjdGlvbiwgIkJFR0lOIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikgIT0gU1FM
SVRFX0RPTkUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9vbmdvaW5nVHJhbnNh
Y3Rpb25JZGVudGlmaWVyID0gbmV4dFRyYW5zYWN0aW9uSWRlbnRpZmllcigpOworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4obmV3IFNRTGl0ZURh
dGFiYXNlVHJhbnNhY3Rpb24oKnRoaXMsICptX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIp
KTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNvbW1pdFRyYW5zYWN0aW9u
KHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CisKKyAgICBpZiAoIW1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciB8fCAq
bV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyICE9IHRyYW5zYWN0aW9uSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3FsaXRlQ29ubmVjdGlvbiAmJiAhc3FsaXRl
M19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5lY3Rpb24pKQorICAgICAgICBzcWxpdGUzX2V4
ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAiQ09NTUlUIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
cik7CisKKyAgICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7
Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpyb2xsYmFja1RyYW5zYWN0aW9u
KHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CisKKyAgICBpZiAoIW1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciB8fCAq
bV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyICE9IHRyYW5zYWN0aW9uSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3FsaXRlQ29ubmVjdGlvbiAmJiAhc3FsaXRl
M19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5lY3Rpb24pKQorICAgICAgICBzcWxpdGUzX2V4
ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAiUk9MTEJBQ0siLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyKTsKKworICAgIG1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6bnVsbG9w
dDsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0
aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisKKyAgICByZXR1cm4gbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVy
ICYmICptX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPT0gdHJhbnNhY3Rpb25JZGVudGlm
aWVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGI2MmVhYzY0MjZlNThhNjY4NWJmMThmNjhmZGJlZmYzZTI0ZWQxMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24u
aApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8c3FsaXRlMy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQ7CitjbGFzcyBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOwor
CitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgY2hhciogaW5NZW1vcnlQYXRoKCkgeyByZXR1cm4gIjptZW1vcnk6IjsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSA9
IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uKCk7
CisKKyAgICBTdHJpbmcgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNPcGVuKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RDaGFu
Z2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RFcnJvcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IGNoYXIqIGxhc3RFcnJvck1lc3NhZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgdGFibGVDcmVhdGlvblF1ZXJ5KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoU3RyaW5nVmlldyBxdWVyeSk7CisgICAgZW51bSBj
bGFzcyBDaGVja3BvaW50TW9kZSA6IHVpbnQ4X3QgeyBGdWxsLCBUcnVuY2F0ZSB9OworICAgIGJv
b2wgZXhlY3V0ZVdBTENoZWNrcG9pbnQoQ2hlY2twb2ludE1vZGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TWF4aW11bVNpemUoaW50NjRfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWxlYXNlTWVtb3J5KCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQWN0aXZpdHkoKTsKKyAgICB2
b2lkIHNldElzQWN0aXZlKGJvb2wpOworCisgICAgLy8gU3RhdGVtZW50IG9wZXJhdGlvbnMuCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
PiBjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKEFTQ0lJTGl0ZXJhbCBxdWVyeSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBjcmVhdGVTdGF0ZW1lbnRBbmRQ
cmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpOworICAgIGludCBiaW5kQmxvYih1aW50NjRfdCBzdGF0
ZW1lbnRJZGVudGlmaWVyLCBpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4gYmxvYik7Cisg
ICAgaW50IGJpbmRCbG9iKHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIsIGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBpbnQgYmluZFRleHQodWludDY0X3Qgc3RhdGVtZW50
SWRlbnRpZmllciwgaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpOworICAgIFN0cmluZyBjb2x1
bW5CbG9iQXNTdHJpbmcodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllciwgaW50IGNvbCk7Cisg
ICAgaW50IGNvbHVtbkludCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgY29sKTsK
KyAgICBTdHJpbmcgY29sdW1uVGV4dCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQg
Y29sKTsKKyAgICBpbnQgcmVzZXRTdGF0ZW1lbnQodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmll
cik7CisgICAgaW50IHN0ZXBTdGF0ZW1lbnQodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllcik7
CisgICAgdm9pZCBkZXN0cm95U3RhdGVtZW50KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIp
OworCisgICAgLy8gVHJhbnNhY3Rpb24gb3BlcmF0aW9ucy4KKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3JlYXRlVHJhbnNhY3Rp
b25BbmRCZWdpbigpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHJvbGxiYWNrVHJhbnNhY3Rpb24odWludDY0X3Qg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBib29sIGlzT25nb2luZ1RyYW5zYWN0aW9uKHVp
bnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRDb21taXRUcmFu
c2FjdGlvbkF0Q2xvc2UpOworICAgIGJvb2wgb3BlbigpOworICAgIHZvaWQgY2xvc2UoKTsKKyAg
ICB2b2lkIGJlZ2luQWN0aXZpdHkoKTsKKyAgICB2b2lkIGVuZEFjdGl2aXR5KCk7CisgICAgYm9v
bCBlbmFibGVFeHRlbmRlZFJlc3VsdENvZGUoKTsKKyAgICBib29sIGVuYWJsZUluTWVtb3J5VGVt
cFN0b3JlKCk7CisgICAgYm9vbCBlbmFibGVXQUxKb3VybmFsTW9kZSgpOworICAgIGludCBwYWdl
U2l6ZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGNyZWF0ZUludGVybmFsU3RhdGVt
ZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHF1ZXJ5KTsKKyAgICB2b2lkIGRlc3Ryb3lJbnRlcm5h
bFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGZpZXIpOworICAgIHNxbGl0ZTNfc3RtdCogZmluZFNR
TGl0ZVN0YXRlbWVudCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyKSBjb25zdDsKKworICAg
IFN0cmluZyBtX3BhdGg7CisgICAgYm9vbCBtX3Nob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9z
ZTsKKyAgICBMb2NrIG1fbG9jazsKKyAgICBzdHJ1Y3QgSW50ZXJuYWxTdGF0ZW1lbnQgeworICAg
ICAgICB1aW50NjRfdCBpZGVudGlmaWVyOworICAgICAgICBzcWxpdGUzX3N0bXQqIHNxbGl0ZVN0
YXRlbWVudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdHJhbnNhY3Rpb25JZGVu
dGlmaWVyOworICAgIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwgSW50ZXJuYWxTdGF0ZW1lbnQ+
IG1fc3RhdGVtZW50cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CisgICAgc3FsaXRlMyog
bV9zcWxpdGVDb25uZWN0aW9uICBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBudWxscHRy
IH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVu
dGlmaWVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBib29sIG1faXNBY3RpdmUg
V1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzOTlkZTZjMzg4OTFmYjc1Nzgw
ZTEwMTczYWJhZTUwNmFiMmMxNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwCkBAIC0wLDAgKzEsODQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQuaCIKKworI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudChTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVp
bnQ2NF90IGlkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAs
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dDo6flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmRlc3Ry
b3lTdGF0ZW1lbnQobV9pZGVudGlmaWVyKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4gYmxvYikKK3sKKyAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLT5iaW5kQmxvYihtX2lkZW50aWZpZXIsIGluZGV4LCBibG9i
KTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5iaW5kQmxv
YihtX2lkZW50aWZpZXIsIGluZGV4LCB0ZXh0KTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50OjpiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCkKK3sKKyAgICByZXR1
cm4gbV9jb25uZWN0aW9uLT5iaW5kVGV4dChtX2lkZW50aWZpZXIsIGluZGV4LCB0ZXh0KTsKK30K
KworU3RyaW5nIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5CbG9iQXNTdHJpbmcoaW50
IGNvbCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5jb2x1bW5CbG9iQXNTdHJpbmcobV9p
ZGVudGlmaWVyLCBjb2wpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNvbHVt
bkludChpbnQgY29sKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNvbHVtbkludChtX2lk
ZW50aWZpZXIsIGNvbCk7Cit9CisKK1N0cmluZyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6Y29s
dW1uVGV4dChpbnQgY29sKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNvbHVtblRleHQo
bV9pZGVudGlmaWVyLCBjb2wpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OnJl
c2V0KCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5yZXNldFN0YXRlbWVudChtX2lkZW50
aWZpZXIpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OnN0ZXAoKQoreworICAg
IHJldHVybiBtX2Nvbm5lY3Rpb24tPnN0ZXBTdGF0ZW1lbnQobV9pZGVudGlmaWVyKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTdlOTA5MGQyZjUy
NzhiMDRjYTFjNzk5MTljNzQ3OGM0ZmJiZjUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmgKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b247CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50IDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQpOwor
cHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRhYmFzZVN0YXRlbWVudCgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kQmxvYihpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWlu
dDhfdD4gYmxvYik7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZFRleHQoaW50
IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb2x1
bW5CbG9iQXNTdHJpbmcoaW50IGNvbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvbHVtbklu
dChpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29sdW1uVGV4dChpbnQgY29s
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgc3RlcCgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb247CisgICAgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQoU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uJiwgdWludDY0X3QgaWRlbnRpZmllcik7CisKKyAgICBSZWY8U1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFkZTIwZDlmMDY0MWUzOWMyMjE3YWJjNmJjNTgwMjJhMzM5MzRmZWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnRSZXNldFNjb3BlLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDsKKworY2xhc3Mg
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUpOworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50UmVzZXRTY29wZShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCogc3RhdGVtZW50KQorICAgICAg
ICA6IG1fc3RhdGVtZW50KHN0YXRlbWVudCkKKyAgICB7CisgICAgfQorCisgICAgflNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSgpCisgICAgeworICAgICAgICBpZiAobV9zdGF0ZW1l
bnQpCisgICAgICAgICAgICBtX3N0YXRlbWVudC0+cmVzZXQoKTsKKyAgICB9CisKKyAgICBTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUoU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNl
dFNjb3BlJiYgb3RoZXIpCisgICAgICAgIDogbV9zdGF0ZW1lbnQob3RoZXIubV9zdGF0ZW1lbnQu
Z2V0KCkpCisgICAgeworICAgICAgICBvdGhlci5tX3N0YXRlbWVudCA9IG51bGxwdHI7CisgICAg
fQorCisgICAgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlJiBvcGVyYXRvcj0oU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlJiYgb3RoZXIpCisgICAgeworICAgICAgICBz
dGQ6OnN3YXAobV9zdGF0ZW1lbnQsIG90aGVyLm1fc3RhdGVtZW50KTsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAhIW1fc3RhdGVtZW50OyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhbV9zdGF0ZW1lbnQ7IH0KKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCogZ2V0KCkgeyBy
ZXR1cm4gbV9zdGF0ZW1lbnQuZ2V0KCk7IH0KKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCog
b3BlcmF0b3ItPigpIHsgcmV0dXJuIG1fc3RhdGVtZW50LmdldCgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgV2Vha1B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4gbV9zdGF0ZW1lbnQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDY4
YTg3MWU5NGYwYzM4Yzc1OGI1Y2Y1NTdiY2IwODI2ZGIyZGI0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgorCisjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0YWJh
c2VUcmFuc2FjdGlvbjo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5l
Y3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQor
CitTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjp+U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbigp
Cit7CisgICAgbV9jb25uZWN0aW9uLT5yb2xsYmFja1RyYW5zYWN0aW9uKG1faWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y29tbWl0KCkKK3sKKyAgICBt
X2Nvbm5lY3Rpb24tPmNvbW1pdFRyYW5zYWN0aW9uKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQoreworICAgIG1fY29ubmVjdGlv
bi0+cm9sbGJhY2tUcmFuc2FjdGlvbihtX2lkZW50aWZpZXIpOworfQorCitib29sIFNRTGl0ZURh
dGFiYXNlVHJhbnNhY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0aW9uKCkKK3sKKyAgICByZXR1cm4g
bV9jb25uZWN0aW9uLT5pc09uZ29pbmdUcmFuc2FjdGlvbihtX2lkZW50aWZpZXIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTAyOTNlMmJm
YjhkMmQ3MmU0ZTg1YzZiMzg3OTkzODJiMjNiMDk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaApAQCAtMCww
ICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjsKKworY2xhc3MgU1FMaXRl
RGF0YWJhc2VUcmFuc2FjdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbik7CitwdWJsaWM6
CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24oKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcm9s
bGJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzT25nb2luZ1RyYW5zYWN0aW9uKCk7
CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjsK
KyAgICBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYs
IHVpbnQ2NF90IGlkZW50aWZpZXIpOworCisgICAgUmVmPFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCBjYzkyOTBiNjYyODliZjY3OTgxZmI3ZTcwMGE0ZmYxYWNk
MmJhY2ZhLi5hMTM2YjhjOTdkMzA1Y2ZkZDU0ZTU2MzQ5ZDI2NzVjMmM1YWYyMzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTIs
NiArNTIsNyBAQAogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIgogI2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIK
KyNpbmNsdWRlICJTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmgiCiAjaW5jbHVkZSAiU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1
cy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCkBAIC03OSw2ICs4MCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRh
Lmg+CkBAIC0xNTksNyArMTYxLDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1
eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICAgICAsIG1f
bmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKnRoaXMpCiAjZW5kaWYKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgICwgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIoW3RoaXNdKGJv
b2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoaXNIb2xk
aW5nTG9ja2VkRmlsZXMpOyB9KQorICAgICwgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIoW10o
Ym9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykgeyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tl
cjo6c2luZ2xldG9uKCkuc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoaXNIb2xkaW5nTG9ja2VkRmls
ZXMpOyB9KQogI2VuZGlmCiAgICAgLCBtX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KGNyZWF0
ZU1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCp0aGlzKSkKIHsKQEAgLTE3Nyw2ICsxNzksMTIg
QEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICAgICBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6Om5ldHdvcmtQcm9jZXNzQ3JlYXRlZCgqdGhpcyk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNpbmdsZXRv
bigpLnNldEltcGwoW10geworICAgICAgICByZXR1cm4gU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhv
bGRlcjo6Y3JlYXRlKCk7CisgICAgfSk7CisjZW5kaWYKKwogICAgIE5ldHdvcmtTdGF0ZU5vdGlm
aWVyOjpzaW5nbGV0b24oKS5hZGRMaXN0ZW5lcihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fV0oYm9vbCBpc09uTGluZSkgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CmluZGV4IDJmNThjZDA3ODU0OThiMDVlMDk5MGQ1ODViOTA3Y2VjZTdhZGVjOGIuLmRiYmIxZGFl
ZTQzNzU0ZGFjYTg1Nzk1OTVjYmNkZTE3ZmY2YThmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQ3MSwxMCArNDcxLDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKSBj
b25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJp
bmcmKSBjb25zdDsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBzZXRJc0hv
bGRpbmdMb2NrZWRGaWxlcyhib29sKTsKLSNlbmRpZgotCiAgICAgLy8gQ29ubmVjdGlvbnMgdG8g
V2ViUHJvY2Vzc2VzLgogICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFJl
ZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
OwogCkBAIC01MDcsNyArNTAzLDYgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyOwotICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNz
ZXJ0aW9uOwogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCmluZGV4
IDgyN2RkZjZlY2Y0ZDkyOTFlMGJmZjc0ZmE1ZWJiODE3YjdkY2ZmZDcuLjViN2MxODU1YzhiNmNh
Mjg0YTljMzUwYWRlZWIxNWVhN2Y2ZDQ2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCkBAIC05NSwyMSArOTUsNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJy
aWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaQogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29s
IGlzSG9sZGluZ0xvY2tlZEZpbGVzKQotewotICAgIGlmICghaXNIb2xkaW5nTG9ja2VkRmlsZXMp
IHsKLSAgICAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IG51bGxwdHI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlv
biAmJiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9u
IHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0
IHN1c3BlbmRlZAotICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQgZmlsZS4gV2Ugd291bGQg
Z2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQgZmlsZXMuCi0gICAg
bV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShn
ZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQg
ZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrSW50ZXJydXB0YWJsZSwg
UHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCmlu
ZGV4IDEwZWMyMDc2ODUxNDU4Y2VmMTYxOTBlZjFiOTE2NmQyZjBhNDRlNDEuLjEyMzIwOTAxYTky
MzM0MzNjNDIwNTk5YTNmMjVhOTc4MWNkZDQ1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcApAQCAt
MjcsOSArMjcsOSBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0b3JhZ2VBcmVhLmgiCiAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRl
U3RhdGVtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjppc0VtcHR5KCkKIAogICAgIGF1
dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkNvdW50SXRlbXMp
OwogICAgIGlmICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVh
Ojppc0VtcHR5IGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0
YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0eSBm
YWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0
RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC0xMjgsMjEgKzEyOCwyMSBAQCBib29sIFNRTGl0ZVN0b3JhZ2VB
cmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KCkKICAgICBpZiAoIW1fZGF0YWJhc2UpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLT50
YWJsZVNRTCgiSXRlbVRhYmxlIl9zKTsKKyAgICBTdHJpbmcgc3RhdGVtZW50ID0gbV9kYXRhYmFz
ZS0+dGFibGVDcmVhdGlvblF1ZXJ5KCJJdGVtVGFibGUiX3MpOwogICAgIGlmIChzdGF0ZW1lbnQg
PT0gY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50IHx8IHN0YXRlbWVudCA9PSBjcmVhdGVJdGVtVGFi
bGVTdGF0ZW1lbnRBbHRlcm5hdGl2ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBU
YWJsZSBleGlzdHMgYnV0IHN0YXRlbWVudCBpcyB3cm9uZzsgZHJvcCBpdC4KICAgICBpZiAoIXN0
YXRlbWVudC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKCFtX2RhdGFiYXNlLT5leGVjdXRlQ29t
bWFuZCgiRFJPUCBUQUJMRSBJdGVtVGFibGUiX3MpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3Nh
cnkgZmFpbGVkIHRvIGRyb3AgZXhpc3RpbmcgaXRlbSB0YWJsZSAoJWQpIC0gJXMiLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBp
ZiAoIW1fZGF0YWJhc2UtPmV4ZWN1dGUoIkRST1AgVEFCTEUgSXRlbVRhYmxlIl9zKSkgeworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpj
cmVhdGVUYWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIGV4aXN0aW5nIGl0ZW0gdGFibGUg
KCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJv
ck1lc3NhZ2UoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICAvLyBUYWJsZSBkb2VzIG5vdCBleGlzdC4KLSAgICBpZiAoIW1fZGF0YWJhc2UtPmV4
ZWN1dGVDb21tYW5kKGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudCkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVj
ZXNzYXJ5IGZhaWxlZCB0byBjcmVhdGUgaXRlbSB0YWJsZSAoJWQpIC0gJXMiLCBtX2RhdGFiYXNl
LT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgIGlmICghbV9k
YXRhYmFzZS0+ZXhlY3V0ZShjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQpKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJ
Zk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIGl0ZW0gdGFibGUgKCVkKSAtICVzIiwgbV9kYXRh
YmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE1OCwxNyArMTU4LDEyIEBAIGJvb2wgU1FM
aXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZShTaG91bGRDcmVhdGVJZk5vdEV4aXN0cyBz
aG91bGRDcmVhdGVJZk5vCiAgICAgaWYgKHNob3VsZENyZWF0ZUlmTm90RXhpc3RzID09IFNob3Vs
ZENyZWF0ZUlmTm90RXhpc3RzOjpObyAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BhdGgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlPigpOwogICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKG1fcGF0aCkpOwotICAgIGlmICghbV9kYXRhYmFz
ZS0+b3BlbihtX3BhdGgpKSB7CisgICAgbV9kYXRhYmFzZSA9IFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6Y3JlYXRlKG1fcGF0aCwgdHJ1ZSkucHRyKCk7CisgICAgaWYgKCFtX2Rh
dGFiYXNlLT5pc09wZW4oKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAi
U1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZSBmYWlsZWQgdG8gb3BlbiBkYXRhYmFz
ZSBhdCAnJXMnIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBtX2RhdGFiYXNlID0g
bnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAgICAgCi0gICAgLy8g
U2luY2UgYSBXb3JrUXVldWUgaXNuJ3QgYm91bmQgdG8gYSBzcGVjaWZpYyB0aHJlYWQsIHdlIG5l
ZWQgdG8gZGlzYWJsZSB0aHJlYWRpbmcgY2hlY2suCi0gICAgLy8gV2Ugd2lsbCBuZXZlciBhY2Nl
c3MgdGhlIGRhdGFiYXNlIGZyb20gZGlmZmVyZW50IHRocmVhZHMgc2ltdWx0YW5lb3VzbHkuCi0g
ICAgbV9kYXRhYmFzZS0+ZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwogCiAgICAgaWYgKCFjcmVh
dGVUYWJsZUlmTmVjZXNzYXJ5KCkpIHsKICAgICAgICAgbV9kYXRhYmFzZSA9IG51bGxwdHI7CkBA
IC0xODQsMTEgKzE3OSwxMCBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjpwcmVwYXJlRGF0YWJh
c2UoU2hvdWxkQ3JlYXRlSWZOb3RFeGlzdHMgc2hvdWxkQ3JlYXRlSWZObwogdm9pZCBTUUxpdGVT
dG9yYWdlQXJlYTo6c3RhcnRUcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAoIW1f
dHJhbnNhY3Rpb24pCi0gICAgICAgIG1fdHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6
OlNRTGl0ZVRyYW5zYWN0aW9uPigqbV9kYXRhYmFzZSk7Ci0KLSAgICBpZiAobV90cmFuc2FjdGlv
bi0+aW5Qcm9ncmVzcygpKQorICAgICAgICBtX3RyYW5zYWN0aW9uID0gbV9kYXRhYmFzZS0+Y3Jl
YXRlVHJhbnNhY3Rpb25BbmRCZWdpbigpOworICAgIAorICAgIGlmICghbV90cmFuc2FjdGlvbikK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fdHJhbnNhY3Rpb24tPmJlZ2luKCk7CiAKICAgICBtX3F1
ZXVlLT5kaXNwYXRjaEFmdGVyKHRyYW5zYWN0aW9uRHVyYXRpb24sIFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKQEAgLTE5NiwxOCArMTkwLDE2
IEBAIHZvaWQgU1FMaXRlU3RvcmFnZUFyZWE6OnN0YXJ0VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgp
CiAgICAgfSk7CiB9CiAKLVdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIFNR
TGl0ZVN0b3JhZ2VBcmVhOjpjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZSB0eXBlKQorV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlIFNRTGl0ZVN0b3JhZ2VBcmVh
OjpjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZSB0eXBlKQogewogICAgIEFTU0VSVChtX2Rh
dGFiYXNlKTsKICAgICBBU1NFUlQodHlwZSA8IFN0YXRlbWVudFR5cGU6OkludmFsaWQpOwogCiAg
ICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHR5cGUpOwotICAgIGlmICghbV9j
YWNoZWRTdGF0ZW1lbnRzW2luZGV4XSkgewotICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBtX2Rh
dGFiYXNlLT5wcmVwYXJlSGVhcFN0YXRlbWVudChzdGF0ZW1lbnRTdHJpbmcodHlwZSkpKQotICAg
ICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XSA9IHJlc3VsdC52YWx1ZSgpLm1vdmVU
b1VuaXF1ZVB0cigpOwotICAgIH0KKyAgICBpZiAoIW1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0p
CisgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0gPSBtX2RhdGFiYXNlLT5jcmVhdGVT
dGF0ZW1lbnRBbmRQcmVwYXJlKHN0YXRlbWVudFN0cmluZyh0eXBlKSk7CiAKLSAgICByZXR1cm4g
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgeyBtX2NhY2hlZFN0YXRlbWVu
dHNbaW5kZXhdLmdldCgpIH07CisgICAgcmV0dXJuIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50UmVzZXRTY29wZSB7IG1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0uZ2V0KCkgfTsKIH0K
IAogRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJ
dGVtKGNvbnN0IFN0cmluZyYga2V5KQpAQCAtMjM0LDcgKzIyNiw3IEBAIEV4cGVjdGVkPFN0cmlu
ZywgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZShj
b25zdCBTdHJpCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1l
bnRUeXBlOjpHZXRJdGVtKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPmJpbmRU
ZXh0KDEsIGtleSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0
ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0
ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0
ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0
ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxh
c3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdl
RXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTI0Miw3ICsyMzQsNyBAQCBFeHBlY3RlZDxT
dHJpbmcsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJh
c2UoY29uc3QgU3RyaQogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykKICAgICAgICAgcmV0
dXJuIHN0YXRlbWVudC0+Y29sdW1uQmxvYkFzU3RyaW5nKDApOwogICAgIGlmIChyZXN1bHQgIT0g
U1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0
ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxlZCBvbiBzdGVwcGluZyBzdGF0
ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0
ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxlZCBvbiBzdGVwcGluZyBzdGF0
ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxh
c3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdl
RXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTI3NCw3ICsyNjYsNyBAQCBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiBTUUxpdGVTdG9yYWdlQXJlYTo6YWxsSXRlbXMoKQogICAgIC8vIEltcG9y
dCBmcm9tIGRhdGFiYXNlLgogICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0
YXRlbWVudFR5cGU6OkdldEFsbEl0ZW1zKTsKICAgICBpZiAoIXN0YXRlbWVudCkgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmdldEFsbEl0
ZW1zIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+
bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRBbGxJdGVtcyBmYWls
ZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJv
cigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApAQCAtMjkyLDcgKzI4NCw3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFNR
TGl0ZVN0b3JhZ2VBcmVhOjphbGxJdGVtcygpCiAgICAgfQogCiAgICAgaWYgKHJlc3VsdCAhPSBT
UUxJVEVfRE9ORSkKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0
b3JhZ2VBcmVhOjpnZXRBbGxJdGVtcyBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQp
IC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNn
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFy
ZWE6OmdldEFsbEl0ZW1zIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIs
IG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkp
OwogCiAgICAgcmV0dXJuIGl0ZW1zOwogfQpAQCAtMzExLDcgKzMwMyw3IEBAIEV4cGVjdGVkPHZv
aWQsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0ZW0oSVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0
ZW1lbnRUeXBlOjpTZXRJdGVtKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPmJp
bmRUZXh0KDEsIGtleSkgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigyLCB2YWx1ZSkpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVt
IGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtIGZhaWxlZCBvbiBj
cmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTMxOSw3ICszMTEsNyBA
QCBFeHBlY3RlZDx2b2lkLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVt
KElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSQogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX0ZVTEwp
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OlF1b3RhRXhjZWVk
ZWQpOwogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtIGZhaWxlZCBvbiBz
dGVwcGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3Rv
cmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtIGZhaWxlZCBvbiBzdGVwcGluZyBzdGF0
ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxh
c3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdl
RXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTM1MCw3ICszNDIsNyBAQCBFeHBlY3RlZDx2
b2lkLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKElQQzo6Q29u
bmVjdGlvbjo6VW5pcQogCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0ZW1lbnQoU3Rh
dGVtZW50VHlwZTo6RGVsZXRlSXRlbSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50
LT5iaW5kVGV4dCgxLCBrZXkpIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6
cmVtb3ZlSXRlbSBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2Rh
dGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OnJlbW92ZUl0
ZW0gZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+
bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAg
LTM4MSw3ICszNzMsNyBAQCBFeHBlY3RlZDx2b2lkLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3Jh
Z2VBcmVhOjpjbGVhcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlECiAgICAgc3RhcnRUcmFuc2Fj
dGlvbklmTmVjZXNzYXJ5KCk7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0ZW1lbnQo
U3RhdGVtZW50VHlwZTo6RGVsZXRlQWxsSXRlbXMpOwogICAgIGlmICghc3RhdGVtZW50IHx8IHN0
YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y2xlYXIgZmFpbGVkIG9uIGV4ZWN1dGlu
ZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJh
c2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwg
IlNRTGl0ZVN0b3JhZ2VBcmVhOjpjbGVhciBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAo
JWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
TWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6
RGF0YWJhc2UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuaAppbmRleCA1MmNjOWQ2MGU3ZTVhNTM5
MWZjOGM0ODNmYjY4YzI5MDM2MDk3MTYwLi42MjYzZjBmNWViNmNjZTA1YWYzMjI2MTk3NWM3ZTIw
OWMzMjFiOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvU1FMaXRlU3RvcmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuaApAQCAtMjYsOCArMjYsOCBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJTdG9yYWdlQXJlYUJhc2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NR
TGl0ZURhdGFiYXNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVz
ZXRTY29wZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTY2LDE2ICs2NiwxNiBAQCBwcml2YXRlOgogICAg
ICAgICBJbnZhbGlkCiAgICAgfTsKICAgICBBU0NJSUxpdGVyYWwgc3RhdGVtZW50U3RyaW5nKFN0
YXRlbWVudFR5cGUpIGNvbnN0OwotICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNl
dFNjb3BlIGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlKTsKKyAgICBXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5
cGUpOwogICAgIEV4cGVjdGVkPFN0cmluZywgU3RvcmFnZUVycm9yPiBnZXRJdGVtKGNvbnN0IFN0
cmluZyYga2V5KTsKICAgICBFeHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4gZ2V0SXRlbUZy
b21EYXRhYmFzZShjb25zdCBTdHJpbmcmIGtleSk7CiAKICAgICBTdHJpbmcgbV9wYXRoOwogICAg
IFJlZjxXb3JrUXVldWU+IG1fcXVldWU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4+IG1fY2FjaGVkU3RhdGVtZW50czsKICAgICBz
dGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBtX2NhY2hlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1fZGF0YWJhc2U7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24+IG1fdHJhbnNh
Y3Rpb247CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudD4+IG1fY2FjaGVkU3RhdGVtZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2Vy
dGlvbkhvbGRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0
aW9uSG9sZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDZmNWU4NjljMjI1MmM3MjIwZWMzNTA3NmVhZTkx
ZmY5MzFjMzkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9s
ZGVyLmgiCisKKyNpbmNsdWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUmVmPFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI+IFNRTGl0ZVByb2Nlc3NBc3NlcnRp
b25Ib2xkZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1FMaXRlUHJv
Y2Vzc0Fzc2VydGlvbkhvbGRlcik7Cit9CisKK3ZvaWQgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhv
bGRlcjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpCit7CisgICAgbV9pc1BlcmZvcm1pbmdBY3Rp
dml0aWVzID0gdHJ1ZTsKKyAgICBlbnN1cmVBc3NlcnRpb24oKTsKK30KKwordm9pZCBTUUxpdGVQ
cm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpkaWRFbmRMYXN0QWN0aXZpdHkoKQoreworICAgIG1faXNQ
ZXJmb3JtaW5nQWN0aXZpdGllcyA9IGZhbHNlOworICAgIHJlbGVhc2VBc3NlcnRpb24oKTsKK30K
Kwordm9pZCBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpzZXRJc0hvbGRpbmdMb2NrZWRG
aWxlcyhib29sIHZhbHVlKQoreworICAgIG1faXNIb2xkaW5nTG9ja2VkRmlsZXMgPSB2YWx1ZTsK
KyAgICBpZiAobV9pc0hvbGRpbmdMb2NrZWRGaWxlcykKKyAgICAgICAgZW5zdXJlQXNzZXJ0aW9u
KCk7CisgICAgZWxzZQorICAgICAgICByZWxlYXNlQXNzZXJ0aW9uKCk7Cit9CisKK3ZvaWQgU1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6ZW5zdXJlQXNzZXJ0aW9uKCkKK3sKKyAgICBpZiAo
bV9hc3NlcnRpb24gJiYgbV9hc3NlcnRpb24tPmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9hc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpjcmVhdGUoZ2V0Q3VycmVudFBy
b2Nlc3NJRCgpLCAiTmV0d29yayBQcm9jZXNzIGlzIGhvbGRpbmcgZGF0YWJhc2UgbG9jayJfcywg
UHJvY2Vzc0Fzc2VydGlvblR5cGU6OkZpbmlzaFRhc2tJbnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNz
ZXJ0aW9uOjpNb2RlOjpTeW5jKTsKKyAgICBtX2Fzc2VydGlvbi0+c2V0SW52YWxpZGF0aW9uSGFu
ZGxlcihbXSB7CisgICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAgICAgICBXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuaW52YWxpZGF0
ZUFsbEFjdGl2aXRpZXMoKTsKKyAgICB9KTsKK30KKwordm9pZCBTUUxpdGVQcm9jZXNzQXNzZXJ0
aW9uSG9sZGVyOjpyZWxlYXNlQXNzZXJ0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNIb2xkaW5nTG9j
a2VkRmlsZXMgJiYgIW1faXNQZXJmb3JtaW5nQWN0aXZpdGllcykKKyAgICAgICAgbV9hc3NlcnRp
b24gPSBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYmFhYWZiOTFlODRkZWYzMWNkM2FmOWFlODZkMjQ4OTNmODk5YzBhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5o
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlByb2Nlc3NBc3NlcnRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlQWN0
aXZpdHlUcmFja2VySW1wbC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUHJvY2Vz
c0Fzc2VydGlvbjsKKworY2xhc3MgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlciA6IHB1Ymxp
YyBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcj4gY3JlYXRlKCk7Cisg
ICAgdm9pZCB3aWxsQmVnaW5GaXJzdEFjdGl2aXR5KCkgZmluYWw7CisgICAgdm9pZCBkaWRFbmRM
YXN0QWN0aXZpdHkoKSBmaW5hbDsKKyAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJv
b2wgdmFsdWUpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQXNzZXJ0aW9uKCk7
CisgICAgdm9pZCByZWxlYXNlQXNzZXJ0aW9uKCk7CisKKyAgICBib29sIG1faXNQZXJmb3JtaW5n
QWN0aXZpdGllcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSG9sZGluZ0xvY2tlZEZpbGVzIHsg
ZmFsc2UgfTsKKyAgICBSZWZQdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9hc3NlcnRpb247Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCmlu
ZGV4IGEzZmJiNzYwZTc3NjA0MDc4ZDhlNTBjMTRjZGQ3ZDdjZWE2ZWI2ZDMuLjMxYThmMWJlMTQ1
NWNhYzg0YzYzYmI2ZDQzZGZjMTQ4NGJlNTRhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVh
ZGVyLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oPgogI2luY2x1ZGUgPHBhbC9jb2NvYS9NZWRpYVRvb2xib3hTb2Z0TGluay5o
PgogCiBXVEZfREVDTEFSRV9DRl9UWVBFX1RSQUlUKE1UUGx1Z2luRm9ybWF0UmVhZGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IGJlYzFhM2YxMzRlMmRkMzkyMzYxMjc1MmE4OWQ4ODE1NzllMjBmODQuLjlh
YmNiMjA1OTNhMjM4ZmE0Y2RhZmVlM2I1MGJjMjliMTE4MTNkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
MjM5LDYgKzIzOSw3IEBAIFNoYXJlZC9QcmludEluZm8uY3BwCiBTaGFyZWQvUlRDTmV0d29yay5j
cHAKIFNoYXJlZC9SVENQYWNrZXRPcHRpb25zLmNwcAogU2hhcmVkL1JlbW90ZVdvcmtlckluaXRp
YWxpemF0aW9uRGF0YS5jcHAKK1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNw
cAogU2hhcmVkL1Njcm9sbGluZ0FjY2VsZXJhdGlvbkN1cnZlLmNwcAogU2hhcmVkL1Nlc3Npb25T
dGF0ZS5jcHAKIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYWQ5YzBjNmUxMTM4ZmJlMjhk
YmIyOGVmZTA4ZWRiNDg4ZTQ1MTY2Li5mODIyNDgyMDY1NDVjYWM0ZTI4N2JjZWEwYTI4NjVlMGU4
YTM4ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE1MDEsNiArMTUwMSw3IEBACiAJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAv
KiBRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQjYzMUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLzsgfTsK
IAkJOTNCNjMxRjMyN0FCQUQ4MDAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
NjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5o
ICovOyB9OwogCQk5M0JERUIwMTE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
REVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Q1REQyMDI3REE1
NTU2MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREMUUyN0RBNTU1NTAwMTA3
Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCAqLzsgfTsKIAkJOTNENkI3NzIy
NTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2QzI1NEI4OTU4MDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLzsgfTsKIAkJOTNENkI3NzMyNTRCQjhD
NzAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3NjgyNTRCN0JDNjAwNThE
RDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oICovOyB9OwogCQk5M0Q2Qjc4
MjI1NENDQ0Y0MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
NkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKQEAgLTU0NzAsNiArNTQ3MSw4IEBACiAJCTkzQkEwNEUwMjE1MUFE
RjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQkEwNEUxMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCREVCMDAx
NzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQxRTI3REE1NTU1MDAxMDdDNzUgLyogU1FMaXRlUHJv
Y2Vzc0Fzc2VydGlvbkhvbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
UUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzRDVERDFGMjdEQTU1NTUwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9s
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZVByb2Nl
c3NBc3NlcnRpb25Ib2xkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2
Qjc2NzI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzY4
MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzY5MjU0QjdCQzYwMDU4
REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczOTEsNiArNzM5NCw4IEBACiAJCQkJODMxM0Y3RTcxRjdE
QUUwMzAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZS5oICovLAogCQkJCTgzRjk2NDRC
MUZBMEY3NjIwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5jcHAgKi8s
CiAJCQkJODNGOTY0NEMxRkEwRjc2MzAwQzQ3NzUwIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZVJl
YWRPbmx5LmggKi8sCisJCQkJOTNENUREMUYyN0RBNTU1NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nl
c3NBc3NlcnRpb25Ib2xkZXIuY3BwICovLAorCQkJCTkzRDVERDFFMjdEQTU1NTUwMDEwN0M3NSAv
KiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggKi8sCiAJCQkJMUE1RTREQTMxMkQzQkQz
RDAwOTlBMkJCIC8qIFRleHRDaGVja2VyU3RhdGUuaCAqLywKIAkJCQlGNEE3Q0U4NDI2NjdFQjRF
MDAyMjg2ODUgLyogVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0LmggKi8sCiAJCQkJN0JFMzdG
NkYyN0IxNDc1RjAwN0E2Q0QzIC8qIFRocmVhZFNhZmVPYmplY3RIZWFwLmggKi8sCkBAIC0xMzU5
MCw2ICsxMzU5NSw3IEBACiAJCQkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1NENDRDBFMDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNENkI3ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQyMDI3REE1NTU2MDAx
MDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNFNzk5REEyNzYxMjEwODAwNzQwMDhBIC8qIFNRTGl0ZVN0b3JhZ2VBcmVhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QTNGRUNBMjIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFjY2Vzc1N0
YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0
b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NTUwNDkzNjNkYzZkMmU5ZWQxZDM2
NmU0ZDU3NDYyNTI4MDI5OTFjLi5kYTdiZDgxMTQ3OTE3NjE3Njc3M2Y3NTk5OGM2MGYwNDRjZTZh
ZWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMTEgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRlIGRhdGFiYXNlIGNvbm5lY3Rp
b25zIGZvciBMb2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMgZHJvcHBlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3Jh
Z2Uvc3RvcmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWw6CisgICAgICAgICogc3RvcmFn
ZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1t
ZWRpYXRlbHkuaHRtbDoKKwogMjAyMi0wMy0xMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gVW5yZXZpZXdlZCBnYXJkZW5pbmcgYWZ0ZXIgcjI5MTE2OS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zdG9yYWdlLWNsb3Nl
LWRhdGFiYXNlLW9uLWlkbGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9z
dG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbAppbmRleCAwM2E3NmRhNWEzYWJhNmQ0
NjkzYmU4ZGI1M2U3YTBmZTJhN2FlYmU0Li5iZDE4MWQ3NGUzMTFjNTliYzk1MGVjZmFmZjhmODYz
OTUyZmY4MDM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc3Rv
cmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9kb21zdG9yYWdlL3N0b3JhZ2UtY2xvc2UtZGF0YWJhc2Utb24taWRsZS5odG1sCkBAIC0yMCw3
ICsyMCw4IEBAIGZ1bmN0aW9uIGxvYWROZXh0UGFnZSgpCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsK
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9y
YWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoMCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
ci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCgwKTsKICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRDYWNoZU1vZGVsKDApOyAvLyBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIuCiAgICAgfQog
CkBAIC00Niw3ICs0Nyw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICAgICAgbG9nKHdp
bmRvdy5sb2NhbFN0b3JhZ2VbJ2JhciddID09PSAnQkFSJyA/ICdQQVNTJyA6ICdGQUlMJyk7CiAK
ICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKDMwMCk7CisgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZh
bCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxl
SW50ZXJ2YWwoMzAwKTsKICAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0YWJh
c2VzLWltbWVkaWF0ZWx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNlcy9zdG9y
YWdlLWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVseS5odG1sCmlu
ZGV4IDRlMGE0NDZlM2U0MjM0ZGY5MWFhOWU2YWRmMjZiMDM2OGU1N2I0Y2MuLjdiMTczNjE2NmU3
MWQ1MTgzMzEwYTE5ZDAzZDc3YzllMjIyMjRmYjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0YWJhc2Vz
LWltbWVkaWF0ZWx5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9yZXNvdXJjZXMvc3Rv
cmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbApA
QCAtMiw3ICsyLDcgQEAKIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gc3dpbmdCYWNrKCkgCiAgICAg
ewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyICYmIHdpbmRvdy50ZXN0UnVubmVyLmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFi
YXNlcykgewogICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuY2xvc2VJZGxlTG9jYWxTdG9y
YWdlRGF0YWJhc2VzKCk7CiAgICAgICAgIH0KICAgICAgICAgbG9jYXRpb24uaHJlZj0nLi4vZG9t
c3RvcmFnZS9sb2NhbHN0b3JhZ2UvY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0YWJhc2VzLWlt
bWVkaWF0ZWx5Lmh0bWwnOwo=
</data>
<flag name="commit-queue"
          id="482173"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454511</attachid>
            <date>2022-03-11 14:17:35 -0800</date>
            <delta_ts>2022-03-11 14:57:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237754-20220311141734.patch</filename>
            <type>text/plain</type>
            <size>100412</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQwMzQyNzcyYzcyYThl
MzhjOGJkMTVlYjAwOTczNTk4NTdlYmRmOC4uODhhNTVmYTMwMzYzM2M1YjdhZWRiN2ZiMGM1M2E0
MTc5OWZhMDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIyLTAzLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIFNRTGl0ZSBkYXRh
YmFzZSBjb25uZWN0aW9ucyBmb3IgTG9jYWxTdG9yYWdlIHdoZW4gYXNzZXJ0aW9uIGlzIGRyb3Bw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpiZWdpbkFjdGl2aXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjplbmRBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6Y2hlY2tM
YXN0QWN0aXZpdHlUaW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI6OmludmFsaWRhdGVBbGxBY3Rpdml0aWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlckltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlckltcGw6On5TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRUcmFuc2FjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdGlhbGl6ZVNRTGl0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246On5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiZWdpbkFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5kQWN0aXZpdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppbnZhbGlkYXRlQWN0aXZpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRJc0FjdGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmlzT3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZUV4dGVuZGVkUmVz
dWx0Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVu
YWJsZUluTWVtb3J5VGVtcFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6ZW5hYmxlV0FMSm91cm5hbE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2hl
Y2twb2ludE1vZGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmV4ZWN1dGVXQUxDaGVja3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZGVzdHJveUludGVybmFs
U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
bGFzdENoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpsYXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpsYXN0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6dGFibGVDcmVhdGlvblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6cGFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJpbmRCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmluZFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5CbG9iQXNTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5JbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5UZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVzZXRTdGF0
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzdGVw
U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
ZGVzdHJveVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppc09uZ29pbmdUcmFuc2Fj
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aW5N
ZW1vcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
cGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OldURl9HVUFSREVEX0JZX0xPQ0spOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVN0YXRlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6Y29sdW1uQmxvYkFzU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5JbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtblRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpzdGVwKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6U1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVz
ZXRTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0
U2NvcGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudFJlc2V0U2NvcGU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVyYXRvciEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVy
YXRvci0+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bjo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uOjp+U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpjb21taXQpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6cm9sbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmg6IEFk
ZGVkLgorCiAyMDIyLTAzLTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciAtW1VJVGV4dElucHV0IHJlbW92ZUVt
b2ppQWx0ZXJuYXRpdmVzXSBvbiBXS0NvbnRlbnRWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVkZDBlM2JkNDBj
MDA0NGY0MWJmYTE4N2Q1ZmIwNDRkMWYxNzFjOGIuLjYxNzQ1YTk2NDUwOWZkNmQ0YTBjYzdhMWJk
MzVlNjI1ZTQ3N2Q3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTEgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRlIGRh
dGFiYXNlIGNvbm5lY3Rpb25zIGZvciBMb2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMgZHJv
cHBlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Om1fbWVzc2FnZVBv
cnRDaGFubmVsUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3Rv
cmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0
eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0
aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6Y2Fj
aGVkU3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0
ZW1Gcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6YWxs
SXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKToKKyAgICAgICAg
KFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmg6CisgICAgICAgICogU2hhcmVkL1NRTGl0
ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSk6CisgICAg
ICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVuZExhc3RBY3Rp
dml0eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OnNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fz
c2VydGlvbkhvbGRlcjo6ZW5zdXJlQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6cmVsZWFzZUFzc2VydGlvbik6CisgICAgICAgICogU2hh
cmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaDogQWRkZWQuCisgICAgICAgICogU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKIDIwMjItMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBEZWxheSByZXNwb25zaXZlbmVzcyBjaGVja3MgZm9yIHRoZSBOZXR3b3JrIFByb2Nlc3Mg
dW50aWwgaXQgaGFzIGZpbmlzaGVkIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCA3MzY0NDJhMDhhNzQ1MDBhMzUyZjA0YzJlMTA2ZDhjNDFlN2E0ZmM1Li43NTFkMThhZTUzY2Zl
YmI4ZTY0YTZjNWQ0YWZhYjU0YzY2ZDY2MjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE3ODAs
OCArMTc4MCwxNCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAg
ICBwbGF0Zm9ybS9zcWwvU1FMVmFsdWUuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgKKyAg
ICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgKKyAgICBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgKKyAgICBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaAorICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGUuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAor
ICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgKICAgICBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggNWM3YjczZWIyMDVlMDllYzI0NmUwMTFkMGE1MDJkY2Q0YzFkY2E1MC4u
ZDUzMzkxYjJkNmUxNjYzNTg4MGM5ZmE3MTc1OWM3ZjYyMzgxZjQ1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTIyNTIsNyArMjI1MiwxMSBAQCBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50LmNwcAogcGxhdGZvcm0vbmV0d29yay9UaW1pbmdBbGxvd09yaWdpbi5jcHAKIHBsYXRm
b3JtL3NxbC9TUUxpdGVBdXRob3JpemVyLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcAorcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcAorcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAKK3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZVN0YXRlbWVudC5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKIHBsYXRm
b3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4NmJlMWIwNjYzNzBjMGYwZGY4MjA5ZDExNWEzZGQzNDQ3MzBjNmY0Li40N2E1ZjJkZjcyZmM4
YmE2Zjk1MDZiYzU2YTI1YTc0ZjFjOTMyYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDI2LDYgKzMwMjYsMTIgQEAKIAkJ
OTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU2QzlBODFD
ODkzMTI4MDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMjFENTdCM0ZF
MDBBQjg1RUEgLyogVVJMRGVjb21wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTERlY29t
cG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0Q0MzdBMzFENTdCN0UyMDBBQjg1RUEgLyogSlNNZWRpYUxpc3RDdXN0b20uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENzI2RkU3MTZEOUYy
MDQwMDNBNEU2RCAvKiBKU01lZGlhTGlzdEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDQyMjdEQkZGMEIwMDEwN0M3NSAvKiBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENUREMzgyN0RCRkYwMzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTNENURENDQyN0RCRkYwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVE
RDNBMjdEQkZGMDQwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENURENDUyN0RC
RkYwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREM0IyN0RCRkYw
NTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDQ3MjdEQkZG
MEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDNEMjdEQkZGMDgwMDEwN0M3NSAv
KiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Q1REQ0ODI3REJGRjBDMDAxMDdDNzUgLyogU1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQzRTI3REJGRjA5MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENURENDkyN0RCRkYwQzAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Q1REQzRjI3REJGRjBBMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0Q2Qjc3MDI1NEI5OEEwMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNENkI3NkYyNTRCOTAyRDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
M0Q2Qjc3MTI1NEJBQjQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZEMjU0QjhF
MUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDZCN0E4MjU1MUQ0MUYwMDU4REQz
QSAvKiBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0E2MjU1MUQzRUQwMDU4REQzQSAvKiBE
dW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI4OTksNiArMTI5MDUsMTYgQEAKIAkJOTNEMDUw
MzEyNTNBMTQ4QzAwMkEzMDcyIC8qIEFic3RyYWN0UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQWJzdHJhY3RSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDE5
NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25Pci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeGNlcHRpb25Pci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0Q1REQzNzI3REJGRjAzMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDM4MjdE
QkZGMDMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzOTI3REJGRjA0MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNENUREM0EyN0RCRkYwNDAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFu
c2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzQjI3REJGRjA1
MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29w
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzQzI3REJGRjA3MDAxMDdD
NzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0Q1REQzRDI3REJGRjA4MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQz
RTI3REJGRjA5MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlU
cmFja2VySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzRjI3REJG
RjBBMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENURENDAyN0RCRkYwQTAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3NkQyNTRCOEUxQjAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzZFMjU0QjhFMUIwMDU4
REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRDZCNzZGMjU0QjkwMkQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTgwLDkgKzE5NTk2LDE5IEBACiAJCQkJMUEyRTZF
NzgwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwICovLAogCQkJCTFBMjI0
NjQzMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5jcHAgKi8sCiAJCQkJMUEyMjQ2
NDQwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZURhdGFiYXNlLmggKi8sCisJCQkJOTNENURENDAy
N0RCRkYwQTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCAqLywK
KwkJCQk5M0Q1REQzRjI3REJGRjBBMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIuaCAqLywKKwkJCQk5M0Q1REQzRTI3REJGRjA5MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJh
c2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggKi8sCisJCQkJOTNENUREMzcyN0RCRkYwMzAwMTA3Qzc1
IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJOTNENUREM0QyN0RCRkYw
ODAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oICovLAorCQkJCTkzRDVERDND
MjdEQkZGMDcwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAgKi8sCisJCQkJ
OTNENUREMzgyN0RCRkYwMzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggKi8s
CisJCQkJOTNENUREM0IyN0RCRkYwNTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
UmVzZXRTY29wZS5oICovLAogCQkJCTdFNDc0RTFEMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVE
YXRhYmFzZVRyYWNrZXIuY3BwICovLAogCQkJCTdFNDc0RTFDMTI0OTREQzkwMDIzNTM2NCAvKiBT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaCAqLywKIAkJCQk3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQg
LyogU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8sCisJCQkJOTNENUREMzkyN0RCRkYw
NDAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwICovLAorCQkJCTkzRDVE
RDNBMjdEQkZGMDQwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi8sCiAJ
CQkJQjVBNjg0MjMwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwICovLAog
CQkJCUI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggKi8sCiAJ
CQkJMUEyMjQ2NDUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCkBA
IC0yODE3MCwxOCArMjgxOTYsMTggQEAKIAkJCQlBQTJBNUFCRDE2QTQ4NUQ1MDA5NzVBMjUgLyog
U3BlZWNoU3ludGhlc2lzLmNwcCAqLywKIAkJCQlBQTJBNUFCRTE2QTQ4NUQ1MDA5NzVBMjUgLyog
U3BlZWNoU3ludGhlc2lzLmggKi8sCiAJCQkJQUEyQTVBQkYxNkE0ODVENTAwOTc1QTI1IC8qIFNw
ZWVjaFN5bnRoZXNpcy5pZGwgKi8sCi0JCQkJQUEyQTVBQzAxNkE0ODVENTAwOTc1QTI1IC8qIFNw
ZWVjaFN5bnRoZXNpc0V2ZW50LmNwcCAqLywKLQkJCQlBQTJBNUFDMTE2QTQ4NUQ1MDA5NzVBMjUg
LyogU3BlZWNoU3ludGhlc2lzRXZlbnQuaCAqLywKLQkJCQlBQTJBNUFDMjE2QTQ4NUQ1MDA5NzVB
MjUgLyogU3BlZWNoU3ludGhlc2lzRXZlbnQuaWRsICovLAotCQkJCTI5RjgzRUM5MjdENTk0RTUw
MEUxRjBGRCAvKiBTcGVlY2hTeW50aGVzaXNFdmVudEluaXQuaCAqLywKLQkJCQkyOUY4M0VDQjI3
RDU5NTI2MDBFMUYwRkQgLyogU3BlZWNoU3ludGhlc2lzRXZlbnRJbml0LmlkbCAqLywKIAkJCQky
OUY4M0VDNjI3RDMxOTI2MDBFMUYwRkQgLyogU3BlZWNoU3ludGhlc2lzRXJyb3JDb2RlLmggKi8s
CiAJCQkJMjlGODNFQ0UyN0Q1RkE2MzAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0Vycm9yQ29k
ZS5pZGwgKi8sCiAJCQkJMjlGODNFQzQyN0QzMTVBMjAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNp
c0Vycm9yRXZlbnQuY3BwICovLAogCQkJCTI5RjgzRUMzMjdEMzE1QTIwMEUxRjBGRCAvKiBTcGVl
Y2hTeW50aGVzaXNFcnJvckV2ZW50LmggKi8sCiAJCQkJMjlGODNFQzUyN0QzMTVCODAwRTFGMEZE
IC8qIFNwZWVjaFN5bnRoZXNpc0Vycm9yRXZlbnQuaWRsICovLAotCQkJCTI5RjgzRUNGMjdENkM3
MkEwMEUxRjBGRCAvKiBTcGVlY2hTeW50aGVzaXNFcnJvckV2ZW50SW5pdC5pZGwgKi8sCiAJCQkJ
MjlGODNFRDAyN0Q2Qzg4NTAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0Vycm9yRXZlbnRJbml0
LmggKi8sCisJCQkJMjlGODNFQ0YyN0Q2QzcyQTAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0Vy
cm9yRXZlbnRJbml0LmlkbCAqLywKKwkJCQlBQTJBNUFDMDE2QTQ4NUQ1MDA5NzVBMjUgLyogU3Bl
ZWNoU3ludGhlc2lzRXZlbnQuY3BwICovLAorCQkJCUFBMkE1QUMxMTZBNDg1RDUwMDk3NUEyNSAv
KiBTcGVlY2hTeW50aGVzaXNFdmVudC5oICovLAorCQkJCUFBMkE1QUMyMTZBNDg1RDUwMDk3NUEy
NSAvKiBTcGVlY2hTeW50aGVzaXNFdmVudC5pZGwgKi8sCisJCQkJMjlGODNFQzkyN0Q1OTRFNTAw
RTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0V2ZW50SW5pdC5oICovLAorCQkJCTI5RjgzRUNCMjdE
NTk1MjYwMEUxRjBGRCAvKiBTcGVlY2hTeW50aGVzaXNFdmVudEluaXQuaWRsICovLAogCQkJCUFB
MkE1QUM0MTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwICov
LAogCQkJCUFBMkE1QUM1MTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UuaCAqLywKIAkJCQlBQTJBNUFDMzE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmlkbCAqLywKQEAgLTMzNDUyLDggKzMzNDc4LDYgQEAKIAkJCWlzYSA9IFBCWEhl
YWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAotCQkJCTY1NjU4MEY0MDlEMTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVz
LmggaW4gSGVhZGVycyAqLywKLQkJCQk2NTY1ODE1MTA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFs
dWVLZXl3b3Jkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENF
IC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2
RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5NTIw
N0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAt
MzQyMDMsNiArMzQyMjcsNyBAQAogCQkJCUE4MEU2Q0ZGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQ
cm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFGMDVGODAyNTEyNDQyRTAwNzFFNjkzIC8q
IENTU1Byb3BlcnR5QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTMxNzEzNDFGQkU3
OERCMDBGNzU4REUgLyogQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNjU2NTgwRjQwOUQxMkIyMDAwMEU2MUQ3IC8qIENTU1Byb3BlcnR5TmFtZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk0NkQzNzQ2MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ5Qzc3MDUxRDZFMzlFQTAwQzBERTRGIC8qIENT
U1Byb3BlcnR5UGFyc2VySGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ2RDM3NDYxRDZE
MDFENTAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zNDI0NSw2ICszNDI3MCw3IEBACiAJCQkJNEJBRkQwRDkyMTkyMUVBMDAwQzBBQjY0
IC8qIENTU1VucGFyc2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0VFMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNCQkMyNDcyMzgz
NTUyNjAwNkVDMzlGIC8qIENTU1ZhbHVlS2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk2NTY1ODE1
MTA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgwRTZDRTkwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ZhbHVlTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ5QkQ5RkExMzFGRDJFRDAwM0M1NkYwIC8qIENTU1ZhbHVlUG9vbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTQ0NENCRTgxRDg4NjFDMjAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlRGF0
YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDkxOCw2ICszNDk0NCw3IEBACiAJCQkJQThDRkY3QTcw
QTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NEIwMDE4OTI2RTdGMjFGMDA2RUFBQkUgLyogSFRNTE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThERjNGRDQwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxOYW1lQ29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQThEMDZCMzkwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MUQ0NUEwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxPYmpl
Y3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGMTBBMTkxNkRGMDBBOEVGNUYg
LyogSFRNTE9MaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMzY5REUwOTczNzRG
NjAwRDc0NDYzIC8qIEhUTUxPcHRHcm91cEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzU0
NjMsNiArMzU0OTAsNyBAQAogCQkJCUJDNjQ2NDk4MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0
cmluZ01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzY5NDU2M0QxMjE0RDk3QzAwMDdDQkFFIC8q
IEpTRE9NVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTM3RTAwNjEyREJDNUE0MDBB
NkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MDNCQTBGMDlFQjE4Rjkw
MDc5N0M3RiAvKiBKU0RPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdF
MjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUy
RkJCQkMwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjBDQkYzNjFENEJDRDBFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTM1Njg3LDYgKzM1NzE1LDcgQEAKIAkJCQlBOUQyNDdGODBE
NzU3RTM0MDBGREY5NTkgLyogSlNOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3RDUx
MDI1MUVENzRCNTgwMERBNEM4NyAvKiBKU05hdmlnYXRvckNyZWRlbnRpYWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUY4ODZDMDFGMzI5MjMxMDBDMTkzRUYgLyogSlNOYXZpZ2F0b3JTZXJ2aWNl
V29ya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNERDMEQzODA5RkVEMDczMDA3QjAyMzUgLyog
SlNOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk0MzlDMzExNkNGNDk0MDA0OEM3NTAgLyog
SlNOb2RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDExNUI3MzA5Rjg0Q0Q2MDBDQTRG
QzEgLyogSlNOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTc1MEQ4RTBBOTBFNTIx
MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzU4NTEsMTIg
KzM1ODgwLDYgQEAKIAkJCQlCQ0UwMTM5QjBDMEJFRjE4MDA0Mzg2MEEgLyogSlNTdHlsZVNoZWV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDcyNkZFRTE2REExMUJDMDAzQTRFNkQgLyogSlNTdHls
ZVNoZWV0Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODRFQkQ4MzBDQjhDOTc3MDAwNzk2
MDkgLyogSlNTdHlsZVNoZWV0TGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThEMDZCMzkwQTI2
NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTQwM0JBMEYw
OUVCMThGOTAwNzk3QzdGIC8qIEpTRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKLQkJCQkxNERD
MEQzODA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwOEM3
QTJDNzEwREM3NDYyMDAyRDM2OEIgLyogU1ZHTmFtZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFB
MTQxNEI2MTNBMEYwNTAwMDE5OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTdDRDU4REZCMUY5NTY1QTUwMDExMjc5MSAvKiBTZXR0aW5ncy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTcxRjIxODkxREE1N0M1NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRv
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdB
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyOTIxM0NBOTUxRTAwRDIxOTE1IC8q
IEpTU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM3MzM1LDYgKzM3
MzU4LDcgQEAKIAkJCQk0NkVGMTQyQTFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMTAwOTlFNjQ5MjAwNTZFNTgx
IC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlCOERCREI0
QzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0NENThERkIxRjk1NjVBNTAwMTEyNzkxIC8qIFNldHRpbmdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3Q0M5NzIyRTFGOTNFMzM2MDAwNEQ0Q0YgLyogU2V0dGluZ3NCYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogU0ZyYW1lVXRpbHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGM0RENDUwMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTM3NDM3LDggKzM3NDYxLDE0IEBACiAJCQkJOTdCQzZBM0Ix
NTA1RjA4MTAwMUI3NEFDIC8qIFNRTENhbGxiYWNrV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTdCQzZBM0MxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTEVycm9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTIyNDY0QTBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzRDVERDQ5MjdEQkZGMEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENURENDgyN0RCRkYwQzAwMTA3
Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNENURENDcyN0RCRkYwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENURENDIyN0RCRkYwQjAwMTA3Qzc1IC8qIFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0NTI3REJGRjBC
MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3RTQ3NEUxRjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTQ3NEUxRTEyNDk0REM5MDAyMzUzNjQgLyogU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0NDI3
REJGRjBCMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjVBNjg0MjIwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4
MyAvKiBTUUxpdGVJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzc2NjIsNiArMzc2OTIs
NyBAQAogCQkJCUIyMjI3QTRCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyQTFGMkIxMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNz
aW5nR2x5cGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E0RTBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEM3QTJDNzEw
REM3NDYyMDAyRDM2OEIgLyogU1ZHTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTU4RDUw
MURENjlBMUUwMDEyODU1MiAvKiBTVkdOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QTUxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4MTA2LDYgKzM4MTM3LDcgQEAKIAkJCQlBNTg0RkUzMDE4NjRDQjg0MDA4
NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNURGRUJBQjcxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2YWls
YWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUExNDE0QjYxM0EwRjA1MDAwMTk5OTZDIC8q
IFdlYktpdEZvbnRGYW1pbHlOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNDUxREE2
MzlCQTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRDA2MjE1MTFEQTYzQTlGMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlOZWVkZWRF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNEUxREE2M0E4RTAwQTdGQjI2IC8qIFdl
YktpdE1lZGlhS2V5cy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YjU1MGZmZmIwZGRmOWI1Y2Y3ZGFlZTcyZmY1MTc1MDA0NDk5ZGUxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
QWN0aXZpdHlUcmFja2VyLmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5o
IgorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgiCisjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlciYgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNpbmds
ZXRvbigpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlcj4gdHJhY2tlcjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFsmXSB7CisgICAgICAgIHRyYWNrZXIu
Y29uc3RydWN0KCk7CisgICAgfSk7CisgICAgcmV0dXJuIHRyYWNrZXIuZ2V0KCk7Cit9CisKK3Zv
aWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNldEltcGwoY29uc3QgU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsR2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgbV9pbXBsID0gZ2VuZXJhdG9yKCkucHRyKCk7
Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmJlZ2luQWN0aXZpdHko
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKworICAgIEFTU0VSVChtX2FjdGl2ZUNvbm5lY3Rpb25zLmNvbnRhaW5z
KGNvbm5lY3Rpb24pKTsKKworICAgIG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wID0gV2FsbFRpbWU6
Om5vdygpOworICAgIGlmIChtX2ltcGwgJiYgbV9hY3RpdmVDb25uZWN0aW9ucy5jb21wdXRlc0Vt
cHR5KCkpCisgICAgICAgIG1faW1wbC0+d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpOworCisgICAg
bV9hY3RpdmVDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7CisgICAgY29ubmVjdGlvbi5zZXRJ
c0FjdGl2ZSh0cnVlKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6
ZW5kQWN0aXZpdHkoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmIChtX2FjdGl2ZUNvbm5lY3Rpb25z
LnJlbW92ZShjb25uZWN0aW9uKSkKKyAgICAgICAgY29ubmVjdGlvbi5zZXRJc0FjdGl2ZShmYWxz
ZSk7CisKKyAgICBpZiAoIW1fYWN0aXZlQ29ubmVjdGlvbnMuY29tcHV0ZXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcCA9IFdhbGxUaW1lOjpu
b3coKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcigxX3MsIFt0aW1lc3RhbXAg
PSBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcF0geworICAgICAgICBTUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuY2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAodGltZXN0
YW1wKTsKKyAgICB9KTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6
Y2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAoV2FsbFRpbWUgdGltZXN0YW1wKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmIChtX2ltcGwgJiYgbV9sYXN0QWN0aXZp
dHlUaW1lc3RhbXAgPT0gdGltZXN0YW1wKQorICAgICAgICBtX2ltcGwtPmRpZEVuZExhc3RBY3Rp
dml0eSgpOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjppbnZhbGlk
YXRlQWxsQWN0aXZpdGllcygpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisg
ICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9hY3RpdmVDb25uZWN0aW9ucykKKyAgICAgICAg
Y29ubmVjdGlvbi5pbnZhbGlkYXRlQWN0aXZpdHkoKTsKKworICAgIG1fYWN0aXZlQ29ubmVjdGlv
bnMuY2xlYXIoKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCB2YWx1ZSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CisKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwtPnNldElzSG9sZGlu
Z0xvY2tlZEZpbGVzKHZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlU
cmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rp
dml0eVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjIxMjQ2ZDcyMzQzZDM0YjcyMmM2NTAzZTQ2MDkw
MmFiNjViZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VBY3Rpdml0
eVRyYWNrZXJJbXBsOworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlciB7Citw
dWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlU
cmFja2VyJiBzaW5nbGV0b24oKTsKKyAgICB2b2lkIGJlZ2luQWN0aXZpdHkoU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uJik7CisgICAgdm9pZCBlbmRBY3Rpdml0eShTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb24mKTsKKyAgICB1c2luZyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGxHZW5l
cmF0b3IgPSBGdW5jdGlvbjxSZWY8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsPigp
PjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltcGwoY29uc3QgU1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXJJbXBsR2VuZXJhdG9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bnZhbGlkYXRlQWxsQWN0aXZpdGllcygpOworICAgIHZvaWQgY2hlY2tMYXN0QWN0aXZpdHlUaW1l
c3RhbXAoV2FsbFRpbWUpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc0hvbGRpbmdM
b2NrZWRGaWxlcyhib29sIHZhbHVlKTsKK3ByaXZhdGU6CisgICAgTG9jayBtX2xvY2s7CisgICAg
V2FsbFRpbWUgbV9sYXN0QWN0aXZpdHlUaW1lc3RhbXA7CisgICAgV2Vha0hhc2hTZXQ8U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uPiBtX2FjdGl2ZUNvbm5lY3Rpb25zIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9sb2NrKTsKKyAgICBSZWZQdHI8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBs
PiBtX2ltcGwgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjN2M0
NDFiZTc1MmUzYzkwYWE2ZTc3OGZiNzk0OTdlM2I0OWQyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJ
bXBsLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
UUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwgOiBwdWJsaWMgUmVmQ291bnRlZDxTUUxp
dGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGw+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5T
UUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kTGFz
dEFjdGl2aXR5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyhib29sIHZhbHVlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVmOWFlZTM5YjgxYjAxODI5OTY5MDBhMGI5OTk1NzcwYzVkNjNm
ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIK
KworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlci5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmgiCisjaW5jbHVk
ZSAiU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHVpbnQ2NF90IG5leHRTdGF0ZW1l
bnRJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJl
bnRTdGF0ZW1lbnRJZGVudGlmaWVyOworICAgIHJldHVybiArK2N1cnJlbnRTdGF0ZW1lbnRJZGVu
dGlmaWVyOworfQorCitzdGF0aWMgdWludDY0X3QgbmV4dFRyYW5zYWN0aW9uSWRlbnRpZmllcigp
Cit7CisgICAgc3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50VHJhbnNhY3Rpb25J
ZGVudGlmaWVyOworICAgIHJldHVybiArK2N1cnJlbnRUcmFuc2FjdGlvbklkZW50aWZpZXI7Cit9
CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVTUUxpdGUoKQoreworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBmbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGZsYWcsIFtdIHsKKyAgICAgICAgaWYg
KGludCByZXN1bHQgPSBzcWxpdGUzX2luaXRpYWxpemUoKTsgcmVzdWx0ICE9IFNRTElURV9PSykK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNRTERhdGFiYXNlLCAiRmFpbGVkIHRvIGlu
aXRpYWxpemUgc3FsaXRlOiAlcyIsIHNxbGl0ZTNfZXJyc3RyKHJlc3VsdCkpOworICAgIH0pOwor
fQorCitSZWY8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgc2hvdWxkQ29tbWl0VHJhbnNhY3Rp
b25BdENsb3NlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbihwYXRoLCBzaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpKTsKK30KKworU1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24oY29uc3QgU3Ry
aW5nJiBwYXRoLCBib29sIHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkKKyAgICA6IG1f
cGF0aChwYXRoKQorICAgICwgbV9zaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2Uoc2hvdWxk
Q29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKQoreworICAgIGluaXRpYWxpemVTUUxpdGUoKTsKKyAg
ICBiZWdpbkFjdGl2aXR5KCk7CisKKyAgICBpZiAoIW9wZW4oKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFlbmFibGVFeHRlbmRlZFJlc3VsdENvZGUoKSB8fCAhZW5hYmxlSW5NZW1vcnlU
ZW1wU3RvcmUoKSkgeworICAgICAgICBjbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKGVuYWJsZVdBTEpvdXJuYWxNb2RlKCkpCisgICAgICAgIGV4ZWN1dGVXQUxDaGVj
a3BvaW50KENoZWNrcG9pbnRNb2RlOjpUcnVuY2F0ZSk7Cit9CisKK1NRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6flNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbigpCit7CisgICAgY2xvc2UoKTsKKyAg
ICBlbmRBY3Rpdml0eSgpOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6b3Bl
bigpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX2lzQWN0
aXZlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQg
Zm9yIGluLW1lbW9yeSBkYXRhYmFzZS4KKyAgICBpZiAobV9wYXRoID09IGluTWVtb3J5UGF0aCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgb3BlbkZsYWdzID0gU1FMSVRFX09Q
RU5fQVVUT1BST1hZIHwgU1FMSVRFX09QRU5fUkVBRFdSSVRFIHwgU1FMSVRFX09QRU5fQ1JFQVRF
OworICAgIGludCByZXN1bHQgPSBzcWxpdGUzX29wZW5fdjIoRmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKG1fcGF0aCkuZGF0YSgpLCAmbV9zcWxpdGVDb25uZWN0aW9uLCBvcGVu
RmxhZ3MsIG51bGxwdHIpOworICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX09LIHx8ICFtX3NxbGl0
ZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9zcWxpdGVDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKKworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBzcWxpdGUzX2ludGVycnVwdChtX3NxbGl0ZUNvbm5lY3Rpb24pOworCisgICAg
aWYgKCFzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVjdGlvbikpIHsKKyAgICAg
ICAgQVNDSUlMaXRlcmFsIHF1ZXJ5ID0gIlJPTExCQUNLIl9zOworICAgICAgICBpZiAobV9zaG91
bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpCisgICAgICAgICAgICBxdWVyeSA9ICJDT01NSVQi
X3M7CisgICAgICAgIHNxbGl0ZTNfc3RtdCogc3RhdGVtZW50IHsgbnVsbHB0ciB9OworICAgICAg
ICBpbnQgcmVzdWx0ID0gc3FsaXRlM19wcmVwYXJlX3YyKG1fc3FsaXRlQ29ubmVjdGlvbiwgcXVl
cnkuY2hhcmFjdGVycygpLCBxdWVyeS5sZW5ndGgoKSArIDEsICZzdGF0ZW1lbnQsIG51bGxwdHIp
OworICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9PSykKKyAgICAgICAgICAgIHJlc3VsdCA9
IHNxbGl0ZTNfc3RlcChzdGF0ZW1lbnQpOworICAgICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9E
T05FKQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246OmNsb3NlIGZhaWxlZCB0byByb2xsIGJhY2sgdHJhbnNhY3Rpb24g
KCVkKSAtICglcykiLCByZXN1bHQsIHNxbGl0ZTNfZXJybXNnKG1fc3FsaXRlQ29ubmVjdGlvbikp
OworICAgICAgICBzcWxpdGUzX3Jlc2V0KHN0YXRlbWVudCk7CisgICAgICAgIHNxbGl0ZTNfZmlu
YWxpemUoc3RhdGVtZW50KTsKKyAgICAgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVy
ID0gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogbV9z
dGF0ZW1lbnRzLnZhbHVlcygpKSB7CisgICAgICAgIHNxbGl0ZTNfcmVzZXQoc3RhdGVtZW50LnNx
bGl0ZVN0YXRlbWVudCk7CisgICAgICAgIHNxbGl0ZTNfZmluYWxpemUoc3RhdGVtZW50LnNxbGl0
ZVN0YXRlbWVudCk7CisgICAgfQorCisgICAgbV9zdGF0ZW1lbnRzLmNsZWFyKCk7CisKKyAgICBp
bnQgcmVzdWx0ID0gc3FsaXRlM19jbG9zZShtX3NxbGl0ZUNvbm5lY3Rpb24pOworICAgIGlmIChy
ZXN1bHQgIT0gU1FMSVRFX09LKQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFz
ZSwgIlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2VDb25uZWN0aW9uOiBmYWlsZWQgdG8g
Y2xvc2UgZGF0YWJhc2UgKCVkKSAtICVzIiwgcmVzdWx0LCBzcWxpdGUzX2Vycm1zZyhtX3NxbGl0
ZUNvbm5lY3Rpb24pKTsKKworICAgIG1fc3FsaXRlQ29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAg
bV9pc0FjdGl2ZSA9IGZhbHNlOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
YmVnaW5BY3Rpdml0eSgpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBTUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuYmVnaW5BY3Rpdml0eSgqdGhpcyk7
CisjZWxzZQorICAgIHNldElzQWN0aXZlKHRydWUpOworI2VuZGlmCit9CisKK3ZvaWQgU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjplbmRBY3Rpdml0eSgpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuZW5k
QWN0aXZpdHkoKnRoaXMpOworI2Vsc2UKKyAgICBzZXRJc0FjdGl2ZShmYWxzZSk7CisjZW5kaWYK
K30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmludmFsaWRhdGVBY3Rpdml0eSgp
Cit7CisgICAgY2xvc2UoKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnNl
dElzQWN0aXZlKGJvb2wgdmFsdWUpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owor
CisgICAgbV9pc0FjdGl2ZSA9IHZhbHVlOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6aXNPcGVuKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBy
ZXR1cm4gISFtX3NxbGl0ZUNvbm5lY3Rpb247Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uOjplbmFibGVFeHRlbmRlZFJlc3VsdENvZGUoKQoreworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKKyAgICByZXR1cm4gISFtX3NxbGl0ZUNvbm5lY3Rpb24gJiYgc3FsaXRlM19l
eHRlbmRlZF9yZXN1bHRfY29kZXMobV9zcWxpdGVDb25uZWN0aW9uLCAxKSA9PSBTUUxJVEVfT0s7
Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVJbk1lbW9yeVRlbXBT
dG9yZSgpCit7CisgICAgcmV0dXJuIGV4ZWN1dGUoIlBSQUdNQSB0ZW1wX3N0b3JlID0gTUVNT1JZ
Iik7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVXQUxKb3VybmFs
TW9kZSgpCit7CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0
YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyB7ICJQUkFHTUEgam91cm5hbF9tb2RlPVdBTCJf
cyB9KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXV0byBpZGVudGlmaWVyID0gKm9wdGlvbmFsSWRlbnRpZmllcjsKKyAgICBib29s
IGVuYWJsZWQgPSBmYWxzZTsKKyAgICBpZiAoc3RlcFN0YXRlbWVudChpZGVudGlmaWVyKSA9PSBT
UUxJVEVfUk9XKQorICAgICAgICBlbmFibGVkID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoY29sdW1uVGV4dChpZGVudGlmaWVyLCAwKSwgIndhbCIpOworICAgIGRlc3Ryb3lJbnRlcm5h
bFN0YXRlbWVudChpZGVudGlmaWVyKTsKKworICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgIGF1
dG8gc2htUGF0aCA9IG1ha2VTdHJpbmcobV9wYXRoLCAiLXNobSJfcyk7CisgICAgICAgIGlmIChG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKHNobVBhdGgpICYmICFGaWxlU3lzdGVtOjptYWtlU2FmZVRv
VXNlTWVtb3J5TWFwRm9yUGF0aChzaG1QYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZW5hYmxlZDsKK30KKworc3RhdGljIGludCBjaGVja3BvaW50
TW9kZVZhbHVlKFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Q2hlY2twb2ludE1vZGUgbW9kZSkK
K3sKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6Q2hlY2twb2ludE1vZGU6OkZ1bGw6CisgICAgICAgIHJldHVybiBTUUxJVEVfQ0hFQ0tQT0lO
VF9GVUxMOworICAgIGNhc2UgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpDaGVja3BvaW50TW9k
ZTo6VHJ1bmNhdGU6CisgICAgICAgIHJldHVybiBTUUxJVEVfQ0hFQ0tQT0lOVF9UUlVOQ0FURTsK
KyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OmV4ZWN1dGVXQUxDaGVja3BvaW50KENoZWNrcG9pbnRNb2Rl
IG1vZGUpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxp
dGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc3FsaXRl
M193YWxfY2hlY2twb2ludF92MihtX3NxbGl0ZUNvbm5lY3Rpb24sIG51bGxwdHIsIGNoZWNrcG9p
bnRNb2RlVmFsdWUobW9kZSksIG51bGxwdHIsIG51bGxwdHIpID09IFNRTElURV9PSzsKK30KKwor
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVJ
bnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSkKK3sKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzcWxpdGUzX3N0bXQqIHNxbGl0ZVN0YXRl
bWVudCB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBjaGFyKiB0YWlsID0gbnVsbHB0cjsKKyAgICBp
bnQgcmVzdWx0OworICAgIGlmIChxdWVyeS5pczhCaXQoKSAmJiBxdWVyeS5pc0FsbEFTQ0lJKCkp
CisgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfcHJlcGFyZV92MihtX3NxbGl0ZUNvbm5lY3Rpb24s
IHF1ZXJ5Lmxlbmd0aCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocXVlcnkuY2hh
cmFjdGVyczgoKSkgOiAiIiwgcXVlcnkubGVuZ3RoKCkgKyAxLCAmc3FsaXRlU3RhdGVtZW50LCAm
dGFpbCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBzcWxpdGUzX3ByZXBhcmVfdjIobV9z
cWxpdGVDb25uZWN0aW9uLCBxdWVyeS51dGY4KCkuZGF0YSgpLCBxdWVyeS51dGY4KCkubGVuZ3Ro
KCkgKyAxLCAmc3FsaXRlU3RhdGVtZW50LCAmdGFpbCk7CisgICAgaWYgKHRhaWwgJiYgKnRhaWwp
CisgICAgICAgIHJlc3VsdCA9IFNRTElURV9FUlJPUjsKKworICAgIGlmIChyZXN1bHQgIT0gU1FM
SVRFX09LKSB7CisgICAgICAgIHNxbGl0ZTNfZmluYWxpemUoc3FsaXRlU3RhdGVtZW50KTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIg
PSBuZXh0U3RhdGVtZW50SWRlbnRpZmllcigpOworICAgIG1fc3RhdGVtZW50cy5hZGQoaWRlbnRp
ZmllciwgSW50ZXJuYWxTdGF0ZW1lbnQgeyBpZGVudGlmaWVyLCBzcWxpdGVTdGF0ZW1lbnQsIHN0
ZDo6bnVsbG9wdCB9KTsKKworICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCit2b2lkIFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZGVzdHJveUludGVybmFsU3RhdGVtZW50KHVpbnQ2NF90IGlk
ZW50aWZpZXIpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9z
cWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBpdGVyID0g
bV9zdGF0ZW1lbnRzLmZpbmQoaWRlbnRpZmllcik7IGl0ZXIgIT0gbV9zdGF0ZW1lbnRzLmVuZCgp
KSB7CisgICAgICAgIHNxbGl0ZTNfZmluYWxpemUoaXRlci0+dmFsdWUuc3FsaXRlU3RhdGVtZW50
KTsKKyAgICAgICAgbV9zdGF0ZW1lbnRzLnJlbW92ZShpdGVyKTsKKyAgICB9Cit9CisKK2ludCBT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RDaGFuZ2VzKCkKK3sKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIHNxbGl0ZTNfY2hhbmdlcyhtX3NxbGl0ZUNvbm5lY3Rpb24p
OworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpsYXN0RXJyb3IoKQoreworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsKKworICAgIHJldHVybiBzcWxpdGUzX2VycmNv
ZGUobV9zcWxpdGVDb25uZWN0aW9uKTsKK30KKworY29uc3QgY2hhciogU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uOjpsYXN0RXJyb3JNZXNzYWdlKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiAiRGF0
YWJhc2UgY29ubmVjdGlvbiBpcyBub3Qgb3BlbiI7CisKKyAgICByZXR1cm4gc3FsaXRlM19lcnJt
c2cobV9zcWxpdGVDb25uZWN0aW9uKTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6dGFibGVDcmVhdGlvblF1ZXJ5KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQoreworICAg
IGF1dG8gb3B0aW9uYWxJZGVudGlmaWVyID0gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVw
YXJlKFN0cmluZ1ZpZXcgeyAiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlw
ZSA9ICd0YWJsZScgQU5EIG5hbWUgPSA/OyJfcyB9KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRp
b25hbElkZW50aWZpZXI7CisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBpZiAoYmluZFRleHQoaWRl
bnRpZmllciwgMSwgdGFibGVOYW1lKSA9PSBTUUxJVEVfT0sgJiYgc3RlcFN0YXRlbWVudChpZGVu
dGlmaWVyKSA9PSBTUUxJVEVfUk9XKQorICAgICAgICByZXN1bHQgPSBjb2x1bW5UZXh0KGlkZW50
aWZpZXIsIDApOworICAgIGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpl
eGVjdXRlKEFTQ0lJTGl0ZXJhbCBxdWVyeSkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZShTdHJpbmdW
aWV3IHsgcXVlcnkgfSk7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVj
dXRlKFN0cmluZ1ZpZXcgcXVlcnkpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owor
CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGludCByZXN1bHQgPSBzcWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCBxdWVyeS51
dGY4KCkuZGF0YSgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICByZXR1cm4gcmVz
dWx0ID09IFNRTElURV9PSyB8fCByZXN1bHQgPT0gU1FMSVRFX0RPTkU7Cit9CisKK3ZvaWQgU1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRNYXhpbXVtU2l6ZShpbnQ2NF90IHNpemUpCit7Cisg
ICAgaW50IGN1cnJlbnRQYWdlU2l6ZSA9IHBhZ2VTaXplKCk7CisgICAgaWYgKCFjdXJyZW50UGFn
ZVNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIGludDY0X3QgbmV3TWF4UGFnZUNvdW50ID0g
Y3VycmVudFBhZ2VTaXplID8gc2l6ZSAvIGN1cnJlbnRQYWdlU2l6ZSA6IDA7CisgICAgYXV0byBv
cHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUobWFr
ZVN0cmluZygiUFJBR01BIG1heF9wYWdlX2NvdW50ID0gIiwgbmV3TWF4UGFnZUNvdW50KSk7Cisg
ICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
aWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7CisgICAgaWYgKHN0ZXBTdGF0ZW1lbnQo
aWRlbnRpZmllcikgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplIGZhaWxlZCB0byBzZXQgbWF4aW11bSBzaXpl
IG9mIGRhdGFiYXNlIHRvICVsbGkgYnl0ZXMiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHNpemUp
KTsKKworICAgIGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKK30KKworaW50
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cGFnZVNpemUoKQoreworICAgIGF1dG8gb3B0aW9u
YWxJZGVudGlmaWVyID0gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1Zp
ZXcgeyAiUFJBR01BIHBhZ2Vfc2l6ZSJfcyB9KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRlbnRpZmll
cikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9uYWxJ
ZGVudGlmaWVyOworICAgIGludCBzaXplID0gY29sdW1uSW50KGlkZW50aWZpZXIsIDApOworICAg
IGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKKworICAgIHJldHVybiBzaXpl
OworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVsZWFzZU1lbW9yeSgpCit7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX3NxbGl0ZUNvbm5l
Y3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNfZGJfcmVsZWFzZV9tZW1vcnko
bV9zcWxpdGVDb25uZWN0aW9uKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVN0YXRlbWVudEFuZFBy
ZXBhcmUoQVNDSUlMaXRlcmFsIHF1ZXJ5KQoreworICAgIHJldHVybiBjcmVhdGVTdGF0ZW1lbnRB
bmRQcmVwYXJlKFN0cmluZ1ZpZXcgeyBxdWVyeSB9KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNR
TGl0ZURhdGFiYXNlU3RhdGVtZW50PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVN0
YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSkKK3sKKyAgICBhdXRvIG9wdGlvbmFs
SWRlbnRpZmllciA9IGNyZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShxdWVyeSk7Cisg
ICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4obmV3IFNR
TGl0ZURhdGFiYXNlU3RhdGVtZW50KCp0aGlzLCAqb3B0aW9uYWxJZGVudGlmaWVyKSk7Cit9CisK
K3NxbGl0ZTNfc3RtdCogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpmaW5kU1FMaXRlU3RhdGVt
ZW50KHVpbnQ2NF90IGlkZW50aWZpZXIpIGNvbnN0IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlf
QU5BTFlTSVMKK3sKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKKworICAgIGF1dG8gaXRl
ciA9IG1fc3RhdGVtZW50cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyID09IG1fc3Rh
dGVtZW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gaXRl
ci0+dmFsdWUuc3FsaXRlU3RhdGVtZW50OworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjpiaW5kQmxvYih1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgaW5kZXgsIFNwYW48Y29uc3Qg
dWludDhfdD4gYmxvYikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgaWYg
KCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8q
IHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAg
aWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAg
ICByZXR1cm4gc3FsaXRlM19iaW5kX2Jsb2Ioc3FsaXRlU3RhdGVtZW50LCBpbmRleCwgYmxvYi5k
YXRhKCksIGJsb2Iuc2l6ZSgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKK30KKworaW50IFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6YmluZEJsb2IodWludDY0X3QgaWRlbnRpZmllciwgaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMg
PSBTdHJpbmdWaWV3KHRleHQpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworICAgIFVDaGFyIGFu
eUNoYXJhY3RlciA9IDA7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnM7CisgICAgaWYgKHRl
eHQuaXNFbXB0eSgpICYmICF0ZXh0LmlzTnVsbCgpKQorICAgICAgICBjaGFyYWN0ZXJzID0gJmFu
eUNoYXJhY3RlcjsKKyAgICBlbHNlCisgICAgICAgIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENo
YXJhY3RlcnM7CisKKyAgICByZXR1cm4gYmluZEJsb2IoaWRlbnRpZmllciwgaW5kZXgsIFNwYW4g
eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjaGFyYWN0ZXJzKSwgdGV4dC5sZW5n
dGgoKSAqIHNpemVvZihVQ2hhcikgfSk7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmJpbmRUZXh0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBpbmRleCwgU3RyaW5nVmlldyB0
ZXh0KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0
ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFz
cWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICBpbnQg
cmVzdWx0OworICAgIGlmICh0ZXh0LmlzOEJpdCgpICYmIHRleHQuaXNBbGxBU0NJSSgpKQorICAg
ICAgICByZXN1bHQgPSBzcWxpdGUzX2JpbmRfdGV4dChzcWxpdGVTdGF0ZW1lbnQsIGluZGV4LCB0
ZXh0Lmxlbmd0aCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odGV4dC5jaGFyYWN0
ZXJzOCgpKSA6ICIiLCB0ZXh0Lmxlbmd0aCgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKKyAgICBlbHNl
CisgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfYmluZF90ZXh0KHNxbGl0ZVN0YXRlbWVudCwgaW5k
ZXgsIHRleHQudXRmOCgpLmRhdGEoKSwgdGV4dC51dGY4KCkubGVuZ3RoKCksIFNRTElURV9UUkFO
U0lFTlQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6Y29sdW1uQmxvYkFzU3RyaW5nKHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBj
b2wpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRl
U3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNx
bGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNvbnN0IHZvaWQqIGJs
b2IgPSBzcWxpdGUzX2NvbHVtbl9ibG9iKHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKKyAgICBpZiAo
IWJsb2IpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29s
dW1uX2J5dGVzKHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IFVD
aGFyKj4oYmxvYiksIHNpemUgLyBzaXplb2YoVUNoYXIpKTsKK30KKworaW50IFNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6Y29sdW1uSW50KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBjb2wpCit7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVt
ZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0
YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3FsaXRlM19jb2x1bW5f
aW50KHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6Y29sdW1uVGV4dCh1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgY29sKQoreworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9
IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1l
bnQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChz
cWxpdGUzX2NvbHVtbl90ZXh0KHNxbGl0ZVN0YXRlbWVudCwgY29sKSwgc3FsaXRlM19jb2x1bW5f
Ynl0ZXMoc3FsaXRlU3RhdGVtZW50LCBjb2wpKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6cmVzZXRTdGF0ZW1lbnQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5k
U1FMaXRlU3RhdGVtZW50KGlkZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3RhdGVtZW50KQor
ICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNf
cmVzZXQoc3FsaXRlU3RhdGVtZW50KTsKKyAgICBzcWxpdGUzX2NsZWFyX2JpbmRpbmdzKHNxbGl0
ZVN0YXRlbWVudCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50IFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6c3RlcFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZp
bmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQp
CisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICByZXR1cm4gc3FsaXRlM19zdGVw
KHNxbGl0ZVN0YXRlbWVudCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpk
ZXN0cm95U3RhdGVtZW50KHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgZGVzdHJveUludGVy
bmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbj4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVUcmFuc2Fj
dGlvbkFuZEJlZ2luKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBp
ZiAoIW1fc3FsaXRlQ29ubmVjdGlvbiB8fCBzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRl
Q29ubmVjdGlvbikpIHsKKyAgICAgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0g
c3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAo
c3FsaXRlM19leGVjKG1fc3FsaXRlQ29ubmVjdGlvbiwgIkJFR0lOIiwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0cikgIT0gU1FMSVRFX0RPTkUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbmV4dFRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2Fj
dGlvbj4obmV3IFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24oKnRoaXMsICptX29uZ29pbmdUcmFu
c2FjdGlvbklkZW50aWZpZXIpKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OmNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fb25nb2luZ1RyYW5zYWN0
aW9uSWRlbnRpZmllciB8fCAqbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyICE9IHRyYW5z
YWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3FsaXRlQ29u
bmVjdGlvbiAmJiAhc3FsaXRlM19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5lY3Rpb24pKQor
ICAgICAgICBzcWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAiQ09NTUlUIiwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0cik7CisKKyAgICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZp
ZXIgPSBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpy
b2xsYmFja1RyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fb25nb2luZ1RyYW5zYWN0
aW9uSWRlbnRpZmllciB8fCAqbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyICE9IHRyYW5z
YWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3FsaXRlQ29u
bmVjdGlvbiAmJiAhc3FsaXRlM19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5lY3Rpb24pKQor
ICAgICAgICBzcWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAiUk9MTEJBQ0siLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyKTsKKworICAgIG1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRp
ZmllciA9IHN0ZDo6bnVsbG9wdDsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OmlzT25nb2luZ1RyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICByZXR1cm4gbV9vbmdvaW5nVHJh
bnNhY3Rpb25JZGVudGlmaWVyICYmICptX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPT0g
dHJhbnNhY3Rpb25JZGVudGlmaWVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGI2MmVhYzY0MjZlNThhNjY4NWJmMThmNjhmZGJlZmYzZTI0ZWQx
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8c3FsaXRlMy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ7CitjbGFzcyBTUUxpdGVEYXRh
YmFzZVRyYW5zYWN0aW9uOworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4geworcHVibGljOgorICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciogaW5NZW1vcnlQYXRoKCkgeyByZXR1cm4gIjpt
ZW1vcnk6IjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNob3VsZENvbW1pdFRy
YW5zYWN0aW9uQXRDbG9zZSA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uKCk7CisKKyAgICBTdHJpbmcgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0aDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPcGVuKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgaW50IGxhc3RDaGFuZ2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RFcnJv
cigpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGxhc3RFcnJvck1lc3NhZ2UoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGFibGVDcmVhdGlvblF1ZXJ5KGNvbnN0IFN0cmlu
ZyYgdGFibGVOYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoQVNDSUlMaXRl
cmFsIHF1ZXJ5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoU3RyaW5nVmlldyBx
dWVyeSk7CisgICAgZW51bSBjbGFzcyBDaGVja3BvaW50TW9kZSA6IHVpbnQ4X3QgeyBGdWxsLCBU
cnVuY2F0ZSB9OworICAgIGJvb2wgZXhlY3V0ZVdBTENoZWNrcG9pbnQoQ2hlY2twb2ludE1vZGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWF4aW11bVNpemUoaW50NjRfdCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWxlYXNlTWVtb3J5KCk7CisgICAgdm9pZCBpbnZhbGlkYXRl
QWN0aXZpdHkoKTsKKyAgICB2b2lkIHNldElzQWN0aXZlKGJvb2wpOworCisgICAgLy8gU3RhdGVt
ZW50IG9wZXJhdGlvbnMuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50PiBjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKEFTQ0lJTGl0ZXJh
bCBxdWVyeSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBj
cmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpOworICAgIGludCBiaW5k
QmxvYih1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgaW5kZXgsIFNwYW48Y29uc3Qg
dWludDhfdD4gYmxvYik7CisgICAgaW50IGJpbmRCbG9iKHVpbnQ2NF90IHN0YXRlbWVudElkZW50
aWZpZXIsIGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBpbnQgYmluZFRleHQo
dWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllciwgaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQp
OworICAgIFN0cmluZyBjb2x1bW5CbG9iQXNTdHJpbmcodWludDY0X3Qgc3RhdGVtZW50SWRlbnRp
ZmllciwgaW50IGNvbCk7CisgICAgaW50IGNvbHVtbkludCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVu
dGlmaWVyLCBpbnQgY29sKTsKKyAgICBTdHJpbmcgY29sdW1uVGV4dCh1aW50NjRfdCBzdGF0ZW1l
bnRJZGVudGlmaWVyLCBpbnQgY29sKTsKKyAgICBpbnQgcmVzZXRTdGF0ZW1lbnQodWludDY0X3Qg
c3RhdGVtZW50SWRlbnRpZmllcik7CisgICAgaW50IHN0ZXBTdGF0ZW1lbnQodWludDY0X3Qgc3Rh
dGVtZW50SWRlbnRpZmllcik7CisgICAgdm9pZCBkZXN0cm95U3RhdGVtZW50KHVpbnQ2NF90IHN0
YXRlbWVudElkZW50aWZpZXIpOworCisgICAgLy8gVHJhbnNhY3Rpb24gb3BlcmF0aW9ucy4KKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bj4gY3JlYXRlVHJhbnNhY3Rpb25BbmRCZWdpbigpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rp
b24odWludDY0X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHJvbGxiYWNrVHJh
bnNhY3Rpb24odWludDY0X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBib29sIGlzT25n
b2luZ1RyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisKK3ByaXZh
dGU6CisgICAgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9v
bCBzaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpOworICAgIGJvb2wgb3BlbigpOworICAg
IHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGJlZ2luQWN0aXZpdHkoKTsKKyAgICB2b2lkIGVuZEFj
dGl2aXR5KCk7CisgICAgYm9vbCBlbmFibGVFeHRlbmRlZFJlc3VsdENvZGUoKTsKKyAgICBib29s
IGVuYWJsZUluTWVtb3J5VGVtcFN0b3JlKCk7CisgICAgYm9vbCBlbmFibGVXQUxKb3VybmFsTW9k
ZSgpOworICAgIGludCBwYWdlU2l6ZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGNy
ZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHF1ZXJ5KTsKKyAgICB2
b2lkIGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGZpZXIpOworICAgIHNx
bGl0ZTNfc3RtdCogZmluZFNRTGl0ZVN0YXRlbWVudCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlm
aWVyKSBjb25zdDsKKworICAgIFN0cmluZyBtX3BhdGg7CisgICAgYm9vbCBtX3Nob3VsZENvbW1p
dFRyYW5zYWN0aW9uQXRDbG9zZTsKKyAgICBMb2NrIG1fbG9jazsKKyAgICBzdHJ1Y3QgSW50ZXJu
YWxTdGF0ZW1lbnQgeworICAgICAgICB1aW50NjRfdCBpZGVudGlmaWVyOworICAgICAgICBzcWxp
dGUzX3N0bXQqIHNxbGl0ZVN0YXRlbWVudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gdHJhbnNhY3Rpb25JZGVudGlmaWVyOworICAgIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
SW50ZXJuYWxTdGF0ZW1lbnQ+IG1fc3RhdGVtZW50cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9j
ayk7CisgICAgc3FsaXRlMyogbV9zcWxpdGVDb25uZWN0aW9uICBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fbG9jaykgeyBudWxscHRyIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9vbmdv
aW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAg
ICBib29sIG1faXNBY3RpdmUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spIHsgZmFsc2UgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQz
OTlkZTZjMzg4OTFmYjc1NzgwZTEwMTczYWJhZTUwNmFiMmMxNjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3Bw
CkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCIKKworI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NRTGl0ZURhdGFiYXNl
U3RhdGVtZW50OjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudChTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24o
Y29ubmVjdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudDo6flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KCkKK3sKKyAgICBt
X2Nvbm5lY3Rpb24tPmRlc3Ryb3lTdGF0ZW1lbnQobV9pZGVudGlmaWVyKTsKK30KKworaW50IFNR
TGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWlu
dDhfdD4gYmxvYikKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5iaW5kQmxvYihtX2lkZW50
aWZpZXIsIGluZGV4LCBibG9iKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojpi
aW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICByZXR1cm4gbV9j
b25uZWN0aW9uLT5iaW5kQmxvYihtX2lkZW50aWZpZXIsIGluZGV4LCB0ZXh0KTsKK30KKworaW50
IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcg
dGV4dCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5iaW5kVGV4dChtX2lkZW50aWZpZXIs
IGluZGV4LCB0ZXh0KTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojpjb2x1
bW5CbG9iQXNTdHJpbmcoaW50IGNvbCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5jb2x1
bW5CbG9iQXNTdHJpbmcobV9pZGVudGlmaWVyLCBjb2wpOworfQorCitpbnQgU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ6OmNvbHVtbkludChpbnQgY29sKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rp
b24tPmNvbHVtbkludChtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK1N0cmluZyBTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudDo6Y29sdW1uVGV4dChpbnQgY29sKQoreworICAgIHJldHVybiBtX2Nvbm5l
Y3Rpb24tPmNvbHVtblRleHQobV9pZGVudGlmaWVyLCBjb2wpOworfQorCitpbnQgU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQ6OnJlc2V0KCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5yZXNl
dFN0YXRlbWVudChtX2lkZW50aWZpZXIpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnQ6OnN0ZXAoKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnN0ZXBTdGF0ZW1lbnQobV9p
ZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZTdlOTA5MGQyZjUyNzhiMDRjYTFjNzk5MTljNzQ3OGM0ZmJiZjUxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb247CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50IDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQpOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRh
YmFzZVN0YXRlbWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kQmxvYihpbnQgaW5k
ZXgsIFNwYW48Y29uc3QgdWludDhfdD4gYmxvYik7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJp
bmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBpbnQgYmluZFRleHQoaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpOworICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBjb2x1bW5CbG9iQXNTdHJpbmcoaW50IGNvbCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgaW50IGNvbHVtbkludChpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
Y29sdW1uVGV4dChpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcmVzZXQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQgc3RlcCgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb247CisgICAgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQo
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgaWRlbnRpZmllcik7CisKKyAgICBS
ZWY8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgdWludDY0X3Qg
bV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVt
ZW50UmVzZXRTY29wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZTIwZDlmMDY0MWUzOWMyMjE3YWJjNmJjNTgw
MjJhMzM5MzRmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmgKQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudDsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNR
TGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCog
c3RhdGVtZW50KQorICAgICAgICA6IG1fc3RhdGVtZW50KHN0YXRlbWVudCkKKyAgICB7CisgICAg
fQorCisgICAgflNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSgpCisgICAgeworICAg
ICAgICBpZiAobV9zdGF0ZW1lbnQpCisgICAgICAgICAgICBtX3N0YXRlbWVudC0+cmVzZXQoKTsK
KyAgICB9CisKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUoU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlJiYgb3RoZXIpCisgICAgICAgIDogbV9zdGF0ZW1lbnQo
b3RoZXIubV9zdGF0ZW1lbnQuZ2V0KCkpCisgICAgeworICAgICAgICBvdGhlci5tX3N0YXRlbWVu
dCA9IG51bGxwdHI7CisgICAgfQorCisgICAgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNj
b3BlJiBvcGVyYXRvcj0oU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlJiYgb3RoZXIp
CisgICAgeworICAgICAgICBzdGQ6OnN3YXAobV9zdGF0ZW1lbnQsIG90aGVyLm1fc3RhdGVtZW50
KTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fc3RhdGVtZW50OyB9CisgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9zdGF0ZW1lbnQ7IH0KKyAgICBTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudCogZ2V0KCkgeyByZXR1cm4gbV9zdGF0ZW1lbnQuZ2V0KCk7IH0KKyAgICBTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIG1fc3RhdGVtZW50LmdldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgV2Vha1B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4gbV9z
dGF0ZW1lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MDY4YTg3MWU5NGYwYzM4Yzc1OGI1Y2Y1NTdiY2IwODI2ZGIyZGI0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgorCisj
aW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bihTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IGlkZW50aWZp
ZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQoreworfQorCitTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjp+U1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbigpCit7CisgICAgbV9jb25uZWN0aW9uLT5yb2xsYmFja1RyYW5zYWN0
aW9uKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6
Y29tbWl0KCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbW1pdFRyYW5zYWN0aW9uKG1faWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQor
eworICAgIG1fY29ubmVjdGlvbi0+cm9sbGJhY2tUcmFuc2FjdGlvbihtX2lkZW50aWZpZXIpOwor
fQorCitib29sIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0aW9u
KCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5pc09uZ29pbmdUcmFuc2FjdGlvbihtX2lk
ZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41OTAyOTNlMmJmYjhkMmQ3MmU0ZTg1YzZiMzg3OTkzODJiMjNiMDk0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb24uaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1FMaXRlRGF0YWJhc2VUcmFu
c2FjdGlvbik7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcm9sbGJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzT25n
b2luZ1RyYW5zYWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjsKKyAgICBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbiYsIHVpbnQ2NF90IGlkZW50aWZpZXIpOworCisgICAgUmVmPFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faWRlbnRp
ZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBjYzkyOTBiNjYyODliZjY3
OTgxZmI3ZTcwMGE0ZmYxYWNkMmJhY2ZhLi5hMTM2YjhjOTdkMzA1Y2ZkZDU0ZTU2MzQ5ZDI2NzVj
MmM1YWYyMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgi
CiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIgogI2luY2x1ZGUgIlJl
bW90ZVdvcmtlclR5cGUuaCIKKyNpbmNsdWRlICJTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVy
LmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCkBA
IC03OSw2ICs4MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CkBAIC0xNTksNyArMTYxLDcgQEAgTmV0d29ya1Byb2Nlc3M6
Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWUKICAgICAsIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKnRoaXMpCiAj
ZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICwgbV93ZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIoW3RoaXNdKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsgc2V0SXNIb2xkaW5n
TG9ja2VkRmlsZXMoaXNIb2xkaW5nTG9ja2VkRmlsZXMpOyB9KQorICAgICwgbV93ZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXIoW10oYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykgeyBTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMo
aXNIb2xkaW5nTG9ja2VkRmlsZXMpOyB9KQogI2VuZGlmCiAgICAgLCBtX21lc3NhZ2VQb3J0Q2hh
bm5lbFJlZ2lzdHJ5KGNyZWF0ZU1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCp0aGlzKSkKIHsK
QEAgLTE3Nyw2ICsxNzksMTIgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGls
aWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICAgICBMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3JlYXRlZCgqdGhpcyk7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgU1FMaXRlRGF0YWJhc2VBY3Rpdml0
eVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldEltcGwoW10geworICAgICAgICByZXR1cm4gU1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6Y3JlYXRlKCk7CisgICAgfSk7CisjZW5kaWYKKwogICAg
IE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5hZGRMaXN0ZW5lcihbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfV0oYm9vbCBpc09uTGluZSkgewogICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDJmNThjZDA3ODU0OThiMDVlMDk5MGQ1ODViOTA3Y2Vj
ZTdhZGVjOGIuLmRiYmIxZGFlZTQzNzU0ZGFjYTg1Nzk1OTVjYmNkZTE3ZmY2YThmMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQ3MSwx
MCArNDcxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vz
cyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKLSNlbmRpZgotCiAgICAg
Ly8gQ29ubmVjdGlvbnMgdG8gV2ViUHJvY2Vzc2VzLgogICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIsIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4+IG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zOwogCkBAIC01MDcsNyArNTAzLDYgQEAgcHJpdmF0ZToKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyOwotICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hv
bGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFdFQl9S
VEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3Jr
UHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQ
cm9jZXNzSU9TLm1tCmluZGV4IDgyN2RkZjZlY2Y0ZDkyOTFlMGJmZjc0ZmE1ZWJiODE3YjdkY2Zm
ZDcuLjViN2MxODU1YzhiNmNhMjg0YTljMzUwYWRlZWIxNWVhN2Y2ZDQ2ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1t
CkBAIC05NSwyMSArOTUsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclNlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaQogCiAjZW5kaWYgLy8g
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRp
bmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQotewotICAgIGlmICghaXNI
b2xkaW5nTG9ja2VkRmlsZXMpIHsKLSAgICAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlv
biA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9ob2xkaW5n
TG9ja2VkRmlsZUFzc2VydGlvbiAmJiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uLT5pc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBh
IHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNv
IHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAotICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2Nr
ZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBs
b2NrZWQgZmlsZXMuCi0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NB
c3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3Mg
aXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hU
YXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9y
YWdlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRl
U3RvcmFnZUFyZWEuY3BwCmluZGV4IDEwZWMyMDc2ODUxNDU4Y2VmMTYxOTBlZjFiOTE2NmQyZjBh
NDRlNDEuLjEyMzIwOTAxYTkyMzM0MzNjNDIwNTk5YTNmMjVhOTc4MWNkZDQ1MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJl
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0
b3JhZ2VBcmVhLmNwcApAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0b3JhZ2VB
cmVhLmgiCiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVE
YXRhYmFzZVN0YXRlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFu
c2FjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVU
cmFuc2FjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTEwNyw3ICsxMDcsNyBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjpp
c0VtcHR5KCkKIAogICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVu
dFR5cGU6OkNvdW50SXRlbXMpOwogICAgIGlmICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+c3Rl
cCgpICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwg
IlNRTGl0ZVN0b3JhZ2VBcmVhOjppc0VtcHR5IGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50
ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9y
YWdlQXJlYTo6aXNFbXB0eSBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMi
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xMjgsMjEgKzEyOCwyMSBAQCBi
b29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KCkKICAgICBpZiAo
IW1fZGF0YWJhc2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBzdGF0ZW1l
bnQgPSBtX2RhdGFiYXNlLT50YWJsZVNRTCgiSXRlbVRhYmxlIl9zKTsKKyAgICBTdHJpbmcgc3Rh
dGVtZW50ID0gbV9kYXRhYmFzZS0+dGFibGVDcmVhdGlvblF1ZXJ5KCJJdGVtVGFibGUiX3MpOwog
ICAgIGlmIChzdGF0ZW1lbnQgPT0gY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50IHx8IHN0YXRlbWVu
dCA9PSBjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnRBbHRlcm5hdGl2ZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyBUYWJsZSBleGlzdHMgYnV0IHN0YXRlbWVudCBpcyB3cm9uZzsgZHJv
cCBpdC4KICAgICBpZiAoIXN0YXRlbWVudC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKCFtX2Rh
dGFiYXNlLT5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBJdGVtVGFibGUiX3MpKSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNy
ZWF0ZVRhYmxlSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGRyb3AgZXhpc3RpbmcgaXRlbSB0YWJsZSAo
JWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
TXNnKCkpOworICAgICAgICBpZiAoIW1fZGF0YWJhc2UtPmV4ZWN1dGUoIkRST1AgVEFCTEUgSXRl
bVRhYmxlIl9zKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNR
TGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIGV4
aXN0aW5nIGl0ZW0gdGFibGUgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBUYWJsZSBkb2VzIG5vdCBleGlzdC4KLSAgICBp
ZiAoIW1fZGF0YWJhc2UtPmV4ZWN1dGVDb21tYW5kKGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudCkp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVh
OjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBjcmVhdGUgaXRlbSB0YWJsZSAoJWQp
IC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNn
KCkpOworICAgIGlmICghbV9kYXRhYmFzZS0+ZXhlY3V0ZShjcmVhdGVJdGVtVGFibGVTdGF0ZW1l
bnQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdl
QXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIGl0ZW0gdGFibGUg
KCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJv
ck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE1OCwxNyAr
MTU4LDEyIEBAIGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZShTaG91bGRD
cmVhdGVJZk5vdEV4aXN0cyBzaG91bGRDcmVhdGVJZk5vCiAgICAgaWYgKHNob3VsZENyZWF0ZUlm
Tm90RXhpc3RzID09IFNob3VsZENyZWF0ZUlmTm90RXhpc3RzOjpObyAmJiAhRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhtX3BhdGgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fZGF0YWJh
c2UgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPigpOwogICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKG1fcGF0aCkpOwot
ICAgIGlmICghbV9kYXRhYmFzZS0+b3BlbihtX3BhdGgpKSB7CisgICAgbV9kYXRhYmFzZSA9IFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlKG1fcGF0aCwgdHJ1ZSkucHRy
KCk7CisgICAgaWYgKCFtX2RhdGFiYXNlLT5pc09wZW4oKSkgewogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZSBmYWls
ZWQgdG8gb3BlbiBkYXRhYmFzZSBhdCAnJXMnIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICBtX2RhdGFiYXNlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LSAgICAgICAgCi0gICAgLy8gU2luY2UgYSBXb3JrUXVldWUgaXNuJ3QgYm91bmQgdG8gYSBzcGVj
aWZpYyB0aHJlYWQsIHdlIG5lZWQgdG8gZGlzYWJsZSB0aHJlYWRpbmcgY2hlY2suCi0gICAgLy8g
V2Ugd2lsbCBuZXZlciBhY2Nlc3MgdGhlIGRhdGFiYXNlIGZyb20gZGlmZmVyZW50IHRocmVhZHMg
c2ltdWx0YW5lb3VzbHkuCi0gICAgbV9kYXRhYmFzZS0+ZGlzYWJsZVRocmVhZGluZ0NoZWNrcygp
OwogCiAgICAgaWYgKCFjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KCkpIHsKICAgICAgICAgbV9kYXRh
YmFzZSA9IG51bGxwdHI7CkBAIC0xODQsMTEgKzE3OSwxMCBAQCBib29sIFNRTGl0ZVN0b3JhZ2VB
cmVhOjpwcmVwYXJlRGF0YWJhc2UoU2hvdWxkQ3JlYXRlSWZOb3RFeGlzdHMgc2hvdWxkQ3JlYXRl
SWZObwogdm9pZCBTUUxpdGVTdG9yYWdlQXJlYTo6c3RhcnRUcmFuc2FjdGlvbklmTmVjZXNzYXJ5
KCkKIHsKICAgICBpZiAoIW1fdHJhbnNhY3Rpb24pCi0gICAgICAgIG1fdHJhbnNhY3Rpb24gPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uPigqbV9kYXRhYmFzZSk7Ci0KLSAg
ICBpZiAobV90cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQorICAgICAgICBtX3RyYW5zYWN0aW9u
ID0gbV9kYXRhYmFzZS0+Y3JlYXRlVHJhbnNhY3Rpb25BbmRCZWdpbigpOworICAgIAorICAgIGlm
ICghbV90cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIG1fdHJhbnNhY3Rpb24tPmJl
Z2luKCk7CiAKICAgICBtX3F1ZXVlLT5kaXNwYXRjaEFmdGVyKHRyYW5zYWN0aW9uRHVyYXRpb24s
IFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykK
QEAgLTE5NiwxOCArMTkwLDE2IEBAIHZvaWQgU1FMaXRlU3RvcmFnZUFyZWE6OnN0YXJ0VHJhbnNh
Y3Rpb25JZk5lY2Vzc2FyeSgpCiAgICAgfSk7CiB9CiAKLVdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dEF1dG9SZXNldFNjb3BlIFNRTGl0ZVN0b3JhZ2VBcmVhOjpjYWNoZWRTdGF0ZW1lbnQoU3RhdGVt
ZW50VHlwZSB0eXBlKQorV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3Bl
IFNRTGl0ZVN0b3JhZ2VBcmVhOjpjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZSB0eXBlKQog
ewogICAgIEFTU0VSVChtX2RhdGFiYXNlKTsKICAgICBBU1NFUlQodHlwZSA8IFN0YXRlbWVudFR5
cGU6OkludmFsaWQpOwogCiAgICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHR5
cGUpOwotICAgIGlmICghbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XSkgewotICAgICAgICBpZiAo
YXV0byByZXN1bHQgPSBtX2RhdGFiYXNlLT5wcmVwYXJlSGVhcFN0YXRlbWVudChzdGF0ZW1lbnRT
dHJpbmcodHlwZSkpKQotICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XSA9IHJl
c3VsdC52YWx1ZSgpLm1vdmVUb1VuaXF1ZVB0cigpOwotICAgIH0KKyAgICBpZiAoIW1fY2FjaGVk
U3RhdGVtZW50c1tpbmRleF0pCisgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0gPSBt
X2RhdGFiYXNlLT5jcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKHN0YXRlbWVudFN0cmluZyh0eXBl
KSk7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUg
eyBtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhdLmdldCgpIH07CisgICAgcmV0dXJuIFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSB7IG1fY2FjaGVkU3RhdGVtZW50c1tp
bmRleF0uZ2V0KCkgfTsKIH0KIAogRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+IFNRTGl0
ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KQpAQCAtMjM0LDcgKzIyNiw3
IEBAIEV4cGVjdGVkPFN0cmluZywgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0
SXRlbUZyb21EYXRhYmFzZShjb25zdCBTdHJpCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hl
ZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpHZXRJdGVtKTsKICAgICBpZiAoIXN0YXRlbWVudCB8
fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGtleSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxl
ZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
KCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxl
ZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
KCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTI0Miw3ICsy
MzQsNyBAQCBFeHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6
OmdldEl0ZW1Gcm9tRGF0YWJhc2UoY29uc3QgU3RyaQogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRF
X1JPVykKICAgICAgICAgcmV0dXJuIHN0YXRlbWVudC0+Y29sdW1uQmxvYkFzU3RyaW5nKDApOwog
ICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxl
ZCBvbiBzdGVwcGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
KCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxl
ZCBvbiBzdGVwcGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
KCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTI3NCw3ICsy
NjYsNyBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBTUUxpdGVTdG9yYWdlQXJlYTo6YWxsSXRl
bXMoKQogICAgIC8vIEltcG9ydCBmcm9tIGRhdGFiYXNlLgogICAgIGF1dG8gc3RhdGVtZW50ID0g
Y2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkdldEFsbEl0ZW1zKTsKICAgICBpZiAoIXN0
YXRlbWVudCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3Rv
cmFnZUFyZWE6OmdldEFsbEl0ZW1zIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAt
ICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVh
OjpnZXRBbGxJdGVtcyBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMjkyLDcgKzI4NCw3IEBAIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IFNRTGl0ZVN0b3JhZ2VBcmVhOjphbGxJdGVtcygpCiAgICAgfQogCiAg
ICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
U3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRBbGxJdGVtcyBmYWlsZWQgb24gZXhlY3V0
aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRh
YmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdl
LCAiU1FMaXRlU3RvcmFnZUFyZWE6OmdldEFsbEl0ZW1zIGZhaWxlZCBvbiBleGVjdXRpbmcgc3Rh
dGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3JNZXNzYWdlKCkpOwogCiAgICAgcmV0dXJuIGl0ZW1zOwogfQpAQCAtMzExLDcgKzMw
Myw3IEBAIEV4cGVjdGVkPHZvaWQsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OnNl
dEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNh
Y2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpTZXRJdGVtKTsKICAgICBpZiAoIXN0YXRlbWVu
dCB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGtleSkgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigy
LCB2YWx1ZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0
b3JhZ2VBcmVhOjpzZXRJdGVtIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVz
IiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpz
ZXRJdGVtIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAK
QEAgLTMxOSw3ICszMTEsNyBAQCBFeHBlY3RlZDx2b2lkLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0
b3JhZ2VBcmVhOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSQogICAgIGlmIChyZXN1
bHQgPT0gU1FMSVRFX0ZVTEwpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdl
RXJyb3I6OlF1b3RhRXhjZWVkZWQpOwogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpz
ZXRJdGVtIGZhaWxlZCBvbiBzdGVwcGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtIGZhaWxl
ZCBvbiBzdGVwcGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
KCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTM1MCw3ICsz
NDIsNyBAQCBFeHBlY3RlZDx2b2lkLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpy
ZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcQogCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBj
YWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6RGVsZXRlSXRlbSk7CiAgICAgaWYgKCFzdGF0
ZW1lbnQgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCgxLCBrZXkpIHx8IHN0YXRlbWVudC0+c3RlcCgp
ICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJT
UUxpdGVTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbSBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVu
dCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3Rv
cmFnZUFyZWE6OnJlbW92ZUl0ZW0gZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAt
ICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3Nh
Z2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFi
YXNlKTsKICAgICB9CiAKQEAgLTM4MSw3ICszNzMsNyBAQCBFeHBlY3RlZDx2b2lkLCBTdG9yYWdl
RXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpjbGVhcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
CiAgICAgc3RhcnRUcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CiAgICAgYXV0byBzdGF0ZW1lbnQg
PSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6RGVsZXRlQWxsSXRlbXMpOwogICAgIGlm
ICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y2xlYXIg
ZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpjbGVhciBmYWlsZWQgb24gZXhl
Y3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9k
YXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuaAppbmRl
eCA1MmNjOWQ2MGU3ZTVhNTM5MWZjOGM0ODNmYjY4YzI5MDM2MDk3MTYwLi42MjYzZjBmNWViNmNj
ZTA1YWYzMjI2MTk3NWM3ZTIwOWMzMjFiOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuaApAQCAtMjYsOCAr
MjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTdG9yYWdlQXJlYUJhc2UuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxp
dGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVN0YXRl
bWVudFJlc2V0U2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTY2LDE2ICs2Niwx
NiBAQCBwcml2YXRlOgogICAgICAgICBJbnZhbGlkCiAgICAgfTsKICAgICBBU0NJSUxpdGVyYWwg
c3RhdGVtZW50U3RyaW5nKFN0YXRlbWVudFR5cGUpIGNvbnN0OwotICAgIFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlKTsK
KyAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgY2FjaGVkU3Rh
dGVtZW50KFN0YXRlbWVudFR5cGUpOwogICAgIEV4cGVjdGVkPFN0cmluZywgU3RvcmFnZUVycm9y
PiBnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KTsKICAgICBFeHBlY3RlZDxTdHJpbmcsIFN0b3Jh
Z2VFcnJvcj4gZ2V0SXRlbUZyb21EYXRhYmFzZShjb25zdCBTdHJpbmcmIGtleSk7CiAKICAgICBT
dHJpbmcgbV9wYXRoOwogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKLSAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4+IG1fY2FjaGVk
U3RhdGVtZW50czsKICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBt
X2NhY2hlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1f
ZGF0YWJhc2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4+IG1fY2FjaGVkU3RhdGVtZW50czsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
UUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDZmNWU4NjljMjI1
MmM3MjIwZWMzNTA3NmVhZTkxZmY5MzFjMzkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAKQEAgLTAsMCArMSw3
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVQ
cm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmgiCisKKyNpbmNsdWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI+IFNR
TGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcik7Cit9CisKK3ZvaWQgU1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpCit7CisgICAg
bV9pc1BlcmZvcm1pbmdBY3Rpdml0aWVzID0gdHJ1ZTsKKyAgICBlbnN1cmVBc3NlcnRpb24oKTsK
K30KKwordm9pZCBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpkaWRFbmRMYXN0QWN0aXZp
dHkoKQoreworICAgIG1faXNQZXJmb3JtaW5nQWN0aXZpdGllcyA9IGZhbHNlOworICAgIHJlbGVh
c2VBc3NlcnRpb24oKTsKK30KKwordm9pZCBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpz
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIHZhbHVlKQoreworICAgIG1faXNIb2xkaW5nTG9j
a2VkRmlsZXMgPSB2YWx1ZTsKKyAgICBpZiAobV9pc0hvbGRpbmdMb2NrZWRGaWxlcykKKyAgICAg
ICAgZW5zdXJlQXNzZXJ0aW9uKCk7CisgICAgZWxzZQorICAgICAgICByZWxlYXNlQXNzZXJ0aW9u
KCk7Cit9CisKK3ZvaWQgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6ZW5zdXJlQXNzZXJ0
aW9uKCkKK3sKKyAgICBpZiAobV9hc3NlcnRpb24gJiYgbV9hc3NlcnRpb24tPmlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9hc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpj
cmVhdGUoZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiTmV0d29yayBQcm9jZXNzIGlzIGhvbGRpbmcg
ZGF0YWJhc2UgbG9jayJfcywgUHJvY2Vzc0Fzc2VydGlvblR5cGU6OkZpbmlzaFRhc2tJbnRlcnJ1
cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKKyAgICBtX2Fzc2VydGlvbi0+
c2V0SW52YWxpZGF0aW9uSGFuZGxlcihbXSB7CisgICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29w
KCkpOworICAgICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2lu
Z2xldG9uKCkuaW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKKyAgICB9KTsKK30KKwordm9pZCBT
UUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpyZWxlYXNlQXNzZXJ0aW9uKCkKK3sKKyAgICBp
ZiAoIW1faXNIb2xkaW5nTG9ja2VkRmlsZXMgJiYgIW1faXNQZXJmb3JtaW5nQWN0aXZpdGllcykK
KyAgICAgICAgbV9hc3NlcnRpb24gPSBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRp
b25Ib2xkZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25I
b2xkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYmFhYWZiOTFlODRkZWYzMWNkM2FmOWFlODZkMjQ4OTNmODk5
YzBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vz
c0Fzc2VydGlvbkhvbGRlci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3NBc3NlcnRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUHJvY2Vzc0Fzc2VydGlvbjsKKworY2xhc3MgU1FMaXRlUHJvY2Vzc0Fzc2Vy
dGlvbkhvbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tl
ckltcGwgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhv
bGRlcj4gY3JlYXRlKCk7CisgICAgdm9pZCB3aWxsQmVnaW5GaXJzdEFjdGl2aXR5KCkgZmluYWw7
CisgICAgdm9pZCBkaWRFbmRMYXN0QWN0aXZpdHkoKSBmaW5hbDsKKyAgICB2b2lkIHNldElzSG9s
ZGluZ0xvY2tlZEZpbGVzKGJvb2wgdmFsdWUpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQg
ZW5zdXJlQXNzZXJ0aW9uKCk7CisgICAgdm9pZCByZWxlYXNlQXNzZXJ0aW9uKCk7CisKKyAgICBi
b29sIG1faXNQZXJmb3JtaW5nQWN0aXZpdGllcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSG9s
ZGluZ0xvY2tlZEZpbGVzIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8UHJvY2Vzc0Fzc2VydGlvbj4g
bV9hc3NlcnRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFG
b3JtYXRSZWFkZXIuY3BwCmluZGV4IGEzZmJiNzYwZTc3NjA0MDc4ZDhlNTBjMTRjZGQ3ZDdjZWE2
ZWI2ZDMuLjMxYThmMWJlMTQ1NWNhYzg0YzYzYmI2ZDQzZGZjMTQ4NGJlNTRhNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAorI2luY2x1
ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2luY2x1ZGUgPHBhbC9jb2NvYS9NZWRp
YVRvb2xib3hTb2Z0TGluay5oPgogCiBXVEZfREVDTEFSRV9DRl9UWVBFX1RSQUlUKE1UUGx1Z2lu
Rm9ybWF0UmVhZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGJlYzFhM2YxMzRlMmRkMzkyMzYxMjc1MmE4
OWQ4ODE1NzllMjBmODQuLjlhYmNiMjA1OTNhMjM4ZmE0Y2RhZmVlM2I1MGJjMjliMTE4MTNkMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dApAQCAtMjM5LDYgKzIzOSw3IEBAIFNoYXJlZC9QcmludEluZm8uY3BwCiBT
aGFyZWQvUlRDTmV0d29yay5jcHAKIFNoYXJlZC9SVENQYWNrZXRPcHRpb25zLmNwcAogU2hhcmVk
L1JlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHAKK1NoYXJlZC9TUUxpdGVQcm9jZXNz
QXNzZXJ0aW9uSG9sZGVyLmNwcAogU2hhcmVkL1Njcm9sbGluZ0FjY2VsZXJhdGlvbkN1cnZlLmNw
cAogU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
YWQ5YzBjNmUxMTM4ZmJlMjhkYmIyOGVmZTA4ZWRiNDg4ZTQ1MTY2Li5mODIyNDgyMDY1NDVjYWM0
ZTI4N2JjZWEwYTI4NjVlMGU4YTM4ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MDEsNiArMTUwMSw3IEBACiAJCTkzQjYzMUYx
MjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90
YU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCNjMxRjMyN0FCQUQ4MDAwNDQzQTQ0IC8qIFF1b3RhSW5j
cmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VS
ZXF1ZXN0SWRlbnRpZmllci5oICovOyB9OwogCQk5M0JERUIwMTE3MUREN0FGMDBCRkVFMUIgLyog
V0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBl
c1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk5M0Q1REQyMDI3REE1NTU2MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhv
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
NUREMUUyN0RBNTU1NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCAq
LzsgfTsKIAkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2
Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLzsgfTsK
IAkJOTNENkI3NzMyNTRCQjhDNzAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
NkI3NjgyNTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5o
ICovOyB9OwogCQk5M0Q2Qjc4MjI1NENDQ0Y0MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTU0NzAsNiArNTQ3MSw4IEBA
CiAJCTkzQkEwNEUwMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNEUxMjE1MUFERjQwMDdGNDU1RiAv
KiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9hZFR5cGVzUHJp
dmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQxRTI3REE1NTU1MDAx
MDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDFGMjdEQTU1NTUwMDEwN0M3NSAvKiBTUUxpdGVQ
cm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0Q2Qjc2NzI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRDZCNzY4MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RDZCNzY5MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczOTEsNiArNzM5NCw4IEBA
CiAJCQkJODMxM0Y3RTcxRjdEQUUwMzAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZS5o
ICovLAogCQkJCTgzRjk2NDRCMUZBMEY3NjIwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFi
bGVSZWFkT25seS5jcHAgKi8sCiAJCQkJODNGOTY0NEMxRkEwRjc2MzAwQzQ3NzUwIC8qIFNoYXJl
ZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmggKi8sCisJCQkJOTNENUREMUYyN0RBNTU1NTAwMTA3
Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwICovLAorCQkJCTkzRDVERDFF
MjdEQTU1NTUwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggKi8sCiAJ
CQkJMUE1RTREQTMxMkQzQkQzRDAwOTlBMkJCIC8qIFRleHRDaGVja2VyU3RhdGUuaCAqLywKIAkJ
CQlGNEE3Q0U4NDI2NjdFQjRFMDAyMjg2ODUgLyogVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0
LmggKi8sCiAJCQkJN0JFMzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8qIFRocmVhZFNhZmVPYmplY3RI
ZWFwLmggKi8sCkBAIC0xMzU5MCw2ICsxMzU5NSw3IEBACiAJCQkJOTNENkI3NzIyNTRCQjUxOTAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0Q2Qjc4NDI1NENDRDBFMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
M0Q1REQyMDI3REE1NTU2MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFNzk5REEyNzYxMjEwODAwNzQwMDhBIC8qIFNRTGl0ZVN0
b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTNGRUNBMjIxRjdDMDk3MDBGMjY3Q0Qg
LyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCRUI2RDcyMkZC
OUJENzAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NTUw
NDkzNjNkYzZkMmU5ZWQxZDM2NmU0ZDU3NDYyNTI4MDI5OTFjLi5kYTdiZDgxMTQ3OTE3NjE3Njc3
M2Y3NTk5OGM2MGYwNDRjZTZhZWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMTEg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRl
IGRhdGFiYXNlIGNvbm5lY3Rpb25zIGZvciBMb2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMg
ZHJvcHBlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM3NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc3RvcmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWw6
CisgICAgICAgICogc3RvcmFnZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3Rv
cmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbDoKKwogMjAyMi0wMy0xMSAgQWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gVW5yZXZpZXdlZCBnYXJkZW5p
bmcgYWZ0ZXIgcjI5MTE2OS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3Rv
cmFnZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvZG9tc3RvcmFnZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbAppbmRl
eCAwM2E3NmRhNWEzYWJhNmQ0NjkzYmU4ZGI1M2U3YTBmZTJhN2FlYmU0Li5iZDE4MWQ3NGUzMTFj
NTliYzk1MGVjZmFmZjhmODYzOTUyZmY4MDM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2RvbXN0b3JhZ2Uvc3RvcmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3N0b3JhZ2UtY2xvc2UtZGF0YWJhc2Utb24t
aWRsZS5odG1sCkBAIC0yMCw3ICsyMCw4IEBAIGZ1bmN0aW9uIGxvYWROZXh0UGFnZSgpCiBmdW5j
dGlvbiBydW5UZXN0KCkKIHsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoMCk7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCgwKTsKICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRDYWNoZU1vZGVsKDApOyAvLyBXZWJDYWNoZU1vZGVsRG9jdW1l
bnRWaWV3ZXIuCiAgICAgfQogCkBAIC00Niw3ICs0Nyw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQog
ICAgICAgICAgICAgbG9nKHdpbmRvdy5sb2NhbFN0b3JhZ2VbJ2JhciddID09PSAnQkFSJyA/ICdQ
QVNTJyA6ICdGQUlMJyk7CiAKICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFs
KDMwMCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyLnNldFN0b3JhZ2VE
YXRhYmFzZUlkbGVJbnRlcnZhbCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoMzAwKTsKICAgICAgICAgICAgICAgICB3aW5kb3cu
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1s
b2NhbHN0b3JhZ2UtZGF0YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL3Jlc291cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1p
bW1lZGlhdGVseS5odG1sCmluZGV4IDRlMGE0NDZlM2U0MjM0ZGY5MWFhOWU2YWRmMjZiMDM2OGU1
N2I0Y2MuLjdiMTczNjE2NmU3MWQ1MTgzMzEwYTE5ZDAzZDc3YzllMjIyMjRmYjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1sb2Nh
bHN0b3JhZ2UtZGF0YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMt
aW1tZWRpYXRlbHkuaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24g
c3dpbmdCYWNrKCkgCiAgICAgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy50ZXN0UnVubmVyLmNsb3NlSWRs
ZUxvY2FsU3RvcmFnZURhdGFiYXNlcykgewogICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIu
Y2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCk7CiAgICAgICAgIH0KICAgICAgICAgbG9j
YXRpb24uaHJlZj0nLi4vZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvY2xvc2UtaWRsZS1sb2NhbHN0
b3JhZ2UtZGF0YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwnOwo=
</data>
<flag name="commit-queue"
          id="482177"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454512</attachid>
            <date>2022-03-11 14:31:34 -0800</date>
            <delta_ts>2022-03-17 09:58:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237754-20220311143133.patch</filename>
            <type>text/plain</type>
            <size>100460</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQwMzQyNzcyYzcyYThl
MzhjOGJkMTVlYjAwOTczNTk4NTdlYmRmOC4uODhhNTVmYTMwMzYzM2M1YjdhZWRiN2ZiMGM1M2E0
MTc5OWZhMDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIyLTAzLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIFNRTGl0ZSBkYXRh
YmFzZSBjb25uZWN0aW9ucyBmb3IgTG9jYWxTdG9yYWdlIHdoZW4gYXNzZXJ0aW9uIGlzIGRyb3Bw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpiZWdpbkFjdGl2aXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjplbmRBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6Y2hlY2tM
YXN0QWN0aXZpdHlUaW1lc3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI6OmludmFsaWRhdGVBbGxBY3Rpdml0aWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlckltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlckltcGw6On5TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRUcmFuc2FjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
aW5pdGlhbGl6ZVNRTGl0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246On5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiZWdpbkFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5kQWN0aXZpdHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppbnZhbGlkYXRlQWN0aXZpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRJc0FjdGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmlzT3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVuYWJsZUV4dGVuZGVkUmVz
dWx0Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmVu
YWJsZUluTWVtb3J5VGVtcFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6ZW5hYmxlV0FMSm91cm5hbE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2hl
Y2twb2ludE1vZGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmV4ZWN1dGVXQUxDaGVja3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZGVzdHJveUludGVybmFs
U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
bGFzdENoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpsYXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpsYXN0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6dGFibGVDcmVhdGlvblF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6cGFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJpbmRCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmluZFRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5CbG9iQXNTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5JbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5UZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVzZXRTdGF0
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzdGVw
U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
ZGVzdHJveVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppc09uZ29pbmdUcmFuc2Fj
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aW5N
ZW1vcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
cGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OldURl9HVUFSREVEX0JZX0xPQ0spOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVN0YXRlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6Y29sdW1uQmxvYkFzU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5JbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtblRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpzdGVwKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6U1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVz
ZXRTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0
U2NvcGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudFJlc2V0U2NvcGU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVyYXRvciEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpvcGVy
YXRvci0+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bjo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uOjp+U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpjb21taXQpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6cm9sbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmg6IEFk
ZGVkLgorCiAyMDIyLTAzLTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciAtW1VJVGV4dElucHV0IHJlbW92ZUVt
b2ppQWx0ZXJuYXRpdmVzXSBvbiBXS0NvbnRlbnRWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVkZDBlM2JkNDBj
MDA0NGY0MWJmYTE4N2Q1ZmIwNDRkMWYxNzFjOGIuLjYxNzQ1YTk2NDUwOWZkNmQ0YTBjYzdhMWJk
MzVlNjI1ZTQ3N2Q3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjItMDMtMTEgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRlIGRh
dGFiYXNlIGNvbm5lY3Rpb25zIGZvciBMb2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMgZHJv
cHBlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Om1fbWVzc2FnZVBv
cnRDaGFubmVsUmVnaXN0cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3Rv
cmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0
eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRh
YmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0
aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6Y2Fj
aGVkU3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0
ZW1Gcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6YWxs
SXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKToKKyAgICAgICAg
KFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmg6CisgICAgICAgICogU2hhcmVkL1NRTGl0
ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSk6CisgICAg
ICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVuZExhc3RBY3Rp
dml0eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OnNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fz
c2VydGlvbkhvbGRlcjo6ZW5zdXJlQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6cmVsZWFzZUFzc2VydGlvbik6CisgICAgICAgICogU2hh
cmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaDogQWRkZWQuCisgICAgICAgICogU2hh
cmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisKIDIwMjItMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBEZWxheSByZXNwb25zaXZlbmVzcyBjaGVja3MgZm9yIHRoZSBOZXR3b3JrIFByb2Nlc3Mg
dW50aWwgaXQgaGFzIGZpbmlzaGVkIGluaXRpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRl
eCA3MzY0NDJhMDhhNzQ1MDBhMzUyZjA0YzJlMTA2ZDhjNDFlN2E0ZmM1Li43NTFkMThhZTUzY2Zl
YmI4ZTY0YTZjNWQ0YWZhYjU0YzY2ZDY2MjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE3ODAs
OCArMTc4MCwxNCBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAg
ICBwbGF0Zm9ybS9zcWwvU1FMVmFsdWUuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZS5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgKKyAg
ICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgKKyAgICBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgKKyAgICBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaAorICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGUuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAor
ICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgKICAgICBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggNWM3YjczZWIyMDVlMDllYzI0NmUwMTFkMGE1MDJkY2Q0YzFkY2E1MC4u
ZDUzMzkxYjJkNmUxNjYzNTg4MGM5ZmE3MTc1OWM3ZjYyMzgxZjQ1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTIyNTIsNyArMjI1MiwxMSBAQCBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVy
Q2xpZW50LmNwcAogcGxhdGZvcm0vbmV0d29yay9UaW1pbmdBbGxvd09yaWdpbi5jcHAKIHBsYXRm
b3JtL3NxbC9TUUxpdGVBdXRob3JpemVyLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcAorcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcAorcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAKK3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZVN0YXRlbWVudC5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKIHBsYXRm
b3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4NmJlMWIwNjYzNzBjMGYwZGY4MjA5ZDExNWEzZGQzNDQ3MzBjNmY0Li40N2E1ZjJkZjcyZmM4
YmE2Zjk1MDZiYzU2YTI1YTc0ZjFjOTMyYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDI2LDYgKzMwMjYsMTIgQEAKIAkJ
OTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU2QzlBODFD
ODkzMTI4MDBDNDU2REYgLyogQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMjFENTdCM0ZF
MDBBQjg1RUEgLyogVVJMRGVjb21wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTERlY29t
cG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0Q0MzdBMzFENTdCN0UyMDBBQjg1RUEgLyogSlNNZWRpYUxpc3RDdXN0b20uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENzI2RkU3MTZEOUYy
MDQwMDNBNEU2RCAvKiBKU01lZGlhTGlzdEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDQyMjdEQkZGMEIwMDEwN0M3NSAvKiBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENUREMzgyN0RCRkYwMzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTNENURENDQyN0RCRkYwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVE
RDNBMjdEQkZGMDQwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENURENDUyN0RC
RkYwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREM0IyN0RCRkYw
NTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDQ3MjdEQkZG
MEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDNEMjdEQkZGMDgwMDEwN0M3NSAv
KiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Q1REQ0ODI3REJGRjBDMDAxMDdDNzUgLyogU1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQzRTI3REJGRjA5MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENURENDkyN0RCRkYwQzAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Q1REQzRjI3REJGRjBBMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0Q2Qjc3MDI1NEI5OEEwMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNENkI3NkYyNTRCOTAyRDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
M0Q2Qjc3MTI1NEJBQjQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZEMjU0QjhF
MUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRDZCN0E4MjU1MUQ0MUYwMDU4REQz
QSAvKiBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0E2MjU1MUQzRUQwMDU4REQzQSAvKiBE
dW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI4OTksNiArMTI5MDUsMTYgQEAKIAkJOTNEMDUw
MzEyNTNBMTQ4QzAwMkEzMDcyIC8qIEFic3RyYWN0UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQWJzdHJhY3RSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDE5
NjMwMUQ2Q0FCNzYwMEZDN0U0NyAvKiBFeGNlcHRpb25Pci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeGNlcHRpb25Pci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0QxOTYzMjFENkNBQjgyMDBGQzdFNDcgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0Q1REQzNzI3REJGRjAzMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDM4MjdE
QkZGMDMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzOTI3REJGRjA0MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNENUREM0EyN0RCRkYwNDAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFu
c2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzQjI3REJGRjA1
MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29w
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzQzI3REJGRjA3MDAxMDdD
NzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0Q1REQzRDI3REJGRjA4MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQz
RTI3REJGRjA5MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlU
cmFja2VySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzRjI3REJG
RjBBMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENURENDAyN0RCRkYwQTAwMTA3Qzc1IC8q
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3NkQyNTRCOEUxQjAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzZFMjU0QjhFMUIwMDU4
REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRDZCNzZGMjU0QjkwMkQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTgwLDkgKzE5NTk2LDE5IEBACiAJCQkJMUEyRTZF
NzgwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhvcml6ZXIuY3BwICovLAogCQkJCTFBMjI0
NjQzMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5jcHAgKi8sCiAJCQkJMUEyMjQ2
NDQwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZURhdGFiYXNlLmggKi8sCisJCQkJOTNENURENDAy
N0RCRkYwQTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCAqLywK
KwkJCQk5M0Q1REQzRjI3REJGRjBBMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIuaCAqLywKKwkJCQk5M0Q1REQzRTI3REJGRjA5MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJh
c2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggKi8sCisJCQkJOTNENUREMzcyN0RCRkYwMzAwMTA3Qzc1
IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJOTNENUREM0QyN0RCRkYw
ODAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oICovLAorCQkJCTkzRDVERDND
MjdEQkZGMDcwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAgKi8sCisJCQkJ
OTNENUREMzgyN0RCRkYwMzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggKi8s
CisJCQkJOTNENUREM0IyN0RCRkYwNTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
UmVzZXRTY29wZS5oICovLAogCQkJCTdFNDc0RTFEMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVE
YXRhYmFzZVRyYWNrZXIuY3BwICovLAogCQkJCTdFNDc0RTFDMTI0OTREQzkwMDIzNTM2NCAvKiBT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaCAqLywKIAkJCQk3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQg
LyogU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8sCisJCQkJOTNENUREMzkyN0RCRkYw
NDAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwICovLAorCQkJCTkzRDVE
RDNBMjdEQkZGMDQwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi8sCiAJ
CQkJQjVBNjg0MjMwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwICovLAog
CQkJCUI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggKi8sCiAJ
CQkJMUEyMjQ2NDUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCkBA
IC0yODE3MCwxOCArMjgxOTYsMTggQEAKIAkJCQlBQTJBNUFCRDE2QTQ4NUQ1MDA5NzVBMjUgLyog
U3BlZWNoU3ludGhlc2lzLmNwcCAqLywKIAkJCQlBQTJBNUFCRTE2QTQ4NUQ1MDA5NzVBMjUgLyog
U3BlZWNoU3ludGhlc2lzLmggKi8sCiAJCQkJQUEyQTVBQkYxNkE0ODVENTAwOTc1QTI1IC8qIFNw
ZWVjaFN5bnRoZXNpcy5pZGwgKi8sCi0JCQkJQUEyQTVBQzAxNkE0ODVENTAwOTc1QTI1IC8qIFNw
ZWVjaFN5bnRoZXNpc0V2ZW50LmNwcCAqLywKLQkJCQlBQTJBNUFDMTE2QTQ4NUQ1MDA5NzVBMjUg
LyogU3BlZWNoU3ludGhlc2lzRXZlbnQuaCAqLywKLQkJCQlBQTJBNUFDMjE2QTQ4NUQ1MDA5NzVB
MjUgLyogU3BlZWNoU3ludGhlc2lzRXZlbnQuaWRsICovLAotCQkJCTI5RjgzRUM5MjdENTk0RTUw
MEUxRjBGRCAvKiBTcGVlY2hTeW50aGVzaXNFdmVudEluaXQuaCAqLywKLQkJCQkyOUY4M0VDQjI3
RDU5NTI2MDBFMUYwRkQgLyogU3BlZWNoU3ludGhlc2lzRXZlbnRJbml0LmlkbCAqLywKIAkJCQky
OUY4M0VDNjI3RDMxOTI2MDBFMUYwRkQgLyogU3BlZWNoU3ludGhlc2lzRXJyb3JDb2RlLmggKi8s
CiAJCQkJMjlGODNFQ0UyN0Q1RkE2MzAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0Vycm9yQ29k
ZS5pZGwgKi8sCiAJCQkJMjlGODNFQzQyN0QzMTVBMjAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNp
c0Vycm9yRXZlbnQuY3BwICovLAogCQkJCTI5RjgzRUMzMjdEMzE1QTIwMEUxRjBGRCAvKiBTcGVl
Y2hTeW50aGVzaXNFcnJvckV2ZW50LmggKi8sCiAJCQkJMjlGODNFQzUyN0QzMTVCODAwRTFGMEZE
IC8qIFNwZWVjaFN5bnRoZXNpc0Vycm9yRXZlbnQuaWRsICovLAotCQkJCTI5RjgzRUNGMjdENkM3
MkEwMEUxRjBGRCAvKiBTcGVlY2hTeW50aGVzaXNFcnJvckV2ZW50SW5pdC5pZGwgKi8sCiAJCQkJ
MjlGODNFRDAyN0Q2Qzg4NTAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0Vycm9yRXZlbnRJbml0
LmggKi8sCisJCQkJMjlGODNFQ0YyN0Q2QzcyQTAwRTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0Vy
cm9yRXZlbnRJbml0LmlkbCAqLywKKwkJCQlBQTJBNUFDMDE2QTQ4NUQ1MDA5NzVBMjUgLyogU3Bl
ZWNoU3ludGhlc2lzRXZlbnQuY3BwICovLAorCQkJCUFBMkE1QUMxMTZBNDg1RDUwMDk3NUEyNSAv
KiBTcGVlY2hTeW50aGVzaXNFdmVudC5oICovLAorCQkJCUFBMkE1QUMyMTZBNDg1RDUwMDk3NUEy
NSAvKiBTcGVlY2hTeW50aGVzaXNFdmVudC5pZGwgKi8sCisJCQkJMjlGODNFQzkyN0Q1OTRFNTAw
RTFGMEZEIC8qIFNwZWVjaFN5bnRoZXNpc0V2ZW50SW5pdC5oICovLAorCQkJCTI5RjgzRUNCMjdE
NTk1MjYwMEUxRjBGRCAvKiBTcGVlY2hTeW50aGVzaXNFdmVudEluaXQuaWRsICovLAogCQkJCUFB
MkE1QUM0MTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwICov
LAogCQkJCUFBMkE1QUM1MTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UuaCAqLywKIAkJCQlBQTJBNUFDMzE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmlkbCAqLywKQEAgLTMzNDUyLDggKzMzNDc4LDYgQEAKIAkJCWlzYSA9IFBCWEhl
YWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAotCQkJCTY1NjU4MEY0MDlEMTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVz
LmggaW4gSGVhZGVycyAqLywKLQkJCQk2NTY1ODE1MTA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFs
dWVLZXl3b3Jkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENF
IC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2
RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5NTIw
N0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAt
MzQyMDMsNiArMzQyMjcsNyBAQAogCQkJCUE4MEU2Q0ZGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQ
cm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFGMDVGODAyNTEyNDQyRTAwNzFFNjkzIC8q
IENTU1Byb3BlcnR5QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTMxNzEzNDFGQkU3
OERCMDBGNzU4REUgLyogQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNjU2NTgwRjQwOUQxMkIyMDAwMEU2MUQ3IC8qIENTU1Byb3BlcnR5TmFtZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk0NkQzNzQ2MUQ2RDAxRDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ5Qzc3MDUxRDZFMzlFQTAwQzBERTRGIC8qIENT
U1Byb3BlcnR5UGFyc2VySGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ2RDM3NDYxRDZE
MDFENTAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zNDI0NSw2ICszNDI3MCw3IEBACiAJCQkJNEJBRkQwRDkyMTkyMUVBMDAwQzBBQjY0
IC8qIENTU1VucGFyc2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0VFMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNCQkMyNDcyMzgz
NTUyNjAwNkVDMzlGIC8qIENTU1ZhbHVlS2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk2NTY1ODE1
MTA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgwRTZDRTkwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1ZhbHVlTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ5QkQ5RkExMzFGRDJFRDAwM0M1NkYwIC8qIENTU1ZhbHVlUG9vbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTQ0NENCRTgxRDg4NjFDMjAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlRGF0
YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDkxOCw2ICszNDk0NCw3IEBACiAJCQkJQThDRkY3QTcw
QTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NEIwMDE4OTI2RTdGMjFGMDA2RUFBQkUgLyogSFRNTE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThERjNGRDQwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxOYW1lQ29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQThEMDZCMzkwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MUQ0NUEwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxPYmpl
Y3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBNzlGMTBBMTkxNkRGMDBBOEVGNUYg
LyogSFRNTE9MaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMzY5REUwOTczNzRG
NjAwRDc0NDYzIC8qIEhUTUxPcHRHcm91cEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzU0
NjMsNiArMzU0OTAsNyBAQAogCQkJCUJDNjQ2NDk4MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0
cmluZ01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzY5NDU2M0QxMjE0RDk3QzAwMDdDQkFFIC8q
IEpTRE9NVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTM3RTAwNjEyREJDNUE0MDBB
NkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0MDNCQTBGMDlFQjE4Rjkw
MDc5N0M3RiAvKiBKU0RPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdF
MjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUy
RkJCQkMwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjBDQkYzNjFENEJDRDBFMDA5MkU4OEUgLyogSlNET01XaW5kb3dQcm9wZXJ0aWVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTM1Njg3LDYgKzM1NzE1LDcgQEAKIAkJCQlBOUQyNDdGODBE
NzU3RTM0MDBGREY5NTkgLyogSlNOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3RDUx
MDI1MUVENzRCNTgwMERBNEM4NyAvKiBKU05hdmlnYXRvckNyZWRlbnRpYWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUY4ODZDMDFGMzI5MjMxMDBDMTkzRUYgLyogSlNOYXZpZ2F0b3JTZXJ2aWNl
V29ya2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNERDMEQzODA5RkVEMDczMDA3QjAyMzUgLyog
SlNOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk0MzlDMzExNkNGNDk0MDA0OEM3NTAgLyog
SlNOb2RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDExNUI3MzA5Rjg0Q0Q2MDBDQTRG
QzEgLyogSlNOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTc1MEQ4RTBBOTBFNTIx
MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzU4NTEsMTIg
KzM1ODgwLDYgQEAKIAkJCQlCQ0UwMTM5QjBDMEJFRjE4MDA0Mzg2MEEgLyogSlNTdHlsZVNoZWV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDcyNkZFRTE2REExMUJDMDAzQTRFNkQgLyogSlNTdHls
ZVNoZWV0Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODRFQkQ4MzBDQjhDOTc3MDAwNzk2
MDkgLyogSlNTdHlsZVNoZWV0TGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThEMDZCMzkwQTI2
NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTQwM0JBMEYw
OUVCMThGOTAwNzk3QzdGIC8qIEpTRE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKLQkJCQkxNERD
MEQzODA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwOEM3
QTJDNzEwREM3NDYyMDAyRDM2OEIgLyogU1ZHTmFtZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTFB
MTQxNEI2MTNBMEYwNTAwMDE5OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTdDRDU4REZCMUY5NTY1QTUwMDExMjc5MSAvKiBTZXR0aW5ncy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTcxRjIxODkxREE1N0M1NDAwNUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRv
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdB
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyOTIxM0NBOTUxRTAwRDIxOTE1IC8q
IEpTU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM3MzM1LDYgKzM3
MzU4LDcgQEAKIAkJCQk0NkVGMTQyQTFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMTAwOTlFNjQ5MjAwNTZFNTgx
IC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlCOERCREI0
QzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0NENThERkIxRjk1NjVBNTAwMTEyNzkxIC8qIFNldHRpbmdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3Q0M5NzIyRTFGOTNFMzM2MDAwNEQ0Q0YgLyogU2V0dGluZ3NCYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogU0ZyYW1lVXRpbHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGM0RENDUwMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTM3NDM3LDggKzM3NDYxLDE0IEBACiAJCQkJOTdCQzZBM0Ix
NTA1RjA4MTAwMUI3NEFDIC8qIFNRTENhbGxiYWNrV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTdCQzZBM0MxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTEVycm9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTIyNDY0QTBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzRDVERDQ5MjdEQkZGMEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENURENDgyN0RCRkYwQzAwMTA3
Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNENURENDcyN0RCRkYwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENURENDIyN0RCRkYwQjAwMTA3Qzc1IC8qIFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0NTI3REJGRjBC
MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3RTQ3NEUxRjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTQ3NEUxRTEyNDk0REM5MDAyMzUzNjQgLyogU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0NDI3
REJGRjBCMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjVBNjg0MjIwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMkJEQjRCMUM0NTZGRkEwMDY0OTRERiAvKiBTUUxpdGVJREJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4
MyAvKiBTUUxpdGVJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzc2NjIsNiArMzc2OTIs
NyBAQAogCQkJCUIyMjI3QTRCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNZXRhZGF0YUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyQTFGMkIxMENFRjBBQkYwMDQ0MkY2QSAvKiBTVkdNaXNz
aW5nR2x5cGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E0RTBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHTVBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEM3QTJDNzEw
REM3NDYyMDAyRDM2OEIgLyogU1ZHTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTU4RDUw
MURENjlBMUUwMDEyODU1MiAvKiBTVkdOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QTUxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdOdW1iZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4MTA2LDYgKzM4MTM3LDcgQEAKIAkJCQlBNTg0RkUzMDE4NjRDQjg0MDA4
NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNURGRUJBQjcxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2YWls
YWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUExNDE0QjYxM0EwRjA1MDAwMTk5OTZDIC8q
IFdlYktpdEZvbnRGYW1pbHlOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNDUxREE2
MzlCQTAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRDA2MjE1MTFEQTYzQTlGMDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlOZWVkZWRF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNEUxREE2M0E4RTAwQTdGQjI2IC8qIFdl
YktpdE1lZGlhS2V5cy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YjU1MGZmZmIwZGRmOWI1Y2Y3ZGFlZTcyZmY1MTc1MDA0NDk5ZGUxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
QWN0aXZpdHlUcmFja2VyLmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5o
IgorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgiCisjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlciYgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNpbmds
ZXRvbigpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlcj4gdHJhY2tlcjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFsmXSB7CisgICAgICAgIHRyYWNrZXIu
Y29uc3RydWN0KCk7CisgICAgfSk7CisgICAgcmV0dXJuIHRyYWNrZXIuZ2V0KCk7Cit9CisKK3Zv
aWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNldEltcGwoY29uc3QgU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsR2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgbV9pbXBsID0gZ2VuZXJhdG9yKCkucHRyKCk7
Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmJlZ2luQWN0aXZpdHko
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKworICAgIEFTU0VSVChtX2FjdGl2ZUNvbm5lY3Rpb25zLmNvbnRhaW5z
KGNvbm5lY3Rpb24pKTsKKworICAgIG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wID0gV2FsbFRpbWU6
Om5vdygpOworICAgIGlmIChtX2ltcGwgJiYgbV9hY3RpdmVDb25uZWN0aW9ucy5jb21wdXRlc0Vt
cHR5KCkpCisgICAgICAgIG1faW1wbC0+d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpOworCisgICAg
bV9hY3RpdmVDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7CisgICAgY29ubmVjdGlvbi5zZXRJ
c0FjdGl2ZSh0cnVlKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6
ZW5kQWN0aXZpdHkoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmIChtX2FjdGl2ZUNvbm5lY3Rpb25z
LnJlbW92ZShjb25uZWN0aW9uKSkKKyAgICAgICAgY29ubmVjdGlvbi5zZXRJc0FjdGl2ZShmYWxz
ZSk7CisKKyAgICBpZiAoIW1fYWN0aXZlQ29ubmVjdGlvbnMuY29tcHV0ZXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcCA9IFdhbGxUaW1lOjpu
b3coKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcigxX3MsIFt0aW1lc3RhbXAg
PSBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcF0geworICAgICAgICBTUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuY2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAodGltZXN0
YW1wKTsKKyAgICB9KTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6
Y2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAoV2FsbFRpbWUgdGltZXN0YW1wKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmIChtX2ltcGwgJiYgbV9sYXN0QWN0aXZp
dHlUaW1lc3RhbXAgPT0gdGltZXN0YW1wKQorICAgICAgICBtX2ltcGwtPmRpZEVuZExhc3RBY3Rp
dml0eSgpOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjppbnZhbGlk
YXRlQWxsQWN0aXZpdGllcygpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisg
ICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9hY3RpdmVDb25uZWN0aW9ucykKKyAgICAgICAg
Y29ubmVjdGlvbi5pbnZhbGlkYXRlQWN0aXZpdHkoKTsKKworICAgIG1fYWN0aXZlQ29ubmVjdGlv
bnMuY2xlYXIoKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCB2YWx1ZSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CisKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwtPnNldElzSG9sZGlu
Z0xvY2tlZEZpbGVzKHZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlU
cmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rp
dml0eVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjIxMjQ2ZDcyMzQzZDM0YjcyMmM2NTAzZTQ2MDkw
MmFiNjViZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VBY3Rpdml0
eVRyYWNrZXJJbXBsOworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlciB7Citw
dWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlU
cmFja2VyJiBzaW5nbGV0b24oKTsKKyAgICB2b2lkIGJlZ2luQWN0aXZpdHkoU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uJik7CisgICAgdm9pZCBlbmRBY3Rpdml0eShTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb24mKTsKKyAgICB1c2luZyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGxHZW5l
cmF0b3IgPSBGdW5jdGlvbjxSZWY8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsPigp
PjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltcGwoY29uc3QgU1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXJJbXBsR2VuZXJhdG9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bnZhbGlkYXRlQWxsQWN0aXZpdGllcygpOworICAgIHZvaWQgY2hlY2tMYXN0QWN0aXZpdHlUaW1l
c3RhbXAoV2FsbFRpbWUpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc0hvbGRpbmdM
b2NrZWRGaWxlcyhib29sIHZhbHVlKTsKK3ByaXZhdGU6CisgICAgTG9jayBtX2xvY2s7CisgICAg
V2FsbFRpbWUgbV9sYXN0QWN0aXZpdHlUaW1lc3RhbXA7CisgICAgV2Vha0hhc2hTZXQ8U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uPiBtX2FjdGl2ZUNvbm5lY3Rpb25zIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9sb2NrKTsKKyAgICBSZWZQdHI8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBs
PiBtX2ltcGwgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjN2M0
NDFiZTc1MmUzYzkwYWE2ZTc3OGZiNzk0OTdlM2I0OWQyZDAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJ
bXBsLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
UUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwgOiBwdWJsaWMgUmVmQ291bnRlZDxTUUxp
dGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGw+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5T
UUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kTGFz
dEFjdGl2aXR5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyhib29sIHZhbHVlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM2N2I2ZTMzZTI0NWFmYmRlMzk1NzM2OTkwMTZjZjY5YjAyYzYw
NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIK
KworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlci5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmgiCisjaW5jbHVk
ZSAiU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHVpbnQ2NF90IG5leHRTdGF0ZW1lbnRJZGVudGlm
aWVyKCkKK3sKKyAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnRTdGF0ZW1l
bnRJZGVudGlmaWVyOworICAgIHJldHVybiArK2N1cnJlbnRTdGF0ZW1lbnRJZGVudGlmaWVyOwor
fQorCitzdGF0aWMgdWludDY0X3QgbmV4dFRyYW5zYWN0aW9uSWRlbnRpZmllcigpCit7CisgICAg
c3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50VHJhbnNhY3Rpb25JZGVudGlmaWVy
OworICAgIHJldHVybiArK2N1cnJlbnRUcmFuc2FjdGlvbklkZW50aWZpZXI7Cit9CisKK3N0YXRp
YyB2b2lkIGluaXRpYWxpemVTUUxpdGUoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBm
bGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGZsYWcsIFtdIHsKKyAgICAgICAgaWYgKGludCByZXN1
bHQgPSBzcWxpdGUzX2luaXRpYWxpemUoKTsgcmVzdWx0ICE9IFNRTElURV9PSykKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNRTERhdGFiYXNlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUg
c3FsaXRlOiAlcyIsIHNxbGl0ZTNfZXJyc3RyKHJlc3VsdCkpOworICAgIH0pOworfQorCitSZWY8
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3Nl
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbihw
YXRoLCBzaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpKTsKK30KKworU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRo
LCBib29sIHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkKKyAgICA6IG1fcGF0aChwYXRo
KQorICAgICwgbV9zaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2Uoc2hvdWxkQ29tbWl0VHJh
bnNhY3Rpb25BdENsb3NlKQoreworICAgIGluaXRpYWxpemVTUUxpdGUoKTsKKyAgICBiZWdpbkFj
dGl2aXR5KCk7CisKKyAgICBpZiAoIW9wZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFlbmFibGVFeHRlbmRlZFJlc3VsdENvZGUoKSB8fCAhZW5hYmxlSW5NZW1vcnlUZW1wU3RvcmUo
KSkgeworICAgICAgICBjbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGVuYWJsZVdBTEpvdXJuYWxNb2RlKCkpCisgICAgICAgIGV4ZWN1dGVXQUxDaGVja3BvaW50KENo
ZWNrcG9pbnRNb2RlOjpUcnVuY2F0ZSk7Cit9CisKK1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
flNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbigpCit7CisgICAgY2xvc2UoKTsKKyAgICBlbmRBY3Rp
dml0eSgpOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6b3BlbigpCit7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX2lzQWN0aXZlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIGluLW1l
bW9yeSBkYXRhYmFzZS4KKyAgICBpZiAobV9wYXRoID09IGluTWVtb3J5UGF0aCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgb3BlbkZsYWdzID0gU1FMSVRFX09QRU5fQVVUT1BS
T1hZIHwgU1FMSVRFX09QRU5fUkVBRFdSSVRFIHwgU1FMSVRFX09QRU5fQ1JFQVRFOworICAgIGlu
dCByZXN1bHQgPSBzcWxpdGUzX29wZW5fdjIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKG1fcGF0aCkuZGF0YSgpLCAmbV9zcWxpdGVDb25uZWN0aW9uLCBvcGVuRmxhZ3MsIG51
bGxwdHIpOworICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX09LIHx8ICFtX3NxbGl0ZUNvbm5lY3Rp
b24pIHsKKyAgICAgICAgbV9zcWxpdGVDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2UoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKKworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzcWxpdGUzX2ludGVycnVwdChtX3NxbGl0ZUNvbm5lY3Rpb24pOworCisgICAgaWYgKCFzcWxp
dGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVjdGlvbikpIHsKKyAgICAgICAgQVNDSUlM
aXRlcmFsIHF1ZXJ5ID0gIlJPTExCQUNLIl9zOworICAgICAgICBpZiAobV9zaG91bGRDb21taXRU
cmFuc2FjdGlvbkF0Q2xvc2UpCisgICAgICAgICAgICBxdWVyeSA9ICJDT01NSVQiX3M7CisgICAg
ICAgIHNxbGl0ZTNfc3RtdCogc3RhdGVtZW50IHsgbnVsbHB0ciB9OworICAgICAgICBpbnQgcmVz
dWx0ID0gc3FsaXRlM19wcmVwYXJlX3YyKG1fc3FsaXRlQ29ubmVjdGlvbiwgcXVlcnkuY2hhcmFj
dGVycygpLCBxdWVyeS5sZW5ndGgoKSArIDEsICZzdGF0ZW1lbnQsIG51bGxwdHIpOworICAgICAg
ICBpZiAocmVzdWx0ID09IFNRTElURV9PSykKKyAgICAgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNf
c3RlcChzdGF0ZW1lbnQpOworICAgICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQorICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OmNsb3NlIGZhaWxlZCB0byByb2xsIGJhY2sgdHJhbnNhY3Rpb24gKCVkKSAtICgl
cykiLCByZXN1bHQsIHNxbGl0ZTNfZXJybXNnKG1fc3FsaXRlQ29ubmVjdGlvbikpOworICAgICAg
ICBzcWxpdGUzX3Jlc2V0KHN0YXRlbWVudCk7CisgICAgICAgIHNxbGl0ZTNfZmluYWxpemUoc3Rh
dGVtZW50KTsKKyAgICAgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpu
dWxsb3B0OworICAgIH0KKworICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogbV9zdGF0ZW1lbnRz
LnZhbHVlcygpKSB7CisgICAgICAgIHNxbGl0ZTNfcmVzZXQoc3RhdGVtZW50LnNxbGl0ZVN0YXRl
bWVudCk7CisgICAgICAgIHNxbGl0ZTNfZmluYWxpemUoc3RhdGVtZW50LnNxbGl0ZVN0YXRlbWVu
dCk7CisgICAgfQorCisgICAgbV9zdGF0ZW1lbnRzLmNsZWFyKCk7CisKKyAgICBpbnQgcmVzdWx0
ID0gc3FsaXRlM19jbG9zZShtX3NxbGl0ZUNvbm5lY3Rpb24pOworICAgIGlmIChyZXN1bHQgIT0g
U1FMSVRFX09LKQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2VDb25uZWN0aW9uOiBmYWlsZWQgdG8gY2xvc2UgZGF0
YWJhc2UgKCVkKSAtICVzIiwgcmVzdWx0LCBzcWxpdGUzX2Vycm1zZyhtX3NxbGl0ZUNvbm5lY3Rp
b24pKTsKKworICAgIG1fc3FsaXRlQ29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgbV9pc0FjdGl2
ZSA9IGZhbHNlOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmVnaW5BY3Rp
dml0eSgpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuYmVnaW5BY3Rpdml0eSgqdGhpcyk7CisjZWxzZQor
ICAgIHNldElzQWN0aXZlKHRydWUpOworI2VuZGlmCit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uOjplbmRBY3Rpdml0eSgpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuZW5kQWN0aXZpdHko
KnRoaXMpOworI2Vsc2UKKyAgICBzZXRJc0FjdGl2ZShmYWxzZSk7CisjZW5kaWYKK30KKwordm9p
ZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmludmFsaWRhdGVBY3Rpdml0eSgpCit7CisgICAg
Y2xvc2UoKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnNldElzQWN0aXZl
KGJvb2wgdmFsdWUpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgbV9p
c0FjdGl2ZSA9IHZhbHVlOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aXNP
cGVuKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICByZXR1cm4gISFt
X3NxbGl0ZUNvbm5lY3Rpb247Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpl
bmFibGVFeHRlbmRlZFJlc3VsdENvZGUoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKKyAgICByZXR1cm4gISFtX3NxbGl0ZUNvbm5lY3Rpb24gJiYgc3FsaXRlM19leHRlbmRlZF9y
ZXN1bHRfY29kZXMobV9zcWxpdGVDb25uZWN0aW9uLCAxKSA9PSBTUUxJVEVfT0s7Cit9CisKK2Jv
b2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVJbk1lbW9yeVRlbXBTdG9yZSgpCit7
CisgICAgcmV0dXJuIGV4ZWN1dGUoIlBSQUdNQSB0ZW1wX3N0b3JlID0gTUVNT1JZIik7Cit9CisK
K2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVXQUxKb3VybmFsTW9kZSgpCit7
CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFu
ZFByZXBhcmUoU3RyaW5nVmlldyB7ICJQUkFHTUEgam91cm5hbF9tb2RlPVdBTCJfcyB9KTsKKyAg
ICBpZiAoIW9wdGlvbmFsSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXV0byBpZGVudGlmaWVyID0gKm9wdGlvbmFsSWRlbnRpZmllcjsKKyAgICBib29sIGVuYWJsZWQg
PSBmYWxzZTsKKyAgICBpZiAoc3RlcFN0YXRlbWVudChpZGVudGlmaWVyKSA9PSBTUUxJVEVfUk9X
KQorICAgICAgICBlbmFibGVkID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29sdW1u
VGV4dChpZGVudGlmaWVyLCAwKSwgIndhbCIpOworICAgIGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVu
dChpZGVudGlmaWVyKTsKKworICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgIGF1dG8gc2htUGF0
aCA9IG1ha2VTdHJpbmcobV9wYXRoLCAiLXNobSJfcyk7CisgICAgICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKHNobVBhdGgpICYmICFGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5
TWFwRm9yUGF0aChzaG1QYXRoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gZW5hYmxlZDsKK30KKworc3RhdGljIGludCBjaGVja3BvaW50TW9kZVZhbHVl
KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Q2hlY2twb2ludE1vZGUgbW9kZSkKK3sKKyAgICBz
d2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Q2hlY2tw
b2ludE1vZGU6OkZ1bGw6CisgICAgICAgIHJldHVybiBTUUxJVEVfQ0hFQ0tQT0lOVF9GVUxMOwor
ICAgIGNhc2UgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpDaGVja3BvaW50TW9kZTo6VHJ1bmNh
dGU6CisgICAgICAgIHJldHVybiBTUUxJVEVfQ0hFQ0tQT0lOVF9UUlVOQ0FURTsKKyAgICB9Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OmV4ZWN1dGVXQUxDaGVja3BvaW50KENoZWNrcG9pbnRNb2RlIG1vZGUpCit7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxpdGVDb25uZWN0
aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc3FsaXRlM193YWxfY2hl
Y2twb2ludF92MihtX3NxbGl0ZUNvbm5lY3Rpb24sIG51bGxwdHIsIGNoZWNrcG9pbnRNb2RlVmFs
dWUobW9kZSksIG51bGxwdHIsIG51bGxwdHIpID09IFNRTElURV9PSzsKK30KKworc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVJbnRlcm5hbFN0
YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSkKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBzcWxpdGUzX3N0bXQqIHNxbGl0ZVN0YXRlbWVudCB7IG51
bGxwdHIgfTsKKyAgICBjb25zdCBjaGFyKiB0YWlsID0gbnVsbHB0cjsKKyAgICBpbnQgcmVzdWx0
OworICAgIGlmIChxdWVyeS5pczhCaXQoKSAmJiBxdWVyeS5pc0FsbEFTQ0lJKCkpCisgICAgICAg
IHJlc3VsdCA9IHNxbGl0ZTNfcHJlcGFyZV92MihtX3NxbGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5Lmxl
bmd0aCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocXVlcnkuY2hhcmFjdGVyczgo
KSkgOiAiIiwgcXVlcnkubGVuZ3RoKCkgKyAxLCAmc3FsaXRlU3RhdGVtZW50LCAmdGFpbCk7Cisg
ICAgZWxzZQorICAgICAgICByZXN1bHQgPSBzcWxpdGUzX3ByZXBhcmVfdjIobV9zcWxpdGVDb25u
ZWN0aW9uLCBxdWVyeS51dGY4KCkuZGF0YSgpLCBxdWVyeS51dGY4KCkubGVuZ3RoKCkgKyAxLCAm
c3FsaXRlU3RhdGVtZW50LCAmdGFpbCk7CisgICAgaWYgKHRhaWwgJiYgKnRhaWwpCisgICAgICAg
IHJlc3VsdCA9IFNRTElURV9FUlJPUjsKKworICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX09LKSB7
CisgICAgICAgIHNxbGl0ZTNfZmluYWxpemUoc3FsaXRlU3RhdGVtZW50KTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBuZXh0U3Rh
dGVtZW50SWRlbnRpZmllcigpOworICAgIG1fc3RhdGVtZW50cy5hZGQoaWRlbnRpZmllciwgSW50
ZXJuYWxTdGF0ZW1lbnQgeyBpZGVudGlmaWVyLCBzcWxpdGVTdGF0ZW1lbnQsIHN0ZDo6bnVsbG9w
dCB9KTsKKworICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6ZGVzdHJveUludGVybmFsU3RhdGVtZW50KHVpbnQ2NF90IGlkZW50aWZpZXIp
Cit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxpdGVDb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBpdGVyID0gbV9zdGF0ZW1l
bnRzLmZpbmQoaWRlbnRpZmllcik7IGl0ZXIgIT0gbV9zdGF0ZW1lbnRzLmVuZCgpKSB7CisgICAg
ICAgIHNxbGl0ZTNfZmluYWxpemUoaXRlci0+dmFsdWUuc3FsaXRlU3RhdGVtZW50KTsKKyAgICAg
ICAgbV9zdGF0ZW1lbnRzLnJlbW92ZShpdGVyKTsKKyAgICB9Cit9CisKK2ludCBTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246Omxhc3RDaGFuZ2VzKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiAwOwor
CisgICAgcmV0dXJuIHNxbGl0ZTNfY2hhbmdlcyhtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitp
bnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpsYXN0RXJyb3IoKQoreworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAg
cmV0dXJuIFNRTElURV9FUlJPUjsKKworICAgIHJldHVybiBzcWxpdGUzX2VycmNvZGUobV9zcWxp
dGVDb25uZWN0aW9uKTsKK30KKworY29uc3QgY2hhciogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpsYXN0RXJyb3JNZXNzYWdlKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Cisg
ICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiAiRGF0YWJhc2UgY29u
bmVjdGlvbiBpcyBub3Qgb3BlbiI7CisKKyAgICByZXR1cm4gc3FsaXRlM19lcnJtc2cobV9zcWxp
dGVDb25uZWN0aW9uKTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6dGFi
bGVDcmVhdGlvblF1ZXJ5KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKQoreworICAgIGF1dG8gb3B0
aW9uYWxJZGVudGlmaWVyID0gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmlu
Z1ZpZXcgeyAiU0VMRUNUIHNxbCBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZSA9ICd0YWJs
ZScgQU5EIG5hbWUgPSA/OyJfcyB9KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRlbnRpZmllcikKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50
aWZpZXI7CisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBpZiAoYmluZFRleHQoaWRlbnRpZmllciwg
MSwgdGFibGVOYW1lKSA9PSBTUUxJVEVfT0sgJiYgc3RlcFN0YXRlbWVudChpZGVudGlmaWVyKSA9
PSBTUUxJVEVfUk9XKQorICAgICAgICByZXN1bHQgPSBjb2x1bW5UZXh0KGlkZW50aWZpZXIsIDAp
OworICAgIGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlKEFT
Q0lJTGl0ZXJhbCBxdWVyeSkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZShTdHJpbmdWaWV3IHsgcXVl
cnkgfSk7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlKFN0cmlu
Z1ZpZXcgcXVlcnkpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYg
KCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBy
ZXN1bHQgPSBzcWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCBxdWVyeS51dGY4KCkuZGF0
YSgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICByZXR1cm4gcmVzdWx0ID09IFNR
TElURV9PSyB8fCByZXN1bHQgPT0gU1FMSVRFX0RPTkU7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpzZXRNYXhpbXVtU2l6ZShpbnQ2NF90IHNpemUpCit7CisgICAgaW50IGN1
cnJlbnRQYWdlU2l6ZSA9IHBhZ2VTaXplKCk7CisgICAgaWYgKCFjdXJyZW50UGFnZVNpemUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGludDY0X3QgbmV3TWF4UGFnZUNvdW50ID0gY3VycmVudFBh
Z2VTaXplID8gc2l6ZSAvIGN1cnJlbnRQYWdlU2l6ZSA6IDA7CisgICAgYXV0byBvcHRpb25hbElk
ZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUobWFrZVN0cmluZygi
UFJBR01BIG1heF9wYWdlX2NvdW50ID0gIiwgbmV3TWF4UGFnZUNvdW50KSk7CisgICAgaWYgKCFv
cHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaWRlbnRpZmll
ciA9ICpvcHRpb25hbElkZW50aWZpZXI7CisgICAgaWYgKHN0ZXBTdGF0ZW1lbnQoaWRlbnRpZmll
cikgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OnNldE1heGltdW1TaXplIGZhaWxlZCB0byBzZXQgbWF4aW11bSBzaXplIG9mIGRhdGFi
YXNlIHRvICVsbGkgYnl0ZXMiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHNpemUpKTsKKworICAg
IGRlc3Ryb3lJbnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKK30KKworaW50IFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6cGFnZVNpemUoKQoreworICAgIGF1dG8gb3B0aW9uYWxJZGVudGlm
aWVyID0gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgeyAiUFJB
R01BIHBhZ2Vfc2l6ZSJfcyB9KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9uYWxJZGVudGlmaWVy
OworICAgIGludCBzaXplID0gY29sdW1uSW50KGlkZW50aWZpZXIsIDApOworICAgIGRlc3Ryb3lJ
bnRlcm5hbFN0YXRlbWVudChpZGVudGlmaWVyKTsKKworICAgIHJldHVybiBzaXplOworfQorCit2
b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVsZWFzZU1lbW9yeSgpCit7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNfZGJfcmVsZWFzZV9tZW1vcnkobV9zcWxpdGVD
b25uZWN0aW9uKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoQVND
SUlMaXRlcmFsIHF1ZXJ5KQoreworICAgIHJldHVybiBjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJl
KFN0cmluZ1ZpZXcgeyBxdWVyeSB9KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVN0YXRlbWVudEFu
ZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSkKK3sKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmll
ciA9IGNyZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShxdWVyeSk7CisgICAgaWYgKCFv
cHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4obmV3IFNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50KCp0aGlzLCAqb3B0aW9uYWxJZGVudGlmaWVyKSk7Cit9CisKK3NxbGl0ZTNf
c3RtdCogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpmaW5kU1FMaXRlU3RhdGVtZW50KHVpbnQ2
NF90IGlkZW50aWZpZXIpIGNvbnN0IFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMK
K3sKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKKworICAgIGF1dG8gaXRlciA9IG1fc3Rh
dGVtZW50cy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyID09IG1fc3RhdGVtZW50cy5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gaXRlci0+dmFsdWUu
c3FsaXRlU3RhdGVtZW50OworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiaW5k
QmxvYih1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4g
YmxvYikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgaWYgKCFtX3NxbGl0
ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIHNxbGl0ZVN0
YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxp
dGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICByZXR1cm4g
c3FsaXRlM19iaW5kX2Jsb2Ioc3FsaXRlU3RhdGVtZW50LCBpbmRleCwgYmxvYi5kYXRhKCksIGJs
b2Iuc2l6ZSgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6YmluZEJsb2IodWludDY0X3QgaWRlbnRpZmllciwgaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHRleHQpCit7CisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdW
aWV3KHRleHQpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworICAgIFVDaGFyIGFueUNoYXJhY3Rl
ciA9IDA7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnM7CisgICAgaWYgKHRleHQuaXNFbXB0
eSgpICYmICF0ZXh0LmlzTnVsbCgpKQorICAgICAgICBjaGFyYWN0ZXJzID0gJmFueUNoYXJhY3Rl
cjsKKyAgICBlbHNlCisgICAgICAgIGNoYXJhY3RlcnMgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7
CisKKyAgICByZXR1cm4gYmluZEJsb2IoaWRlbnRpZmllciwgaW5kZXgsIFNwYW4geyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjaGFyYWN0ZXJzKSwgdGV4dC5sZW5ndGgoKSAqIHNp
emVvZihVQ2hhcikgfSk7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJpbmRU
ZXh0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBpbmRleCwgU3RyaW5nVmlldyB0ZXh0KQorewor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVu
dCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0
ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICBpbnQgcmVzdWx0Owor
ICAgIGlmICh0ZXh0LmlzOEJpdCgpICYmIHRleHQuaXNBbGxBU0NJSSgpKQorICAgICAgICByZXN1
bHQgPSBzcWxpdGUzX2JpbmRfdGV4dChzcWxpdGVTdGF0ZW1lbnQsIGluZGV4LCB0ZXh0Lmxlbmd0
aCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odGV4dC5jaGFyYWN0ZXJzOCgpKSA6
ICIiLCB0ZXh0Lmxlbmd0aCgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKKyAgICBlbHNlCisgICAgICAg
IHJlc3VsdCA9IHNxbGl0ZTNfYmluZF90ZXh0KHNxbGl0ZVN0YXRlbWVudCwgaW5kZXgsIHRleHQu
dXRmOCgpLmRhdGEoKSwgdGV4dC51dGY4KCkubGVuZ3RoKCksIFNRTElURV9UUkFOU0lFTlQpOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6Y29sdW1uQmxvYkFzU3RyaW5nKHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBjb2wpCit7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVtZW50
ID0gZmluZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRl
bWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGNvbnN0IHZvaWQqIGJsb2IgPSBzcWxp
dGUzX2NvbHVtbl9ibG9iKHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKKyAgICBpZiAoIWJsb2IpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29sdW1uX2J5dGVz
KHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oYmxv
YiksIHNpemUgLyBzaXplb2YoVUNoYXIpKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6Y29sdW1uSW50KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBjb2wpCit7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmlu
ZFNRTGl0ZVN0YXRlbWVudChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3FsaXRlM19jb2x1bW5faW50KHNxbGl0
ZVN0YXRlbWVudCwgY29sKTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
Y29sdW1uVGV4dCh1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgY29sKQoreworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxp
dGVTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzcWxpdGUzX2Nv
bHVtbl90ZXh0KHNxbGl0ZVN0YXRlbWVudCwgY29sKSwgc3FsaXRlM19jb2x1bW5fYnl0ZXMoc3Fs
aXRlU3RhdGVtZW50LCBjb2wpKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
cmVzZXRTdGF0ZW1lbnQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5kU1FMaXRlU3Rh
dGVtZW50KGlkZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3RhdGVtZW50KQorICAgICAgICBy
ZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfcmVzZXQoc3Fs
aXRlU3RhdGVtZW50KTsKKyAgICBzcWxpdGUzX2NsZWFyX2JpbmRpbmdzKHNxbGl0ZVN0YXRlbWVu
dCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6c3RlcFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVT
dGF0ZW1lbnQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAg
IHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICByZXR1cm4gc3FsaXRlM19zdGVwKHNxbGl0ZVN0
YXRlbWVudCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpkZXN0cm95U3Rh
dGVtZW50KHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgZGVzdHJveUludGVybmFsU3RhdGVt
ZW50KGlkZW50aWZpZXIpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFu
c2FjdGlvbj4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVUcmFuc2FjdGlvbkFuZEJl
Z2luKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fc3Fs
aXRlQ29ubmVjdGlvbiB8fCBzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVjdGlv
bikpIHsKKyAgICAgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoc3FsaXRlM19l
eGVjKG1fc3FsaXRlQ29ubmVjdGlvbiwgIkJFR0lOIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
cikgIT0gU1FMSVRFX0RPTkUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9vbmdv
aW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbmV4dFRyYW5zYWN0aW9uSWRlbnRpZmllcigpOwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4obmV3
IFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24oKnRoaXMsICptX29uZ29pbmdUcmFuc2FjdGlvbklk
ZW50aWZpZXIpKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNvbW1pdFRy
YW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRp
ZmllciB8fCAqbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyICE9IHRyYW5zYWN0aW9uSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3FsaXRlQ29ubmVjdGlvbiAm
JiAhc3FsaXRlM19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5lY3Rpb24pKQorICAgICAgICBz
cWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAiQ09NTUlUIiwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0cik7CisKKyAgICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6
Om51bGxvcHQ7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpyb2xsYmFja1Ry
YW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRp
ZmllciB8fCAqbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyICE9IHRyYW5zYWN0aW9uSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3FsaXRlQ29ubmVjdGlvbiAm
JiAhc3FsaXRlM19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5lY3Rpb24pKQorICAgICAgICBz
cWxpdGUzX2V4ZWMobV9zcWxpdGVDb25uZWN0aW9uLCAiUk9MTEJBQ0siLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyKTsKKworICAgIG1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciA9IHN0
ZDo6bnVsbG9wdDsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmlzT25nb2lu
Z1RyYW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICByZXR1cm4gbV9vbmdvaW5nVHJhbnNhY3Rpb25J
ZGVudGlmaWVyICYmICptX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPT0gdHJhbnNhY3Rp
b25JZGVudGlmaWVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGI2MmVhYzY0MjZlNThhNjY4NWJmMThmNjhmZGJlZmYzZTI0ZWQxMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb24uaApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8c3FsaXRlMy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ7CitjbGFzcyBTUUxpdGVEYXRhYmFzZVRyYW5z
YWN0aW9uOworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgY2hhciogaW5NZW1vcnlQYXRoKCkgeyByZXR1cm4gIjptZW1vcnk6Ijsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNob3VsZENvbW1pdFRyYW5zYWN0aW9u
QXRDbG9zZSA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uKCk7CisKKyAgICBTdHJpbmcgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPcGVuKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50
IGxhc3RDaGFuZ2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RFcnJvcigpOworICAg
IFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGxhc3RFcnJvck1lc3NhZ2UoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgdGFibGVDcmVhdGlvblF1ZXJ5KGNvbnN0IFN0cmluZyYgdGFibGVO
YW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoQVNDSUlMaXRlcmFsIHF1ZXJ5
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoU3RyaW5nVmlldyBxdWVyeSk7Cisg
ICAgZW51bSBjbGFzcyBDaGVja3BvaW50TW9kZSA6IHVpbnQ4X3QgeyBGdWxsLCBUcnVuY2F0ZSB9
OworICAgIGJvb2wgZXhlY3V0ZVdBTENoZWNrcG9pbnQoQ2hlY2twb2ludE1vZGUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0TWF4aW11bVNpemUoaW50NjRfdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZWxlYXNlTWVtb3J5KCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQWN0aXZpdHko
KTsKKyAgICB2b2lkIHNldElzQWN0aXZlKGJvb2wpOworCisgICAgLy8gU3RhdGVtZW50IG9wZXJh
dGlvbnMuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50PiBjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKEFTQ0lJTGl0ZXJhbCBxdWVyeSk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBjcmVhdGVTdGF0
ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpOworICAgIGludCBiaW5kQmxvYih1aW50
NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4g
YmxvYik7CisgICAgaW50IGJpbmRCbG9iKHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIsIGlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBpbnQgYmluZFRleHQodWludDY0X3Qg
c3RhdGVtZW50SWRlbnRpZmllciwgaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpOworICAgIFN0
cmluZyBjb2x1bW5CbG9iQXNTdHJpbmcodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllciwgaW50
IGNvbCk7CisgICAgaW50IGNvbHVtbkludCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBp
bnQgY29sKTsKKyAgICBTdHJpbmcgY29sdW1uVGV4dCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlm
aWVyLCBpbnQgY29sKTsKKyAgICBpbnQgcmVzZXRTdGF0ZW1lbnQodWludDY0X3Qgc3RhdGVtZW50
SWRlbnRpZmllcik7CisgICAgaW50IHN0ZXBTdGF0ZW1lbnQodWludDY0X3Qgc3RhdGVtZW50SWRl
bnRpZmllcik7CisgICAgdm9pZCBkZXN0cm95U3RhdGVtZW50KHVpbnQ2NF90IHN0YXRlbWVudElk
ZW50aWZpZXIpOworCisgICAgLy8gVHJhbnNhY3Rpb24gb3BlcmF0aW9ucy4KKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3JlYXRl
VHJhbnNhY3Rpb25BbmRCZWdpbigpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24odWludDY0
X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHJvbGxiYWNrVHJhbnNhY3Rpb24o
dWludDY0X3QgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBib29sIGlzT25nb2luZ1RyYW5z
YWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAg
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRD
b21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpOworICAgIGJvb2wgb3BlbigpOworICAgIHZvaWQgY2xv
c2UoKTsKKyAgICB2b2lkIGJlZ2luQWN0aXZpdHkoKTsKKyAgICB2b2lkIGVuZEFjdGl2aXR5KCk7
CisgICAgYm9vbCBlbmFibGVFeHRlbmRlZFJlc3VsdENvZGUoKTsKKyAgICBib29sIGVuYWJsZUlu
TWVtb3J5VGVtcFN0b3JlKCk7CisgICAgYm9vbCBlbmFibGVXQUxKb3VybmFsTW9kZSgpOworICAg
IGludCBwYWdlU2l6ZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGNyZWF0ZUludGVy
bmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHF1ZXJ5KTsKKyAgICB2b2lkIGRlc3Ry
b3lJbnRlcm5hbFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGZpZXIpOworICAgIHNxbGl0ZTNfc3Rt
dCogZmluZFNRTGl0ZVN0YXRlbWVudCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyKSBjb25z
dDsKKworICAgIFN0cmluZyBtX3BhdGg7CisgICAgYm9vbCBtX3Nob3VsZENvbW1pdFRyYW5zYWN0
aW9uQXRDbG9zZTsKKyAgICBMb2NrIG1fbG9jazsKKyAgICBzdHJ1Y3QgSW50ZXJuYWxTdGF0ZW1l
bnQgeworICAgICAgICB1aW50NjRfdCBpZGVudGlmaWVyOworICAgICAgICBzcWxpdGUzX3N0bXQq
IHNxbGl0ZVN0YXRlbWVudDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdHJhbnNh
Y3Rpb25JZGVudGlmaWVyOworICAgIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwgSW50ZXJuYWxT
dGF0ZW1lbnQ+IG1fc3RhdGVtZW50cyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CisgICAg
c3FsaXRlMyogbV9zcWxpdGVDb25uZWN0aW9uICBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykg
eyBudWxscHRyIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbV9vbmdvaW5nVHJhbnNh
Y3Rpb25JZGVudGlmaWVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBib29sIG1f
aXNBY3RpdmUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spIHsgZmFsc2UgfTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzOTlkZTZjMzg4
OTFmYjc1NzgwZTEwMTczYWJhZTUwNmFiMmMxNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwCkBAIC0wLDAg
KzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCIKKworI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50
OjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudChTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlv
bikKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KCkKK3sKKyAgICBtX2Nvbm5lY3Rp
b24tPmRlc3Ryb3lTdGF0ZW1lbnQobV9pZGVudGlmaWVyKTsKK30KKworaW50IFNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4gYmxv
YikKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5iaW5kQmxvYihtX2lkZW50aWZpZXIsIGlu
ZGV4LCBibG9iKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kQmxvYihp
bnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9u
LT5iaW5kQmxvYihtX2lkZW50aWZpZXIsIGluZGV4LCB0ZXh0KTsKK30KKworaW50IFNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50OjpiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCkKK3sK
KyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5iaW5kVGV4dChtX2lkZW50aWZpZXIsIGluZGV4LCB0
ZXh0KTsKK30KKworU3RyaW5nIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5CbG9iQXNT
dHJpbmcoaW50IGNvbCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5jb2x1bW5CbG9iQXNT
dHJpbmcobV9pZGVudGlmaWVyLCBjb2wpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnQ6OmNvbHVtbkludChpbnQgY29sKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNvbHVt
bkludChtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK1N0cmluZyBTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudDo6Y29sdW1uVGV4dChpbnQgY29sKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNv
bHVtblRleHQobV9pZGVudGlmaWVyLCBjb2wpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnQ6OnJlc2V0KCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5yZXNldFN0YXRlbWVu
dChtX2lkZW50aWZpZXIpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OnN0ZXAo
KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnN0ZXBTdGF0ZW1lbnQobV9pZGVudGlmaWVy
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTdl
OTA5MGQyZjUyNzhiMDRjYTFjNzk5MTljNzQ3OGM0ZmJiZjUxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmgKQEAg
LTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb247CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50IDogcHVibGljIENh
bk1ha2VXZWFrUHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnQpOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRhYmFzZVN0YXRl
bWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kQmxvYihpbnQgaW5kZXgsIFNwYW48
Y29uc3QgdWludDhfdD4gYmxvYik7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmlu
ZFRleHQoaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBjb2x1bW5CbG9iQXNTdHJpbmcoaW50IGNvbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50
IGNvbHVtbkludChpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29sdW1uVGV4
dChpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcmVzZXQoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgc3RlcCgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb247CisgICAgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQoU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgaWRlbnRpZmllcik7CisKKyAgICBSZWY8U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgdWludDY0X3QgbV9pZGVudGlm
aWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRT
Y29wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkZTIwZDlmMDY0MWUzOWMyMjE3YWJjNmJjNTgwMjJhMzM5MzRm
ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDsK
KworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUpOworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNRTGl0ZURhdGFi
YXNlU3RhdGVtZW50UmVzZXRTY29wZShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCogc3RhdGVtZW50
KQorICAgICAgICA6IG1fc3RhdGVtZW50KHN0YXRlbWVudCkKKyAgICB7CisgICAgfQorCisgICAg
flNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSgpCisgICAgeworICAgICAgICBpZiAo
bV9zdGF0ZW1lbnQpCisgICAgICAgICAgICBtX3N0YXRlbWVudC0+cmVzZXQoKTsKKyAgICB9CisK
KyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUoU1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnRSZXNldFNjb3BlJiYgb3RoZXIpCisgICAgICAgIDogbV9zdGF0ZW1lbnQob3RoZXIubV9z
dGF0ZW1lbnQuZ2V0KCkpCisgICAgeworICAgICAgICBvdGhlci5tX3N0YXRlbWVudCA9IG51bGxw
dHI7CisgICAgfQorCisgICAgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlJiBvcGVy
YXRvcj0oU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlJiYgb3RoZXIpCisgICAgewor
ICAgICAgICBzdGQ6OnN3YXAobV9zdGF0ZW1lbnQsIG90aGVyLm1fc3RhdGVtZW50KTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhIW1fc3RhdGVtZW50OyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhbV9zdGF0ZW1lbnQ7IH0KKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCog
Z2V0KCkgeyByZXR1cm4gbV9zdGF0ZW1lbnQuZ2V0KCk7IH0KKyAgICBTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIG1fc3RhdGVtZW50LmdldCgpOyB9CisKK3By
aXZhdGU6CisgICAgV2Vha1B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4gbV9zdGF0ZW1lbnQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45MDY4YTg3MWU5NGYwYzM4Yzc1OGI1Y2Y1NTdiY2IwODI2ZGIyZGI0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNh
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgorCisjaW5jbHVkZSAi
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FM
aXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbihTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAg
OiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQoreworfQorCitTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjp+U1FMaXRlRGF0YWJhc2VUcmFu
c2FjdGlvbigpCit7CisgICAgbV9jb25uZWN0aW9uLT5yb2xsYmFja1RyYW5zYWN0aW9uKG1faWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y29tbWl0KCkK
K3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbW1pdFRyYW5zYWN0aW9uKG1faWRlbnRpZmllcik7Cit9
CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQoreworICAgIG1f
Y29ubmVjdGlvbi0+cm9sbGJhY2tUcmFuc2FjdGlvbihtX2lkZW50aWZpZXIpOworfQorCitib29s
IFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0aW9uKCkKK3sKKyAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLT5pc09uZ29pbmdUcmFuc2FjdGlvbihtX2lkZW50aWZpZXIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OTAyOTNlMmJmYjhkMmQ3MmU0ZTg1YzZiMzg3OTkzODJiMjNiMDk0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24u
aApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjsKKworY2xh
c3MgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbik7
CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24o
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcm9sbGJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzT25nb2luZ1RyYW5z
YWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjsKKyAgICBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbiYsIHVpbnQ2NF90IGlkZW50aWZpZXIpOworCisgICAgUmVmPFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBjYzkyOTBiNjYyODliZjY3OTgxZmI3ZTcw
MGE0ZmYxYWNkMmJhY2ZhLi5hMTM2YjhjOTdkMzA1Y2ZkZDU0ZTU2MzQ5ZDI2NzVjMmM1YWYyMzQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVk
ZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIgogI2luY2x1ZGUgIlJlbW90ZVdvcmtl
clR5cGUuaCIKKyNpbmNsdWRlICJTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmgiCiAjaW5j
bHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFj
Y2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCkBAIC03OSw2ICs4
MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CkBAIC0xNTksNyArMTYxLDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQ
cm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUK
ICAgICAsIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKnRoaXMpCiAjZW5kaWYKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICwgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIo
W3RoaXNdKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsgc2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMoaXNIb2xkaW5nTG9ja2VkRmlsZXMpOyB9KQorICAgICwgbV93ZWJTUUxpdGVEYXRhYmFzZVRy
YWNrZXIoW10oYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykgeyBTUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoaXNIb2xkaW5n
TG9ja2VkRmlsZXMpOyB9KQogI2VuZGlmCiAgICAgLCBtX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lz
dHJ5KGNyZWF0ZU1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCp0aGlzKSkKIHsKQEAgLTE3Nyw2
ICsxNzksMTIgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nl
c3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICAgICBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3JlYXRlZCgqdGhpcyk7CiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6
OnNpbmdsZXRvbigpLnNldEltcGwoW10geworICAgICAgICByZXR1cm4gU1FMaXRlUHJvY2Vzc0Fz
c2VydGlvbkhvbGRlcjo6Y3JlYXRlKCk7CisgICAgfSk7CisjZW5kaWYKKwogICAgIE5ldHdvcmtT
dGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24oKS5hZGRMaXN0ZW5lcihbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfV0oYm9vbCBpc09uTGluZSkgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IDJmNThjZDA3ODU0OThiMDVlMDk5MGQ1ODViOTA3Y2VjZTdhZGVjOGIu
LmRiYmIxZGFlZTQzNzU0ZGFjYTg1Nzk1OTVjYmNkZTE3ZmY2YThmMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQ3MSwxMCArNDcxLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBT
dHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChj
b25zdCBTdHJpbmcmKSBjb25zdDsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9p
ZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKLSNlbmRpZgotCiAgICAgLy8gQ29ubmVj
dGlvbnMgdG8gV2ViUHJvY2Vzc2VzLgogICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIsIFJlZjxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4+IG1fd2ViUHJvY2Vzc0Nv
bm5lY3Rpb25zOwogCkBAIC01MDcsNyArNTAzLDYgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyOwotICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hvbGRpbmdMb2Nr
ZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFdFQl9SVEMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tCmluZGV4IDgyN2RkZjZlY2Y0ZDkyOTFlMGJmZjc0ZmE1ZWJiODE3YjdkY2ZmZDcuLjViN2Mx
ODU1YzhiNmNhMjg0YTljMzUwYWRlZWIxNWVhN2Y2ZDQ2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCkBAIC05NSwy
MSArOTUsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaQogCiAjZW5kaWYgLy8gIVBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRG
aWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQotewotICAgIGlmICghaXNIb2xkaW5nTG9j
a2VkRmlsZXMpIHsKLSAgICAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IG51bGxw
dHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9ob2xkaW5nTG9ja2VkRmls
ZUFzc2VydGlvbiAmJiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uLT5pc1ZhbGlkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nlc3Mg
YXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQgd2Ug
ZG9uJ3QgZ2V0IHN1c3BlbmRlZAotICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQgZmlsZS4g
V2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQgZmls
ZXMuCi0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246
OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGlu
ZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrSW50ZXJy
dXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFy
ZWEuY3BwCmluZGV4IDEwZWMyMDc2ODUxNDU4Y2VmMTYxOTBlZjFiOTE2NmQyZjBhNDRlNDEuLjEy
MzIwOTAxYTkyMzM0MzNjNDIwNTk5YTNmMjVhOTc4MWNkZDQ1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVh
LmNwcApAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgIlNRTGl0ZVN0b3JhZ2VBcmVhLmgiCiAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVN0
YXRlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlU3RhdGVtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVUcmFuc2FjdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTEwNyw3ICsxMDcsNyBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjppc0VtcHR5KCkK
IAogICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkNv
dW50SXRlbXMpOwogICAgIGlmICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNR
TElURV9ST1cpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0
b3JhZ2VBcmVhOjppc0VtcHR5IGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6
aXNFbXB0eSBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xMjgsMjEgKzEyOCwyMSBAQCBib29sIFNRTGl0
ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KCkKICAgICBpZiAoIW1fZGF0YWJh
c2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBzdGF0ZW1lbnQgPSBtX2Rh
dGFiYXNlLT50YWJsZVNRTCgiSXRlbVRhYmxlIl9zKTsKKyAgICBTdHJpbmcgc3RhdGVtZW50ID0g
bV9kYXRhYmFzZS0+dGFibGVDcmVhdGlvblF1ZXJ5KCJJdGVtVGFibGUiX3MpOwogICAgIGlmIChz
dGF0ZW1lbnQgPT0gY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50IHx8IHN0YXRlbWVudCA9PSBjcmVh
dGVJdGVtVGFibGVTdGF0ZW1lbnRBbHRlcm5hdGl2ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAvLyBUYWJsZSBleGlzdHMgYnV0IHN0YXRlbWVudCBpcyB3cm9uZzsgZHJvcCBpdC4KICAg
ICBpZiAoIXN0YXRlbWVudC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKCFtX2RhdGFiYXNlLT5l
eGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBJdGVtVGFibGUiX3MpKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxl
SWZOZWNlc3NhcnkgZmFpbGVkIHRvIGRyb3AgZXhpc3RpbmcgaXRlbSB0YWJsZSAoJWQpIC0gJXMi
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBpZiAoIW1fZGF0YWJhc2UtPmV4ZWN1dGUoIkRST1AgVEFCTEUgSXRlbVRhYmxlIl9z
KSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3Jh
Z2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIGV4aXN0aW5nIGl0
ZW0gdGFibGUgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICAvLyBUYWJsZSBkb2VzIG5vdCBleGlzdC4KLSAgICBpZiAoIW1fZGF0
YWJhc2UtPmV4ZWN1dGVDb21tYW5kKGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudCkpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVU
YWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBjcmVhdGUgaXRlbSB0YWJsZSAoJWQpIC0gJXMiLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAg
IGlmICghbV9kYXRhYmFzZS0+ZXhlY3V0ZShjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQpKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y3Jl
YXRlVGFibGVJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIGl0ZW0gdGFibGUgKCVkKSAtICVz
IiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2Uo
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE1OCwxNyArMTU4LDEyIEBA
IGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZShTaG91bGRDcmVhdGVJZk5v
dEV4aXN0cyBzaG91bGRDcmVhdGVJZk5vCiAgICAgaWYgKHNob3VsZENyZWF0ZUlmTm90RXhpc3Rz
ID09IFNob3VsZENyZWF0ZUlmTm90RXhpc3RzOjpObyAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhtX3BhdGgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fZGF0YWJhc2UgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPigpOwogICAgIEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKG1fcGF0aCkpOwotICAgIGlmICgh
bV9kYXRhYmFzZS0+b3BlbihtX3BhdGgpKSB7CisgICAgbV9kYXRhYmFzZSA9IFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlKG1fcGF0aCwgdHJ1ZSkucHRyKCk7CisgICAg
aWYgKCFtX2RhdGFiYXNlLT5pc09wZW4oKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihT
dG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZSBmYWlsZWQgdG8gb3Bl
biBkYXRhYmFzZSBhdCAnJXMnIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBtX2Rh
dGFiYXNlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAgICAg
Ci0gICAgLy8gU2luY2UgYSBXb3JrUXVldWUgaXNuJ3QgYm91bmQgdG8gYSBzcGVjaWZpYyB0aHJl
YWQsIHdlIG5lZWQgdG8gZGlzYWJsZSB0aHJlYWRpbmcgY2hlY2suCi0gICAgLy8gV2Ugd2lsbCBu
ZXZlciBhY2Nlc3MgdGhlIGRhdGFiYXNlIGZyb20gZGlmZmVyZW50IHRocmVhZHMgc2ltdWx0YW5l
b3VzbHkuCi0gICAgbV9kYXRhYmFzZS0+ZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwogCiAgICAg
aWYgKCFjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5KCkpIHsKICAgICAgICAgbV9kYXRhYmFzZSA9IG51
bGxwdHI7CkBAIC0xODQsMTEgKzE3OSwxMCBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjpwcmVw
YXJlRGF0YWJhc2UoU2hvdWxkQ3JlYXRlSWZOb3RFeGlzdHMgc2hvdWxkQ3JlYXRlSWZObwogdm9p
ZCBTUUxpdGVTdG9yYWdlQXJlYTo6c3RhcnRUcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCkKIHsKICAg
ICBpZiAoIW1fdHJhbnNhY3Rpb24pCi0gICAgICAgIG1fdHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uPigqbV9kYXRhYmFzZSk7Ci0KLSAgICBpZiAobV90
cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQorICAgICAgICBtX3RyYW5zYWN0aW9uID0gbV9kYXRh
YmFzZS0+Y3JlYXRlVHJhbnNhY3Rpb25BbmRCZWdpbigpOworICAgIAorICAgIGlmICghbV90cmFu
c2FjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIG1fdHJhbnNhY3Rpb24tPmJlZ2luKCk7CiAK
ICAgICBtX3F1ZXVlLT5kaXNwYXRjaEFmdGVyKHRyYW5zYWN0aW9uRHVyYXRpb24sIFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKQEAgLTE5Niwx
OCArMTkwLDE2IEBAIHZvaWQgU1FMaXRlU3RvcmFnZUFyZWE6OnN0YXJ0VHJhbnNhY3Rpb25JZk5l
Y2Vzc2FyeSgpCiAgICAgfSk7CiB9CiAKLVdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNl
dFNjb3BlIFNRTGl0ZVN0b3JhZ2VBcmVhOjpjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZSB0
eXBlKQorV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlIFNRTGl0ZVN0
b3JhZ2VBcmVhOjpjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZSB0eXBlKQogewogICAgIEFT
U0VSVChtX2RhdGFiYXNlKTsKICAgICBBU1NFUlQodHlwZSA8IFN0YXRlbWVudFR5cGU6OkludmFs
aWQpOwogCiAgICAgYXV0byBpbmRleCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHR5cGUpOwotICAg
IGlmICghbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XSkgewotICAgICAgICBpZiAoYXV0byByZXN1
bHQgPSBtX2RhdGFiYXNlLT5wcmVwYXJlSGVhcFN0YXRlbWVudChzdGF0ZW1lbnRTdHJpbmcodHlw
ZSkpKQotICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XSA9IHJlc3VsdC52YWx1
ZSgpLm1vdmVUb1VuaXF1ZVB0cigpOwotICAgIH0KKyAgICBpZiAoIW1fY2FjaGVkU3RhdGVtZW50
c1tpbmRleF0pCisgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0gPSBtX2RhdGFiYXNl
LT5jcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKHN0YXRlbWVudFN0cmluZyh0eXBlKSk7CiAKLSAg
ICByZXR1cm4gV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgeyBtX2NhY2hl
ZFN0YXRlbWVudHNbaW5kZXhdLmdldCgpIH07CisgICAgcmV0dXJuIFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSB7IG1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0uZ2V0
KCkgfTsKIH0KIAogRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VB
cmVhOjpnZXRJdGVtKGNvbnN0IFN0cmluZyYga2V5KQpAQCAtMjM0LDcgKzIyNiw3IEBAIEV4cGVj
dGVkPFN0cmluZywgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21E
YXRhYmFzZShjb25zdCBTdHJpCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVu
dChTdGF0ZW1lbnRUeXBlOjpHZXRJdGVtKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1l
bnQtPmJpbmRUZXh0KDEsIGtleSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFn
ZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxlZCBvbiBjcmVh
dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0
YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFn
ZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxlZCBvbiBjcmVh
dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0
YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTI0Miw3ICsyMzQsNyBAQCBF
eHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1G
cm9tRGF0YWJhc2UoY29uc3QgU3RyaQogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykKICAg
ICAgICAgcmV0dXJuIHN0YXRlbWVudC0+Y29sdW1uQmxvYkFzU3RyaW5nKDApOwogICAgIGlmIChy
ZXN1bHQgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFn
ZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxlZCBvbiBzdGVw
cGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0
YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFn
ZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlIGZhaWxlZCBvbiBzdGVw
cGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0
YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTI3NCw3ICsyNjYsNyBAQCBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBTUUxpdGVTdG9yYWdlQXJlYTo6YWxsSXRlbXMoKQogICAg
IC8vIEltcG9ydCBmcm9tIGRhdGFiYXNlLgogICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3Rh
dGVtZW50KFN0YXRlbWVudFR5cGU6OkdldEFsbEl0ZW1zKTsKICAgICBpZiAoIXN0YXRlbWVudCkg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6
OmdldEFsbEl0ZW1zIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9k
YXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRBbGxJ
dGVtcyBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIApAQCAtMjkyLDcgKzI4NCw3IEBAIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IFNRTGl0ZVN0b3JhZ2VBcmVhOjphbGxJdGVtcygpCiAgICAgfQogCiAgICAgaWYgKHJl
c3VsdCAhPSBTUUxJVEVfRE9ORSkKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwg
IlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRBbGxJdGVtcyBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRl
bWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRl
U3RvcmFnZUFyZWE6OmdldEFsbEl0ZW1zIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICgl
ZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JN
ZXNzYWdlKCkpOwogCiAgICAgcmV0dXJuIGl0ZW1zOwogfQpAQCAtMzExLDcgKzMwMyw3IEBAIEV4
cGVjdGVkPHZvaWQsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0ZW0oSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRl
bWVudChTdGF0ZW1lbnRUeXBlOjpTZXRJdGVtKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0
ZW1lbnQtPmJpbmRUZXh0KDEsIGtleSkgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigyLCB2YWx1ZSkp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVh
OjpzZXRJdGVtIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRh
YmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtIGZh
aWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTMxOSw3
ICszMTEsNyBAQCBFeHBlY3RlZDx2b2lkLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVh
OjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSQogICAgIGlmIChyZXN1bHQgPT0gU1FM
SVRFX0ZVTEwpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OlF1
b3RhRXhjZWVkZWQpOwogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtIGZh
aWxlZCBvbiBzdGVwcGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtIGZhaWxlZCBvbiBzdGVw
cGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0
YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTM1MCw3ICszNDIsNyBAQCBF
eHBlY3RlZDx2b2lkLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVt
KElQQzo6Q29ubmVjdGlvbjo6VW5pcQogCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0
ZW1lbnQoU3RhdGVtZW50VHlwZTo6RGVsZXRlSXRlbSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwg
c3RhdGVtZW50LT5iaW5kVGV4dCgxLCBrZXkpIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElU
RV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9y
YWdlQXJlYTo6cmVtb3ZlSXRlbSBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0g
JXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkp
OworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6
OnJlbW92ZUl0ZW0gZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9k
YXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAg
ICB9CiAKQEAgLTM4MSw3ICszNzMsNyBAQCBFeHBlY3RlZDx2b2lkLCBTdG9yYWdlRXJyb3I+IFNR
TGl0ZVN0b3JhZ2VBcmVhOjpjbGVhcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlECiAgICAgc3Rh
cnRUcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCk7CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRT
dGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6RGVsZXRlQWxsSXRlbXMpOwogICAgIGlmICghc3RhdGVt
ZW50IHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y2xlYXIgZmFpbGVkIG9u
IGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCks
IG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
U3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpjbGVhciBmYWlsZWQgb24gZXhlY3V0aW5nIHN0
YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+
bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3Jh
Z2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuaAppbmRleCA1MmNjOWQ2
MGU3ZTVhNTM5MWZjOGM0ODNmYjY4YzI5MDM2MDk3MTYwLi42MjYzZjBmNWViNmNjZTA1YWYzMjI2
MTk3NWM3ZTIwOWMzMjFiOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuaApAQCAtMjYsOCArMjYsOCBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTdG9yYWdlQXJlYUJhc2UuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1l
bnRBdXRvUmVzZXRTY29wZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0
U2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTY2LDE2ICs2NiwxNiBAQCBwcml2
YXRlOgogICAgICAgICBJbnZhbGlkCiAgICAgfTsKICAgICBBU0NJSUxpdGVyYWwgc3RhdGVtZW50
U3RyaW5nKFN0YXRlbWVudFR5cGUpIGNvbnN0OwotICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dEF1dG9SZXNldFNjb3BlIGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlKTsKKyAgICBXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgY2FjaGVkU3RhdGVtZW50KFN0
YXRlbWVudFR5cGUpOwogICAgIEV4cGVjdGVkPFN0cmluZywgU3RvcmFnZUVycm9yPiBnZXRJdGVt
KGNvbnN0IFN0cmluZyYga2V5KTsKICAgICBFeHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4g
Z2V0SXRlbUZyb21EYXRhYmFzZShjb25zdCBTdHJpbmcmIGtleSk7CiAKICAgICBTdHJpbmcgbV9w
YXRoOwogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKLSAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4+IG1fY2FjaGVkU3RhdGVtZW50
czsKICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBtX2NhY2hlOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1fZGF0YWJhc2U7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24+
IG1fdHJhbnNhY3Rpb247CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudD4+IG1fY2FjaGVkU3RhdGVtZW50czsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJv
Y2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9j
ZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDZmNWU4NjljMjI1MmM3MjIwZWMz
NTA3NmVhZTkxZmY5MzFjMzkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVQcm9jZXNzQXNz
ZXJ0aW9uSG9sZGVyLmgiCisKKyNpbmNsdWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworUmVmPFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI+IFNRTGl0ZVByb2Nl
c3NBc3NlcnRpb25Ib2xkZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcik7Cit9CisKK3ZvaWQgU1FMaXRlUHJvY2Vzc0Fz
c2VydGlvbkhvbGRlcjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpCit7CisgICAgbV9pc1BlcmZv
cm1pbmdBY3Rpdml0aWVzID0gdHJ1ZTsKKyAgICBlbnN1cmVBc3NlcnRpb24oKTsKK30KKwordm9p
ZCBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpkaWRFbmRMYXN0QWN0aXZpdHkoKQorewor
ICAgIG1faXNQZXJmb3JtaW5nQWN0aXZpdGllcyA9IGZhbHNlOworICAgIHJlbGVhc2VBc3NlcnRp
b24oKTsKK30KKwordm9pZCBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpzZXRJc0hvbGRp
bmdMb2NrZWRGaWxlcyhib29sIHZhbHVlKQoreworICAgIG1faXNIb2xkaW5nTG9ja2VkRmlsZXMg
PSB2YWx1ZTsKKyAgICBpZiAobV9pc0hvbGRpbmdMb2NrZWRGaWxlcykKKyAgICAgICAgZW5zdXJl
QXNzZXJ0aW9uKCk7CisgICAgZWxzZQorICAgICAgICByZWxlYXNlQXNzZXJ0aW9uKCk7Cit9CisK
K3ZvaWQgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6ZW5zdXJlQXNzZXJ0aW9uKCkKK3sK
KyAgICBpZiAobV9hc3NlcnRpb24gJiYgbV9hc3NlcnRpb24tPmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9hc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpjcmVhdGUoZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiTmV0d29yayBQcm9jZXNzIGlzIGhvbGRpbmcgZGF0YWJhc2Ug
bG9jayJfcywgUHJvY2Vzc0Fzc2VydGlvblR5cGU6OkZpbmlzaFRhc2tJbnRlcnJ1cHRhYmxlLCBQ
cm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKKyAgICBtX2Fzc2VydGlvbi0+c2V0SW52YWxp
ZGF0aW9uSGFuZGxlcihbXSB7CisgICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworICAg
ICAgICBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCku
aW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKKyAgICB9KTsKK30KKwordm9pZCBTUUxpdGVQcm9j
ZXNzQXNzZXJ0aW9uSG9sZGVyOjpyZWxlYXNlQXNzZXJ0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNI
b2xkaW5nTG9ja2VkRmlsZXMgJiYgIW1faXNQZXJmb3JtaW5nQWN0aXZpdGllcykKKyAgICAgICAg
bV9hc3NlcnRpb24gPSBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYmFhYWZiOTFlODRkZWYzMWNkM2FmOWFlODZkMjQ4OTNmODk5YzBhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlv
bkhvbGRlci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIlByb2Nlc3NBc3NlcnRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgUHJvY2Vzc0Fzc2VydGlvbjsKKworY2xhc3MgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRl
ciA6IHB1YmxpYyBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcj4gY3Jl
YXRlKCk7CisgICAgdm9pZCB3aWxsQmVnaW5GaXJzdEFjdGl2aXR5KCkgZmluYWw7CisgICAgdm9p
ZCBkaWRFbmRMYXN0QWN0aXZpdHkoKSBmaW5hbDsKKyAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tl
ZEZpbGVzKGJvb2wgdmFsdWUpIGZpbmFsOworCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQXNz
ZXJ0aW9uKCk7CisgICAgdm9pZCByZWxlYXNlQXNzZXJ0aW9uKCk7CisKKyAgICBib29sIG1faXNQ
ZXJmb3JtaW5nQWN0aXZpdGllcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSG9sZGluZ0xvY2tl
ZEZpbGVzIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9hc3NlcnRp
b247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuY3BwCmluZGV4IGEzZmJiNzYwZTc3NjA0MDc4ZDhlNTBjMTRjZGQ3ZDdjZWE2ZWI2ZDMuLjMx
YThmMWJlMTQ1NWNhYzg0YzYzYmI2ZDQzZGZjMTQ4NGJlNTRhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
Rm9ybWF0UmVhZGVyLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAorI2luY2x1ZGUgPHBhbC9j
Zi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2luY2x1ZGUgPHBhbC9jb2NvYS9NZWRpYVRvb2xib3hT
b2Z0TGluay5oPgogCiBXVEZfREVDTEFSRV9DRl9UWVBFX1RSQUlUKE1UUGx1Z2luRm9ybWF0UmVh
ZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CmluZGV4IGJlYzFhM2YxMzRlMmRkMzkyMzYxMjc1MmE4OWQ4ODE1Nzll
MjBmODQuLjlhYmNiMjA1OTNhMjM4ZmE0Y2RhZmVlM2I1MGJjMjliMTE4MTNkMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dApAQCAtMjM5LDYgKzIzOSw3IEBAIFNoYXJlZC9QcmludEluZm8uY3BwCiBTaGFyZWQvUlRD
TmV0d29yay5jcHAKIFNoYXJlZC9SVENQYWNrZXRPcHRpb25zLmNwcAogU2hhcmVkL1JlbW90ZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHAKK1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9u
SG9sZGVyLmNwcAogU2hhcmVkL1Njcm9sbGluZ0FjY2VsZXJhdGlvbkN1cnZlLmNwcAogU2hhcmVk
L1Nlc3Npb25TdGF0ZS5jcHAKIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYWQ5YzBjNmUx
MTM4ZmJlMjhkYmIyOGVmZTA4ZWRiNDg4ZTQ1MTY2Li5mODIyNDgyMDY1NDVjYWM0ZTI4N2JjZWEw
YTI4NjVlMGU4YTM4ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE1MDEsNiArMTUwMSw3IEBACiAJCTkzQjYzMUYxMjdBQkFDQTkw
MDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQjYzMUVGMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIu
aCAqLzsgfTsKIAkJOTNCNjMxRjMyN0FCQUQ4MDAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1
ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRl
bnRpZmllci5oICovOyB9OwogCQk5M0JERUIwMTE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9h
ZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Q1
REQyMDI3REE1NTU2MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREMUUyN0RB
NTU1NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCAqLzsgfTsKIAkJ
OTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2QzI1NEI4
OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLzsgfTsKIAkJOTNENkI3
NzMyNTRCQjhDNzAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3NjgyNTRC
N0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oICovOyB9Owog
CQk5M0Q2Qjc4MjI1NENDQ0Y0MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNENkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTU0NzAsNiArNTQ3MSw4IEBACiAJCTkzQkEw
NEUwMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNEUxMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQxRTI3REE1NTU1MDAxMDdDNzUgLyog
U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRDVERDFGMjdEQTU1NTUwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNz
ZXJ0aW9uSG9sZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNR
TGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Q2Qjc2NzI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRDZCNzY4MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzY5MjU0
QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczOTEsNiArNzM5NCw4IEBACiAJCQkJODMx
M0Y3RTcxRjdEQUUwMzAwQjk0NEVCIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZS5oICovLAogCQkJ
CTgzRjk2NDRCMUZBMEY3NjIwMEM0Nzc1MCAvKiBTaGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25s
eS5jcHAgKi8sCiAJCQkJODNGOTY0NEMxRkEwRjc2MzAwQzQ3NzUwIC8qIFNoYXJlZFN0cmluZ0hh
c2hUYWJsZVJlYWRPbmx5LmggKi8sCisJCQkJOTNENUREMUYyN0RBNTU1NTAwMTA3Qzc1IC8qIFNR
TGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwICovLAorCQkJCTkzRDVERDFFMjdEQTU1NTUw
MDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggKi8sCiAJCQkJMUE1RTRE
QTMxMkQzQkQzRDAwOTlBMkJCIC8qIFRleHRDaGVja2VyU3RhdGUuaCAqLywKIAkJCQlGNEE3Q0U4
NDI2NjdFQjRFMDAyMjg2ODUgLyogVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0LmggKi8sCiAJ
CQkJN0JFMzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8qIFRocmVhZFNhZmVPYmplY3RIZWFwLmggKi8s
CkBAIC0xMzU5MCw2ICsxMzU5NSw3IEBACiAJCQkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1
NENDRDBFMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNENkI3ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQyMDI3
REE1NTU2MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNFNzk5REEyNzYxMjEwODAwNzQwMDhBIC8qIFNRTGl0ZVN0b3JhZ2VBcmVh
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTNGRUNBMjIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFn
ZUFjY2Vzc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCRUI2RDcyMkZCOUJENzAwMjY5
ODY3IC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NTUwNDkzNjNkYzZk
MmU5ZWQxZDM2NmU0ZDU3NDYyNTI4MDI5OTFjLi5kYTdiZDgxMTQ3OTE3NjE3Njc3M2Y3NTk5OGM2
MGYwNDRjZTZhZWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMTEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xvc2UgU1FMaXRlIGRhdGFiYXNl
IGNvbm5lY3Rpb25zIGZvciBMb2NhbFN0b3JhZ2Ugd2hlbiBhc3NlcnRpb24gaXMgZHJvcHBlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdl
L2RvbXN0b3JhZ2Uvc3RvcmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWw6CisgICAgICAg
ICogc3RvcmFnZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRh
YmFzZXMtaW1tZWRpYXRlbHkuaHRtbDoKKwogMjAyMi0wMy0xMSAgQWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gVW5yZXZpZXdlZCBnYXJkZW5pbmcgYWZ0ZXIg
cjI5MTE2OS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zdG9y
YWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9t
c3RvcmFnZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbAppbmRleCAwM2E3NmRh
NWEzYWJhNmQ0NjkzYmU4ZGI1M2U3YTBmZTJhN2FlYmU0Li5iZDE4MWQ3NGUzMTFjNTliYzk1MGVj
ZmFmZjhmODYzOTUyZmY4MDM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0
b3JhZ2Uvc3RvcmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9kb21zdG9yYWdlL3N0b3JhZ2UtY2xvc2UtZGF0YWJhc2Utb24taWRsZS5odG1s
CkBAIC0yMCw3ICsyMCw4IEBAIGZ1bmN0aW9uIGxvYWROZXh0UGFnZSgpCiBmdW5jdGlvbiBydW5U
ZXN0KCkKIHsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoMCk7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCgwKTsKICAgICAgICAgdGVz
dFJ1bm5lci5zZXRDYWNoZU1vZGVsKDApOyAvLyBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIu
CiAgICAgfQogCkBAIC00Niw3ICs0Nyw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICAg
ICAgbG9nKHdpbmRvdy5sb2NhbFN0b3JhZ2VbJ2JhciddID09PSAnQkFSJyA/ICdQQVNTJyA6ICdG
QUlMJyk7CiAKICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKDMwMCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlk
bGVJbnRlcnZhbCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0
YWJhc2VJZGxlSW50ZXJ2YWwoMzAwKTsKICAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1sb2NhbHN0b3Jh
Z2UtZGF0YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291
cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVs
eS5odG1sCmluZGV4IDRlMGE0NDZlM2U0MjM0ZGY5MWFhOWU2YWRmMjZiMDM2OGU1N2I0Y2MuLjdi
MTczNjE2NmU3MWQ1MTgzMzEwYTE5ZDAzZDc3YzllMjIyMjRmYjIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2Ut
ZGF0YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9yZXNv
dXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRl
bHkuaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gc3dpbmdCYWNr
KCkgCiAgICAgewotICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy50ZXN0UnVubmVyLmNsb3NlSWRsZUxvY2FsU3Rv
cmFnZURhdGFiYXNlcykgewogICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuY2xvc2VJZGxl
TG9jYWxTdG9yYWdlRGF0YWJhc2VzKCk7CiAgICAgICAgIH0KICAgICAgICAgbG9jYXRpb24uaHJl
Zj0nLi4vZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0
YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwnOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454984</attachid>
            <date>2022-03-17 09:58:24 -0700</date>
            <delta_ts>2022-03-17 10:50:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237754-20220317095823.patch</filename>
            <type>text/plain</type>
            <size>96003</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQxMmYwM2Q0M2ZmYWNk
ZDJjMDZlMTI3OWFiNzUxNDU4NDYwZDdiMC4uYzE0ODUwOGZmODRjYzNlMGVkYTE2Y2I1Y2Q2ZDUx
YWRhMGU2NzA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAyMi0wMy0xNyAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBBYm9ydCBTUUxpdGUgYWN0
aXZpdGllcyB0byByZWxlYXNlIGZpbGUgbG9jayB3aGVuIHByb2Nlc3MgaXMgYWJvdXQgdG8gc3Vz
cGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50
cm9kdWNlIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiBjbGFzcywgd2hpY2ggaXMgYSB3cmFwcGVy
IGFyb3VuZCBzcWxpdGUgb2JqZWN0cy4gVW5saWtlIFNRTGl0ZURhdGFiYXNlLAorICAgICAgICBT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gbm90IG9ubHkgb3ducyB0aGUgc3FsaXRlIGRhdGFiYXNl
IGNvbm5lY3Rpb24gKHNxbGl0ZTMpLCBidXQgYWxzbyB0aGUgdGhlIG90aGVyIHNxbGl0ZSAKKyAg
ICAgICAgb2JqZWN0cyAoc3FsaXRlM19zdG10KSByZWxhdGVkIHRvIHRoZSBjb25uZWN0aW9uLiBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudCBhbmQgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbiBwb2lu
dHMKKyAgICAgICAgdG8gYSBzdGF0ZW1lbnQgYW5kIGEgdHJhbnNhY3Rpb24gYnkgcmVmZXJyaW5n
IHRvIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiB3aXRoIGFuIGlkZW50aWZpZXIuIFRoZXJlZm9y
ZSwKKyAgICAgICAgd2UgY2FuIGFib3J0IGFsbCBhY3RpdmllcyBvbiBhIGRhdGFiYXNlIGNvbm5l
Y3Rpb24gdmlhIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi4gU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uIGlzIAorICAgICAgICBjcm9zcy10aHJlYWQgY2xhc3M6IGl0IGFsbG93cyB1cyB0byBwZXJm
b3JtIG9wZXJhdGlvbnMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCBhbmQgc3luY2hyb25vdXNseSBh
Ym9ydCBhY3RpdmllcyAKKyAgICAgICAgb24gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIFRv
IHByZXBhcmUgcHJvY2VzcyBmb3Igc3VzcGVuc2lvbiwgd2UgYWxzbyBuZWVkIGEgd2F5IHRvIHBy
ZXZlbnQgZGF0YWJhc2UgY29ubmVjdGlvbiBmcm9tIHBlcmZvcm1pbmcgb3BlcmF0aW9uCisgICAg
ICAgIGFmdGVyIHdlIGFib3J0IGl0cyBleGlzdGluZyBhY3Rpdml0aWVzLCBhbmQgcHJldmVudCBu
ZXcgZGF0YWJhc2UgY29ubmVjdGlvbiBmcm9tIGJlaW5nIGNyZWF0ZWQgb3Igb3BlbmVkLCBzbyB3
ZQorICAgICAgICBpbnRyb2R1Y2UgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyIGlzIGEgc2luZ2xldG9uIHRoYXQgbW9uaXRvcnMgYWxs
IGV4aXN0aW5nCisgICAgICAgIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiBpbnN0YW5jZXMuIEZv
ciBleGlzdGluZyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gaW5zdGFuY2VzLCB3aGVuIHByb2Nl
c3MgaXMgYWJvdXQgdG8KKyAgICAgICAgc3VzcGVuZCwgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIgd2lsbCBhYm9ydCB0aGVpciBhY3RpdmllcyBhbmQgc2V0IHRoZWlyIHN0YXRlIHRvIGlu
YWN0aXZlLiAKKyAgICAgICAgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uIGNhbiBvbmx5IHBlcmZv
cm0gb3BlcmF0aW9uIChpbnZva2Ugc3FsaXRlIGZ1bmN0aW9ucykgdGhhdCByZXF1aXJlcyBmaWxl
IGxvY2sgd2hlbiBpdHMgCisgICAgICAgIHN0YXRlIGlzIGFjdGl2ZTsgaWYgaXQgaXMgbm90IGFj
dGl2ZSwgaXQgcmV0dXJucyBlcnJvciB3aXRob3V0IGV4ZWN1dGlvbi4gRm9yIG5ldyBTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb24gCisgICAgICAgIGluc3RhbmNlIHRoYXQgaXMgY3JlYXRlZCBhZnRl
ciBwcmVwYXJhdGlvbiwgaXQgbmVlZHMgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIncyBs
b2NrIHdoZW4gcmVnaXN0ZXJpbmcgCisgICAgICAgIGl0c2VsZiB0byBTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlciwgc28gd2UgY2FuIGp1c3QgaG9sZCB0aGUgbG9jayBhbmQgbm90IHJlbGVh
c2UgaXQgdW50aWwgcHJvY2VzcyByZXN1bWVzLiAKKyAgICAgICAgSW4gdGhpcyB3YXksIG5vIG5l
dyBzcWxpdGUgZGF0YWJhc2UgY29ubmVjdGlvbiBjYW4gYmUgb3BlbmVkIGR1cmluZyBwcm9jZXNz
IHN1c3BlbnNpb24uCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpz
aW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXI6OnNldEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXI6OmJlZ2luQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI6OmVuZEFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyOjpjaGVja0xhc3RBY3Rpdml0eVRpbWVzdGFtcCk6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcklt
cGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlckltcGw6On5TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6
Om5leHRUcmFuc2FjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6
ZVNRTGl0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246On5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpvcGVuRnJvbUFjdGl2aXR5VHJhY2tlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNsb3NlRnJvbUFjdGl2aXR5
VHJhY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJl
Z2luQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjplbmRBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmludmFsaWRhdGVBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OnNldElzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6aXNPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6ZW5hYmxlRXh0ZW5kZWRSZXN1bHRDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5hYmxlSW5NZW1vcnlUZW1wU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVXQUxKb3VybmFs
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja3BvaW50TW9kZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZVdBTENoZWNrcG9pbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVJbnRl
cm5hbFN0YXRlbWVudEFuZFByZXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpsYXN0Q2hhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvck1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjp0YWJsZUNyZWF0aW9uUXVlcnkp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c2V0TWF4aW11bVNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpwYWdlU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnJlbGVhc2VN
ZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVh
dGVTdGF0ZW1lbnRBbmRQcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6YmluZEJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uOjpiaW5kVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OmNvbHVtbkJsb2JBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246OmNvbHVtbkludCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246OmNvbHVtblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpyZXNldFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnN0ZXBTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpkZXN0cm95U3RhdGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlVHJhbnNhY3Rpb25BbmRC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNvbW1p
dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6cm9sbGJhY2tUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppbk1lbW9yeVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpwYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6On5T
UUxpdGVEYXRhYmFzZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6YmluZEJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OmJpbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50Ojpjb2x1bW5CbG9iQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtbkludCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudDo6Y29sdW1uVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OnN0ZXApOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0
YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnRSZXNldFNjb3BlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3Bl
Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6b3BlcmF0b3IgYm9v
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0
U2NvcGU6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudFJlc2V0U2NvcGU6Om9wZXJhdG9yLT4pOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246On5TUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5z
YWN0aW9uOjpyb2xsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5z
YWN0aW9uOjppc09uZ29pbmdUcmFuc2FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaDogQWRkZWQuCisKIDIwMjItMDMtMTUgIEFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyODI3MzcpOiBg
dGV4dC1zaGFkb3dgIGlzIGNsaXBwZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmY5ZTc2NDMwMjQ3OGY5ZTA3OTk1
M2U2ODhjNzY1MWFmY2UxN2YyZC4uNzdkMWNiMGEyN2E5NTVkYTNiYjJlYzI3ZDQ1Yzg2MTQxNjRh
M2FhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAyMi0wMy0xNyAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBBYm9ydCBTUUxpdGUgYWN0aXZpdGllcyB0
byByZWxlYXNlIGZpbGUgbG9jayB3aGVuIHByb2Nlc3MgaXMgYWJvdXQgdG8gc3VzcGVuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFNR
TGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIgd2hpY2ggYWNxdWlyZXMgYXNzZXJ0aW9uIHdoZW4g
Zmlyc3QgZGF0YWJhc2UgYWN0aXZpdHkgc3RhcnRzIGFuZCByZWxlYXNlCisgICAgICAgIGFzc2Vy
dGlvbiB3aGVuIGxhc3QgZGF0YWJhc2UgYWN0aXZpdHkgZW5kcy4gQWRvcHQgU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uIGFuZCBpdHMgcmVsYXRlZCBjbGFzc2VzIGluIAorICAgICAgICBMb2NhbFN0
b3JhZ2UgYmFja2VuZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OnN1c3BlbmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U1FMaXRlU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJl
YTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVU
YWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OnBy
ZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFy
dFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdl
QXJlYTo6Y2FjaGVkU3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFy
ZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdl
QXJlYTo6YWxsSXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6c2V0
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKToK
KyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmg6CisgICAgICAgICogU2hh
cmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0
eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVu
ZExhc3RBY3Rpdml0eSk6CisgICAgICAgICogU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25I
b2xkZXIuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjItMDMtMTUgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVmlkZW8gcG9zdGVyIGRp
c2FwcGVhcnMgcHJlbWF0dXJlbHkgb24gcGxheSwgbGVhdmluZyB0cmFuc3BhcmVudCB2aWRlbyBl
bGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTVmNGFjNGY4MGMzZDgxZjFhMDgyMDQ3OGQ5
OGVlYmJiZmExOTY0NS4uYmIxOGZlZGNjYThkNzQ1NzhjMjg1NWQ2M2MxMDUzMzU1MGI3ODA3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNzgwLDggKzE3ODAsMTQgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgcGxhdGZvcm0vc3FsL1NRTFZhbHVlLmgKICAg
ICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
QWN0aXZpdHlUcmFja2VySW1wbC5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbi5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmgKKyAg
ICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmgKICAgICBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgKICAgICBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgKKyAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2VUcmFuc2FjdGlvbi5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAogICAg
IHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDVjN2I3M2ViMjA1ZTA5
ZWMyNDZlMDExZDBhNTAyZGNkNGMxZGNhNTAuLmQ1MzM5MWIyZDZlMTY2MzU4ODBjOWZhNzE3NTlj
N2Y2MjM4MWY0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjUyLDcgKzIyNTIsMTEgQEAgcGxhdGZv
cm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
VGltaW5nQWxsb3dPcmlnaW4uY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9yaXplci5jcHAK
IHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlci5jcHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb24uY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwCiBwbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcAorcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlVHJhbnNhY3Rpb24uY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAK
IHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDhkYzg2ODZjNDk4MTQ1ZmJhMzdiMjQ1NjYx
N2E4NDBhMjdjMjVhNi4uZjlhODQ1MTVkYjQzYmVkYjg2Mzc3YTFhOGY0MTQ3OWM0NTk2MDVkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzAyNCw2ICszMDI0LDEyIEBACiAJCTkzRDQzN0EwMUQ1N0IxOUEwMEFCODVFQSAvKiBD
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUI1NkM5QTgxQzg5MzEyODAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNENDM3QTIxRDU3QjNGRTAwQUI4NUVBIC8qIFVSTERlY29tcG9zaXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkI5RENB
MTg5REUxMDAwMEJCODQyQyAvKiBVUkxEZWNvbXBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTMxRDU3QjdFMjAwQUI4NUVB
IC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBRDcyNkZFNzE2RDlGMjA0MDAzQTRFNkQgLyogSlNNZWRpYUxpc3RDdXN0
b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
M0Q1REQ0MjI3REJGRjBCMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDM4MjdEQkZG
MDMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDQ0MjdEQkZGMEIwMDEwN0M3
NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQzQTI3REJGRjA0MDAxMDdDNzUgLyogU1FMaXRl
RGF0YWJhc2VUcmFuc2FjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTkzRDVERDQ1MjdEQkZGMEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRDVERDNCMjdEQkZGMDUwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudFJlc2V0U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk5M0Q1REQ0NzI3REJGRjBCMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Q1REQzRDI3REJGRjA4MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENURE
NDgyN0RCRkYwQzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREM0Uy
N0RCRkYwOTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDQ5
MjdEQkZGMEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREM0YyN0RCRkYw
QTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3NzAyNTRCOThBMDAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZGMjU0QjkwMkQwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3NzEyNTRCQUI0NTAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Q2Qjc2RDI1NEI4RTFCMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0Q2QjdBODI1NTFENDFGMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlvblBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEy
ODgwLDYgKzEyODg2LDE2IEBACiAJCTkzRDA1MDMxMjUzQTE0OEMwMDJBMzA3MiAvKiBBYnN0cmFj
dFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UmFuZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0
aW9uT3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uT3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8q
IEV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMzcyN0RCRkYwMzAwMTA3Qzc1
IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0Q1REQzODI3REJGRjAzMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMzky
N0RCRkYwNDAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDNBMjdEQkZGMDQwMDEwN0M3
NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNENUREM0IyN0RCRkYwNTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50UmVzZXRTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNENUREM0MyN0RCRkYwNzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREM0QyN0RC
RkYwODAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREM0UyN0RCRkYwOTAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNENUREM0YyN0RCRkYwQTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNl
QWN0aXZpdHlUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzRDVERDQwMjdEQkZGMEEwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZC
NzZEMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0Q2Qjc2RTI1NEI4RTFCMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc2RjI1NEI5MDJEMDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTU0
OCw5ICsxOTU2NCwxOSBAQAogCQkJCTFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVB
dXRob3JpemVyLmNwcCAqLywKIAkJCQkxQTIyNDY0MzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRl
RGF0YWJhc2UuY3BwICovLAogCQkJCTFBMjI0NjQ0MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVE
YXRhYmFzZS5oICovLAorCQkJCTkzRDVERDQwMjdEQkZGMEEwMDEwN0M3NSAvKiBTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlci5jcHAgKi8sCisJCQkJOTNENUREM0YyN0RCRkYwQTAwMTA3Qzc1
IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggKi8sCisJCQkJOTNENUREM0UyN0RC
RkYwOTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICovLAor
CQkJCTkzRDVERDM3MjdEQkZGMDMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24u
Y3BwICovLAorCQkJCTkzRDVERDNEMjdEQkZGMDgwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb24uaCAqLywKKwkJCQk5M0Q1REQzQzI3REJGRjA3MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQuY3BwICovLAorCQkJCTkzRDVERDM4MjdEQkZGMDMwMDEwN0M3NSAvKiBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oICovLAorCQkJCTkzRDVERDNCMjdEQkZGMDUwMDEwN0M3
NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaCAqLywKIAkJCQk3RTQ3NEUx
RDEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJCQk3
RTQ3NEUxQzEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi8sCiAJ
CQkJN0U0NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dC5oICovLAorCQkJCTkzRDVERDM5MjdEQkZGMDQwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRy
YW5zYWN0aW9uLmNwcCAqLywKKwkJCQk5M0Q1REQzQTI3REJGRjA0MDAxMDdDNzUgLyogU1FMaXRl
RGF0YWJhc2VUcmFuc2FjdGlvbi5oICovLAogCQkJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAv
KiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkg
LyogU1FMaXRlRmlsZVN5c3RlbS5oICovLAogCQkJCTFBMjI0NjQ1MENDOThEREIwMEMwNTI0MCAv
KiBTUUxpdGVTdGF0ZW1lbnQuY3BwICovLApAQCAtMzczOTksOCArMzc0MjUsMTQgQEAKIAkJCQk5
N0JDNkEzQjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMQ2FsbGJhY2tXcmFwcGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5N0JDNkEzQzE1MDVGMDgxMDAxQjc0QUMgLyogU1FMRXJyb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMjI0NjRBMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTNENURENDkyN0RCRkYwQzAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0ODI3REJG
RjBDMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk5M0Q1REQ0NzI3REJGRjBCMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0MjI3REJGRjBCMDAxMDdDNzUg
LyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDVERDQ1
MjdEQkZGMEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTdFNDc0RTFGMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRh
YmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNDc0RTFFMTI0OTREQzkwMDIzNTM2
NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkz
RDVERDQ0MjdEQkZGMEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCNUE2ODQyMjBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8qIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRUMxMzAxQzUwQUJG
NTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzkyMiw2
ICszNzk1NCw3IEBACiAJCQkJNDFFQjc5N0UyN0MzRTQ1RTAwMUMzRTNFIC8qIFZpZGVvRnJhbWVM
aWJXZWJSVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAv
KiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcxOUIy
OTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MTYwNDkzMzI3NDNCMEU4MDBBODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkJDNEFGNDE4OTg4
MTU2MDA0NkVFMzggLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyQjBENEMyMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc5MzIsNyArMzc5NjUsNiBAQAogCQkJCUNE
RTgzREIyMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1BsYXliYWNrUXVhbGl0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDc1MDMzQTgyNTJCRDM2ODAwRjcwQ0UzIC8qIFZpZGVvUGxheWJhY2tRdWFs
aXR5TWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc1N0IxM0UyMTRBRTc5OTAwNzk0QjBE
IC8qIFZpZGVvUHJlc2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTYwNDkzMzI3NDNCMEU4MDBB
ODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RD
OTM5QTgxRTlCREZCMTAwQkI3NjhEIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0QxRjlCMTgyNzAyM0EyQTAwNjE3RUI2IC8qIFZpZGVvVHJhY2tDbGll
bnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWNmMzM0MWMwYWQzMjUzMGJlMzNmYjBhNWNhMjQzMWZlM2QxM2U5NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlci5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCIKKworI2luY2x1
ZGUgIlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIgorI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0YWJhc2VBY3Rpdml0
eVRyYWNrZXImIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKQorewor
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXI+IHRyYWNrZXI7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0geworICAgICAgICB0cmFja2VyLmNvbnN0cnVjdCgp
OworICAgIH0pOworICAgIHJldHVybiB0cmFja2VyLmdldCgpOworfQorCit2b2lkIFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJbXBsKGNvbnN0IFNRTGl0ZURhdGFiYXNlQWN0aXZp
dHlUcmFja2VySW1wbEdlbmVyYXRvciYgZ2VuZXJhdG9yKQoreworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKKworICAgIG1faW1wbCA9IGdlbmVyYXRvcigpLnB0cigpOworfQorCit2b2lk
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpiZWdpbkFjdGl2aXR5KFNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CisKKyAgICBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcCA9IFdhbGxUaW1lOjpub3coKTsKKyAg
ICBpZiAobV9pbXBsICYmIG1fYWN0aXZlQ29ubmVjdGlvbnMuY29tcHV0ZXNFbXB0eSgpKQorICAg
ICAgICBtX2ltcGwtPndpbGxCZWdpbkZpcnN0QWN0aXZpdHkoKTsKKworICAgIG1fYWN0aXZlQ29u
bmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24pOworICAgIGNvbm5lY3Rpb24ub3BlbkZyb21BY3Rpdml0
eVRyYWNrZXIoKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6ZW5k
QWN0aXZpdHkoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIG1fYWN0aXZlQ29ubmVjdGlvbnMucmVtb3Zl
KGNvbm5lY3Rpb24pOworICAgIGNvbm5lY3Rpb24uY2xvc2VGcm9tQWN0aXZpdHlUcmFja2VyKCk7
CisgICAgaWYgKCFtX2FjdGl2ZUNvbm5lY3Rpb25zLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9sYXN0QWN0aXZpdHlUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCk7
CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoMV9zLCBbdGltZXN0YW1wID0gbV9s
YXN0QWN0aXZpdHlUaW1lc3RhbXBdIHsKKyAgICAgICAgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXI6OnNpbmdsZXRvbigpLmNoZWNrTGFzdEFjdGl2aXR5VGltZXN0YW1wKHRpbWVzdGFtcCk7
CisgICAgfSk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmNoZWNr
TGFzdEFjdGl2aXR5VGltZXN0YW1wKFdhbGxUaW1lIHRpbWVzdGFtcCkKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAobV9pbXBsICYmIG1fbGFzdEFjdGl2aXR5VGlt
ZXN0YW1wID09IHRpbWVzdGFtcCkKKyAgICAgICAgbV9pbXBsLT5kaWRFbmRMYXN0QWN0aXZpdHko
KTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c3VzcGVuZCgpIFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVCghbV9pc1N1c3BlbmRlZCk7CisgICAgbV9pc1N1c3BlbmRlZCA9
IHRydWU7CisKKyAgICAvLyBXZSB3aWxsIGhvbGQgdGhlIGxvY2sgdG8gcHJldmVudCBuZXcgZGF0
YWJhc2UgYWN0aXZpdGllcyB1bnRpbCByZXN1bWUoKS4KKyAgICBtX2xvY2subG9jaygpOworCisg
ICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9hY3RpdmVDb25uZWN0aW9ucykKKyAgICAgICAg
Y29ubmVjdGlvbi5pbnZhbGlkYXRlQWN0aXZpdHkoKTsKKworICAgIG1faW1wbC0+ZGlkRW5kTGFz
dEFjdGl2aXR5KCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnJl
c3VtZSgpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgbV9pbXBsLT53aWxsQmVnaW5G
aXJzdEFjdGl2aXR5KCk7CisKKyAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX2FjdGl2ZUNv
bm5lY3Rpb25zKQorICAgICAgICBjb25uZWN0aW9uLnNldElzQWN0aXZlKHRydWUpOworCisgICAg
bV9sb2NrLnVubG9jaygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZmM4NWViYzg5ZjdlZmVmYzAwNzgxYTUzOWI0MTQzODg1
NjdjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlckltcGw7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyIHsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXImIHNpbmdsZXRvbigpOworICAgIHZvaWQgYmVnaW5BY3Rpdml0eShTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb24mKTsKKyAgICB2b2lkIGVuZEFjdGl2aXR5KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
biYpOworICAgIHVzaW5nIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbEdlbmVyYXRv
ciA9IEZ1bmN0aW9uPFJlZjxTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGw+KCk+Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1wbChjb25zdCBTUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlckltcGxHZW5lcmF0b3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3Bl
bmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZSgpOworCitwcml2YXRlOgorICAg
IHZvaWQgY2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAoV2FsbFRpbWUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKKworICAgIExvY2sgbV9sb2Nr
OworICAgIFdhbGxUaW1lIG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9sb2NrKTsKKyAgICBXZWFrSGFzaFNldDxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1f
YWN0aXZlQ29ubmVjdGlvbnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIFJlZlB0
cjxTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGw+IG1faW1wbCBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fbG9jayk7CisgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMTI0NzAxNzVlNDAzMTcyMDEwNWVmNzA2NGU1M2Q5YjdlMTllZWE0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0
aXZpdHlUcmFja2VySW1wbC5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsIDogcHVibGljIFJl
ZkNvdW50ZWQ8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsPiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHdpbGxCZWdpbkZpcnN0QWN0aXZpdHkoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZEVuZExhc3RBY3Rpdml0eSgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg1NzE3OTA5Y2YwMzU5OWM4ZmVkZjI4MWYw
OWQ0YTA2NTAxZjM0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNTg1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlQWN0aXZpdHlUcmFja2VyLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQu
aCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJl
cnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdWludDY0X3QgbmV4dFN0YXRl
bWVudElkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3Vy
cmVudFN0YXRlbWVudElkZW50aWZpZXI7CisgICAgcmV0dXJuICsrY3VycmVudFN0YXRlbWVudElk
ZW50aWZpZXI7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBuZXh0VHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkKK3sKKyAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnRUcmFuc2FjdGlv
bklkZW50aWZpZXI7CisgICAgcmV0dXJuICsrY3VycmVudFRyYW5zYWN0aW9uSWRlbnRpZmllcjsK
K30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNRTGl0ZSgpCit7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIGZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBp
ZiAoaW50IHJlc3VsdCA9IHNxbGl0ZTNfaW5pdGlhbGl6ZSgpOyByZXN1bHQgIT0gU1FMSVRFX09L
KQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJGYWlsZWQgdG8g
aW5pdGlhbGl6ZSBzcWxpdGU6ICVzIiwgc3FsaXRlM19lcnJzdHIocmVzdWx0KSk7CisgICAgfSk7
Cit9CisKK1JlZjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRDb21taXRUcmFuc2Fj
dGlvbkF0Q2xvc2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uKHBhdGgsIHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkpOworfQorCitT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbihjb25zdCBT
dHJpbmcmIHBhdGgsIGJvb2wgc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKQorICAgIDog
bV9wYXRoKHBhdGgpCisgICAgLCBtX3Nob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZShzaG91
bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpCit7CisgICAgaW5pdGlhbGl6ZVNRTGl0ZSgpOwor
ICAgIGJlZ2luQWN0aXZpdHkoKTsKKworICAgIGVuYWJsZUV4dGVuZGVkUmVzdWx0Q29kZSgpOwor
ICAgIGVuYWJsZUluTWVtb3J5VGVtcFN0b3JlKCk7CisgICAgaWYgKGVuYWJsZVdBTEpvdXJuYWxN
b2RlKCkpCisgICAgICAgIGV4ZWN1dGVXQUxDaGVja3BvaW50KENoZWNrcG9pbnRNb2RlOjpUcnVu
Y2F0ZSk7Cit9CisKK1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6flNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbigpCit7CisgICAgZW5kQWN0aXZpdHkoKTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246Om9wZW5Gcm9tQWN0aXZpdHlUcmFja2VyKCkKK3sKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CisKKyAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKKworICAgIC8vIEZJWE1F
OiBhZGQgc3VwcG9ydCBmb3IgaW4tbWVtb3J5IGRhdGFiYXNlLgorICAgIGlmIChtX3BhdGggPT0g
aW5NZW1vcnlQYXRoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBvcGVuRmxh
Z3MgPSAoU1FMSVRFX09QRU5fQVVUT1BST1hZIHwgU1FMSVRFX09QRU5fUkVBRFdSSVRFKSB8IFNR
TElURV9PUEVOX0NSRUFURTsKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19vcGVuX3YyKEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3BhdGgpLmRhdGEoKSwgJm1fc3FsaXRl
Q29ubmVjdGlvbiwgb3BlbkZsYWdzLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0ICE9IFNRTElU
RV9PSyB8fCAhbV9zcWxpdGVDb25uZWN0aW9uKSB7CisgICAgICAgIG1fc3FsaXRlQ29ubmVjdGlv
biA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmludGVycnVwdFdpdGhM
b2NrSGVsZCgpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBBU1NF
UlQobV9sb2NrLmlzSGVsZCgpKTsKKworICAgIHNxbGl0ZTNfaW50ZXJydXB0KG1fc3FsaXRlQ29u
bmVjdGlvbik7CisgICAgaWYgKCFzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVj
dGlvbikpIHsKKyAgICAgICAgQVNDSUlMaXRlcmFsIHF1ZXJ5ID0gIlJPTExCQUNLIl9zOworICAg
ICAgICBpZiAobV9zaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpCisgICAgICAgICAgICBx
dWVyeSA9ICJDT01NSVQiX3M7CisgICAgICAgIHNxbGl0ZTNfc3RtdCogc3RhdGVtZW50IHsgbnVs
bHB0ciB9OworICAgICAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19wcmVwYXJlX3YyKG1fc3FsaXRl
Q29ubmVjdGlvbiwgcXVlcnkuY2hhcmFjdGVycygpLCBxdWVyeS5sZW5ndGgoKSArIDEsICZzdGF0
ZW1lbnQsIG51bGxwdHIpOworICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9PSykKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfc3RlcChzdGF0ZW1lbnQpOworICAgICAgICBpZiAocmVz
dWx0ICE9IFNRTElURV9ET05FKQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0
YWJhc2UsICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmludGVycnVwdFdpdGhMb2NrSGVsZDog
ZmFpbGVkIHRvIHJvbGwgYmFjayB0cmFuc2FjdGlvbiAoJWQpIC0gKCVzKSIsIHJlc3VsdCwgc3Fs
aXRlM19lcnJtc2cobV9zcWxpdGVDb25uZWN0aW9uKSk7CisgICAgICAgIHNxbGl0ZTNfcmVzZXQo
c3RhdGVtZW50KTsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShzdGF0ZW1lbnQpOworICAgICAg
ICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgfQor
ICAgIAorfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2VGcm9tQWN0aXZp
dHlUcmFja2VyKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBBU1NF
UlQobV9pc0FjdGl2ZSk7CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIGludGVycnVwdFdpdGhMb2NrSGVsZCgpOworCisgICAgZm9yIChhdXRvJiBz
dGF0ZW1lbnQgOiBtX3N0YXRlbWVudHMudmFsdWVzKCkpIHsKKyAgICAgICAgc3FsaXRlM19yZXNl
dChzdGF0ZW1lbnQuc3FsaXRlU3RhdGVtZW50KTsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShz
dGF0ZW1lbnQuc3FsaXRlU3RhdGVtZW50KTsKKyAgICB9CisKKyAgICBtX3N0YXRlbWVudHMuY2xl
YXIoKTsKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19jbG9zZShtX3NxbGl0ZUNvbm5lY3Rpb24p
OworICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX09LKQorICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2U6IGZhaWxlZCB0
byBjbG9zZSBkYXRhYmFzZSAoJWQpIC0gJXMiLCByZXN1bHQsIHNxbGl0ZTNfZXJybXNnKG1fc3Fs
aXRlQ29ubmVjdGlvbikpOworCisgICAgbV9zcWxpdGVDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAg
ICBtX2lzQWN0aXZlID0gZmFsc2U7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpiZWdpbkFjdGl2aXR5KCkKK3sKKyAgICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6
c2luZ2xldG9uKCkuYmVnaW5BY3Rpdml0eSgqdGhpcyk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjplbmRBY3Rpdml0eSgpCit7CisgICAgU1FMaXRlRGF0YWJhc2VBY3Rpdml0
eVRyYWNrZXI6OnNpbmdsZXRvbigpLmVuZEFjdGl2aXR5KCp0aGlzKTsKK30KKwordm9pZCBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OmludmFsaWRhdGVBY3Rpdml0eSgpCit7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaW50ZXJydXB0V2l0aExvY2tIZWxkKCk7CisgICAg
bV9pc0FjdGl2ZSA9IGZhbHNlOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
c2V0SXNBY3RpdmUoYm9vbCB2YWx1ZSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CisKKyAgICBtX2lzQWN0aXZlID0gdmFsdWU7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uOjppc09wZW4oKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IHJldHVybiAhIW1fc3FsaXRlQ29ubmVjdGlvbjsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OmVuYWJsZUV4dGVuZGVkUmVzdWx0Q29kZSgpCit7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OworCisgICAgcmV0dXJuICEhbV9zcWxpdGVDb25uZWN0aW9uICYmIHNxbGl0
ZTNfZXh0ZW5kZWRfcmVzdWx0X2NvZGVzKG1fc3FsaXRlQ29ubmVjdGlvbiwgMSkgPT0gU1FMSVRF
X09LOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5hYmxlSW5NZW1vcnlU
ZW1wU3RvcmUoKQoreworICAgIHJldHVybiBleGVjdXRlKCJQUkFHTUEgdGVtcF9zdG9yZSA9IE1F
TU9SWSIpOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5hYmxlV0FMSm91
cm5hbE1vZGUoKQoreworICAgIGF1dG8gb3B0aW9uYWxJZGVudGlmaWVyID0gY3JlYXRlSW50ZXJu
YWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgeyAiUFJBR01BIGpvdXJuYWxfbW9kZT1X
QUwiX3MgfSk7CisgICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7CisgICAg
Ym9vbCBlbmFibGVkID0gZmFsc2U7CisgICAgaWYgKHN0ZXBTdGF0ZW1lbnQoaWRlbnRpZmllcikg
PT0gU1FMSVRFX1JPVykKKyAgICAgICAgZW5hYmxlZCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGNvbHVtblRleHQoaWRlbnRpZmllciwgMCksICJ3YWwiKTsKKyAgICBkZXN0cm95SW50
ZXJuYWxTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisKKyAgICBpZiAoZW5hYmxlZCkgeworICAgICAg
ICBhdXRvIHNobVBhdGggPSBtYWtlU3RyaW5nKG1fcGF0aCwgIi1zaG0iX3MpOworICAgICAgICBp
ZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzaG1QYXRoKSAmJiAhRmlsZVN5c3RlbTo6bWFrZVNh
ZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoc2htUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIGVuYWJsZWQ7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tw
b2ludE1vZGVWYWx1ZShTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OkNoZWNrcG9pbnRNb2RlIG1v
ZGUpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OkNoZWNrcG9pbnRNb2RlOjpGdWxsOgorICAgICAgICByZXR1cm4gU1FMSVRFX0NIRUNL
UE9JTlRfRlVMTDsKKyAgICBjYXNlIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Q2hlY2twb2lu
dE1vZGU6OlRydW5jYXRlOgorICAgICAgICByZXR1cm4gU1FMSVRFX0NIRUNLUE9JTlRfVFJVTkNB
VEU7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wg
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlV0FMQ2hlY2twb2ludChDaGVja3BvaW50
TW9kZSBtb2RlKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICgh
bV9pc0FjdGl2ZSB8fCAhbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gc3FsaXRlM193YWxfY2hlY2twb2ludF92MihtX3NxbGl0ZUNvbm5lY3Rp
b24sIG51bGxwdHIsIGNoZWNrcG9pbnRNb2RlVmFsdWUobW9kZSksIG51bGxwdHIsIG51bGxwdHIp
ID09IFNRTElURV9PSzsKK30KKworc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmll
dyBxdWVyeSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1f
aXNBY3RpdmUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIW1fc3Fs
aXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHNxbGl0
ZTNfc3RtdCogc3FsaXRlU3RhdGVtZW50IHsgbnVsbHB0ciB9OworICAgIGNvbnN0IGNoYXIqIHRh
aWwgPSBudWxscHRyOworICAgIGludCByZXN1bHQ7CisgICAgaWYgKHF1ZXJ5LmlzOEJpdCgpICYm
IHF1ZXJ5LmlzQWxsQVNDSUkoKSkKKyAgICAgICAgcmVzdWx0ID0gc3FsaXRlM19wcmVwYXJlX3Yy
KG1fc3FsaXRlQ29ubmVjdGlvbiwgcXVlcnkubGVuZ3RoKCkgPyByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihxdWVyeS5jaGFyYWN0ZXJzOCgpKSA6ICIiLCBxdWVyeS5sZW5ndGgoKSArIDEs
ICZzcWxpdGVTdGF0ZW1lbnQsICZ0YWlsKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHNx
bGl0ZTNfcHJlcGFyZV92MihtX3NxbGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5LnV0ZjgoKS5kYXRhKCks
IHF1ZXJ5LnV0ZjgoKS5sZW5ndGgoKSArIDEsICZzcWxpdGVTdGF0ZW1lbnQsICZ0YWlsKTsKKyAg
ICBpZiAodGFpbCAmJiAqdGFpbCkKKyAgICAgICAgcmVzdWx0ID0gU1FMSVRFX0VSUk9SOworCisg
ICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShz
cWxpdGVTdGF0ZW1lbnQpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IG5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKCk7CisgICAgbV9z
dGF0ZW1lbnRzLmFkZChpZGVudGlmaWVyLCBJbnRlcm5hbFN0YXRlbWVudCB7IGlkZW50aWZpZXIs
IHNxbGl0ZVN0YXRlbWVudCwgc3RkOjpudWxsb3B0IH0pOworCisgICAgcmV0dXJuIGlkZW50aWZp
ZXI7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpkZXN0cm95SW50ZXJuYWxT
dGF0ZW1lbnQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGF1dG8gaXRlciA9IG1fc3RhdGVtZW50cy5maW5kKGlkZW50aWZpZXIpOyBpdGVy
ICE9IG1fc3RhdGVtZW50cy5lbmQoKSkgeworICAgICAgICBzcWxpdGUzX2ZpbmFsaXplKGl0ZXIt
PnZhbHVlLnNxbGl0ZVN0YXRlbWVudCk7CisgICAgICAgIG1fc3RhdGVtZW50cy5yZW1vdmUoaXRl
cik7CisgICAgfQorfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpsYXN0Q2hhbmdl
cygpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX3NxbGl0
ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHNxbGl0ZTNfY2hh
bmdlcyhtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjpsYXN0RXJyb3IoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOwor
CisgICAgcmV0dXJuIHNxbGl0ZTNfZXJyY29kZShtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitj
b25zdCBjaGFyKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvck1lc3NhZ2UoKQor
eworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9zcWxpdGVDb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm4gIkRhdGFiYXNlIGNvbm5lY3Rpb24gaXMgbm90IG9wZW4i
OworCisgICAgcmV0dXJuIHNxbGl0ZTNfZXJybXNnKG1fc3FsaXRlQ29ubmVjdGlvbik7Cit9CisK
K1N0cmluZyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnRhYmxlQ3JlYXRpb25RdWVyeShjb25z
dCBTdHJpbmcmIHRhYmxlTmFtZSkKK3sKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNy
ZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgIlNFTEVDVCBzcWwg
RlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAndGFibGUnIEFORCBuYW1lID0gPzsiX3Mg
fSk7CisgICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9uYWxJZGVudGlmaWVyOworICAgIFN0cmluZyBy
ZXN1bHQ7CisgICAgaWYgKGJpbmRUZXh0KGlkZW50aWZpZXIsIDEsIHRhYmxlTmFtZSkgPT0gU1FM
SVRFX09LICYmIHN0ZXBTdGF0ZW1lbnQoaWRlbnRpZmllcikgPT0gU1FMSVRFX1JPVykKKyAgICAg
ICAgcmVzdWx0ID0gY29sdW1uVGV4dChpZGVudGlmaWVyLCAwKTsKKyAgICBkZXN0cm95SW50ZXJu
YWxTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29s
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZShBU0NJSUxpdGVyYWwgcXVlcnkpCit7
CisgICAgcmV0dXJuIGV4ZWN1dGUoU3RyaW5nVmlldyB7IHF1ZXJ5IH0pOworfQorCitib29sIFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZShTdHJpbmdWaWV3IHF1ZXJ5KQoreworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9pc0FjdGl2ZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGludCByZXN1bHQgPSBzcWxpdGUzX2V4ZWMobV9zcWxpdGVD
b25uZWN0aW9uLCBxdWVyeS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
KTsKKyAgICByZXR1cm4gcmVzdWx0ID09IFNRTElURV9PSyB8fCByZXN1bHQgPT0gU1FMSVRFX0RP
TkU7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRNYXhpbXVtU2l6ZShp
bnQ2NF90IHNpemUpCit7CisgICAgaW50IGN1cnJlbnRQYWdlU2l6ZSA9IHBhZ2VTaXplKCk7Cisg
ICAgaWYgKCFjdXJyZW50UGFnZVNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIGludDY0X3Qg
bmV3TWF4UGFnZUNvdW50ID0gY3VycmVudFBhZ2VTaXplID8gc2l6ZSAvIGN1cnJlbnRQYWdlU2l6
ZSA6IDA7CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRl
bWVudEFuZFByZXBhcmUobWFrZVN0cmluZygiUFJBR01BIG1heF9wYWdlX2NvdW50ID0gIiwgbmV3
TWF4UGFnZUNvdW50KSk7CisgICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7CisgICAg
aWYgKHN0ZXBTdGF0ZW1lbnQoaWRlbnRpZmllcikgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgTE9H
X0VSUk9SKCJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplOiBmYWlsZWQg
dG8gc2V0IG1heGltdW0gc2l6ZSBvZiBkYXRhYmFzZSB0byAlbGxpIGJ5dGVzIiwgc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPihzaXplKSk7CisKKyAgICBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQoaWRl
bnRpZmllcik7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnBhZ2VTaXplKCkK
K3sKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNyZWF0ZUludGVybmFsU3RhdGVtZW50
QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgIlBSQUdNQSBwYWdlX3NpemUiX3MgfSk7CisgICAgaWYg
KCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgYXV0byBpZGVu
dGlmaWVyID0gKm9wdGlvbmFsSWRlbnRpZmllcjsKKyAgICBpbnQgc2l6ZSA9IGNvbHVtbkludChp
ZGVudGlmaWVyLCAwKTsKKyAgICBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQoaWRlbnRpZmllcik7
CisKKyAgICByZXR1cm4gc2l6ZTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OnJlbGVhc2VNZW1vcnkoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzcWxpdGUz
X2RiX3JlbGVhc2VfbWVtb3J5KG1fc3FsaXRlQ29ubmVjdGlvbik7Cit9CisKK3N0ZDo6dW5pcXVl
X3B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpj
cmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKEFTQ0lJTGl0ZXJhbCBxdWVyeSkKK3sKKyAgICByZXR1
cm4gY3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgcXVlcnkgfSk7Cit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4gU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uOjpjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpCit7
CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFu
ZFByZXBhcmUocXVlcnkpOworICAgIGlmICghb3B0aW9uYWxJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ+KG5ldyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCgqdGhpcywgKm9wdGlvbmFs
SWRlbnRpZmllcikpOworfQorCitzcWxpdGUzX3N0bXQqIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6ZmluZFNRTGl0ZVN0YXRlbWVudFdpdGhMb2NrSGVsZCh1aW50NjRfdCBpZGVudGlmaWVyKSBj
b25zdCBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit7CisgICAgQVNTRVJUKG1f
bG9jay5pc0hlbGQoKSk7CisKKyAgICBhdXRvIGl0ZXIgPSBtX3N0YXRlbWVudHMuZmluZChpZGVu
dGlmaWVyKTsKKyAgICBpZiAoaXRlciA9PSBtX3N0YXRlbWVudHMuZW5kKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNxbGl0ZVN0YXRlbWVudDsK
K30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmluZEJsb2IodWludDY0X3QgaWRl
bnRpZmllciwgaW50IGluZGV4LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJsb2IpCit7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5kU1FM
aXRlU3RhdGVtZW50V2l0aExvY2tIZWxkKGlkZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3Rh
dGVtZW50KQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgcmV0dXJuIHNxbGl0
ZTNfYmluZF9ibG9iKHNxbGl0ZVN0YXRlbWVudCwgaW5kZXgsIGJsb2IuZGF0YSgpLCBibG9iLnNp
emUoKSwgU1FMSVRFX1RSQU5TSUVOVCk7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmJpbmRCbG9iKHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0ZXh0KQoreworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0
ZXh0KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICBVQ2hhciBhbnlDaGFyYWN0ZXIgPSAw
OworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzOworICAgIGlmICh0ZXh0LmlzRW1wdHkoKSAm
JiAhdGV4dC5pc051bGwoKSkKKyAgICAgICAgY2hhcmFjdGVycyA9ICZhbnlDaGFyYWN0ZXI7Cisg
ICAgZWxzZQorICAgICAgICBjaGFyYWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworCisg
ICAgcmV0dXJuIGJpbmRCbG9iKGlkZW50aWZpZXIsIGluZGV4LCBTcGFuIHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oY2hhcmFjdGVycyksIHRleHQubGVuZ3RoKCkgKiBzaXplb2Yo
VUNoYXIpIH0pOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiaW5kVGV4dCh1
aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCkKK3sKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBm
aW5kU1FMaXRlU3RhdGVtZW50V2l0aExvY2tIZWxkKGlkZW50aWZpZXIpOworICAgIGlmICghc3Fs
aXRlU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgaW50IHJl
c3VsdDsKKyAgICBpZiAodGV4dC5pczhCaXQoKSAmJiB0ZXh0LmlzQWxsQVNDSUkoKSkKKyAgICAg
ICAgcmVzdWx0ID0gc3FsaXRlM19iaW5kX3RleHQoc3FsaXRlU3RhdGVtZW50LCBpbmRleCwgdGV4
dC5sZW5ndGgoKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHRleHQuY2hhcmFjdGVy
czgoKSkgOiAiIiwgdGV4dC5sZW5ndGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CisgICAgZWxzZQor
ICAgICAgICByZXN1bHQgPSBzcWxpdGUzX2JpbmRfdGV4dChzcWxpdGVTdGF0ZW1lbnQsIGluZGV4
LCB0ZXh0LnV0ZjgoKS5kYXRhKCksIHRleHQudXRmOCgpLmxlbmd0aCgpLCBTUUxJVEVfVFJBTlNJ
RU5UKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cmluZyBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OmNvbHVtbkJsb2JBc1N0cmluZyh1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgY29s
KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0
YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnRXaXRoTG9ja0hlbGQoaWRlbnRpZmllcik7Cisg
ICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAo
c3FsaXRlM19jb2x1bW5fdHlwZShzcWxpdGVTdGF0ZW1lbnQsIGNvbCkgIT0gU1FMSVRFX0JMT0Ip
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29sdW1uX2J5
dGVzKHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBjb25zdCB2b2lkKiBibG9iID0gc3FsaXRlM19jb2x1bW5fYmxvYihz
cWxpdGVTdGF0ZW1lbnQsIGNvbCk7CisgICAgaWYgKCFibG9iKSB7CisgICAgICAgIGlmICghc2l6
ZSkKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICByZXR1cm4geyB9
OworICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihi
bG9iKSwgc2l6ZSAvIHNpemVvZihVQ2hhcikpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uOjpjb2x1bW5JbnQodWludDY0X3QgaWRlbnRpZmllciwgaW50IGNvbCkKK3sKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBm
aW5kU1FMaXRlU3RhdGVtZW50V2l0aExvY2tIZWxkKGlkZW50aWZpZXIpOworICAgIGlmICghc3Fs
aXRlU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBzcWxpdGUzX2Nv
bHVtbl9pbnQoc3FsaXRlU3RhdGVtZW50LCBjb2wpOworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpjb2x1bW5UZXh0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBjb2wpCit7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVt
ZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudFdpdGhMb2NrSGVsZChpZGVudGlmaWVyKTsKKyAgICBp
ZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KHNxbGl0ZTNfY29sdW1uX3RleHQoc3FsaXRlU3RhdGVtZW50LCBjb2wp
LCBzcWxpdGUzX2NvbHVtbl9ieXRlcyhzcWxpdGVTdGF0ZW1lbnQsIGNvbCkpOworfQorCitpbnQg
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpyZXNldFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGlm
aWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0
ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnRXaXRoTG9ja0hlbGQoaWRlbnRpZmllcik7
CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7
CisKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19yZXNldChzcWxpdGVTdGF0ZW1lbnQpOworICAg
IHNxbGl0ZTNfY2xlYXJfYmluZGluZ3Moc3FsaXRlU3RhdGVtZW50KTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzdGVwU3RhdGVtZW50KHVp
bnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisg
ICAgYXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudFdpdGhMb2NrSGVs
ZChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJu
IFNRTElURV9FUlJPUjsKKworICAgIHJldHVybiBzcWxpdGUzX3N0ZXAoc3FsaXRlU3RhdGVtZW50
KTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lTdGF0ZW1lbnQo
dWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQoaWRl
bnRpZmllcik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9u
PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4oKQor
eworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9pc0FjdGl2ZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbiB8
fCBzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVjdGlvbikpIHsKKyAgICAgICAg
bV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoc3FsaXRlM19leGVjKG1fc3FsaXRlQ29u
bmVjdGlvbiwgIkJFR0lOIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikgIT0gU1FMSVRFX0RP
TkUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25J
ZGVudGlmaWVyID0gbmV4dFRyYW5zYWN0aW9uSWRlbnRpZmllcigpOworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4obmV3IFNRTGl0ZURhdGFiYXNl
VHJhbnNhY3Rpb24oKnRoaXMsICptX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIpKTsKK30K
Kwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2
NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CisKKyAgICBpZiAoIW1faXNBY3RpdmUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyIHx8ICptX29uZ29pbmdUcmFuc2FjdGlvbklk
ZW50aWZpZXIgIT0gdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9zcWxpdGVDb25uZWN0aW9uICYmICFzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3Fs
aXRlQ29ubmVjdGlvbikpCisgICAgICAgIHNxbGl0ZTNfZXhlYyhtX3NxbGl0ZUNvbm5lY3Rpb24s
ICJDT01NSVQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKworICAgIG1fb25nb2luZ1Ry
YW5zYWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICgh
bV9pc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX29uZ29pbmdUcmFuc2Fj
dGlvbklkZW50aWZpZXIgfHwgKm1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciAhPSB0cmFu
c2FjdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3NxbGl0ZUNv
bm5lY3Rpb24gJiYgIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQobV9zcWxpdGVDb25uZWN0aW9uKSkK
KyAgICAgICAgc3FsaXRlM19leGVjKG1fc3FsaXRlQ29ubmVjdGlvbiwgIlJPTExCQUNLIiwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisKKyAgICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50
aWZpZXIgPSBzdGQ6Om51bGxvcHQ7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
Ojppc09uZ29pbmdUcmFuc2FjdGlvbih1aW50NjRfdCB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgcmV0dXJuIG1fb25nb2luZ1Ry
YW5zYWN0aW9uSWRlbnRpZmllciAmJiAqbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID09
IHRyYW5zYWN0aW9uSWRlbnRpZmllcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE3MWNjYjkwYThjNzUwMjFjZWRlZDdkYzYzMWMyNTM3NzAxOWRk
NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHNxbGl0ZTMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOworY2xhc3MgU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQ7CitjbGFzcyBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOwor
CitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgY2hhciogaW5NZW1vcnlQYXRoKCkgeyByZXR1cm4gIjptZW1vcnk6IjsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSA9
IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uKCk7
CisKKyAgICBTdHJpbmcgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNPcGVuKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RDaGFu
Z2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RFcnJvcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IGNoYXIqIGxhc3RFcnJvck1lc3NhZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgdGFibGVDcmVhdGlvblF1ZXJ5KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoU3RyaW5nVmlldyBxdWVyeSk7CisgICAgZW51bSBj
bGFzcyBDaGVja3BvaW50TW9kZSA6IHVpbnQ4X3QgeyBGdWxsLCBUcnVuY2F0ZSB9OworICAgIGJv
b2wgZXhlY3V0ZVdBTENoZWNrcG9pbnQoQ2hlY2twb2ludE1vZGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TWF4aW11bVNpemUoaW50NjRfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWxlYXNlTWVtb3J5KCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQWN0aXZpdHkoKTsKKyAgICB2
b2lkIHNldElzQWN0aXZlKGJvb2wpOworCisgICAgLy8gU3RhdGVtZW50IG9wZXJhdGlvbnMuCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
PiBjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKEFTQ0lJTGl0ZXJhbCBxdWVyeSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBjcmVhdGVTdGF0ZW1lbnRBbmRQ
cmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpOworICAgIGludCBiaW5kQmxvYih1aW50NjRfdCBzdGF0
ZW1lbnRJZGVudGlmaWVyLCBpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4gYmxvYik7Cisg
ICAgaW50IGJpbmRCbG9iKHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIsIGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBpbnQgYmluZFRleHQodWludDY0X3Qgc3RhdGVtZW50
SWRlbnRpZmllciwgaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpOworICAgIFN0cmluZyBjb2x1
bW5CbG9iQXNTdHJpbmcodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllciwgaW50IGNvbCk7Cisg
ICAgaW50IGNvbHVtbkludCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgY29sKTsK
KyAgICBTdHJpbmcgY29sdW1uVGV4dCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQg
Y29sKTsKKyAgICBpbnQgcmVzZXRTdGF0ZW1lbnQodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmll
cik7CisgICAgaW50IHN0ZXBTdGF0ZW1lbnQodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllcik7
CisgICAgdm9pZCBkZXN0cm95U3RhdGVtZW50KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIp
OworCisgICAgLy8gVHJhbnNhY3Rpb24gb3BlcmF0aW9ucy4KKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3JlYXRlVHJhbnNhY3Rp
b25BbmRCZWdpbigpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHJvbGxiYWNrVHJhbnNhY3Rpb24odWludDY0X3Qg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBib29sIGlzT25nb2luZ1RyYW5zYWN0aW9uKHVp
bnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRDb21taXRUcmFu
c2FjdGlvbkF0Q2xvc2UpOworICAgIGJvb2wgb3BlbkZyb21BY3Rpdml0eVRyYWNrZXIoKTsKKyAg
ICB2b2lkIGNsb3NlRnJvbUFjdGl2aXR5VHJhY2tlcigpOworICAgIHZvaWQgYmVnaW5BY3Rpdml0
eSgpOworICAgIHZvaWQgZW5kQWN0aXZpdHkoKTsKKyAgICB2b2lkIGludGVycnVwdFdpdGhMb2Nr
SGVsZCgpOworICAgIGJvb2wgZW5hYmxlRXh0ZW5kZWRSZXN1bHRDb2RlKCk7CisgICAgYm9vbCBl
bmFibGVJbk1lbW9yeVRlbXBTdG9yZSgpOworICAgIGJvb2wgZW5hYmxlV0FMSm91cm5hbE1vZGUo
KTsKKyAgICBpbnQgcGFnZVNpemUoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjcmVh
dGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSk7CisgICAgdm9p
ZCBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQodWludDY0X3QgaWRlbnRmaWVyKTsKKyAgICBzcWxp
dGUzX3N0bXQqIGZpbmRTUUxpdGVTdGF0ZW1lbnRXaXRoTG9ja0hlbGQodWludDY0X3Qgc3RhdGVt
ZW50SWRlbnRpZmllcikgY29uc3Q7CisKKyAgICBTdHJpbmcgbV9wYXRoOworICAgIGJvb2wgbV9z
aG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2U7CisgICAgTG9jayBtX2xvY2s7CisgICAgc3Ry
dWN0IEludGVybmFsU3RhdGVtZW50IHsKKyAgICAgICAgdWludDY0X3QgaWRlbnRpZmllcjsKKyAg
ICAgICAgc3FsaXRlM19zdG10KiBzcWxpdGVTdGF0ZW1lbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHRyYW5zYWN0aW9uSWRlbnRpZmllcjsKKyAgICB9OworICAgIEhhc2hNYXA8
dWludDY0X3QsIEludGVybmFsU3RhdGVtZW50PiBtX3N0YXRlbWVudHMgV1RGX0dVQVJERURfQllf
TE9DSyhtX2xvY2spOworICAgIHNxbGl0ZTMqIG1fc3FsaXRlQ29ubmVjdGlvbiAgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2xvY2spIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IG1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
bG9jayk7CisgICAgYm9vbCBtX2lzQWN0aXZlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKSB7
IGZhbHNlIH07CisgICAgZnJpZW5kIGNsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDM5OWRlNmMzODg5MWZiNzU3ODBlMTAxNzNhYmFlNTA2YWIyYzE2NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5j
cHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIgorCisjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICA6IG1fY29ubmVjdGlv
bihjb25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK1NR
TGl0ZURhdGFiYXNlU3RhdGVtZW50Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQoKQoreworICAg
IG1fY29ubmVjdGlvbi0+ZGVzdHJveVN0YXRlbWVudChtX2lkZW50aWZpZXIpOworfQorCitpbnQg
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgU3Bhbjxjb25zdCB1
aW50OF90PiBibG9iKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmJpbmRCbG9iKG1faWRl
bnRpZmllciwgaW5kZXgsIGJsb2IpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6
OmJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIHJldHVybiBt
X2Nvbm5lY3Rpb24tPmJpbmRCbG9iKG1faWRlbnRpZmllciwgaW5kZXgsIHRleHQpOworfQorCitp
bnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRUZXh0KGludCBpbmRleCwgU3RyaW5nVmll
dyB0ZXh0KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmJpbmRUZXh0KG1faWRlbnRpZmll
ciwgaW5kZXgsIHRleHQpOworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNv
bHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNv
bHVtbkJsb2JBc1N0cmluZyhtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK2ludCBTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudDo6Y29sdW1uSW50KGludCBjb2wpCit7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi0+Y29sdW1uSW50KG1faWRlbnRpZmllciwgY29sKTsKK30KKworU3RyaW5nIFNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5UZXh0KGludCBjb2wpCit7CisgICAgcmV0dXJuIG1fY29u
bmVjdGlvbi0+Y29sdW1uVGV4dChtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK2ludCBTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudDo6cmVzZXQoKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnJl
c2V0U3RhdGVtZW50KG1faWRlbnRpZmllcik7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudDo6c3RlcCgpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+c3RlcFN0YXRlbWVudCht
X2lkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRlN2U5MDkwZDJmNTI3OGIwNGNhMWM3OTkxOWM3NDc4YzRmYmJmNTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudCk7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBp
bmRleCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9iKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
YmluZEJsb2IoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGNvbHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgY29sdW1uSW50KGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBjb2x1bW5UZXh0KGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCByZXNldCgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGludCBzdGVwKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjsKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dChTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKworICAg
IFJlZjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRf
dCBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNl
dFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnRSZXNldFNjb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRlMjBkOWYwNjQxZTM5YzIyMTdhYmM2YmM1
ODAyMmEzMzkzNGZlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaApAQCAtMCwwICsxLDcxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50OworCitjbGFzcyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29w
ZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
KiBzdGF0ZW1lbnQpCisgICAgICAgIDogbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQorICAgIHsKKyAg
ICB9CisKKyAgICB+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX3N0YXRlbWVudCkKKyAgICAgICAgICAgIG1fc3RhdGVtZW50LT5yZXNldCgp
OworICAgIH0KKworICAgIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZShTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUmJiBvdGhlcikKKyAgICAgICAgOiBtX3N0YXRlbWVu
dChvdGhlci5tX3N0YXRlbWVudC5nZXQoKSkKKyAgICB7CisgICAgICAgIG90aGVyLm1fc3RhdGVt
ZW50ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0
U2NvcGUmIG9wZXJhdG9yPShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUmJiBvdGhl
cikKKyAgICB7CisgICAgICAgIHN0ZDo6c3dhcChtX3N0YXRlbWVudCwgb3RoZXIubV9zdGF0ZW1l
bnQpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zdGF0ZW1lbnQ7IH0KKyAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0YXRlbWVudDsgfQorICAgIFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50KiBnZXQoKSB7IHJldHVybiBtX3N0YXRlbWVudC5nZXQoKTsgfQorICAgIFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50KiBvcGVyYXRvci0+KCkgeyByZXR1cm4gbV9zdGF0ZW1lbnQuZ2V0
KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBt
X3N0YXRlbWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkwNjhhODcxZTk0ZjBjMzhjNzU4YjVjZjU1N2JjYjA4MjZkYjJkYjQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgiCisK
KyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0
aW9uKFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgaWRlbnRp
ZmllcikKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCit7Cit9CisKK1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246On5TUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnJvbGxiYWNrVHJhbnNh
Y3Rpb24obV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9u
Ojpjb21taXQoKQoreworICAgIG1fY29ubmVjdGlvbi0+Y29tbWl0VHJhbnNhY3Rpb24obV9pZGVu
dGlmaWVyKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpyb2xsYmFjaygp
Cit7CisgICAgbV9jb25uZWN0aW9uLT5yb2xsYmFja1RyYW5zYWN0aW9uKG1faWRlbnRpZmllcik7
Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rp
b24oKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmlzT25nb2luZ1RyYW5zYWN0aW9uKG1f
aWRlbnRpZmllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU5MDI5M2UyYmZiOGQyZDcyZTRlODVjNmIzODc5OTM4MmIyM2IwOTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbi5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOworCitjbGFzcyBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVEYXRhYmFzZVRy
YW5zYWN0aW9uKTsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0KCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByb2xsYmFjaygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNP
bmdvaW5nVHJhbnNhY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOworICAgIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24oU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgaWRlbnRpZmllcik7CisKKyAgICBSZWY8U1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgdWludDY0X3QgbV9pZGVu
dGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGNjOTI5MGI2NjI4OWJm
Njc5ODFmYjdlNzAwYTRmZjFhY2QyYmFjZmEuLjQ0MmRiOGZiMGFiZWRlYWJkYzQxYjhhYjY4OTkx
NjYzZWYxZDM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiUHJlY29ubmVjdFRhc2su
aCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgiCiAjaW5jbHVkZSAi
UmVtb3RlV29ya2VyVHlwZS5oIgorI2luY2x1ZGUgIlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xk
ZXIuaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRl
ICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJTZXQuaCIK
QEAgLTc5LDYgKzgwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxp
dGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KQEAgLTE3Nyw2ICsxNzksMTIgQEAgTmV0d29ya1Byb2Nl
c3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWUKICAgICBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om5ldHdvcmtQcm9j
ZXNzQ3JlYXRlZCgqdGhpcyk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldEltcGwoW10g
eworICAgICAgICByZXR1cm4gU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6Y3JlYXRlKCk7
CisgICAgfSk7CisjZW5kaWYKKwogICAgIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5nbGV0b24o
KS5hZGRMaXN0ZW5lcihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oYm9vbCBpc09uTGlu
ZSkgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY2
LDYgKzI3NCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpCiAgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKHNlc3Npb24uc2Vzc2lvbklEKCksIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfSk7CiAKKyAgICBTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkucmVzdW1lKCk7CisKICAgICBOZXR3b3JrU3RvcmFn
ZU1hbmFnZXI6OmZvckVhY2goWyZdKGF1dG8mIG1hbmFnZXIpIHsKICAgICAgICAgbWFuYWdlci5z
eW5jTG9jYWxTdG9yYWdlKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfSk7CkBAIC0y
MTM4LDYgKzIxNDgsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJv
b2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbAogCiAgICAgZm9yIChhdXRv
JiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAg
IGNvbm5lY3Rpb24tPmNsZWFudXBGb3JTdXNwZW5zaW9uKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsg
fSk7CisKKyAgICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkuc3Vz
cGVuZCgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphcHBsaWNhdGlvbkRpZEVudGVyQmFj
a2dyb3VuZCgpCkBAIC0yMTczLDYgKzIxODUsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1
bWUoKQogI2VuZGlmCiAgICAgICAgIHNlc3Npb24uc3RvcmFnZU1hbmFnZXIoKS5yZXN1bWUoKTsK
ICAgICB9KTsKKworICAgIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24o
KS5yZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZmExZTM4
YjEzOGU0ODQzMDFjZDYzMTY0MTc5Y2I3NDgzZjhkMjE1Ny4uMDIzZmJmZTA5OGQ2NDNmYmRiNDky
M2I1YTFkYjA4NGU0YTBiNjgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTY0
Nyw4ICs2NDcsNiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogCiAgICAgbV9xdWV1ZS0+c3Vz
cGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKICAgICAgICAgZm9y
IChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdpblN0b3JhZ2VNYW5hZ2Vycy52YWx1ZXMoKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gbG9jYWxTdG9yYWdlTWFuYWdlciA9IG1hbmFnZXItPmV4
aXN0aW5nTG9jYWxTdG9yYWdlTWFuYWdlcigpKQotICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFn
ZU1hbmFnZXItPnN5bmNMb2NhbFN0b3JhZ2UoKTsKICAgICAgICAgICAgIGlmIChhdXRvIGlkYlN0
b3JhZ2VNYW5hZ2VyID0gbWFuYWdlci0+ZXhpc3RpbmdJREJTdG9yYWdlTWFuYWdlcigpKQogICAg
ICAgICAgICAgICAgIGlkYlN0b3JhZ2VNYW5hZ2VyLT5zdG9wRGF0YWJhc2VBY3Rpdml0aWVzRm9y
U3VzcGVuZCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcAppbmRleCAxMGVjMjA3Njg1
MTQ1OGNlZjE2MTkwZWYxYjkxNjZkMmYwYTQ0ZTQxLi5iZTQ4NGM4ZmQ2NzQyNGViMDQyNGZhZWIz
NTIyNTVmMjBiOWU5MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKQEAgLTI3LDkgKzI3LDkgQEAK
ICNpbmNsdWRlICJTUUxpdGVTdG9yYWdlQXJlYS5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NR
TGl0ZUZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNhY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1N0b3JhZ2VNYXAuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMDcsNyArMTA3LDcgQEAg
Ym9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0eSgpCiAKICAgICBhdXRvIHN0YXRlbWVudCA9
IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpDb3VudEl0ZW1zKTsKICAgICBpZiAoIXN0
YXRlbWVudCB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0eSBmYWls
ZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJy
b3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmlzRW1wdHkgZmFpbGVkIG9uIGV4ZWN1
dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0
YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtMTI4LDIxICsxMjgsMjEgQEAgYm9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFi
bGVJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKCFtX2RhdGFiYXNlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBTdHJpbmcgc3RhdGVtZW50ID0gbV9kYXRhYmFzZS0+dGFibGVTUUwoIkl0ZW1U
YWJsZSJfcyk7CisgICAgU3RyaW5nIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRhYmxlQ3JlYXRp
b25RdWVyeSgiSXRlbVRhYmxlIl9zKTsKICAgICBpZiAoc3RhdGVtZW50ID09IGNyZWF0ZUl0ZW1U
YWJsZVN0YXRlbWVudCB8fCBzdGF0ZW1lbnQgPT0gY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50QWx0
ZXJuYXRpdmUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVGFibGUgZXhpc3RzIGJ1
dCBzdGF0ZW1lbnQgaXMgd3Jvbmc7IGRyb3AgaXQuCiAgICAgaWYgKCFzdGF0ZW1lbnQuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGlmICghbV9kYXRhYmFzZS0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFC
TEUgSXRlbVRhYmxlIl9zKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFn
ZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBk
cm9wIGV4aXN0aW5nIGl0ZW0gdGFibGUgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
KCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNl
LT5leGVjdXRlKCJEUk9QIFRBQkxFIEl0ZW1UYWJsZSJfcykpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5l
Y2Vzc2FyeSBmYWlsZWQgdG8gZHJvcCBleGlzdGluZyBpdGVtIHRhYmxlICglZCkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gVGFi
bGUgZG9lcyBub3QgZXhpc3QuCi0gICAgaWYgKCFtX2RhdGFiYXNlLT5leGVjdXRlQ29tbWFuZChj
cmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSBmYWlsZWQg
dG8gY3JlYXRlIGl0ZW0gdGFibGUgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCks
IG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICBpZiAoIW1fZGF0YWJhc2UtPmV4ZWN1
dGUoY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50KSkgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkgZmFp
bGVkIHRvIGNyZWF0ZSBpdGVtIHRhYmxlICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJv
cigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0xNTgsMTcgKzE1OCwxMiBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVh
OjpwcmVwYXJlRGF0YWJhc2UoU2hvdWxkQ3JlYXRlSWZOb3RFeGlzdHMgc2hvdWxkQ3JlYXRlSWZO
bwogICAgIGlmIChzaG91bGRDcmVhdGVJZk5vdEV4aXN0cyA9PSBTaG91bGRDcmVhdGVJZk5vdEV4
aXN0czo6Tm8gJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wYXRoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBtX2RhdGFiYXNlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZT4oKTsKICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3Rl
bTo6cGFyZW50UGF0aChtX3BhdGgpKTsKLSAgICBpZiAoIW1fZGF0YWJhc2UtPm9wZW4obV9wYXRo
KSkgeworICAgIG1fZGF0YWJhc2UgPSBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OmNyZWF0ZShtX3BhdGgsIHRydWUpLnB0cigpOworICAgIGlmICghbV9kYXRhYmFzZS0+aXNPcGVu
KCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VB
cmVhOjpwcmVwYXJlRGF0YWJhc2UgZmFpbGVkIHRvIG9wZW4gZGF0YWJhc2UgYXQgJyVzJyIsIG1f
cGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9kYXRhYmFzZSA9IG51bGxwdHI7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgICAgIAotICAgIC8vIFNpbmNlIGEgV29ya1F1
ZXVlIGlzbid0IGJvdW5kIHRvIGEgc3BlY2lmaWMgdGhyZWFkLCB3ZSBuZWVkIHRvIGRpc2FibGUg
dGhyZWFkaW5nIGNoZWNrLgotICAgIC8vIFdlIHdpbGwgbmV2ZXIgYWNjZXNzIHRoZSBkYXRhYmFz
ZSBmcm9tIGRpZmZlcmVudCB0aHJlYWRzIHNpbXVsdGFuZW91c2x5LgotICAgIG1fZGF0YWJhc2Ut
PmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKIAogICAgIGlmICghY3JlYXRlVGFibGVJZk5lY2Vz
c2FyeSgpKSB7CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOwpAQCAtMTg0LDExICsxNzks
MTAgQEAgYm9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6cHJlcGFyZURhdGFiYXNlKFNob3VsZENyZWF0
ZUlmTm90RXhpc3RzIHNob3VsZENyZWF0ZUlmTm8KIHZvaWQgU1FMaXRlU3RvcmFnZUFyZWE6OnN0
YXJ0VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uKQot
ICAgICAgICBtX3RyYW5zYWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVUcmFuc2Fj
dGlvbj4oKm1fZGF0YWJhc2UpOwotCi0gICAgaWYgKG1fdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3Mo
KSkKKyAgICAgICAgbV90cmFuc2FjdGlvbiA9IG1fZGF0YWJhc2UtPmNyZWF0ZVRyYW5zYWN0aW9u
QW5kQmVnaW4oKTsKKyAgICAKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX3RyYW5zYWN0aW9uLT5iZWdpbigpOwogCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2hB
ZnRlcih0cmFuc2FjdGlvbkR1cmF0aW9uLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
ewogICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC0xOTYsMTggKzE5MCwxNiBAQCB2b2lkIFNRTGl0
ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKQogICAgIH0pOwogfQog
Ci1XZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBTUUxpdGVTdG9yYWdlQXJl
YTo6Y2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGUgdHlwZSkKK1dlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSBTUUxpdGVTdG9yYWdlQXJlYTo6Y2FjaGVkU3RhdGVt
ZW50KFN0YXRlbWVudFR5cGUgdHlwZSkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZSk7CiAgICAg
QVNTRVJUKHR5cGUgPCBTdGF0ZW1lbnRUeXBlOjpJbnZhbGlkKTsKIAogICAgIGF1dG8gaW5kZXgg
PSBzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKTsKLSAgICBpZiAoIW1fY2FjaGVkU3RhdGVtZW50
c1tpbmRleF0pIHsKLSAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gbV9kYXRhYmFzZS0+cHJlcGFy
ZUhlYXBTdGF0ZW1lbnQoc3RhdGVtZW50U3RyaW5nKHR5cGUpKSkKLSAgICAgICAgICAgIG1fY2Fj
aGVkU3RhdGVtZW50c1tpbmRleF0gPSByZXN1bHQudmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsK
LSAgICB9CisgICAgaWYgKCFtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhdKQorICAgICAgICBtX2Nh
Y2hlZFN0YXRlbWVudHNbaW5kZXhdID0gbV9kYXRhYmFzZS0+Y3JlYXRlU3RhdGVtZW50QW5kUHJl
cGFyZShzdGF0ZW1lbnRTdHJpbmcodHlwZSkpOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHsgbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XS5nZXQo
KSB9OworICAgIHJldHVybiBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2Nv
cGUgeyBtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhdLmdldCgpIH07CiB9CiAKIEV4cGVjdGVkPFN0
cmluZywgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbShjb25zdCBTdHJp
bmcmIGtleSkKQEAgLTIzNCw3ICsyMjYsNyBAQCBFeHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJv
cj4gU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UoY29uc3QgU3RyaQogCiAg
ICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6R2V0SXRl
bSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCgxLCBrZXkpKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6
Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6
Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdl
KCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFz
ZSk7CiAgICAgfQogCkBAIC0yNDIsNyArMjM0LDcgQEAgRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdl
RXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlKGNvbnN0IFN0cmkK
ICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpCiAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQt
PmNvbHVtbkJsb2JBc1N0cmluZygwKTsKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6
Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24gc3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6
Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24gc3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAl
cyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdl
KCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFz
ZSk7CiAgICAgfQogCkBAIC0yNzQsNyArMjY2LDcgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
U1FMaXRlU3RvcmFnZUFyZWE6OmFsbEl0ZW1zKCkKICAgICAvLyBJbXBvcnQgZnJvbSBkYXRhYmFz
ZS4KICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpH
ZXRBbGxJdGVtcyk7CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRBbGxJdGVtcyBmYWlsZWQgb24g
Y3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0QWxsSXRlbXMgZmFpbGVkIG9uIGNyZWF0aW5n
IHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFz
ZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAg
LTI5Miw3ICsyODQsNyBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBTUUxpdGVTdG9yYWdlQXJl
YTo6YWxsSXRlbXMoKQogICAgIH0KIAogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpCi0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0
QWxsSXRlbXMgZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRh
YmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRBbGxJdGVt
cyBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5s
YXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKIAogICAgIHJldHVy
biBpdGVtczsKIH0KQEAgLTMxMSwxNSArMzAzLDE2IEBAIEV4cGVjdGVkPHZvaWQsIFN0b3JhZ2VF
cnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
CiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpT
ZXRJdGVtKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGtl
eSkgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigyLCB2YWx1ZSkpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtIGZhaWxlZCBvbiBj
cmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3Rv
cmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0
ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxh
c3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdl
RXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LT5z
dGVwKCk7CiAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRlVMTCkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6UXVvdGFFeGNlZWRlZCk7CisKICAgICBpZiAocmVz
dWx0ICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2Us
ICJTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSBmYWlsZWQgb24gc3RlcHBpbmcgc3RhdGVtZW50
ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9y
YWdlQXJlYTo6c2V0SXRlbSBmYWlsZWQgb24gc3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIs
IG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7
CiAgICAgfQogCkBAIC0zNTAsNyArMzQzLDcgQEAgRXhwZWN0ZWQ8dm9pZCwgU3RvcmFnZUVycm9y
PiBTUUxpdGVTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb246OlVuaXEKIAog
ICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkRlbGV0
ZUl0ZW0pOwogICAgIGlmICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+YmluZFRleHQoMSwga2V5
KSB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0gZmFpbGVk
IG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
KCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtIGZhaWxlZCBvbiBleGVj
dXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2Rh
dGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0zODEsNyArMzc0LDcgQEAg
RXhwZWN0ZWQ8dm9pZCwgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6Y2xlYXIoSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRAogICAgIHN0YXJ0VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgp
OwogICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkRl
bGV0ZUFsbEl0ZW1zKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FM
aXRlU3RvcmFnZUFyZWE6OmNsZWFyIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkg
LSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJl
YTo6Y2xlYXIgZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRh
YmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxp
dGVTdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NR
TGl0ZVN0b3JhZ2VBcmVhLmgKaW5kZXggNTJjYzlkNjBlN2U1YTUzOTFmYzhjNDgzZmI2OGMyOTAz
NjA5NzE2MC4uNjI2M2YwZjVlYjZjY2UwNWFmMzIyNjE5NzVjN2UyMDljMzIxYjkyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VB
cmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0
b3JhZ2VBcmVhLmgKQEAgLTI2LDggKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
U3RvcmFnZUFyZWFCYXNlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCkBAIC02NiwxNiArNjYsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgSW52YWxpZAogICAg
IH07CiAgICAgQVNDSUlMaXRlcmFsIHN0YXRlbWVudFN0cmluZyhTdGF0ZW1lbnRUeXBlKSBjb25z
dDsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSBjYWNoZWRTdGF0
ZW1lbnQoU3RhdGVtZW50VHlwZSk7CisgICAgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnRSZXNldFNjb3BlIGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlKTsKICAgICBFeHBlY3Rl
ZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4gZ2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSk7CiAgICAg
RXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+IGdldEl0ZW1Gcm9tRGF0YWJhc2UoY29uc3Qg
U3RyaW5nJiBrZXkpOwogCiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBSZWY8V29ya1F1ZXVlPiBt
X3F1ZXVlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4gbV9k
YXRhYmFzZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24+
IG1fdHJhbnNhY3Rpb247Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQ+PiBtX2NhY2hlZFN0YXRlbWVudHM7CiAgICAgc3RkOjpvcHRpb25hbDxIYXNo
TWFwPFN0cmluZywgU3RyaW5nPj4gbV9jYWNoZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uPiBtX2RhdGFiYXNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+PiBtX2Nh
Y2hlZFN0YXRlbWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjNjMDZjYWM0NjJlODZiNWUyNzRjYmY1NTVmYjM2MWI0NWZmZjA2YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25I
b2xkZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oIgorCisjaW5jbHVk
ZSAiUHJvY2Vzc0Fzc2VydGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxTUUxpdGVQcm9j
ZXNzQXNzZXJ0aW9uSG9sZGVyPiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpjcmVhdGUo
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xk
ZXIpOworfQorCit2b2lkIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OndpbGxCZWdpbkZp
cnN0QWN0aXZpdHkoKQoreworICAgIGlmIChtX2Fzc2VydGlvbiAmJiBtX2Fzc2VydGlvbi0+aXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Fzc2VydGlvbiA9IFByb2Nlc3NBc3Nl
cnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMg
aG9sZGluZyBkYXRhYmFzZSBsb2NrIl9zLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFz
a0ludGVycnVwdGFibGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOworfQorCit2b2lk
IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVuZExhc3RBY3Rpdml0eSgpCit7Cisg
ICAgbV9hc3NlcnRpb24gPSBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMDlhMjNiZThhMzEyNjMyMDUxZDhlMjM5YzBiZjlkYTljODQxYzVmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2Vy
dGlvbkhvbGRlci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlByb2Nlc3NBc3NlcnRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgUHJvY2Vzc0Fzc2VydGlvbjsKKworY2xhc3MgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhv
bGRlciA6IHB1YmxpYyBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcj4g
Y3JlYXRlKCk7CisgICAgdm9pZCB3aWxsQmVnaW5GaXJzdEFjdGl2aXR5KCkgZmluYWw7CisgICAg
dm9pZCBkaWRFbmRMYXN0QWN0aXZpdHkoKSBmaW5hbDsKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1
cmVBc3NlcnRpb24oKTsKKyAgICB2b2lkIHJlbGVhc2VBc3NlcnRpb24oKTsKKworICAgIFJlZlB0
cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2Fzc2VydGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXggYTNmYmI3NjBlNzc2MDQw
NzhkOGU1MGMxNGNkZDdkN2NlYTZlYjZkMy4uMzFhOGYxYmUxNDU1Y2FjODRjNjNiYjZkNDNkZmMx
NDg0YmU1NGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCkBAIC00Myw2ICs0
Myw3IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1dv
cmtRdWV1ZS5oPgogCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW5j
bHVkZSA8cGFsL2NvY29hL01lZGlhVG9vbGJveFNvZnRMaW5rLmg+CiAKIFdURl9ERUNMQVJFX0NG
X1RZUEVfVFJBSVQoTVRQbHVnaW5Gb3JtYXRSZWFkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggYmVjMWEz
ZjEzNGUyZGQzOTIzNjEyNzUyYTg5ZDg4MTU3OWUyMGY4NC4uOWFiY2IyMDU5M2EyMzhmYTRjZGFm
ZWUzYjUwYmMyOWIxMTgxM2QyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yMzksNiArMjM5LDcgQEAgU2hh
cmVkL1ByaW50SW5mby5jcHAKIFNoYXJlZC9SVENOZXR3b3JrLmNwcAogU2hhcmVkL1JUQ1BhY2tl
dE9wdGlvbnMuY3BwCiBTaGFyZWQvUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcAor
U2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwCiBTaGFyZWQvU2Nyb2xsaW5n
QWNjZWxlcmF0aW9uQ3VydmUuY3BwCiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAogU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGQyMDdiYTU4MWViZDM1YTg5YTUyZjFmNjQ3ZDkyMjQ5ZDlkYTIx
MGQuLmIzZDY2YmEyMDY5MDlhMDJmMjQwMTc1NmFiNjJlYzAxZGIxZGNkMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUwMSw2ICsx
NTAxLDcgQEAKIAkJOTNCNjMxRjEyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRUYyN0FC
QUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oICovOyB9OwogCQk5M0I2MzFGMzI3QUJBRDgw
MDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2MzFGMjI3QUJBRDdGMDA0NDNB
NDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVudGlmaWVyLmggKi87IH07CiAJCTkzQkRFQjAx
MTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0JERUIwMDE3MUREN0FGMDBCRkVF
MUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDIwMjdEQTU1NTYwMDEwN0M3NSAvKiBTUUxp
dGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQxRTI3REE1NTU1MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vz
c0Fzc2VydGlvbkhvbGRlci5oICovOyB9OwogCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oICovOyB9OwogCQk5M0Q2Qjc3MzI1NEJCOEM3MDA1OEREM0EgLyogV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2ODI1NEI3QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uLmggKi87IH07CiAJCTkzRDZCNzgyMjU0Q0NDRjQwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc4MTI1NENDQUJDMDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwpA
QCAtNTQ3MSw2ICs1NDcyLDggQEAKIAkJOTNCQTA0RTAyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNX
U2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
V1NlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0
RTEyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyog
V0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzRDVERDFFMjdEQTU1NTUwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZVByb2Nlc3NBc3NlcnRp
b25Ib2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMUYyN0RBNTU1
NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzY3MjU0QjdCQzYwMDU4REQz
QSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3NjgyNTRCN0JDNjAwNThERDNBIC8q
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3NjkyNTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzM5Miw2ICs3Mzk1LDggQEAKIAkJCQk4MzEzRjdFNzFGN0RBRTAzMDBCOTQ0RUIgLyogU2hh
cmVkU3RyaW5nSGFzaFRhYmxlLmggKi8sCiAJCQkJODNGOTY0NEIxRkEwRjc2MjAwQzQ3NzUwIC8q
IFNoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmNwcCAqLywKIAkJCQk4M0Y5NjQ0QzFGQTBG
NzYzMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuaCAqLywKKwkJCQk5
M0Q1REQxRjI3REE1NTU1MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5j
cHAgKi8sCisJCQkJOTNENUREMUUyN0RBNTU1NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3Nl
cnRpb25Ib2xkZXIuaCAqLywKIAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENo
ZWNrZXJTdGF0ZS5oICovLAogCQkJCUY0QTdDRTg0MjY2N0VCNEUwMDIyODY4NSAvKiBUZXh0UmVj
b2duaXRpb25VcGRhdGVSZXN1bHQuaCAqLywKIAkJCQk3QkUzN0Y2RjI3QjE0NzVGMDA3QTZDRDMg
LyogVGhyZWFkU2FmZU9iamVjdEhlYXAuaCAqLywKQEAgLTEzNTkyLDYgKzEzNTk3LDcgQEAKIAkJ
CQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0MjU0Q0NEMEUwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NTI1NEND
RDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTkzRDVERDIwMjdEQTU1NTYwMDEwN0M3NSAvKiBTUUxpdGVQcm9j
ZXNzQXNzZXJ0aW9uSG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0U3OTlEQTI3NjEyMTA4
MDA3NDAwOEEgLyogU1FMaXRlU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBM0ZF
Q0EyMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGQ4OWRkODA5OGZlZGRiM2Y4OTE4Njg3OWRkNmMwZjE1ZmE2MWZhNTUu
LjQ5ZjRiZDhjMzlkOTlhOTFlZmZiOGYwMWE3ZjA5NTc5NGU0ZmJjYTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMi0wMy0xNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBYm9ydCBTUUxpdGUgYWN0aXZpdGllcyB0byByZWxlYXNlIGZpbGUgbG9jayB3aGVu
IHByb2Nlc3MgaXMgYWJvdXQgdG8gc3VzcGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIHRvIGNoZWNrIGlmIGZ1bmN0aW9uIGV4
aXN0cyBiZWZvcmUgY2FsbGluZy4KKworICAgICAgICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9zdG9y
YWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL3Jlc291
cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVs
eS5odG1sOgorCiAyMDIyLTAzLTE1ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OIChyMjgyNzM3KTogYHRleHQtc2hhZG93YCBpcyBjbGlwcGVkCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc3RvcmFnZS1jbG9zZS1k
YXRhYmFzZS1vbi1pZGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc3Rv
cmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWwKaW5kZXggMDNhNzZkYTVhM2FiYTZkNDY5
M2JlOGRiNTNlN2EwZmUyYTdhZWJlNC4uYmQxODFkNzRlMzExYzU5YmM5NTBlY2ZhZmY4Zjg2Mzk1
MmZmODAzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3N0b3Jh
Z2UtY2xvc2UtZGF0YWJhc2Utb24taWRsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbApAQCAtMjAsNyAr
MjAsOCBAQCBmdW5jdGlvbiBsb2FkTmV4dFBhZ2UoKQogZnVuY3Rpb24gcnVuVGVzdCgpCiB7CiAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RvcmFn
ZURhdGFiYXNlSWRsZUludGVydmFsKDApOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIu
c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoMCk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0
Q2FjaGVNb2RlbCgwKTsgLy8gV2ViQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyLgogICAgIH0KIApA
QCAtNDYsNyArNDcsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgICAgIGxvZyh3aW5k
b3cubG9jYWxTdG9yYWdlWydiYXInXSA9PT0gJ0JBUicgPyAnUEFTUycgOiAnRkFJTCcpOwogCiAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCgzMDApOworICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwp
CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUlu
dGVydmFsKDMwMCk7CiAgICAgICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL3Jlc291cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNl
cy1pbW1lZGlhdGVseS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9yZXNvdXJjZXMvc3RvcmFn
ZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbAppbmRl
eCA0ZTBhNDQ2ZTNlNDIzNGRmOTFhYTllNmFkZjI2YjAzNjhlNTdiNGNjLi43YjE3MzYxNjZlNzFk
NTE4MzMxMGExOWQwM2Q3N2M5ZTIyMjI0ZmIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL3Jlc291cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1p
bW1lZGlhdGVseS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvcmVzb3VyY2VzL3N0b3Jh
Z2UtY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwKQEAg
LTIsNyArMiw3IEBACiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHN3aW5nQmFjaygpIAogICAgIHsK
LSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lciAmJiB3aW5kb3cudGVzdFJ1bm5lci5jbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFz
ZXMpIHsKICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmNsb3NlSWRsZUxvY2FsU3RvcmFn
ZURhdGFiYXNlcygpOwogICAgICAgICB9CiAgICAgICAgIGxvY2F0aW9uLmhyZWY9Jy4uL2RvbXN0
b3JhZ2UvbG9jYWxzdG9yYWdlL2Nsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1l
ZGlhdGVseS5odG1sJzsK
</data>
<flag name="commit-queue"
          id="482827"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454987</attachid>
            <date>2022-03-17 10:18:57 -0700</date>
            <delta_ts>2022-03-18 15:29:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237754-20220317101856.patch</filename>
            <type>text/plain</type>
            <size>96001</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQxMmYwM2Q0M2ZmYWNk
ZDJjMDZlMTI3OWFiNzUxNDU4NDYwZDdiMC4uYzE0ODUwOGZmODRjYzNlMGVkYTE2Y2I1Y2Q2ZDUx
YWRhMGU2NzA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAyMi0wMy0xNyAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBBYm9ydCBTUUxpdGUgYWN0
aXZpdGllcyB0byByZWxlYXNlIGZpbGUgbG9jayB3aGVuIHByb2Nlc3MgaXMgYWJvdXQgdG8gc3Vz
cGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50
cm9kdWNlIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiBjbGFzcywgd2hpY2ggaXMgYSB3cmFwcGVy
IGFyb3VuZCBzcWxpdGUgb2JqZWN0cy4gVW5saWtlIFNRTGl0ZURhdGFiYXNlLAorICAgICAgICBT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gbm90IG9ubHkgb3ducyB0aGUgc3FsaXRlIGRhdGFiYXNl
IGNvbm5lY3Rpb24gKHNxbGl0ZTMpLCBidXQgYWxzbyB0aGUgdGhlIG90aGVyIHNxbGl0ZSAKKyAg
ICAgICAgb2JqZWN0cyAoc3FsaXRlM19zdG10KSByZWxhdGVkIHRvIHRoZSBjb25uZWN0aW9uLiBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudCBhbmQgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbiBwb2lu
dHMKKyAgICAgICAgdG8gYSBzdGF0ZW1lbnQgYW5kIGEgdHJhbnNhY3Rpb24gYnkgcmVmZXJyaW5n
IHRvIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiB3aXRoIGFuIGlkZW50aWZpZXIuIFRoZXJlZm9y
ZSwKKyAgICAgICAgd2UgY2FuIGFib3J0IGFsbCBhY3RpdmllcyBvbiBhIGRhdGFiYXNlIGNvbm5l
Y3Rpb24gdmlhIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi4gU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uIGlzIAorICAgICAgICBjcm9zcy10aHJlYWQgY2xhc3M6IGl0IGFsbG93cyB1cyB0byBwZXJm
b3JtIG9wZXJhdGlvbnMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCBhbmQgc3luY2hyb25vdXNseSBh
Ym9ydCBhY3RpdmllcyAKKyAgICAgICAgb24gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIFRv
IHByZXBhcmUgcHJvY2VzcyBmb3Igc3VzcGVuc2lvbiwgd2UgYWxzbyBuZWVkIGEgd2F5IHRvIHBy
ZXZlbnQgZGF0YWJhc2UgY29ubmVjdGlvbiBmcm9tIHBlcmZvcm1pbmcgb3BlcmF0aW9uCisgICAg
ICAgIGFmdGVyIHdlIGFib3J0IGl0cyBleGlzdGluZyBhY3Rpdml0aWVzLCBhbmQgcHJldmVudCBu
ZXcgZGF0YWJhc2UgY29ubmVjdGlvbiBmcm9tIGJlaW5nIGNyZWF0ZWQgb3Igb3BlbmVkLCBzbyB3
ZQorICAgICAgICBpbnRyb2R1Y2UgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyIGlzIGEgc2luZ2xldG9uIHRoYXQgbW9uaXRvcnMgYWxs
IGV4aXN0aW5nCisgICAgICAgIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiBpbnN0YW5jZXMuIEZv
ciBleGlzdGluZyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gaW5zdGFuY2VzLCB3aGVuIHByb2Nl
c3MgaXMgYWJvdXQgdG8KKyAgICAgICAgc3VzcGVuZCwgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIgd2lsbCBhYm9ydCB0aGVpciBhY3RpdmllcyBhbmQgc2V0IHRoZWlyIHN0YXRlIHRvIGlu
YWN0aXZlLiAKKyAgICAgICAgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uIGNhbiBvbmx5IHBlcmZv
cm0gb3BlcmF0aW9uIChpbnZva2Ugc3FsaXRlIGZ1bmN0aW9ucykgdGhhdCByZXF1aXJlcyBmaWxl
IGxvY2sgd2hlbiBpdHMgCisgICAgICAgIHN0YXRlIGlzIGFjdGl2ZTsgaWYgaXQgaXMgbm90IGFj
dGl2ZSwgaXQgcmV0dXJucyBlcnJvciB3aXRob3V0IGV4ZWN1dGlvbi4gRm9yIG5ldyBTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb24gCisgICAgICAgIGluc3RhbmNlIHRoYXQgaXMgY3JlYXRlZCBhZnRl
ciBwcmVwYXJhdGlvbiwgaXQgbmVlZHMgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIncyBs
b2NrIHdoZW4gcmVnaXN0ZXJpbmcgCisgICAgICAgIGl0c2VsZiB0byBTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlciwgc28gd2UgY2FuIGp1c3QgaG9sZCB0aGUgbG9jayBhbmQgbm90IHJlbGVh
c2UgaXQgdW50aWwgcHJvY2VzcyByZXN1bWVzLiAKKyAgICAgICAgSW4gdGhpcyB3YXksIG5vIG5l
dyBzcWxpdGUgZGF0YWJhc2UgY29ubmVjdGlvbiBjYW4gYmUgb3BlbmVkIGR1cmluZyBwcm9jZXNz
IHN1c3BlbnNpb24uCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpz
aW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXI6OnNldEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXI6OmJlZ2luQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI6OmVuZEFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyOjpjaGVja0xhc3RBY3Rpdml0eVRpbWVzdGFtcCk6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcklt
cGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlckltcGw6On5TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6
Om5leHRUcmFuc2FjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6
ZVNRTGl0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246On5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpvcGVuRnJvbUFjdGl2aXR5VHJhY2tlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNsb3NlRnJvbUFjdGl2aXR5
VHJhY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJl
Z2luQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjplbmRBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmludmFsaWRhdGVBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OnNldElzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6aXNPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6ZW5hYmxlRXh0ZW5kZWRSZXN1bHRDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5hYmxlSW5NZW1vcnlUZW1wU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVXQUxKb3VybmFs
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja3BvaW50TW9kZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZVdBTENoZWNrcG9pbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVJbnRl
cm5hbFN0YXRlbWVudEFuZFByZXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpsYXN0Q2hhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvck1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjp0YWJsZUNyZWF0aW9uUXVlcnkp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c2V0TWF4aW11bVNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpwYWdlU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnJlbGVhc2VN
ZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVh
dGVTdGF0ZW1lbnRBbmRQcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6YmluZEJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uOjpiaW5kVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OmNvbHVtbkJsb2JBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246OmNvbHVtbkludCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246OmNvbHVtblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpyZXNldFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnN0ZXBTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpkZXN0cm95U3RhdGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlVHJhbnNhY3Rpb25BbmRC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNvbW1p
dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6cm9sbGJhY2tUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppbk1lbW9yeVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpwYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6On5T
UUxpdGVEYXRhYmFzZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6YmluZEJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OmJpbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50Ojpjb2x1bW5CbG9iQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtbkludCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudDo6Y29sdW1uVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OnN0ZXApOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0
YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnRSZXNldFNjb3BlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3Bl
Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6b3BlcmF0b3IgYm9v
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0
U2NvcGU6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudFJlc2V0U2NvcGU6Om9wZXJhdG9yLT4pOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246On5TUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5z
YWN0aW9uOjpyb2xsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5z
YWN0aW9uOjppc09uZ29pbmdUcmFuc2FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaDogQWRkZWQuCisKIDIwMjItMDMtMTUgIEFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyODI3MzcpOiBg
dGV4dC1zaGFkb3dgIGlzIGNsaXBwZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmY5ZTc2NDMwMjQ3OGY5ZTA3OTk1
M2U2ODhjNzY1MWFmY2UxN2YyZC4uNzdkMWNiMGEyN2E5NTVkYTNiYjJlYzI3ZDQ1Yzg2MTQxNjRh
M2FhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAyMi0wMy0xNyAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBBYm9ydCBTUUxpdGUgYWN0aXZpdGllcyB0
byByZWxlYXNlIGZpbGUgbG9jayB3aGVuIHByb2Nlc3MgaXMgYWJvdXQgdG8gc3VzcGVuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFNR
TGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIgd2hpY2ggYWNxdWlyZXMgYXNzZXJ0aW9uIHdoZW4g
Zmlyc3QgZGF0YWJhc2UgYWN0aXZpdHkgc3RhcnRzIGFuZCByZWxlYXNlCisgICAgICAgIGFzc2Vy
dGlvbiB3aGVuIGxhc3QgZGF0YWJhc2UgYWN0aXZpdHkgZW5kcy4gQWRvcHQgU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uIGFuZCBpdHMgcmVsYXRlZCBjbGFzc2VzIGluIAorICAgICAgICBMb2NhbFN0
b3JhZ2UgYmFja2VuZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU3Rv
cmFnZU1hbmFnZXI6OnN1c3BlbmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
U1FMaXRlU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJl
YTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVU
YWJsZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OnBy
ZXBhcmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFy
dFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdl
QXJlYTo6Y2FjaGVkU3RhdGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFy
ZWE6OmdldEl0ZW1Gcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdl
QXJlYTo6YWxsSXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6c2V0
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtKToK
KyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmg6CisgICAgICAgICogU2hh
cmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6d2lsbEJlZ2luRmlyc3RBY3Rpdml0
eSk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmRpZEVu
ZExhc3RBY3Rpdml0eSk6CisgICAgICAgICogU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25I
b2xkZXIuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjItMDMtMTUgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVmlkZW8gcG9zdGVyIGRp
c2FwcGVhcnMgcHJlbWF0dXJlbHkgb24gcGxheSwgbGVhdmluZyB0cmFuc3BhcmVudCB2aWRlbyBl
bGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTVmNGFjNGY4MGMzZDgxZjFhMDgyMDQ3OGQ5
OGVlYmJiZmExOTY0NS4uYmIxOGZlZGNjYThkNzQ1NzhjMjg1NWQ2M2MxMDUzMzU1MGI3ODA3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNzgwLDggKzE3ODAsMTQgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgcGxhdGZvcm0vc3FsL1NRTFZhbHVlLmgKICAg
ICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
QWN0aXZpdHlUcmFja2VySW1wbC5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbi5oCisgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmgKKyAg
ICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmgKICAgICBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgKICAgICBwbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgKKyAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2VUcmFuc2FjdGlvbi5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAogICAg
IHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDVjN2I3M2ViMjA1ZTA5
ZWMyNDZlMDExZDBhNTAyZGNkNGMxZGNhNTAuLmQ1MzM5MWIyZDZlMTY2MzU4ODBjOWZhNzE3NTlj
N2Y2MjM4MWY0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjUyLDcgKzIyNTIsMTEgQEAgcGxhdGZv
cm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKIHBsYXRmb3JtL25ldHdvcmsv
VGltaW5nQWxsb3dPcmlnaW4uY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9yaXplci5jcHAK
IHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlci5jcHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb24uY3BwCitwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuY3BwCiBwbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcAorcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlVHJhbnNhY3Rpb24uY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAK
IHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3Rh
dGVtZW50QXV0b1Jlc2V0U2NvcGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDhkYzg2ODZjNDk4MTQ1ZmJhMzdiMjQ1NjYx
N2E4NDBhMjdjMjVhNi4uZjlhODQ1MTVkYjQzYmVkYjg2Mzc3YTFhOGY0MTQ3OWM0NTk2MDVkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzAyNCw2ICszMDI0LDEyIEBACiAJCTkzRDQzN0EwMUQ1N0IxOUEwMEFCODVFQSAvKiBD
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUI1NkM5QTgxQzg5MzEyODAwQzQ1NkRGIC8qIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNENDM3QTIxRDU3QjNGRTAwQUI4NUVBIC8qIFVSTERlY29tcG9zaXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NkI5RENB
MTg5REUxMDAwMEJCODQyQyAvKiBVUkxEZWNvbXBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENDM3QTMxRDU3QjdFMjAwQUI4NUVB
IC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBRDcyNkZFNzE2RDlGMjA0MDAzQTRFNkQgLyogSlNNZWRpYUxpc3RDdXN0
b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
M0Q1REQ0MjI3REJGRjBCMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDM4MjdEQkZG
MDMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDQ0MjdEQkZGMEIwMDEwN0M3
NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQzQTI3REJGRjA0MDAxMDdDNzUgLyogU1FMaXRl
RGF0YWJhc2VUcmFuc2FjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTkzRDVERDQ1MjdEQkZGMEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRDVERDNCMjdEQkZGMDUwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudFJlc2V0U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk5M0Q1REQ0NzI3REJGRjBCMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Q1REQzRDI3REJGRjA4MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENURE
NDgyN0RCRkYwQzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREM0Uy
N0RCRkYwOTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDQ5
MjdEQkZGMEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREM0YyN0RCRkYw
QTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3NzAyNTRCOThBMDAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZGMjU0QjkwMkQwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNENkI3NzEyNTRCQUI0NTAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Q2Qjc2RDI1NEI4RTFCMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0Q2QjdBODI1NTFENDFGMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlvblBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0Q2QjdBNjI1NTFEM0VEMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEy
ODgwLDYgKzEyODg2LDE2IEBACiAJCTkzRDA1MDMxMjUzQTE0OEMwMDJBMzA3MiAvKiBBYnN0cmFj
dFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UmFuZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0QxOTYzMDFENkNBQjc2MDBGQzdFNDcgLyogRXhjZXB0
aW9uT3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uT3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEMTk2MzIxRDZDQUI4MjAwRkM3RTQ3IC8q
IEV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMzcyN0RCRkYwMzAwMTA3Qzc1
IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0Q1REQzODI3REJGRjAzMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREMzky
N0RCRkYwNDAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDNBMjdEQkZGMDQwMDEwN0M3
NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNENUREM0IyN0RCRkYwNTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50UmVzZXRTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNENUREM0MyN0RCRkYwNzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREM0QyN0RC
RkYwODAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREM0UyN0RCRkYwOTAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNENUREM0YyN0RCRkYwQTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNl
QWN0aXZpdHlUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzRDVERDQwMjdEQkZGMEEwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZC
NzZEMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0Q2Qjc2RTI1NEI4RTFCMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc2RjI1NEI5MDJEMDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTU0
OCw5ICsxOTU2NCwxOSBAQAogCQkJCTFBMkU2RTc4MENDNTU2RDUwMDRBMjA2MiAvKiBTUUxpdGVB
dXRob3JpemVyLmNwcCAqLywKIAkJCQkxQTIyNDY0MzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRl
RGF0YWJhc2UuY3BwICovLAogCQkJCTFBMjI0NjQ0MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVE
YXRhYmFzZS5oICovLAorCQkJCTkzRDVERDQwMjdEQkZGMEEwMDEwN0M3NSAvKiBTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlci5jcHAgKi8sCisJCQkJOTNENUREM0YyN0RCRkYwQTAwMTA3Qzc1
IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmggKi8sCisJCQkJOTNENUREM0UyN0RC
RkYwOTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oICovLAor
CQkJCTkzRDVERDM3MjdEQkZGMDMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24u
Y3BwICovLAorCQkJCTkzRDVERDNEMjdEQkZGMDgwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb24uaCAqLywKKwkJCQk5M0Q1REQzQzI3REJGRjA3MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQuY3BwICovLAorCQkJCTkzRDVERDM4MjdEQkZGMDMwMDEwN0M3NSAvKiBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oICovLAorCQkJCTkzRDVERDNCMjdEQkZGMDUwMDEwN0M3
NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaCAqLywKIAkJCQk3RTQ3NEUx
RDEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJCQk3
RTQ3NEUxQzEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi8sCiAJ
CQkJN0U0NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVu
dC5oICovLAorCQkJCTkzRDVERDM5MjdEQkZGMDQwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRy
YW5zYWN0aW9uLmNwcCAqLywKKwkJCQk5M0Q1REQzQTI3REJGRjA0MDAxMDdDNzUgLyogU1FMaXRl
RGF0YWJhc2VUcmFuc2FjdGlvbi5oICovLAogCQkJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAv
KiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkg
LyogU1FMaXRlRmlsZVN5c3RlbS5oICovLAogCQkJCTFBMjI0NjQ1MENDOThEREIwMEMwNTI0MCAv
KiBTUUxpdGVTdGF0ZW1lbnQuY3BwICovLApAQCAtMzczOTksOCArMzc0MjUsMTQgQEAKIAkJCQk5
N0JDNkEzQjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMQ2FsbGJhY2tXcmFwcGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5N0JDNkEzQzE1MDVGMDgxMDAxQjc0QUMgLyogU1FMRXJyb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMjI0NjRBMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFzZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTNENURENDkyN0RCRkYwQzAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0ODI3REJG
RjBDMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk5M0Q1REQ0NzI3REJGRjBCMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0MjI3REJGRjBCMDAxMDdDNzUg
LyogU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDVERDQ1
MjdEQkZGMEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTdFNDc0RTFGMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRh
YmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNDc0RTFFMTI0OTREQzkwMDIzNTM2
NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkz
RDVERDQ0MjdEQkZGMEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCNUE2ODQyMjBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8qIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRUMxMzAxQzUwQUJG
NTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzkyMiw2
ICszNzk1NCw3IEBACiAJCQkJNDFFQjc5N0UyN0MzRTQ1RTAwMUMzRTNFIC8qIFZpZGVvRnJhbWVM
aWJXZWJSVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAv
KiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcxOUIy
OTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MTYwNDkzMzI3NDNCMEU4MDBBODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkJDNEFGNDE4OTg4
MTU2MDA0NkVFMzggLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyQjBENEMyMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc5MzIsNyArMzc5NjUsNiBAQAogCQkJCUNE
RTgzREIyMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1BsYXliYWNrUXVhbGl0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDc1MDMzQTgyNTJCRDM2ODAwRjcwQ0UzIC8qIFZpZGVvUGxheWJhY2tRdWFs
aXR5TWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc1N0IxM0UyMTRBRTc5OTAwNzk0QjBE
IC8qIFZpZGVvUHJlc2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTYwNDkzMzI3NDNCMEU4MDBB
ODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RD
OTM5QTgxRTlCREZCMTAwQkI3NjhEIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0QxRjlCMTgyNzAyM0EyQTAwNjE3RUI2IC8qIFZpZGVvVHJhY2tDbGll
bnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWNmMzM0MWMwYWQzMjUzMGJlMzNmYjBhNWNhMjQzMWZlM2QxM2U5NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlci5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCIKKworI2luY2x1
ZGUgIlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oIgorI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0YWJhc2VBY3Rpdml0
eVRyYWNrZXImIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKQorewor
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXI+IHRyYWNrZXI7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0geworICAgICAgICB0cmFja2VyLmNvbnN0cnVjdCgp
OworICAgIH0pOworICAgIHJldHVybiB0cmFja2VyLmdldCgpOworfQorCit2b2lkIFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzZXRJbXBsKGNvbnN0IFNRTGl0ZURhdGFiYXNlQWN0aXZp
dHlUcmFja2VySW1wbEdlbmVyYXRvciYgZ2VuZXJhdG9yKQoreworICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKKworICAgIG1faW1wbCA9IGdlbmVyYXRvcigpLnB0cigpOworfQorCit2b2lk
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpiZWdpbkFjdGl2aXR5KFNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CisKKyAgICBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcCA9IFdhbGxUaW1lOjpub3coKTsKKyAg
ICBpZiAobV9pbXBsICYmIG1fYWN0aXZlQ29ubmVjdGlvbnMuY29tcHV0ZXNFbXB0eSgpKQorICAg
ICAgICBtX2ltcGwtPndpbGxCZWdpbkZpcnN0QWN0aXZpdHkoKTsKKworICAgIG1fYWN0aXZlQ29u
bmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24pOworICAgIGNvbm5lY3Rpb24ub3BlbkZyb21BY3Rpdml0
eVRyYWNrZXIoKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6ZW5k
QWN0aXZpdHkoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIG1fYWN0aXZlQ29ubmVjdGlvbnMucmVtb3Zl
KGNvbm5lY3Rpb24pOworICAgIGNvbm5lY3Rpb24uY2xvc2VGcm9tQWN0aXZpdHlUcmFja2VyKCk7
CisgICAgaWYgKCFtX2FjdGl2ZUNvbm5lY3Rpb25zLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9sYXN0QWN0aXZpdHlUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCk7
CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoMV9zLCBbdGltZXN0YW1wID0gbV9s
YXN0QWN0aXZpdHlUaW1lc3RhbXBdIHsKKyAgICAgICAgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXI6OnNpbmdsZXRvbigpLmNoZWNrTGFzdEFjdGl2aXR5VGltZXN0YW1wKHRpbWVzdGFtcCk7
CisgICAgfSk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmNoZWNr
TGFzdEFjdGl2aXR5VGltZXN0YW1wKFdhbGxUaW1lIHRpbWVzdGFtcCkKK3sKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAobV9pbXBsICYmIG1fbGFzdEFjdGl2aXR5VGlt
ZXN0YW1wID09IHRpbWVzdGFtcCkKKyAgICAgICAgbV9pbXBsLT5kaWRFbmRMYXN0QWN0aXZpdHko
KTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c3VzcGVuZCgpIFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVCghbV9pc1N1c3BlbmRlZCk7CisgICAgbV9pc1N1c3BlbmRlZCA9
IHRydWU7CisKKyAgICAvLyBXZSB3aWxsIGhvbGQgdGhlIGxvY2sgdG8gcHJldmVudCBuZXcgZGF0
YWJhc2UgYWN0aXZpdGllcyB1bnRpbCByZXN1bWUoKS4KKyAgICBtX2xvY2subG9jaygpOworCisg
ICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9hY3RpdmVDb25uZWN0aW9ucykKKyAgICAgICAg
Y29ubmVjdGlvbi5pbnZhbGlkYXRlQWN0aXZpdHkoKTsKKworICAgIG1faW1wbC0+ZGlkRW5kTGFz
dEFjdGl2aXR5KCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnJl
c3VtZSgpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgbV9pbXBsLT53aWxsQmVnaW5G
aXJzdEFjdGl2aXR5KCk7CisKKyAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX2FjdGl2ZUNv
bm5lY3Rpb25zKQorICAgICAgICBjb25uZWN0aW9uLnNldElzQWN0aXZlKHRydWUpOworCisgICAg
bV9sb2NrLnVubG9jaygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZmM4NWViYzg5ZjdlZmVmYzAwNzgxYTUzOWI0MTQzODg1
NjdjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlckltcGw7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyIHsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXImIHNpbmdsZXRvbigpOworICAgIHZvaWQgYmVnaW5BY3Rpdml0eShTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb24mKTsKKyAgICB2b2lkIGVuZEFjdGl2aXR5KFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
biYpOworICAgIHVzaW5nIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbEdlbmVyYXRv
ciA9IEZ1bmN0aW9uPFJlZjxTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGw+KCk+Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SW1wbChjb25zdCBTUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlckltcGxHZW5lcmF0b3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3Bl
bmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZSgpOworCitwcml2YXRlOgorICAg
IHZvaWQgY2hlY2tMYXN0QWN0aXZpdHlUaW1lc3RhbXAoV2FsbFRpbWUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKTsKKworICAgIExvY2sgbV9sb2Nr
OworICAgIFdhbGxUaW1lIG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9sb2NrKTsKKyAgICBXZWFrSGFzaFNldDxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1f
YWN0aXZlQ29ubmVjdGlvbnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIFJlZlB0
cjxTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGw+IG1faW1wbCBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fbG9jayk7CisgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMTI0NzAxNzVlNDAzMTcyMDEwNWVmNzA2NGU1M2Q5YjdlMTllZWE0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0
aXZpdHlUcmFja2VySW1wbC5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsIDogcHVibGljIFJl
ZkNvdW50ZWQ8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsPiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHdpbGxCZWdpbkZpcnN0QWN0aXZpdHkoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZEVuZExhc3RBY3Rpdml0eSgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg1NzE3OTA5Y2YwMzU5OWM4ZmVkZjI4MWYw
OWQ0YTA2NTAxZjM0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNTg1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbi5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlQWN0aXZpdHlUcmFja2VyLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQu
aCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJl
cnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdWludDY0X3QgbmV4dFN0YXRl
bWVudElkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3Vy
cmVudFN0YXRlbWVudElkZW50aWZpZXI7CisgICAgcmV0dXJuICsrY3VycmVudFN0YXRlbWVudElk
ZW50aWZpZXI7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBuZXh0VHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkKK3sKKyAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnRUcmFuc2FjdGlv
bklkZW50aWZpZXI7CisgICAgcmV0dXJuICsrY3VycmVudFRyYW5zYWN0aW9uSWRlbnRpZmllcjsK
K30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNRTGl0ZSgpCit7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIGZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10geworICAgICAgICBp
ZiAoaW50IHJlc3VsdCA9IHNxbGl0ZTNfaW5pdGlhbGl6ZSgpOyByZXN1bHQgIT0gU1FMSVRFX09L
KQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJGYWlsZWQgdG8g
aW5pdGlhbGl6ZSBzcWxpdGU6ICVzIiwgc3FsaXRlM19lcnJzdHIocmVzdWx0KSk7CisgICAgfSk7
Cit9CisKK1JlZjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRDb21taXRUcmFuc2Fj
dGlvbkF0Q2xvc2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uKHBhdGgsIHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSkpOworfQorCitT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbihjb25zdCBT
dHJpbmcmIHBhdGgsIGJvb2wgc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKQorICAgIDog
bV9wYXRoKHBhdGgpCisgICAgLCBtX3Nob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZShzaG91
bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpCit7CisgICAgaW5pdGlhbGl6ZVNRTGl0ZSgpOwor
ICAgIGJlZ2luQWN0aXZpdHkoKTsKKworICAgIGVuYWJsZUV4dGVuZGVkUmVzdWx0Q29kZSgpOwor
ICAgIGVuYWJsZUluTWVtb3J5VGVtcFN0b3JlKCk7CisgICAgaWYgKGVuYWJsZVdBTEpvdXJuYWxN
b2RlKCkpCisgICAgICAgIGV4ZWN1dGVXQUxDaGVja3BvaW50KENoZWNrcG9pbnRNb2RlOjpUcnVu
Y2F0ZSk7Cit9CisKK1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6flNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbigpCit7CisgICAgZW5kQWN0aXZpdHkoKTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246Om9wZW5Gcm9tQWN0aXZpdHlUcmFja2VyKCkKK3sKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CisKKyAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKKworICAgIC8vIEZJWE1F
OiBhZGQgc3VwcG9ydCBmb3IgaW4tbWVtb3J5IGRhdGFiYXNlLgorICAgIGlmIChtX3BhdGggPT0g
aW5NZW1vcnlQYXRoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBvcGVuRmxh
Z3MgPSAoU1FMSVRFX09QRU5fQVVUT1BST1hZIHwgU1FMSVRFX09QRU5fUkVBRFdSSVRFKSB8IFNR
TElURV9PUEVOX0NSRUFURTsKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19vcGVuX3YyKEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3BhdGgpLmRhdGEoKSwgJm1fc3FsaXRl
Q29ubmVjdGlvbiwgb3BlbkZsYWdzLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0ICE9IFNRTElU
RV9PSyB8fCAhbV9zcWxpdGVDb25uZWN0aW9uKSB7CisgICAgICAgIG1fc3FsaXRlQ29ubmVjdGlv
biA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmludGVycnVwdFdpdGhM
b2NrSGVsZCgpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBBU1NF
UlQobV9sb2NrLmlzSGVsZCgpKTsKKworICAgIHNxbGl0ZTNfaW50ZXJydXB0KG1fc3FsaXRlQ29u
bmVjdGlvbik7CisgICAgaWYgKCFzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVj
dGlvbikpIHsKKyAgICAgICAgQVNDSUlMaXRlcmFsIHF1ZXJ5ID0gIlJPTExCQUNLIl9zOworICAg
ICAgICBpZiAobV9zaG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2UpCisgICAgICAgICAgICBx
dWVyeSA9ICJDT01NSVQiX3M7CisgICAgICAgIHNxbGl0ZTNfc3RtdCogc3RhdGVtZW50IHsgbnVs
bHB0ciB9OworICAgICAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19wcmVwYXJlX3YyKG1fc3FsaXRl
Q29ubmVjdGlvbiwgcXVlcnkuY2hhcmFjdGVycygpLCBxdWVyeS5sZW5ndGgoKSArIDEsICZzdGF0
ZW1lbnQsIG51bGxwdHIpOworICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9PSykKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfc3RlcChzdGF0ZW1lbnQpOworICAgICAgICBpZiAocmVz
dWx0ICE9IFNRTElURV9ET05FKQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0
YWJhc2UsICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmludGVycnVwdFdpdGhMb2NrSGVsZDog
ZmFpbGVkIHRvIHJvbGwgYmFjayB0cmFuc2FjdGlvbiAoJWQpIC0gKCVzKSIsIHJlc3VsdCwgc3Fs
aXRlM19lcnJtc2cobV9zcWxpdGVDb25uZWN0aW9uKSk7CisgICAgICAgIHNxbGl0ZTNfcmVzZXQo
c3RhdGVtZW50KTsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShzdGF0ZW1lbnQpOworICAgICAg
ICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgfQor
ICAgIAorfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2VGcm9tQWN0aXZp
dHlUcmFja2VyKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBBU1NF
UlQobV9pc0FjdGl2ZSk7CisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIGludGVycnVwdFdpdGhMb2NrSGVsZCgpOworCisgICAgZm9yIChhdXRvJiBz
dGF0ZW1lbnQgOiBtX3N0YXRlbWVudHMudmFsdWVzKCkpIHsKKyAgICAgICAgc3FsaXRlM19yZXNl
dChzdGF0ZW1lbnQuc3FsaXRlU3RhdGVtZW50KTsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShz
dGF0ZW1lbnQuc3FsaXRlU3RhdGVtZW50KTsKKyAgICB9CisKKyAgICBtX3N0YXRlbWVudHMuY2xl
YXIoKTsKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19jbG9zZShtX3NxbGl0ZUNvbm5lY3Rpb24p
OworICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX09LKQorICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2U6IGZhaWxlZCB0
byBjbG9zZSBkYXRhYmFzZSAoJWQpIC0gJXMiLCByZXN1bHQsIHNxbGl0ZTNfZXJybXNnKG1fc3Fs
aXRlQ29ubmVjdGlvbikpOworCisgICAgbV9zcWxpdGVDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAg
ICBtX2lzQWN0aXZlID0gZmFsc2U7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpiZWdpbkFjdGl2aXR5KCkKK3sKKyAgICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6
c2luZ2xldG9uKCkuYmVnaW5BY3Rpdml0eSgqdGhpcyk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjplbmRBY3Rpdml0eSgpCit7CisgICAgU1FMaXRlRGF0YWJhc2VBY3Rpdml0
eVRyYWNrZXI6OnNpbmdsZXRvbigpLmVuZEFjdGl2aXR5KCp0aGlzKTsKK30KKwordm9pZCBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OmludmFsaWRhdGVBY3Rpdml0eSgpCit7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaW50ZXJydXB0V2l0aExvY2tIZWxkKCk7CisgICAg
bV9pc0FjdGl2ZSA9IGZhbHNlOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6
c2V0SXNBY3RpdmUoYm9vbCB2YWx1ZSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CisKKyAgICBtX2lzQWN0aXZlID0gdmFsdWU7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uOjppc09wZW4oKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IHJldHVybiAhIW1fc3FsaXRlQ29ubmVjdGlvbjsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OmVuYWJsZUV4dGVuZGVkUmVzdWx0Q29kZSgpCit7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OworCisgICAgcmV0dXJuICEhbV9zcWxpdGVDb25uZWN0aW9uICYmIHNxbGl0
ZTNfZXh0ZW5kZWRfcmVzdWx0X2NvZGVzKG1fc3FsaXRlQ29ubmVjdGlvbiwgMSkgPT0gU1FMSVRF
X09LOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5hYmxlSW5NZW1vcnlU
ZW1wU3RvcmUoKQoreworICAgIHJldHVybiBleGVjdXRlKCJQUkFHTUEgdGVtcF9zdG9yZSA9IE1F
TU9SWSIpOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5hYmxlV0FMSm91
cm5hbE1vZGUoKQoreworICAgIGF1dG8gb3B0aW9uYWxJZGVudGlmaWVyID0gY3JlYXRlSW50ZXJu
YWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgeyAiUFJBR01BIGpvdXJuYWxfbW9kZT1X
QUwiX3MgfSk7CisgICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7CisgICAg
Ym9vbCBlbmFibGVkID0gZmFsc2U7CisgICAgaWYgKHN0ZXBTdGF0ZW1lbnQoaWRlbnRpZmllcikg
PT0gU1FMSVRFX1JPVykKKyAgICAgICAgZW5hYmxlZCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGNvbHVtblRleHQoaWRlbnRpZmllciwgMCksICJ3YWwiKTsKKyAgICBkZXN0cm95SW50
ZXJuYWxTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisKKyAgICBpZiAoZW5hYmxlZCkgeworICAgICAg
ICBhdXRvIHNobVBhdGggPSBtYWtlU3RyaW5nKG1fcGF0aCwgIi1zaG0iX3MpOworICAgICAgICBp
ZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzaG1QYXRoKSAmJiAhRmlsZVN5c3RlbTo6bWFrZVNh
ZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoc2htUGF0aCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIGVuYWJsZWQ7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tw
b2ludE1vZGVWYWx1ZShTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OkNoZWNrcG9pbnRNb2RlIG1v
ZGUpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OkNoZWNrcG9pbnRNb2RlOjpGdWxsOgorICAgICAgICByZXR1cm4gU1FMSVRFX0NIRUNL
UE9JTlRfRlVMTDsKKyAgICBjYXNlIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Q2hlY2twb2lu
dE1vZGU6OlRydW5jYXRlOgorICAgICAgICByZXR1cm4gU1FMSVRFX0NIRUNLUE9JTlRfVFJVTkNB
VEU7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Jvb2wg
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlV0FMQ2hlY2twb2ludChDaGVja3BvaW50
TW9kZSBtb2RlKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICgh
bV9pc0FjdGl2ZSB8fCAhbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gc3FsaXRlM193YWxfY2hlY2twb2ludF92MihtX3NxbGl0ZUNvbm5lY3Rp
b24sIG51bGxwdHIsIGNoZWNrcG9pbnRNb2RlVmFsdWUobW9kZSksIG51bGxwdHIsIG51bGxwdHIp
ID09IFNRTElURV9PSzsKK30KKworc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmll
dyBxdWVyeSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1f
aXNBY3RpdmUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIW1fc3Fs
aXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHNxbGl0
ZTNfc3RtdCogc3FsaXRlU3RhdGVtZW50IHsgbnVsbHB0ciB9OworICAgIGNvbnN0IGNoYXIqIHRh
aWwgPSBudWxscHRyOworICAgIGludCByZXN1bHQ7CisgICAgaWYgKHF1ZXJ5LmlzOEJpdCgpICYm
IHF1ZXJ5LmlzQWxsQVNDSUkoKSkKKyAgICAgICAgcmVzdWx0ID0gc3FsaXRlM19wcmVwYXJlX3Yy
KG1fc3FsaXRlQ29ubmVjdGlvbiwgcXVlcnkubGVuZ3RoKCkgPyByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihxdWVyeS5jaGFyYWN0ZXJzOCgpKSA6ICIiLCBxdWVyeS5sZW5ndGgoKSArIDEs
ICZzcWxpdGVTdGF0ZW1lbnQsICZ0YWlsKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHNx
bGl0ZTNfcHJlcGFyZV92MihtX3NxbGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5LnV0ZjgoKS5kYXRhKCks
IHF1ZXJ5LnV0ZjgoKS5sZW5ndGgoKSArIDEsICZzcWxpdGVTdGF0ZW1lbnQsICZ0YWlsKTsKKyAg
ICBpZiAodGFpbCAmJiAqdGFpbCkKKyAgICAgICAgcmVzdWx0ID0gU1FMSVRFX0VSUk9SOworCisg
ICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShz
cWxpdGVTdGF0ZW1lbnQpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IG5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKCk7CisgICAgbV9z
dGF0ZW1lbnRzLmFkZChpZGVudGlmaWVyLCBJbnRlcm5hbFN0YXRlbWVudCB7IGlkZW50aWZpZXIs
IHNxbGl0ZVN0YXRlbWVudCwgc3RkOjpudWxsb3B0IH0pOworCisgICAgcmV0dXJuIGlkZW50aWZp
ZXI7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpkZXN0cm95SW50ZXJuYWxT
dGF0ZW1lbnQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGF1dG8gaXRlciA9IG1fc3RhdGVtZW50cy5maW5kKGlkZW50aWZpZXIpOyBpdGVy
ICE9IG1fc3RhdGVtZW50cy5lbmQoKSkgeworICAgICAgICBzcWxpdGUzX2ZpbmFsaXplKGl0ZXIt
PnZhbHVlLnNxbGl0ZVN0YXRlbWVudCk7CisgICAgICAgIG1fc3RhdGVtZW50cy5yZW1vdmUoaXRl
cik7CisgICAgfQorfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpsYXN0Q2hhbmdl
cygpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX3NxbGl0
ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHNxbGl0ZTNfY2hh
bmdlcyhtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjpsYXN0RXJyb3IoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOwor
CisgICAgcmV0dXJuIHNxbGl0ZTNfZXJyY29kZShtX3NxbGl0ZUNvbm5lY3Rpb24pOworfQorCitj
b25zdCBjaGFyKiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvck1lc3NhZ2UoKQor
eworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9zcWxpdGVDb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm4gIkRhdGFiYXNlIGNvbm5lY3Rpb24gaXMgbm90IG9wZW4i
OworCisgICAgcmV0dXJuIHNxbGl0ZTNfZXJybXNnKG1fc3FsaXRlQ29ubmVjdGlvbik7Cit9CisK
K1N0cmluZyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnRhYmxlQ3JlYXRpb25RdWVyeShjb25z
dCBTdHJpbmcmIHRhYmxlTmFtZSkKK3sKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNy
ZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgIlNFTEVDVCBzcWwg
RlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAndGFibGUnIEFORCBuYW1lID0gPzsiX3Mg
fSk7CisgICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9uYWxJZGVudGlmaWVyOworICAgIFN0cmluZyBy
ZXN1bHQ7CisgICAgaWYgKGJpbmRUZXh0KGlkZW50aWZpZXIsIDEsIHRhYmxlTmFtZSkgPT0gU1FM
SVRFX09LICYmIHN0ZXBTdGF0ZW1lbnQoaWRlbnRpZmllcikgPT0gU1FMSVRFX1JPVykKKyAgICAg
ICAgcmVzdWx0ID0gY29sdW1uVGV4dChpZGVudGlmaWVyLCAwKTsKKyAgICBkZXN0cm95SW50ZXJu
YWxTdGF0ZW1lbnQoaWRlbnRpZmllcik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29s
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZShBU0NJSUxpdGVyYWwgcXVlcnkpCit7
CisgICAgcmV0dXJuIGV4ZWN1dGUoU3RyaW5nVmlldyB7IHF1ZXJ5IH0pOworfQorCitib29sIFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZShTdHJpbmdWaWV3IHF1ZXJ5KQoreworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9pc0FjdGl2ZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGludCByZXN1bHQgPSBzcWxpdGUzX2V4ZWMobV9zcWxpdGVD
b25uZWN0aW9uLCBxdWVyeS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
KTsKKyAgICByZXR1cm4gcmVzdWx0ID09IFNRTElURV9PSyB8fCByZXN1bHQgPT0gU1FMSVRFX0RP
TkU7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRNYXhpbXVtU2l6ZShp
bnQ2NF90IHNpemUpCit7CisgICAgaW50IGN1cnJlbnRQYWdlU2l6ZSA9IHBhZ2VTaXplKCk7Cisg
ICAgaWYgKCFjdXJyZW50UGFnZVNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIGludDY0X3Qg
bmV3TWF4UGFnZUNvdW50ID0gY3VycmVudFBhZ2VTaXplID8gc2l6ZSAvIGN1cnJlbnRQYWdlU2l6
ZSA6IDA7CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRl
bWVudEFuZFByZXBhcmUobWFrZVN0cmluZygiUFJBR01BIG1heF9wYWdlX2NvdW50ID0gIiwgbmV3
TWF4UGFnZUNvdW50KSk7CisgICAgaWYgKCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7CisgICAg
aWYgKHN0ZXBTdGF0ZW1lbnQoaWRlbnRpZmllcikgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgTE9H
X0VSUk9SKCJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnNldE1heGltdW1TaXplOiBmYWlsZWQg
dG8gc2V0IG1heGltdW0gc2l6ZSBvZiBkYXRhYmFzZSB0byAlbGxpIGJ5dGVzIiwgc3RhdGljX2Nh
c3Q8bG9uZyBsb25nPihzaXplKSk7CisKKyAgICBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQoaWRl
bnRpZmllcik7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnBhZ2VTaXplKCkK
K3sKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRpZmllciA9IGNyZWF0ZUludGVybmFsU3RhdGVtZW50
QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgIlBSQUdNQSBwYWdlX3NpemUiX3MgfSk7CisgICAgaWYg
KCFvcHRpb25hbElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgYXV0byBpZGVu
dGlmaWVyID0gKm9wdGlvbmFsSWRlbnRpZmllcjsKKyAgICBpbnQgc2l6ZSA9IGNvbHVtbkludChp
ZGVudGlmaWVyLCAwKTsKKyAgICBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQoaWRlbnRpZmllcik7
CisKKyAgICByZXR1cm4gc2l6ZTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
OnJlbGVhc2VNZW1vcnkoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzcWxpdGUz
X2RiX3JlbGVhc2VfbWVtb3J5KG1fc3FsaXRlQ29ubmVjdGlvbik7Cit9CisKK3N0ZDo6dW5pcXVl
X3B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpj
cmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKEFTQ0lJTGl0ZXJhbCBxdWVyeSkKK3sKKyAgICByZXR1
cm4gY3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgcXVlcnkgfSk7Cit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4gU1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uOjpjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpCit7
CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFu
ZFByZXBhcmUocXVlcnkpOworICAgIGlmICghb3B0aW9uYWxJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ+KG5ldyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCgqdGhpcywgKm9wdGlvbmFs
SWRlbnRpZmllcikpOworfQorCitzcWxpdGUzX3N0bXQqIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6ZmluZFNRTGl0ZVN0YXRlbWVudFdpdGhMb2NrSGVsZCh1aW50NjRfdCBpZGVudGlmaWVyKSBj
b25zdCBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit7CisgICAgQVNTRVJUKG1f
bG9jay5pc0hlbGQoKSk7CisKKyAgICBhdXRvIGl0ZXIgPSBtX3N0YXRlbWVudHMuZmluZChpZGVu
dGlmaWVyKTsKKyAgICBpZiAoaXRlciA9PSBtX3N0YXRlbWVudHMuZW5kKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNxbGl0ZVN0YXRlbWVudDsK
K30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmluZEJsb2IodWludDY0X3QgaWRl
bnRpZmllciwgaW50IGluZGV4LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJsb2IpCit7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5kU1FM
aXRlU3RhdGVtZW50V2l0aExvY2tIZWxkKGlkZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3Rh
dGVtZW50KQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgcmV0dXJuIHNxbGl0
ZTNfYmluZF9ibG9iKHNxbGl0ZVN0YXRlbWVudCwgaW5kZXgsIGJsb2IuZGF0YSgpLCBibG9iLnNp
emUoKSwgU1FMSVRFX1RSQU5TSUVOVCk7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmJpbmRCbG9iKHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0ZXh0KQoreworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0
ZXh0KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICBVQ2hhciBhbnlDaGFyYWN0ZXIgPSAw
OworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzOworICAgIGlmICh0ZXh0LmlzRW1wdHkoKSAm
JiAhdGV4dC5pc051bGwoKSkKKyAgICAgICAgY2hhcmFjdGVycyA9ICZhbnlDaGFyYWN0ZXI7Cisg
ICAgZWxzZQorICAgICAgICBjaGFyYWN0ZXJzID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworCisg
ICAgcmV0dXJuIGJpbmRCbG9iKGlkZW50aWZpZXIsIGluZGV4LCBTcGFuIHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oY2hhcmFjdGVycyksIHRleHQubGVuZ3RoKCkgKiBzaXplb2Yo
VUNoYXIpIH0pOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiaW5kVGV4dCh1
aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCkKK3sKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBm
aW5kU1FMaXRlU3RhdGVtZW50V2l0aExvY2tIZWxkKGlkZW50aWZpZXIpOworICAgIGlmICghc3Fs
aXRlU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgaW50IHJl
c3VsdDsKKyAgICBpZiAodGV4dC5pczhCaXQoKSAmJiB0ZXh0LmlzQWxsQVNDSUkoKSkKKyAgICAg
ICAgcmVzdWx0ID0gc3FsaXRlM19iaW5kX3RleHQoc3FsaXRlU3RhdGVtZW50LCBpbmRleCwgdGV4
dC5sZW5ndGgoKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHRleHQuY2hhcmFjdGVy
czgoKSkgOiAiIiwgdGV4dC5sZW5ndGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CisgICAgZWxzZQor
ICAgICAgICByZXN1bHQgPSBzcWxpdGUzX2JpbmRfdGV4dChzcWxpdGVTdGF0ZW1lbnQsIGluZGV4
LCB0ZXh0LnV0ZjgoKS5kYXRhKCksIHRleHQudXRmOCgpLmxlbmd0aCgpLCBTUUxJVEVfVFJBTlNJ
RU5UKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cmluZyBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OmNvbHVtbkJsb2JBc1N0cmluZyh1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQgY29s
KQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0
YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnRXaXRoTG9ja0hlbGQoaWRlbnRpZmllcik7Cisg
ICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAo
c3FsaXRlM19jb2x1bW5fdHlwZShzcWxpdGVTdGF0ZW1lbnQsIGNvbCkgIT0gU1FMSVRFX0JMT0Ip
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29sdW1uX2J5
dGVzKHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBjb25zdCB2b2lkKiBibG9iID0gc3FsaXRlM19jb2x1bW5fYmxvYihz
cWxpdGVTdGF0ZW1lbnQsIGNvbCk7CisgICAgaWYgKCFibG9iKSB7CisgICAgICAgIGlmICghc2l6
ZSkKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICByZXR1cm4geyB9
OworICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihi
bG9iKSwgc2l6ZSAvIHNpemVvZihVQ2hhcikpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uOjpjb2x1bW5JbnQodWludDY0X3QgaWRlbnRpZmllciwgaW50IGNvbCkKK3sKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBm
aW5kU1FMaXRlU3RhdGVtZW50V2l0aExvY2tIZWxkKGlkZW50aWZpZXIpOworICAgIGlmICghc3Fs
aXRlU3RhdGVtZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBzcWxpdGUzX2Nv
bHVtbl9pbnQoc3FsaXRlU3RhdGVtZW50LCBjb2wpOworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpjb2x1bW5UZXh0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBjb2wpCit7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byogc3FsaXRlU3RhdGVt
ZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudFdpdGhMb2NrSGVsZChpZGVudGlmaWVyKTsKKyAgICBp
ZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KHNxbGl0ZTNfY29sdW1uX3RleHQoc3FsaXRlU3RhdGVtZW50LCBjb2wp
LCBzcWxpdGUzX2NvbHVtbl9ieXRlcyhzcWxpdGVTdGF0ZW1lbnQsIGNvbCkpOworfQorCitpbnQg
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpyZXNldFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGlm
aWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0
ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnRXaXRoTG9ja0hlbGQoaWRlbnRpZmllcik7
CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7
CisKKyAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19yZXNldChzcWxpdGVTdGF0ZW1lbnQpOworICAg
IHNxbGl0ZTNfY2xlYXJfYmluZGluZ3Moc3FsaXRlU3RhdGVtZW50KTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzdGVwU3RhdGVtZW50KHVp
bnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisg
ICAgYXV0byogc3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudFdpdGhMb2NrSGVs
ZChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJu
IFNRTElURV9FUlJPUjsKKworICAgIHJldHVybiBzcWxpdGUzX3N0ZXAoc3FsaXRlU3RhdGVtZW50
KTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmRlc3Ryb3lTdGF0ZW1lbnQo
dWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQoaWRl
bnRpZmllcik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9u
PiBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4oKQor
eworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICghbV9pc0FjdGl2ZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbiB8
fCBzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3FsaXRlQ29ubmVjdGlvbikpIHsKKyAgICAgICAg
bV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoc3FsaXRlM19leGVjKG1fc3FsaXRlQ29u
bmVjdGlvbiwgIkJFR0lOIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikgIT0gU1FMSVRFX0RP
TkUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25J
ZGVudGlmaWVyID0gbmV4dFRyYW5zYWN0aW9uSWRlbnRpZmllcigpOworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4obmV3IFNRTGl0ZURhdGFiYXNl
VHJhbnNhY3Rpb24oKnRoaXMsICptX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIpKTsKK30K
Kwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2
NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CisKKyAgICBpZiAoIW1faXNBY3RpdmUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyIHx8ICptX29uZ29pbmdUcmFuc2FjdGlvbklk
ZW50aWZpZXIgIT0gdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9zcWxpdGVDb25uZWN0aW9uICYmICFzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1fc3Fs
aXRlQ29ubmVjdGlvbikpCisgICAgICAgIHNxbGl0ZTNfZXhlYyhtX3NxbGl0ZUNvbm5lY3Rpb24s
ICJDT01NSVQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKworICAgIG1fb25nb2luZ1Ry
YW5zYWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBTUUxpdGVEYXRh
YmFzZUNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGlmICgh
bV9pc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX29uZ29pbmdUcmFuc2Fj
dGlvbklkZW50aWZpZXIgfHwgKm1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciAhPSB0cmFu
c2FjdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3NxbGl0ZUNv
bm5lY3Rpb24gJiYgIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQobV9zcWxpdGVDb25uZWN0aW9uKSkK
KyAgICAgICAgc3FsaXRlM19leGVjKG1fc3FsaXRlQ29ubmVjdGlvbiwgIlJPTExCQUNLIiwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisKKyAgICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50
aWZpZXIgPSBzdGQ6Om51bGxvcHQ7Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
Ojppc09uZ29pbmdUcmFuc2FjdGlvbih1aW50NjRfdCB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgcmV0dXJuIG1fb25nb2luZ1Ry
YW5zYWN0aW9uSWRlbnRpZmllciAmJiAqbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID09
IHRyYW5zYWN0aW9uSWRlbnRpZmllcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE3MWNjYjkwYThjNzUwMjFjZWRlZDdkYzYzMWMyNTM3NzAxOWRk
NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHNxbGl0ZTMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOworY2xhc3MgU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQ7CitjbGFzcyBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOwor
CitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgY2hhciogaW5NZW1vcnlQYXRoKCkgeyByZXR1cm4gIjptZW1vcnk6IjsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNob3VsZENvbW1pdFRyYW5zYWN0aW9uQXRDbG9zZSA9
IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uKCk7
CisKKyAgICBTdHJpbmcgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNPcGVuKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RDaGFu
Z2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RFcnJvcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IGNoYXIqIGxhc3RFcnJvck1lc3NhZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgdGFibGVDcmVhdGlvblF1ZXJ5KGNvbnN0IFN0cmluZyYgdGFibGVOYW1lKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoQVNDSUlMaXRlcmFsIHF1ZXJ5KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUoU3RyaW5nVmlldyBxdWVyeSk7CisgICAgZW51bSBj
bGFzcyBDaGVja3BvaW50TW9kZSA6IHVpbnQ4X3QgeyBGdWxsLCBUcnVuY2F0ZSB9OworICAgIGJv
b2wgZXhlY3V0ZVdBTENoZWNrcG9pbnQoQ2hlY2twb2ludE1vZGUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TWF4aW11bVNpemUoaW50NjRfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWxlYXNlTWVtb3J5KCk7CisgICAgdm9pZCBpbnZhbGlkYXRlQWN0aXZpdHkoKTsKKyAgICB2
b2lkIHNldElzQWN0aXZlKGJvb2wpOworCisgICAgLy8gU3RhdGVtZW50IG9wZXJhdGlvbnMuCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
PiBjcmVhdGVTdGF0ZW1lbnRBbmRQcmVwYXJlKEFTQ0lJTGl0ZXJhbCBxdWVyeSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBjcmVhdGVTdGF0ZW1lbnRBbmRQ
cmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpOworICAgIGludCBiaW5kQmxvYih1aW50NjRfdCBzdGF0
ZW1lbnRJZGVudGlmaWVyLCBpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4gYmxvYik7Cisg
ICAgaW50IGJpbmRCbG9iKHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIsIGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBpbnQgYmluZFRleHQodWludDY0X3Qgc3RhdGVtZW50
SWRlbnRpZmllciwgaW50IGluZGV4LCBTdHJpbmdWaWV3IHRleHQpOworICAgIFN0cmluZyBjb2x1
bW5CbG9iQXNTdHJpbmcodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllciwgaW50IGNvbCk7Cisg
ICAgaW50IGNvbHVtbkludCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQgY29sKTsK
KyAgICBTdHJpbmcgY29sdW1uVGV4dCh1aW50NjRfdCBzdGF0ZW1lbnRJZGVudGlmaWVyLCBpbnQg
Y29sKTsKKyAgICBpbnQgcmVzZXRTdGF0ZW1lbnQodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmll
cik7CisgICAgaW50IHN0ZXBTdGF0ZW1lbnQodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllcik7
CisgICAgdm9pZCBkZXN0cm95U3RhdGVtZW50KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIp
OworCisgICAgLy8gVHJhbnNhY3Rpb24gb3BlcmF0aW9ucy4KKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3JlYXRlVHJhbnNhY3Rp
b25BbmRCZWdpbigpOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKKyAgICB2b2lkIHJvbGxiYWNrVHJhbnNhY3Rpb24odWludDY0X3Qg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBib29sIGlzT25nb2luZ1RyYW5zYWN0aW9uKHVp
bnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRDb21taXRUcmFu
c2FjdGlvbkF0Q2xvc2UpOworICAgIGJvb2wgb3BlbkZyb21BY3Rpdml0eVRyYWNrZXIoKTsKKyAg
ICB2b2lkIGNsb3NlRnJvbUFjdGl2aXR5VHJhY2tlcigpOworICAgIHZvaWQgYmVnaW5BY3Rpdml0
eSgpOworICAgIHZvaWQgZW5kQWN0aXZpdHkoKTsKKyAgICB2b2lkIGludGVycnVwdFdpdGhMb2Nr
SGVsZCgpOworICAgIGJvb2wgZW5hYmxlRXh0ZW5kZWRSZXN1bHRDb2RlKCk7CisgICAgYm9vbCBl
bmFibGVJbk1lbW9yeVRlbXBTdG9yZSgpOworICAgIGJvb2wgZW5hYmxlV0FMSm91cm5hbE1vZGUo
KTsKKyAgICBpbnQgcGFnZVNpemUoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjcmVh
dGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyBxdWVyeSk7CisgICAgdm9p
ZCBkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQodWludDY0X3QgaWRlbnRmaWVyKTsKKyAgICBzcWxp
dGUzX3N0bXQqIGZpbmRTUUxpdGVTdGF0ZW1lbnRXaXRoTG9ja0hlbGQodWludDY0X3Qgc3RhdGVt
ZW50SWRlbnRpZmllcikgY29uc3Q7CisKKyAgICBTdHJpbmcgbV9wYXRoOworICAgIGJvb2wgbV9z
aG91bGRDb21taXRUcmFuc2FjdGlvbkF0Q2xvc2U7CisgICAgTG9jayBtX2xvY2s7CisgICAgc3Ry
dWN0IEludGVybmFsU3RhdGVtZW50IHsKKyAgICAgICAgdWludDY0X3QgaWRlbnRpZmllcjsKKyAg
ICAgICAgc3FsaXRlM19zdG10KiBzcWxpdGVTdGF0ZW1lbnQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHRyYW5zYWN0aW9uSWRlbnRpZmllcjsKKyAgICB9OworICAgIEhhc2hNYXA8
dWludDY0X3QsIEludGVybmFsU3RhdGVtZW50PiBtX3N0YXRlbWVudHMgV1RGX0dVQVJERURfQllf
TE9DSyhtX2xvY2spOworICAgIHNxbGl0ZTMqIG1fc3FsaXRlQ29ubmVjdGlvbiAgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2xvY2spIHsgbnVsbHB0ciB9OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IG1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
bG9jayk7CisgICAgYm9vbCBtX2lzQWN0aXZlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKSB7
IGZhbHNlIH07CisgICAgZnJpZW5kIGNsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDM5OWRlNmMzODg5MWZiNzU3ODBlMTAxNzNhYmFlNTA2YWIyYzE2NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5j
cHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIgorCisjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQ6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50KFNRTGl0ZURhdGFiYXNlQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICA6IG1fY29ubmVjdGlv
bihjb25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK1NR
TGl0ZURhdGFiYXNlU3RhdGVtZW50Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQoKQoreworICAg
IG1fY29ubmVjdGlvbi0+ZGVzdHJveVN0YXRlbWVudChtX2lkZW50aWZpZXIpOworfQorCitpbnQg
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRCbG9iKGludCBpbmRleCwgU3Bhbjxjb25zdCB1
aW50OF90PiBibG9iKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmJpbmRCbG9iKG1faWRl
bnRpZmllciwgaW5kZXgsIGJsb2IpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6
OmJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIHJldHVybiBt
X2Nvbm5lY3Rpb24tPmJpbmRCbG9iKG1faWRlbnRpZmllciwgaW5kZXgsIHRleHQpOworfQorCitp
bnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmJpbmRUZXh0KGludCBpbmRleCwgU3RyaW5nVmll
dyB0ZXh0KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmJpbmRUZXh0KG1faWRlbnRpZmll
ciwgaW5kZXgsIHRleHQpOworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNv
bHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNv
bHVtbkJsb2JBc1N0cmluZyhtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK2ludCBTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudDo6Y29sdW1uSW50KGludCBjb2wpCit7CisgICAgcmV0dXJuIG1fY29ubmVj
dGlvbi0+Y29sdW1uSW50KG1faWRlbnRpZmllciwgY29sKTsKK30KKworU3RyaW5nIFNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5UZXh0KGludCBjb2wpCit7CisgICAgcmV0dXJuIG1fY29u
bmVjdGlvbi0+Y29sdW1uVGV4dChtX2lkZW50aWZpZXIsIGNvbCk7Cit9CisKK2ludCBTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudDo6cmVzZXQoKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPnJl
c2V0U3RhdGVtZW50KG1faWRlbnRpZmllcik7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZVN0YXRl
bWVudDo6c3RlcCgpCit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+c3RlcFN0YXRlbWVudCht
X2lkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRlN2U5MDkwZDJmNTI3OGIwNGNhMWM3OTkxOWM3NDc4YzRmYmJmNTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudCk7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBp
bmRleCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9iKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQg
YmluZEJsb2IoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIGNvbHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBpbnQgY29sdW1uSW50KGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBjb2x1bW5UZXh0KGludCBjb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCByZXNldCgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGludCBzdGVwKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjsKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dChTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKKworICAg
IFJlZjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRf
dCBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNl
dFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnRSZXNldFNjb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRlMjBkOWYwNjQxZTM5YzIyMTdhYmM2YmM1
ODAyMmEzMzkzNGZlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUuaApAQCAtMCwwICsxLDcxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVN0
YXRlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50OworCitjbGFzcyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29w
ZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
KiBzdGF0ZW1lbnQpCisgICAgICAgIDogbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQorICAgIHsKKyAg
ICB9CisKKyAgICB+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX3N0YXRlbWVudCkKKyAgICAgICAgICAgIG1fc3RhdGVtZW50LT5yZXNldCgp
OworICAgIH0KKworICAgIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZShTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUmJiBvdGhlcikKKyAgICAgICAgOiBtX3N0YXRlbWVu
dChvdGhlci5tX3N0YXRlbWVudC5nZXQoKSkKKyAgICB7CisgICAgICAgIG90aGVyLm1fc3RhdGVt
ZW50ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0
U2NvcGUmIG9wZXJhdG9yPShTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUmJiBvdGhl
cikKKyAgICB7CisgICAgICAgIHN0ZDo6c3dhcChtX3N0YXRlbWVudCwgb3RoZXIubV9zdGF0ZW1l
bnQpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zdGF0ZW1lbnQ7IH0KKyAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0YXRlbWVudDsgfQorICAgIFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50KiBnZXQoKSB7IHJldHVybiBtX3N0YXRlbWVudC5nZXQoKTsgfQorICAgIFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50KiBvcGVyYXRvci0+KCkgeyByZXR1cm4gbV9zdGF0ZW1lbnQuZ2V0
KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PiBt
X3N0YXRlbWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNjODBmN2E3ZjgzM2VlMzVhMGYwZjgzNDY3ODlhMDVjMzMzN2NiOGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6U1FMaXRl
RGF0YWJhc2VUcmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAg
ICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitTUUxpdGVEYXRhYmFzZVRyYW5z
YWN0aW9uOjp+U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbigpCit7CisgICAgbV9jb25uZWN0aW9u
LT5yb2xsYmFja1RyYW5zYWN0aW9uKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbjo6Y29tbWl0KCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbW1pdFRy
YW5zYWN0aW9uKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VUcmFuc2Fj
dGlvbjo6cm9sbGJhY2soKQoreworICAgIG1fY29ubmVjdGlvbi0+cm9sbGJhY2tUcmFuc2FjdGlv
bihtX2lkZW50aWZpZXIpOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246Omlz
T25nb2luZ1RyYW5zYWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5pc09uZ29p
bmdUcmFuc2FjdGlvbihtX2lkZW50aWZpZXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
VHJhbnNhY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDVmZGZmNDg5ZmY5ZDRjZmUyY2ZhZTNlM2VjMDE5
NmE4MjRkODg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1FMaXRlRGF0YWJhc2VUcmFu
c2FjdGlvbik7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdCgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcm9sbGJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzT25n
b2luZ1RyYW5zYWN0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjsKKyAgICBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbiYsIHVpbnQ2NF90IGlkZW50aWZpZXIpOworCisgICAgUmVmPFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faWRlbnRp
ZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBjYzkyOTBiNjYyODliZjY3
OTgxZmI3ZTcwMGE0ZmYxYWNkMmJhY2ZhLi40NDJkYjhmYjBhYmVkZWFiZGM0MWI4YWI2ODk5MTY2
M2VmMWQzN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlByZWNvbm5lY3RUYXNrLmgi
CiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5oIgogI2luY2x1ZGUgIlJl
bW90ZVdvcmtlclR5cGUuaCIKKyNpbmNsdWRlICJTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVy
LmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0LmgiCkBA
IC03OSw2ICs4MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CkBAIC0xNzcsNiArMTc5LDEyIEBAIE5ldHdvcmtQcm9jZXNz
OjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1lCiAgICAgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vz
c0NyZWF0ZWQoKnRoaXMpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRJbXBsKFtdIHsK
KyAgICAgICAgcmV0dXJuIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6OmNyZWF0ZSgpOwor
ICAgIH0pOworI2VuZGlmCisKICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCku
YWRkTGlzdGVuZXIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKGJvb2wgaXNPbkxpbmUp
IHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2Niw2
ICsyNzQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24m
KQogICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhzZXNzaW9uLnNlc3Npb25JRCgpLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0pOwogCisgICAgU1FMaXRlRGF0YWJhc2VBY3Rp
dml0eVRyYWNrZXI6OnNpbmdsZXRvbigpLnJlc3VtZSgpOworCiAgICAgTmV0d29ya1N0b3JhZ2VN
YW5hZ2VyOjpmb3JFYWNoKFsmXShhdXRvJiBtYW5hZ2VyKSB7CiAgICAgICAgIG1hbmFnZXIuc3lu
Y0xvY2FsU3RvcmFnZShbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0pOwpAQCAtMjEz
OCw2ICsyMTQ4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29s
IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKIAogICAgIGZvciAoYXV0byYg
Y29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLnZhbHVlcygpKQogICAgICAgICBj
b25uZWN0aW9uLT5jbGVhbnVwRm9yU3VzcGVuc2lvbihbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OworCisgICAgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnNpbmdsZXRvbigpLnN1c3Bl
bmQoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQoKQpAQCAtMjE3Myw2ICsyMTg1LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
KCkKICNlbmRpZgogICAgICAgICBzZXNzaW9uLnN0b3JhZ2VNYW5hZ2VyKCkucmVzdW1lKCk7CiAg
ICAgfSk7CisKKyAgICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCku
cmVzdW1lKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGZhMWUzOGIx
MzhlNDg0MzAxY2Q2MzE2NDE3OWNiNzQ4M2Y4ZDIxNTcuLjAyM2ZiZmUwOThkNjQzZmJkYjQ5MjNi
NWExZGIwODRlNGEwYjY4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC02NDcs
OCArNjQ3LDYgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6OnN1c3BlbmQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGUKIAogICAgIG1fcXVldWUtPnN1c3Bl
bmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSB7CiAgICAgICAgIGZvciAo
YXV0byYgbWFuYWdlciA6IG1fbG9jYWxPcmlnaW5TdG9yYWdlTWFuYWdlcnMudmFsdWVzKCkpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvIGxvY2FsU3RvcmFnZU1hbmFnZXIgPSBtYW5hZ2VyLT5leGlz
dGluZ0xvY2FsU3RvcmFnZU1hbmFnZXIoKSkKLSAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2VN
YW5hZ2VyLT5zeW5jTG9jYWxTdG9yYWdlKCk7CiAgICAgICAgICAgICBpZiAoYXV0byBpZGJTdG9y
YWdlTWFuYWdlciA9IG1hbmFnZXItPmV4aXN0aW5nSURCU3RvcmFnZU1hbmFnZXIoKSkKICAgICAg
ICAgICAgICAgICBpZGJTdG9yYWdlTWFuYWdlci0+c3RvcERhdGFiYXNlQWN0aXZpdGllc0ZvclN1
c3BlbmQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHAKaW5kZXggMTBlYzIwNzY4NTE0
NThjZWYxNjE5MGVmMWI5MTY2ZDJmMGE0NGU0MS4uYmU0ODRjOGZkNjc0MjRlYjA0MjRmYWViMzUy
MjU1ZjIwYjllOTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAj
aW5jbHVkZSAiU1FMaXRlU3RvcmFnZUFyZWEuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxp
dGVGaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dG9yYWdlTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTA3LDcgKzEwNyw3IEBAIGJv
b2wgU1FMaXRlU3RvcmFnZUFyZWE6OmlzRW1wdHkoKQogCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBj
YWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6Q291bnRJdGVtcyk7CiAgICAgaWYgKCFzdGF0
ZW1lbnQgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmlzRW1wdHkgZmFpbGVk
IG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
KCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjppc0VtcHR5IGZhaWxlZCBvbiBleGVjdXRp
bmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTEyOCwyMSArMTI4LDIxIEBAIGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxl
SWZOZWNlc3NhcnkoKQogICAgIGlmICghbV9kYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgU3RyaW5nIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRhYmxlU1FMKCJJdGVtVGFi
bGUiX3MpOworICAgIFN0cmluZyBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLT50YWJsZUNyZWF0aW9u
UXVlcnkoIkl0ZW1UYWJsZSJfcyk7CiAgICAgaWYgKHN0YXRlbWVudCA9PSBjcmVhdGVJdGVtVGFi
bGVTdGF0ZW1lbnQgfHwgc3RhdGVtZW50ID09IGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudEFsdGVy
bmF0aXZlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRhYmxlIGV4aXN0cyBidXQg
c3RhdGVtZW50IGlzIHdyb25nOyBkcm9wIGl0LgogICAgIGlmICghc3RhdGVtZW50LmlzRW1wdHko
KSkgewotICAgICAgICBpZiAoIW1fZGF0YWJhc2UtPmV4ZWN1dGVDb21tYW5kKCJEUk9QIFRBQkxF
IEl0ZW1UYWJsZSJfcykpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2Us
ICJTUUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gZHJv
cCBleGlzdGluZyBpdGVtIHRhYmxlICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigp
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIGlmICghbV9kYXRhYmFzZS0+
ZXhlY3V0ZSgiRFJPUCBUQUJMRSBJdGVtVGFibGUiX3MpKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNl
c3NhcnkgZmFpbGVkIHRvIGRyb3AgZXhpc3RpbmcgaXRlbSB0YWJsZSAoJWQpIC0gJXMiLCBtX2Rh
dGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRhYmxl
IGRvZXMgbm90IGV4aXN0LgotICAgIGlmICghbV9kYXRhYmFzZS0+ZXhlY3V0ZUNvbW1hbmQoY3Jl
YXRlSXRlbVRhYmxlU3RhdGVtZW50KSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9y
YWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkgZmFpbGVkIHRv
IGNyZWF0ZSBpdGVtIHRhYmxlICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgaWYgKCFtX2RhdGFiYXNlLT5leGVjdXRl
KGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
U3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVUYWJsZUlmTmVjZXNzYXJ5IGZhaWxl
ZCB0byBjcmVhdGUgaXRlbSB0YWJsZSAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3Io
KSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTU4LDE3ICsxNTgsMTIgQEAgYm9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6
cHJlcGFyZURhdGFiYXNlKFNob3VsZENyZWF0ZUlmTm90RXhpc3RzIHNob3VsZENyZWF0ZUlmTm8K
ICAgICBpZiAoc2hvdWxkQ3JlYXRlSWZOb3RFeGlzdHMgPT0gU2hvdWxkQ3JlYXRlSWZOb3RFeGlz
dHM6Ok5vICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fcGF0aCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U+KCk7CiAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06
OnBhcmVudFBhdGgobV9wYXRoKSk7Ci0gICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuKG1fcGF0aCkp
IHsKKyAgICBtX2RhdGFiYXNlID0gV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpj
cmVhdGUobV9wYXRoLCB0cnVlKS5wdHIoKTsKKyAgICBpZiAoIW1fZGF0YWJhc2UtPmlzT3Blbigp
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJl
YTo6cHJlcGFyZURhdGFiYXNlIGZhaWxlZCB0byBvcGVuIGRhdGFiYXNlIGF0ICclcyciLCBtX3Bh
dGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOwotICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgICAgICAKLSAgICAvLyBTaW5jZSBhIFdvcmtRdWV1
ZSBpc24ndCBib3VuZCB0byBhIHNwZWNpZmljIHRocmVhZCwgd2UgbmVlZCB0byBkaXNhYmxlIHRo
cmVhZGluZyBjaGVjay4KLSAgICAvLyBXZSB3aWxsIG5ldmVyIGFjY2VzcyB0aGUgZGF0YWJhc2Ug
ZnJvbSBkaWZmZXJlbnQgdGhyZWFkcyBzaW11bHRhbmVvdXNseS4KLSAgICBtX2RhdGFiYXNlLT5k
aXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAKICAgICBpZiAoIWNyZWF0ZVRhYmxlSWZOZWNlc3Nh
cnkoKSkgewogICAgICAgICBtX2RhdGFiYXNlID0gbnVsbHB0cjsKQEAgLTE4NCwxMSArMTc5LDEw
IEBAIGJvb2wgU1FMaXRlU3RvcmFnZUFyZWE6OnByZXBhcmVEYXRhYmFzZShTaG91bGRDcmVhdGVJ
Zk5vdEV4aXN0cyBzaG91bGRDcmVhdGVJZk5vCiB2b2lkIFNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFy
dFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKQogewogICAgIGlmICghbV90cmFuc2FjdGlvbikKLSAg
ICAgICAgbV90cmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rp
b24+KCptX2RhdGFiYXNlKTsKLQotICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkp
CisgICAgICAgIG1fdHJhbnNhY3Rpb24gPSBtX2RhdGFiYXNlLT5jcmVhdGVUcmFuc2FjdGlvbkFu
ZEJlZ2luKCk7CisgICAgCisgICAgaWYgKCFtX3RyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm47
Ci0gICAgbV90cmFuc2FjdGlvbi0+YmVnaW4oKTsKIAogICAgIG1fcXVldWUtPmRpc3BhdGNoQWZ0
ZXIodHJhbnNhY3Rpb25EdXJhdGlvbiwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsK
ICAgICAgICAgaWYgKHdlYWtUaGlzKQpAQCAtMTk2LDE4ICsxOTAsMTYgQEAgdm9pZCBTUUxpdGVT
dG9yYWdlQXJlYTo6c3RhcnRUcmFuc2FjdGlvbklmTmVjZXNzYXJ5KCkKICAgICB9KTsKIH0KIAot
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgU1FMaXRlU3RvcmFnZUFyZWE6
OmNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlIHR5cGUpCitXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgU1FMaXRlU3RvcmFnZUFyZWE6OmNhY2hlZFN0YXRlbWVu
dChTdGF0ZW1lbnRUeXBlIHR5cGUpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2UpOwogICAgIEFT
U0VSVCh0eXBlIDwgU3RhdGVtZW50VHlwZTo6SW52YWxpZCk7CiAKICAgICBhdXRvIGluZGV4ID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4odHlwZSk7Ci0gICAgaWYgKCFtX2NhY2hlZFN0YXRlbWVudHNb
aW5kZXhdKSB7Ci0gICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IG1fZGF0YWJhc2UtPnByZXBhcmVI
ZWFwU3RhdGVtZW50KHN0YXRlbWVudFN0cmluZyh0eXBlKSkpCi0gICAgICAgICAgICBtX2NhY2hl
ZFN0YXRlbWVudHNbaW5kZXhdID0gcmVzdWx0LnZhbHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7Ci0g
ICAgfQorICAgIGlmICghbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XSkKKyAgICAgICAgbV9jYWNo
ZWRTdGF0ZW1lbnRzW2luZGV4XSA9IG1fZGF0YWJhc2UtPmNyZWF0ZVN0YXRlbWVudEFuZFByZXBh
cmUoc3RhdGVtZW50U3RyaW5nKHR5cGUpKTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnRBdXRvUmVzZXRTY29wZSB7IG1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0uZ2V0KCkg
fTsKKyAgICByZXR1cm4gV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3Bl
IHsgbV9jYWNoZWRTdGF0ZW1lbnRzW2luZGV4XS5nZXQoKSB9OwogfQogCiBFeHBlY3RlZDxTdHJp
bmcsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW0oY29uc3QgU3RyaW5n
JiBrZXkpCkBAIC0yMzQsNyArMjI2LDcgQEAgRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+
IFNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJdGVtRnJvbURhdGFiYXNlKGNvbnN0IFN0cmkKIAogICAg
IGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkdldEl0ZW0p
OwogICAgIGlmICghc3RhdGVtZW50IHx8IHN0YXRlbWVudC0+YmluZFRleHQoMSwga2V5KSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6Omdl
dEl0ZW1Gcm9tRGF0YWJhc2UgZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMi
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6Omdl
dEl0ZW1Gcm9tRGF0YWJhc2UgZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMi
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgp
KTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2Up
OwogICAgIH0KIApAQCAtMjQyLDcgKzIzNCw3IEBAIEV4cGVjdGVkPFN0cmluZywgU3RvcmFnZUVy
cm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZShjb25zdCBTdHJpCiAg
ICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKQogICAgICAgICByZXR1cm4gc3RhdGVtZW50LT5j
b2x1bW5CbG9iQXNTdHJpbmcoMCk7CiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6Omdl
dEl0ZW1Gcm9tRGF0YWJhc2UgZmFpbGVkIG9uIHN0ZXBwaW5nIHN0YXRlbWVudCAoJWQpIC0gJXMi
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6Omdl
dEl0ZW1Gcm9tRGF0YWJhc2UgZmFpbGVkIG9uIHN0ZXBwaW5nIHN0YXRlbWVudCAoJWQpIC0gJXMi
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgp
KTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2Up
OwogICAgIH0KIApAQCAtMjc0LDcgKzI2Niw3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFNR
TGl0ZVN0b3JhZ2VBcmVhOjphbGxJdGVtcygpCiAgICAgLy8gSW1wb3J0IGZyb20gZGF0YWJhc2Uu
CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6R2V0
QWxsSXRlbXMpOwogICAgIGlmICghc3RhdGVtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0QWxsSXRlbXMgZmFpbGVkIG9uIGNy
ZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9k
YXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9y
YWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmdldEFsbEl0ZW1zIGZhaWxlZCBvbiBjcmVhdGluZyBz
dGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0y
OTIsNyArMjg0LDcgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gU1FMaXRlU3RvcmFnZUFyZWE6
OmFsbEl0ZW1zKCkKICAgICB9CiAKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKQotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmdldEFs
bEl0ZW1zIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJh
c2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0QWxsSXRlbXMg
ZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAKICAgICByZXR1cm4g
aXRlbXM7CiB9CkBAIC0zMTEsMTUgKzMwMywxNiBAQCBFeHBlY3RlZDx2b2lkLCBTdG9yYWdlRXJy
b3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSQog
CiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZTo6U2V0
SXRlbSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCgxLCBrZXkp
IHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMiwgdmFsdWUpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSBmYWlsZWQgb24gY3Jl
YXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2Rh
dGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3Jh
Z2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVt
ZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0
RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVy
cm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCiAgICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC0+c3Rl
cCgpOwogICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX0ZVTEwpCiAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OlF1b3RhRXhjZWVkZWQpOworCiAgICAgaWYgKHJlc3Vs
dCAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAi
U1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0ZW0gZmFpbGVkIG9uIHN0ZXBwaW5nIHN0YXRlbWVudCAo
JWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9y
TXNnKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFn
ZUFyZWE6OnNldEl0ZW0gZmFpbGVkIG9uIHN0ZXBwaW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwog
ICAgIH0KIApAQCAtMzUwLDcgKzM0Myw3IEBAIEV4cGVjdGVkPHZvaWQsIFN0b3JhZ2VFcnJvcj4g
U1FMaXRlU3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxCiAKICAg
ICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpEZWxldGVJ
dGVtKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGtleSkg
fHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpyZW1vdmVJdGVtIGZhaWxlZCBv
biBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigp
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6cmVtb3ZlSXRlbSBmYWlsZWQgb24gZXhlY3V0
aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRh
YmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KFN0b3JhZ2VFcnJvcjo6RGF0YWJhc2UpOwogICAgIH0KIApAQCAtMzgxLDcgKzM3NCw3IEBAIEV4
cGVjdGVkPHZvaWQsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyKElQQzo6
Q29ubmVjdGlvbjo6VW5pcXVlSUQKICAgICBzdGFydFRyYW5zYWN0aW9uSWZOZWNlc3NhcnkoKTsK
ICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpEZWxl
dGVBbGxJdGVtcyk7CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0
ZVN0b3JhZ2VBcmVhOjpjbGVhciBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQpIC0g
JXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkp
OworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6
OmNsZWFyIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJh
c2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRl
U3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxp
dGVTdG9yYWdlQXJlYS5oCmluZGV4IDUyY2M5ZDYwZTdlNWE1MzkxZmM4YzQ4M2ZiNjhjMjkwMzYw
OTcxNjAuLjYyNjNmMGY1ZWI2Y2NlMDVhZjMyMjYxOTc1YzdlMjA5YzMyMWI5MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9y
YWdlQXJlYS5oCkBAIC0yNiw4ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhQmFzZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApAQCAtNjYsMTYgKzY2LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIEludmFsaWQKICAgICB9
OwogICAgIEFTQ0lJTGl0ZXJhbCBzdGF0ZW1lbnRTdHJpbmcoU3RhdGVtZW50VHlwZSkgY29uc3Q7
Ci0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUgY2FjaGVkU3RhdGVt
ZW50KFN0YXRlbWVudFR5cGUpOworICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50
UmVzZXRTY29wZSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZSk7CiAgICAgRXhwZWN0ZWQ8
U3RyaW5nLCBTdG9yYWdlRXJyb3I+IGdldEl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIEV4
cGVjdGVkPFN0cmluZywgU3RvcmFnZUVycm9yPiBnZXRJdGVtRnJvbURhdGFiYXNlKGNvbnN0IFN0
cmluZyYga2V5KTsKIAogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9x
dWV1ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+IG1fZGF0
YWJhc2U7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uPiBt
X3RyYW5zYWN0aW9uOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50Pj4gbV9jYWNoZWRTdGF0ZW1lbnRzOwogICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4+IG1fY2FjaGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbj4gbV9kYXRhYmFzZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKKyAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50Pj4gbV9jYWNo
ZWRTdGF0ZW1lbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIzYzA2Y2FjNDYyZTg2YjVlMjc0Y2JmNTU1ZmIzNjFiNDVmZmYwNmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9s
ZGVyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCIKKworI2luY2x1ZGUg
IlByb2Nlc3NBc3NlcnRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlQWN0
aXZpdHlUcmFja2VyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8U1FMaXRlUHJvY2Vz
c0Fzc2VydGlvbkhvbGRlcj4gU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcjo6Y3JlYXRlKCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVy
KTsKK30KKwordm9pZCBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjp3aWxsQmVnaW5GaXJz
dEFjdGl2aXR5KCkKK3sKKyAgICBpZiAobV9hc3NlcnRpb24gJiYgbV9hc3NlcnRpb24tPmlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0
aW9uOjpjcmVhdGUoZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiTmV0d29yayBQcm9jZXNzIGlzIGhv
bGRpbmcgZGF0YWJhc2UgbG9jayJfcywgUHJvY2Vzc0Fzc2VydGlvblR5cGU6OkZpbmlzaFRhc2tJ
bnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKK30KKwordm9pZCBT
UUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpkaWRFbmRMYXN0QWN0aXZpdHkoKQoreworICAg
IG1fYXNzZXJ0aW9uID0gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTA5YTIzYmU4YTMxMjYzMjA1MWQ4ZTIzOWMwYmY5ZGE5Yzg0MWM1ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRp
b25Ib2xkZXIuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFByb2Nlc3NBc3NlcnRpb247CisKK2NsYXNzIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xk
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI+IGNy
ZWF0ZSgpOworICAgIHZvaWQgd2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpIGZpbmFsOworICAgIHZv
aWQgZGlkRW5kTGFzdEFjdGl2aXR5KCkgZmluYWw7Citwcml2YXRlOgorICAgIHZvaWQgZW5zdXJl
QXNzZXJ0aW9uKCk7CisgICAgdm9pZCByZWxlYXNlQXNzZXJ0aW9uKCk7CisKKyAgICBSZWZQdHI8
UHJvY2Vzc0Fzc2VydGlvbj4gbV9hc3NlcnRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYUZvcm1hdFJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCmluZGV4IGEzZmJiNzYwZTc3NjA0MDc4
ZDhlNTBjMTRjZGQ3ZDdjZWE2ZWI2ZDMuLjMxYThmMWJlMTQ1NWNhYzg0YzYzYmI2ZDQzZGZjMTQ4
NGJlNTRhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Xb3Jr
UXVldWUuaD4KIAorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2luY2x1
ZGUgPHBhbC9jb2NvYS9NZWRpYVRvb2xib3hTb2Z0TGluay5oPgogCiBXVEZfREVDTEFSRV9DRl9U
WVBFX1RSQUlUKE1UUGx1Z2luRm9ybWF0UmVhZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGJlYzFhM2Yx
MzRlMmRkMzkyMzYxMjc1MmE4OWQ4ODE1NzllMjBmODQuLjlhYmNiMjA1OTNhMjM4ZmE0Y2RhZmVl
M2I1MGJjMjliMTE4MTNkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjM5LDYgKzIzOSw3IEBAIFNoYXJl
ZC9QcmludEluZm8uY3BwCiBTaGFyZWQvUlRDTmV0d29yay5jcHAKIFNoYXJlZC9SVENQYWNrZXRP
cHRpb25zLmNwcAogU2hhcmVkL1JlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHAKK1No
YXJlZC9TUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcAogU2hhcmVkL1Njcm9sbGluZ0Fj
Y2VsZXJhdGlvbkN1cnZlLmNwcAogU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKIFNoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkMjA3YmE1ODFlYmQzNWE4OWE1MmYxZjY0N2Q5MjI0OWQ5ZGEyMTBk
Li5iM2Q2NmJhMjA2OTA5YTAyZjI0MDE3NTZhYjYyZWMwMWRiMWRjZDM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MDEsNiArMTUw
MSw3IEBACiAJCTkzQjYzMUYxMjdBQkFDQTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjYzMUVGMjdBQkFD
QTkwMDQ0M0E0NCAvKiBRdW90YU1hbmFnZXIuaCAqLzsgfTsKIAkJOTNCNjMxRjMyN0FCQUQ4MDAw
NDQzQTQ0IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNjMxRjIyN0FCQUQ3RjAwNDQzQTQ0
IC8qIFF1b3RhSW5jcmVhc2VSZXF1ZXN0SWRlbnRpZmllci5oICovOyB9OwogCQk5M0JERUIwMTE3
MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCREVCMDAxNzFERDdBRjAwQkZFRTFC
IC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5M0Q1REQyMDI3REE1NTU2MDAxMDdDNzUgLyogU1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENUREMUUyN0RBNTU1NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NB
c3NlcnRpb25Ib2xkZXIuaCAqLzsgfTsKIAkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuaCAqLzsgfTsKIAkJOTNENkI3NzMyNTRCQjhDNzAwNThERDNBIC8qIFdlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENkI3NjgyNTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5oICovOyB9OwogCQk5M0Q2Qjc4MjI1NENDQ0Y0MDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3ODEyNTRDQ0FCQzAwNThERDNB
IC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAg
LTU0NzEsNiArNTQ3Miw4IEBACiAJCTkzQkEwNEUwMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkEwNEUx
MjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdL
UGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
M0Q1REQxRTI3REE1NTU1MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9u
SG9sZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDFGMjdEQTU1NTUw
MDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc2NzI1NEI3QkM2MDA1OEREM0Eg
LyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzY4MjU0QjdCQzYwMDU4REQzQSAvKiBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRDZCNzY5MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNw
ZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTczOTIsNiArNzM5NSw4IEBACiAJCQkJODMxM0Y3RTcxRjdEQUUwMzAwQjk0NEVCIC8qIFNoYXJl
ZFN0cmluZ0hhc2hUYWJsZS5oICovLAogCQkJCTgzRjk2NDRCMUZBMEY3NjIwMEM0Nzc1MCAvKiBT
aGFyZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5jcHAgKi8sCiAJCQkJODNGOTY0NEMxRkEwRjc2
MzAwQzQ3NzUwIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmggKi8sCisJCQkJOTNE
NUREMUYyN0RBNTU1NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3Bw
ICovLAorCQkJCTkzRDVERDFFMjdEQTU1NTUwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0
aW9uSG9sZGVyLmggKi8sCiAJCQkJMUE1RTREQTMxMkQzQkQzRDAwOTlBMkJCIC8qIFRleHRDaGVj
a2VyU3RhdGUuaCAqLywKIAkJCQlGNEE3Q0U4NDI2NjdFQjRFMDAyMjg2ODUgLyogVGV4dFJlY29n
bml0aW9uVXBkYXRlUmVzdWx0LmggKi8sCiAJCQkJN0JFMzdGNkYyN0IxNDc1RjAwN0E2Q0QzIC8q
IFRocmVhZFNhZmVPYmplY3RIZWFwLmggKi8sCkBAIC0xMzU5Miw2ICsxMzU5Nyw3IEBACiAJCQkJ
OTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1NENDRDBFMDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODUyNTRDQ0Q0
MzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXNSZXBsaWVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0Q1REQyMDI3REE1NTU2MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vz
c0Fzc2VydGlvbkhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFNzk5REEyNzYxMjEwODAw
NzQwMDhBIC8qIFNRTGl0ZVN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTNGRUNB
MjIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBkODlkZDgwOThmZWRkYjNmODkxODY4NzlkZDZjMGYxNWZhNjFmYTU1Li40
OWY0YmQ4YzM5ZDk5YTkxZWZmYjhmMDFhN2YwOTU3OTRlNGZiY2E2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMjItMDMtMTcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWJvcnQgU1FMaXRlIGFjdGl2aXRpZXMgdG8gcmVsZWFzZSBmaWxlIGxvY2sgd2hlbiBw
cm9jZXNzIGlzIGFib3V0IHRvIHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzc1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0cyB0byBjaGVjayBpZiBmdW5jdGlvbiBleGlz
dHMgYmVmb3JlIGNhbGxpbmcuCisKKyAgICAgICAgKiBzdG9yYWdlL2RvbXN0b3JhZ2Uvc3RvcmFn
ZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9yZXNvdXJj
ZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHku
aHRtbDoKKwogMjAyMi0wMy0xNSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjI4MjczNyk6IGB0ZXh0LXNoYWRvd2AgaXMgY2xpcHBlZApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3N0b3JhZ2UtY2xvc2UtZGF0
YWJhc2Utb24taWRsZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdlL3N0b3Jh
Z2UtY2xvc2UtZGF0YWJhc2Utb24taWRsZS5odG1sCmluZGV4IDAzYTc2ZGE1YTNhYmE2ZDQ2OTNi
ZThkYjUzZTdhMGZlMmE3YWViZTQuLmJkMTgxZDc0ZTMxMWM1OWJjOTUwZWNmYWZmOGY4NjM5NTJm
ZjgwMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvZG9tc3RvcmFnZS9zdG9yYWdl
LWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2Rv
bXN0b3JhZ2Uvc3RvcmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxlLmh0bWwKQEAgLTIwLDcgKzIw
LDggQEAgZnVuY3Rpb24gbG9hZE5leHRQYWdlKCkKIGZ1bmN0aW9uIHJ1blRlc3QoKQogewogICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLnNldFN0b3JhZ2VE
YXRhYmFzZUlkbGVJbnRlcnZhbCgwKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyLnNl
dFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKDApOwogICAgICAgICB0ZXN0UnVubmVyLnNldENh
Y2hlTW9kZWwoMCk7IC8vIFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlci4KICAgICB9CiAKQEAg
LTQ2LDcgKzQ3LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgICAgICBsb2cod2luZG93
LmxvY2FsU3RvcmFnZVsnYmFyJ10gPT09ICdCQVInID8gJ1BBU1MnIDogJ0ZBSUwnKTsKIAogICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoMzAwKTsKKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKQor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRl
cnZhbCgzMDApOwogICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMt
aW1tZWRpYXRlbHkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvcmVzb3VyY2VzL3N0b3JhZ2Ut
Y2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0YWJhc2VzLWltbWVkaWF0ZWx5Lmh0bWwKaW5kZXgg
NGUwYTQ0NmUzZTQyMzRkZjkxYWE5ZTZhZGYyNmIwMzY4ZTU3YjRjYy4uN2IxNzM2MTY2ZTcxZDUx
ODMzMTBhMTlkMDNkNzdjOWUyMjIyNGZiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1t
ZWRpYXRlbHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL3Jlc291cmNlcy9zdG9yYWdl
LWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVseS5odG1sCkBAIC0y
LDcgKzIsNyBAQAogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBzd2luZ0JhY2soKSAKICAgICB7Ci0g
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIgJiYgd2luZG93LnRlc3RSdW5uZXIuY2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2Vz
KSB7CiAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5jbG9zZUlkbGVMb2NhbFN0b3JhZ2VE
YXRhYmFzZXMoKTsKICAgICAgICAgfQogICAgICAgICBsb2NhdGlvbi5ocmVmPScuLi9kb21zdG9y
YWdlL2xvY2Fsc3RvcmFnZS9jbG9zZS1pZGxlLWxvY2Fsc3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRp
YXRlbHkuaHRtbCc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455144</attachid>
            <date>2022-03-18 15:29:33 -0700</date>
            <delta_ts>2022-03-19 00:42:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237754-20220318152932.patch</filename>
            <type>text/plain</type>
            <size>95050</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTVjMDM1YTdmZDdiZmEx
NDRkNGM5MGY4ZGI1N2NjYzE1NjczNGI0ZS4uZDBjMTY2OTZiODFjYzZmNWY4YjI4ZTRlOGI0ZGM0
MzkyMDhhNmFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAyMi0wMy0xOCAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBBYm9ydCBTUUxpdGUgYWN0
aXZpdGllcyB0byByZWxlYXNlIGZpbGUgbG9jayB3aGVuIHByb2Nlc3MgaXMgYWJvdXQgdG8gc3Vz
cGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50
cm9kdWNlIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiBjbGFzcywgd2hpY2ggaXMgYSB3cmFwcGVy
IGFyb3VuZCBzcWxpdGUgb2JqZWN0cy4gVW5saWtlIFNRTGl0ZURhdGFiYXNlLAorICAgICAgICBT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gbm90IG9ubHkgb3ducyB0aGUgc3FsaXRlIGRhdGFiYXNl
IGNvbm5lY3Rpb24gKHNxbGl0ZTMpLCBidXQgYWxzbyB0aGUgdGhlIG90aGVyIHNxbGl0ZSAKKyAg
ICAgICAgb2JqZWN0cyAoc3FsaXRlM19zdG10KSByZWxhdGVkIHRvIHRoZSBjb25uZWN0aW9uLiBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudCBhbmQgU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbiBwb2lu
dHMKKyAgICAgICAgdG8gYSBzdGF0ZW1lbnQgYW5kIGEgdHJhbnNhY3Rpb24gYnkgcmVmZXJyaW5n
IHRvIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiB3aXRoIGFuIGlkZW50aWZpZXIuIFRoZXJlZm9y
ZSwKKyAgICAgICAgd2UgY2FuIGFib3J0IGFsbCBhY3RpdmllcyBvbiBhIGRhdGFiYXNlIGNvbm5l
Y3Rpb24gdmlhIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi4gU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uIGlzIAorICAgICAgICBjcm9zcy10aHJlYWQgY2xhc3M6IGl0IGFsbG93cyB1cyB0byBwZXJm
b3JtIG9wZXJhdGlvbnMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCBhbmQgc3luY2hyb25vdXNseSBh
Ym9ydCBhY3RpdmllcyAKKyAgICAgICAgb24gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIFRv
IHByZXBhcmUgcHJvY2VzcyBmb3Igc3VzcGVuc2lvbiwgd2UgYWxzbyBuZWVkIGEgd2F5IHRvIHBy
ZXZlbnQgZGF0YWJhc2UgY29ubmVjdGlvbiBmcm9tIHBlcmZvcm1pbmcgb3BlcmF0aW9uCisgICAg
ICAgIGFmdGVyIHdlIGFib3J0IGl0cyBleGlzdGluZyBhY3Rpdml0aWVzLCBhbmQgcHJldmVudCBu
ZXcgZGF0YWJhc2UgY29ubmVjdGlvbiBmcm9tIGJlaW5nIGNyZWF0ZWQgb3Igb3BlbmVkLCBzbyB3
ZQorICAgICAgICBpbnRyb2R1Y2UgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuIFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyIGlzIGEgc2luZ2xldG9uIHRoYXQgbW9uaXRvcnMgYWxs
IGV4aXN0aW5nCisgICAgICAgIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbiBpbnN0YW5jZXMuIEZv
ciBleGlzdGluZyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gaW5zdGFuY2VzLCB3aGVuIHByb2Nl
c3MgaXMgYWJvdXQgdG8KKyAgICAgICAgc3VzcGVuZCwgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXIgd2lsbCBhYm9ydCB0aGVpciBhY3RpdmllcyBhbmQgc2V0IHRoZWlyIHN0YXRlIHRvIGlu
YWN0aXZlLiAKKyAgICAgICAgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uIGNhbiBvbmx5IHBlcmZv
cm0gb3BlcmF0aW9uIChpbnZva2Ugc3FsaXRlIGZ1bmN0aW9ucykgdGhhdCByZXF1aXJlcyBmaWxl
IGxvY2sgd2hlbiBpdHMgCisgICAgICAgIHN0YXRlIGlzIGFjdGl2ZTsgaWYgaXQgaXMgbm90IGFj
dGl2ZSwgaXQgcmV0dXJucyBlcnJvciB3aXRob3V0IGV4ZWN1dGlvbi4gRm9yIG5ldyBTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb24gCisgICAgICAgIGluc3RhbmNlIHRoYXQgaXMgY3JlYXRlZCBhZnRl
ciBwcmVwYXJhdGlvbiwgaXQgbmVlZHMgU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIncyBs
b2NrIHdoZW4gcmVnaXN0ZXJpbmcgCisgICAgICAgIGl0c2VsZiB0byBTUUxpdGVEYXRhYmFzZUFj
dGl2aXR5VHJhY2tlciwgc28gd2UgY2FuIGp1c3QgaG9sZCB0aGUgbG9jayBhbmQgbm90IHJlbGVh
c2UgaXQgdW50aWwgcHJvY2VzcyByZXN1bWVzLiAKKyAgICAgICAgSW4gdGhpcyB3YXksIG5vIG5l
dyBzcWxpdGUgZGF0YWJhc2UgY29ubmVjdGlvbiBjYW4gYmUgb3BlbmVkIGR1cmluZyBwcm9jZXNz
IHN1c3BlbnNpb24uCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpz
aW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXI6OnNldEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRy
YWNrZXI6OmJlZ2luQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VB
Y3Rpdml0eVRyYWNrZXI6OmVuZEFjdGl2aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyOjpjaGVja0xhc3RBY3Rpdml0eVRpbWVzdGFtcCk6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcklt
cGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJh
Y2tlckltcGw6On5TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6
Om5leHRUcmFuc2FjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6
ZVNRTGl0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OlNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246On5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpvcGVuRnJvbUFjdGl2aXR5VHJhY2tlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNsb3NlRnJvbUFjdGl2aXR5
VHJhY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJl
Z2luQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjplbmRBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmludmFsaWRhdGVBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OnNldElzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbjo6aXNPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6ZW5hYmxlRXh0ZW5kZWRSZXN1bHRDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5hYmxlSW5NZW1vcnlUZW1wU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVXQUxKb3VybmFs
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja3BvaW50TW9kZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZVdBTENoZWNrcG9pbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVJbnRl
cm5hbFN0YXRlbWVudEFuZFByZXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2VDb25uZWN0aW9uOjpkZXN0cm95SW50ZXJuYWxTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpsYXN0Q2hhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246Omxhc3RFcnJvck1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjp0YWJsZUNyZWF0aW9uUXVlcnkp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpleGVjdXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6c2V0TWF4aW11bVNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpwYWdlU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnJlbGVhc2VN
ZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVh
dGVTdGF0ZW1lbnRBbmRQcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbjo6YmluZEJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VD
b25uZWN0aW9uOjpiaW5kVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OmNvbHVtbkJsb2JBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246OmNvbHVtbkludCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246OmNvbHVtblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpyZXNldFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OnN0ZXBTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpkZXN0cm95U3RhdGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlVHJhbnNhY3Rpb25BbmRC
ZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNvbW1p
dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6cm9sbGJhY2tUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb246OmlzT25nb2luZ1RyYW5zYWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppbk1lbW9yeVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpwYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6V1RGX0dVQVJERURfQllfTE9DSyk6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6On5T
UUxpdGVEYXRhYmFzZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudDo6YmluZEJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OmJpbmRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3Rh
dGVtZW50Ojpjb2x1bW5CbG9iQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtbkludCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudDo6Y29sdW1uVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQ6OnN0ZXApOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0
YXRlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnRSZXNldFNjb3BlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3Bl
Ojp+U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZTo6b3BlcmF0b3IgYm9v
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0
U2NvcGU6Om9wZXJhdG9yISBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZVN0YXRlbWVudFJlc2V0U2NvcGU6Om9wZXJhdG9yLT4pOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246On5TUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
bnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5z
YWN0aW9uOjpyb2xsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5z
YWN0aW9uOjppc09uZ29pbmdUcmFuc2FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaDogQWRkZWQuCisKIDIwMjItMDMtMTggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBleHRyYSBwb2ludGVyIGRl
cmVmZXJlbmNlIGluIEV2ZW50TGlzdGVuZXJNYXA6Om1fZW50cmllcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MTM3
ODk0NWIxOWUwM2ZkYzgyMzM3NjU1ZGU5MDBiODhkNzU3ZWRjLi5lMWJkNDQ1MjI5ZjhjMGNlYjU0
NTI4ZGY0NGRiOGIxNzUwN2YzNTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTAz
LTE4ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEFib3J0IFNR
TGl0ZSBhY3Rpdml0aWVzIHRvIHJlbGVhc2UgZmlsZSBsb2NrIHdoZW4gcHJvY2VzcyBpcyBhYm91
dCB0byBzdXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzc3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbnRyb2R1Y2UgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlciB3aGljaCBhY3F1aXJl
cyBhc3NlcnRpb24gd2hlbiBmaXJzdCBkYXRhYmFzZSBhY3Rpdml0eSBzdGFydHMgYW5kIHJlbGVh
c2UKKyAgICAgICAgYXNzZXJ0aW9uIHdoZW4gbGFzdCBkYXRhYmFzZSBhY3Rpdml0eSBlbmRzLiBB
ZG9wdCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24gYW5kIGl0cyByZWxhdGVkIGNsYXNzZXMgaW4g
CisgICAgICAgIExvY2FsU3RvcmFnZSBiYWNrZW5kLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjptX21lc3NhZ2VQb3J0Q2hh
bm5lbFJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZENsb3Nl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6c3VzcGVuZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNRTGl0ZVN0b3JhZ2VBcmVhOjppc0VtcHR5KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3Rv
cmFnZUFyZWE6OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpTUUxp
dGVTdG9yYWdlQXJlYTo6cHJlcGFyZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRl
U3RvcmFnZUFyZWE6OnN0YXJ0VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJL
aXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZSk6CisgICAgICAgIChXZWJL
aXQ6OlNRTGl0ZVN0b3JhZ2VBcmVhOjphbGxJdGVtcyk6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0
ZVN0b3JhZ2VBcmVhOjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlU3RvcmFnZUFy
ZWE6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVTdG9yYWdlQXJlYTo6Y2xl
YXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEu
aDoKKyAgICAgICAgKiBTaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyOjp3aWxs
QmVnaW5GaXJzdEFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlUHJvY2Vzc0Fzc2Vy
dGlvbkhvbGRlcjo6ZGlkRW5kTGFzdEFjdGl2aXR5KToKKyAgICAgICAgKiBTaGFyZWQvU1FMaXRl
UHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAy
Mi0wMy0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcHVz
aCBzdWJzY3JpcHRpb25zIHdoZW4gYXNzb2NpYXRlZCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRp
b25zIGFyZSByZW1vdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAyZGVkMDk3Y2FhNmEzMTRkODVk
ZTUzMTA4YTg1MGRhNTE4YzQ4OWZjLi45MzFjM2FiYzU1MTQ3YTQ4NGM2OGJkNDMxYzRjNDJkOWRm
NjYwZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE3ODMsOCArMTc4MywxNCBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAgICBwbGF0Zm9ybS9zcWwvU1FMVmFs
dWUuaAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisgICAgcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgKKyAgICBwbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmgKKyAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uLmgKKyAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnQuaAorICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUu
aAogICAgIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaAogICAgIHBsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAorICAgIHBsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgKICAgICBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3Rl
bS5oCiAgICAgcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCiAgICAgcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDNjYzEy
ZjdjMjU5YTUwNjZmYjMzMzlmZjhmMjI0ZWY2YTg2Y2ZiOS4uZjE3N2M5ZWNkZDgyYzllNTQyYzhk
MDJmY2VkZmY3NDhlZjQ3YzIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIyNTMsNyArMjI1MywxMSBA
QCBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAogcGxhdGZvcm0v
bmV0d29yay9UaW1pbmdBbGxvd09yaWdpbi5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVBdXRob3Jp
emVyLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcAorcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlQ29ubmVjdGlvbi5jcHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5j
cHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCitwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKIHBsYXRmb3JtL3NxbC9T
UUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NDBmODljZjFmMzQyZDhlNDVh
NjZjODhmMzY1YjY1OGU4ZDBkODMyLi40NjA5MmViMDYyZjM5OTNjYjkzMDFjZmJiMjEwMzA4NTY0
MDVlNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zMDMwLDYgKzMwMzAsMTIgQEAKIAkJOTNENDM3QTAxRDU3QjE5QTAwQUI4
NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU2QzlBODFDODkzMTI4MDBDNDU2REYgLyogQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMjFENTdCM0ZFMDBBQjg1RUEgLyogVVJMRGVjb21w
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU2QjlEQ0ExODlERTEwMDAwQkI4NDJDIC8qIFVSTERlY29tcG9zaXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q0MzdBMzFENTdCN0Uy
MDBBQjg1RUEgLyogSlNNZWRpYUxpc3RDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENzI2RkU3MTZEOUYyMDQwMDNBNEU2RCAvKiBKU01lZGlh
TGlzdEN1c3RvbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTkzRDVERDQyMjdEQkZGMEIwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENURE
MzgyN0RCRkYwMzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENURENDQyN0RCRkYw
QjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDVERDNBMjdEQkZGMDQwMDEwN0M3NSAv
KiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENURENDUyN0RCRkYwQjAwMTA3Qzc1IC8qIFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENUREM0IyN0RCRkYwNTAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTkzRDVERDQ3MjdEQkZGMEIwMDEwN0M3NSAvKiBTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRDVERDNEMjdEQkZGMDgwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5M0Q1REQ0ODI3REJGRjBDMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNr
ZXJJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0Q1REQzRTI3REJGRjA5MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJ
bXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OTNENURENDkyN0RCRkYwQzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQz
RjI3REJGRjBBMDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q2Qjc3MDI1
NEI5OEEwMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3NkYyNTRCOTAyRDAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Q2Qjc3MTI1NEJBQjQ1MDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZEMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzRDZCN0E4MjU1MUQ0MUYwMDU4REQzQSAvKiBEdW1teVNwZWVjaFJlY29n
bml0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRDZCN0E2MjU1MUQzRUQwMDU4REQzQSAvKiBEdW1teVNwZWVjaFJlY29nbml0aW9u
UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTI4OTMsNiArMTI4OTksMTYgQEAKIAkJOTNEMDUwMzEyNTNBMTQ4QzAwMkEzMDcyIC8q
IEFic3RyYWN0UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RSYW5nZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDE5NjMwMUQ2Q0FCNzYwMEZDN0U0NyAv
KiBFeGNlcHRpb25Pci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNlcHRp
b25Pci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0QxOTYzMjFENkNBQjgyMDBG
QzdFNDcgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzNzI3REJGRjAz
MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDM4MjdEQkZGMDMwMDEwN0M3NSAvKiBTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
M0Q1REQzOTI3REJGRjA0MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxpdGVEYXRhYmFzZVRyYW5z
YWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENUREM0EyN0RCRkYw
NDAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzQjI3REJGRjA1MDAxMDdDNzUgLyogU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5M0Q1REQzQzI3REJGRjA3MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VT
dGF0ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1
REQzRDI3REJGRjA4MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzRTI3REJGRjA5MDAxMDdDNzUgLyog
U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q1REQzRjI3REJGRjBBMDAxMDdDNzUgLyogU1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNENURENDAyN0RCRkYwQTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQWN0aXZp
dHlUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0
ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNENkI3NkQyNTRCOEUxQjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRDZCNzZFMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzZGMjU0QjkwMkQwMDU4
REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE5NTYxLDkgKzE5NTc3LDE5IEBACiAJCQkJMUEyRTZFNzgwQ0M1NTZENTAwNEEyMDYyIC8q
IFNRTGl0ZUF1dGhvcml6ZXIuY3BwICovLAogCQkJCTFBMjI0NjQzMENDOThEREIwMEMwNTI0MCAv
KiBTUUxpdGVEYXRhYmFzZS5jcHAgKi8sCiAJCQkJMUEyMjQ2NDQwQ0M5OEREQjAwQzA1MjQwIC8q
IFNRTGl0ZURhdGFiYXNlLmggKi8sCisJCQkJOTNENURENDAyN0RCRkYwQTAwMTA3Qzc1IC8qIFNR
TGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmNwcCAqLywKKwkJCQk5M0Q1REQzRjI3REJGRjBB
MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCAqLywKKwkJCQk5M0Q1
REQzRTI3REJGRjA5MDAxMDdDNzUgLyogU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBs
LmggKi8sCisJCQkJOTNENUREMzcyN0RCRkYwMzAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbi5jcHAgKi8sCisJCQkJOTNENUREM0QyN0RCRkYwODAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbi5oICovLAorCQkJCTkzRDVERDNDMjdEQkZGMDcwMDEwN0M3NSAvKiBT
UUxpdGVEYXRhYmFzZVN0YXRlbWVudC5jcHAgKi8sCisJCQkJOTNENUREMzgyN0RCRkYwMzAwMTA3
Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmggKi8sCisJCQkJOTNENUREM0IyN0RCRkYw
NTAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oICovLAogCQkJ
CTdFNDc0RTFEMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwICov
LAogCQkJCTdFNDc0RTFDMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aCAqLywKIAkJCQk3RTQ3NEUxQjEyNDk0REM5MDAyMzUzNjQgLyogU1FMaXRlRGF0YWJhc2VUcmFj
a2VyQ2xpZW50LmggKi8sCisJCQkJOTNENUREMzkyN0RCRkYwNDAwMTA3Qzc1IC8qIFNRTGl0ZURh
dGFiYXNlVHJhbnNhY3Rpb24uY3BwICovLAorCQkJCTkzRDVERDNBMjdEQkZGMDQwMDEwN0M3NSAv
KiBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi8sCiAJCQkJQjVBNjg0MjMwRkZBQkVBQTAw
RDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwICovLAogCQkJCUI1QTY4NDIxMEZGQUJFOTgw
MEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggKi8sCiAJCQkJMUEyMjQ2NDUwQ0M5OEREQjAw
QzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCkBAIC0zNzQyMyw4ICszNzQ0OSwxNCBA
QAogCQkJCTk3QkM2QTNCMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxDYWxsYmFja1dyYXBwZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3QkM2QTNDMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxFcnJvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMjQ2NEEwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZURh
dGFiYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q1REQ0OTI3REJGRjBDMDAxMDdDNzUgLyog
U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDVE
RDQ4MjdEQkZGMEMwMDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDVERDQ3MjdEQkZGMEIwMDEwN0M3NSAvKiBTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDVERDQyMjdEQkZGMEIw
MDEwN0M3NSAvKiBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTNENURENDUyN0RCRkYwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0NzRFMUYxMjQ5NERDOTAwMjM1MzY0IC8qIFNR
TGl0ZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0NzRFMUUxMjQ5NERD
OTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNENURENDQyN0RCRkYwQjAwMTA3Qzc1IC8qIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUI1QTY4NDIyMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxp
dGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0
REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFFQzEz
MDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2VBY3Rpdml0eVRyYWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjNjU1MDBiOGE0ZWQ1MzA4YTczZDlk
OTlmNjA3YmYzODlhYmQ3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuY3BwCkBAIC0wLDAgKzEsMTE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyLmgiCisKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlckltcGwuaCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyJiBTUUxpdGVEYXRhYmFz
ZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyPiB0cmFja2VyOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
WyZdIHsKKyAgICAgICAgdHJhY2tlci5jb25zdHJ1Y3QoKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
dHJhY2tlci5nZXQoKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6
c2V0SW1wbChjb25zdCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGxHZW5lcmF0b3Im
IGdlbmVyYXRvcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBtX2lt
cGwgPSBnZW5lcmF0b3IoKS5wdHIoKTsKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlcjo6YmVnaW5BY3Rpdml0eShTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgbV9sYXN0QWN0aXZp
dHlUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCk7CisgICAgaWYgKG1faW1wbCAmJiBtX2FjdGl2
ZUNvbm5lY3Rpb25zLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgbV9pbXBsLT53aWxsQmVnaW5G
aXJzdEFjdGl2aXR5KCk7CisKKyAgICBtX2FjdGl2ZUNvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9u
KTsKKyAgICBjb25uZWN0aW9uLm9wZW5Gcm9tQWN0aXZpdHlUcmFja2VyKCk7Cit9CisKK3ZvaWQg
U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXI6OmVuZEFjdGl2aXR5KFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CisKKyAgICBtX2FjdGl2ZUNvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKTsKKyAgICBjb25u
ZWN0aW9uLmNsb3NlRnJvbUFjdGl2aXR5VHJhY2tlcigpOworICAgIGlmICghbV9hY3RpdmVDb25u
ZWN0aW9ucy5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdEFj
dGl2aXR5VGltZXN0YW1wID0gV2FsbFRpbWU6Om5vdygpOworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaEFmdGVyKDFfcywgW3RpbWVzdGFtcCA9IG1fbGFzdEFjdGl2aXR5VGltZXN0YW1wXSB7
CisgICAgICAgIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5jaGVj
a0xhc3RBY3Rpdml0eVRpbWVzdGFtcCh0aW1lc3RhbXApOworICAgIH0pOworfQorCit2b2lkIFNR
TGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpjaGVja0xhc3RBY3Rpdml0eVRpbWVzdGFtcChX
YWxsVGltZSB0aW1lc3RhbXApCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisg
ICAgaWYgKG1faW1wbCAmJiBtX2xhc3RBY3Rpdml0eVRpbWVzdGFtcCA9PSB0aW1lc3RhbXApCisg
ICAgICAgIG1faW1wbC0+ZGlkRW5kTGFzdEFjdGl2aXR5KCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0
YWJhc2VBY3Rpdml0eVRyYWNrZXI6OnN1c3BlbmQoKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZ
X0FOQUxZU0lTCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIW1f
aXNTdXNwZW5kZWQpOworICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOworCisgICAgLy8gV2Ugd2ls
bCBob2xkIHRoZSBsb2NrIHRvIHByZXZlbnQgbmV3IGRhdGFiYXNlIGFjdGl2aXRpZXMgdW50aWwg
cmVzdW1lKCkuCisgICAgbV9sb2NrLmxvY2soKTsKKworICAgIGZvciAoYXV0byYgY29ubmVjdGlv
biA6IG1fYWN0aXZlQ29ubmVjdGlvbnMpCisgICAgICAgIGNvbm5lY3Rpb24uaW52YWxpZGF0ZUFj
dGl2aXR5KCk7CisKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwtPmRpZEVuZExhc3RB
Y3Rpdml0eSgpOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpyZXN1
bWUoKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIGlmICghbV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOworICAgIGlmIChtX2ltcGwpCisgICAgICAg
IG1faW1wbC0+d2lsbEJlZ2luRmlyc3RBY3Rpdml0eSgpOworCisgICAgZm9yIChhdXRvJiBjb25u
ZWN0aW9uIDogbV9hY3RpdmVDb25uZWN0aW9ucykKKyAgICAgICAgY29ubmVjdGlvbi5zZXRJc0Fj
dGl2ZSh0cnVlKTsKKworICAgIG1fbG9jay51bmxvY2soKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWZjODVlYmM4OWY3ZWZl
ZmMwMDc4MWE1MzliNDE0Mzg4NTY3Y2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmgKQEAgLTAsMCAr
MSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRl
RGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsOworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUFjdGl2
aXR5VHJhY2tlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNRTGl0ZURh
dGFiYXNlQWN0aXZpdHlUcmFja2VyJiBzaW5nbGV0b24oKTsKKyAgICB2b2lkIGJlZ2luQWN0aXZp
dHkoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJik7CisgICAgdm9pZCBlbmRBY3Rpdml0eShTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb24mKTsKKyAgICB1c2luZyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlckltcGxHZW5lcmF0b3IgPSBGdW5jdGlvbjxSZWY8U1FMaXRlRGF0YWJhc2VBY3Rpdml0
eVRyYWNrZXJJbXBsPigpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltcGwoY29uc3Qg
U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsR2VuZXJhdG9yJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzdXNwZW5kKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWUo
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNoZWNrTGFzdEFjdGl2aXR5VGltZXN0YW1wKFdhbGxU
aW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGVBbGxBY3Rpdml0aWVzKCk7
CisKKyAgICBMb2NrIG1fbG9jazsKKyAgICBXYWxsVGltZSBtX2xhc3RBY3Rpdml0eVRpbWVzdGFt
cCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CisgICAgV2Vha0hhc2hTZXQ8U1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uPiBtX2FjdGl2ZUNvbm5lY3Rpb25zIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9sb2NrKTsKKyAgICBSZWZQdHI8U1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJbXBsPiBt
X2ltcGwgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIGJvb2wgbV9pc1N1c3BlbmRl
ZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VBY3Rpdml0
eVRyYWNrZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTEyNDcwMTc1ZTQwMzE3MjAxMDVlZjcwNjRlNTNk
OWI3ZTE5ZWVhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwuaApAQCAtMCwwICsxLDM5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFj
a2VySW1wbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
SW1wbD4geworcHVibGljOgorICAgIHZpcnR1YWwgflNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFj
a2VySW1wbCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5GaXJzdEFjdGl2aXR5KCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRMYXN0QWN0aXZpdHkoKSA9IDA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NTcxNzkw
OWNmMDM1OTljOGZlZGYyODFmMDlkNGEwNjUwMWYzNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uLmNwcApAQCAt
MCwwICsxLDU4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlci5oIgorI2luY2x1ZGUgIlNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlv
bi5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IHVpbnQ2NF90IG5leHRTdGF0ZW1lbnRJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgc3RkOjph
dG9taWM8dWludDY0X3Q+IGN1cnJlbnRTdGF0ZW1lbnRJZGVudGlmaWVyOworICAgIHJldHVybiAr
K2N1cnJlbnRTdGF0ZW1lbnRJZGVudGlmaWVyOworfQorCitzdGF0aWMgdWludDY0X3QgbmV4dFRy
YW5zYWN0aW9uSWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90
PiBjdXJyZW50VHJhbnNhY3Rpb25JZGVudGlmaWVyOworICAgIHJldHVybiArK2N1cnJlbnRUcmFu
c2FjdGlvbklkZW50aWZpZXI7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVTUUxpdGUoKQor
eworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBmbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGZs
YWcsIFtdIHsKKyAgICAgICAgaWYgKGludCByZXN1bHQgPSBzcWxpdGUzX2luaXRpYWxpemUoKTsg
cmVzdWx0ICE9IFNRTElURV9PSykKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNRTERh
dGFiYXNlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgc3FsaXRlOiAlcyIsIHNxbGl0ZTNfZXJyc3Ry
KHJlc3VsdCkpOworICAgIH0pOworfQorCitSZWY8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wg
c2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbihwYXRoLCBzaG91bGRDb21taXRUcmFuc2FjdGlv
bkF0Q2xvc2UpKTsKK30KKworU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpTUUxpdGVEYXRhYmFz
ZUNvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNob3VsZENvbW1pdFRyYW5zYWN0
aW9uQXRDbG9zZSkKKyAgICA6IG1fcGF0aChwYXRoKQorICAgICwgbV9zaG91bGRDb21taXRUcmFu
c2FjdGlvbkF0Q2xvc2Uoc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKQoreworICAgIGlu
aXRpYWxpemVTUUxpdGUoKTsKKyAgICBiZWdpbkFjdGl2aXR5KCk7CisKKyAgICBlbmFibGVFeHRl
bmRlZFJlc3VsdENvZGUoKTsKKyAgICBlbmFibGVJbk1lbW9yeVRlbXBTdG9yZSgpOworICAgIGlm
IChlbmFibGVXQUxKb3VybmFsTW9kZSgpKQorICAgICAgICBleGVjdXRlV0FMQ2hlY2twb2ludChD
aGVja3BvaW50TW9kZTo6VHJ1bmNhdGUpOworfQorCitTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246
On5TUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24oKQoreworICAgIGVuZEFjdGl2aXR5KCk7Cit9CisK
K2Jvb2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpvcGVuRnJvbUFjdGl2aXR5VHJhY2tlcigp
Cit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgbV9pc0FjdGl2ZSA9IHRy
dWU7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIGluLW1lbW9yeSBkYXRhYmFzZS4K
KyAgICBpZiAobV9wYXRoID09IGluTWVtb3J5UGF0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpbnQgb3BlbkZsYWdzID0gKFNRTElURV9PUEVOX0FVVE9QUk9YWSB8IFNRTElURV9P
UEVOX1JFQURXUklURSkgfCBTUUxJVEVfT1BFTl9DUkVBVEU7CisgICAgaW50IHJlc3VsdCA9IHNx
bGl0ZTNfb3Blbl92MihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV9wYXRo
KS5kYXRhKCksICZtX3NxbGl0ZUNvbm5lY3Rpb24sIG9wZW5GbGFncywgbnVsbHB0cik7CisgICAg
aWYgKHJlc3VsdCAhPSBTUUxJVEVfT0sgfHwgIW1fc3FsaXRlQ29ubmVjdGlvbikgeworICAgICAg
ICBtX3NxbGl0ZUNvbm5lY3Rpb24gPSBudWxscHRyOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0
aW9uOjppbnRlcnJ1cHRXaXRoTG9ja0hlbGQoKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FO
QUxZU0lTCit7CisgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CisKKyAgICBzcWxpdGUzX2lu
dGVycnVwdChtX3NxbGl0ZUNvbm5lY3Rpb24pOworICAgIGlmICghc3FsaXRlM19nZXRfYXV0b2Nv
bW1pdChtX3NxbGl0ZUNvbm5lY3Rpb24pKSB7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBxdWVyeSA9
ICJST0xMQkFDSyJfczsKKyAgICAgICAgaWYgKG1fc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENs
b3NlKQorICAgICAgICAgICAgcXVlcnkgPSAiQ09NTUlUIl9zOworICAgICAgICBzcWxpdGUzX3N0
bXQqIHN0YXRlbWVudCB7IG51bGxwdHIgfTsKKyAgICAgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNf
cHJlcGFyZV92MihtX3NxbGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5LmNoYXJhY3RlcnMoKSwgcXVlcnku
bGVuZ3RoKCkgKyAxLCAmc3RhdGVtZW50LCBudWxscHRyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9
PSBTUUxJVEVfT0spCisgICAgICAgICAgICByZXN1bHQgPSBzcWxpdGUzX3N0ZXAoc3RhdGVtZW50
KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFNRTERhdGFiYXNlLCAiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppbnRl
cnJ1cHRXaXRoTG9ja0hlbGQ6IGZhaWxlZCB0byByb2xsIGJhY2sgdHJhbnNhY3Rpb24gKCVkKSAt
ICglcykiLCByZXN1bHQsIHNxbGl0ZTNfZXJybXNnKG1fc3FsaXRlQ29ubmVjdGlvbikpOworICAg
ICAgICBzcWxpdGUzX3Jlc2V0KHN0YXRlbWVudCk7CisgICAgICAgIHNxbGl0ZTNfZmluYWxpemUo
c3RhdGVtZW50KTsKKyAgICAgICAgbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3Rk
OjpudWxsb3B0OworICAgIH0KKyAgICAKK30KKwordm9pZCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmNsb3NlRnJvbUFjdGl2aXR5VHJhY2tlcigpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OworCisgICAgQVNTRVJUKG1faXNBY3RpdmUpOworICAgIGlmICghbV9zcWxpdGVDb25u
ZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnRlcnJ1cHRXaXRoTG9ja0hlbGQoKTsK
KworICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogbV9zdGF0ZW1lbnRzLnZhbHVlcygpKSB7Cisg
ICAgICAgIHNxbGl0ZTNfcmVzZXQoc3RhdGVtZW50LnNxbGl0ZVN0YXRlbWVudCk7CisgICAgICAg
IHNxbGl0ZTNfZmluYWxpemUoc3RhdGVtZW50LnNxbGl0ZVN0YXRlbWVudCk7CisgICAgfQorCisg
ICAgbV9zdGF0ZW1lbnRzLmNsZWFyKCk7CisgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfY2xvc2Uo
bV9zcWxpdGVDb25uZWN0aW9uKTsKKyAgICBpZiAocmVzdWx0ICE9IFNRTElURV9PSykKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmNsb3NlOiBmYWlsZWQgdG8gY2xvc2UgZGF0YWJhc2UgKCVkKSAtICVzIiwgcmVzdWx0LCBz
cWxpdGUzX2Vycm1zZyhtX3NxbGl0ZUNvbm5lY3Rpb24pKTsKKworICAgIG1fc3FsaXRlQ29ubmVj
dGlvbiA9IG51bGxwdHI7CisgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOworfQorCit2b2lkIFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6YmVnaW5BY3Rpdml0eSgpCit7CisgICAgU1FMaXRlRGF0YWJh
c2VBY3Rpdml0eVRyYWNrZXI6OnNpbmdsZXRvbigpLmJlZ2luQWN0aXZpdHkoKnRoaXMpOworfQor
Cit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZW5kQWN0aXZpdHkoKQoreworICAgIFNR
TGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5lbmRBY3Rpdml0eSgqdGhp
cyk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjppbnZhbGlkYXRlQWN0aXZp
dHkoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIGludGVycnVwdFdp
dGhMb2NrSGVsZCgpOworICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKK30KKwordm9pZCBTUUxpdGVE
YXRhYmFzZUNvbm5lY3Rpb246OnNldElzQWN0aXZlKGJvb2wgdmFsdWUpCit7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OworCisgICAgbV9pc0FjdGl2ZSA9IHZhbHVlOworfQorCitib29s
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6aXNPcGVuKCkKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisKKyAgICByZXR1cm4gISFtX3NxbGl0ZUNvbm5lY3Rpb247Cit9CisKK2Jv
b2wgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjplbmFibGVFeHRlbmRlZFJlc3VsdENvZGUoKQor
eworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAgIHJldHVybiAhIW1fc3FsaXRl
Q29ubmVjdGlvbiAmJiBzcWxpdGUzX2V4dGVuZGVkX3Jlc3VsdF9jb2RlcyhtX3NxbGl0ZUNvbm5l
Y3Rpb24sIDEpID09IFNRTElURV9PSzsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rp
b246OmVuYWJsZUluTWVtb3J5VGVtcFN0b3JlKCkKK3sKKyAgICByZXR1cm4gZXhlY3V0ZSgiUFJB
R01BIHRlbXBfc3RvcmUgPSBNRU1PUlkiKTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5l
Y3Rpb246OmVuYWJsZVdBTEpvdXJuYWxNb2RlKCkKK3sKKyAgICBhdXRvIG9wdGlvbmFsSWRlbnRp
ZmllciA9IGNyZWF0ZUludGVybmFsU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHsgIlBS
QUdNQSBqb3VybmFsX21vZGU9V0FMIl9zIH0pOworICAgIGlmICghb3B0aW9uYWxJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9u
YWxJZGVudGlmaWVyOworICAgIGJvb2wgZW5hYmxlZCA9IGZhbHNlOworICAgIGlmIChzdGVwU3Rh
dGVtZW50KGlkZW50aWZpZXIpID09IFNRTElURV9ST1cpCisgICAgICAgIGVuYWJsZWQgPSBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb2x1bW5UZXh0KGlkZW50aWZpZXIsIDApLCAid2Fs
Iik7CisgICAgZGVzdHJveUludGVybmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworCisgICAgaWYg
KGVuYWJsZWQpIHsKKyAgICAgICAgYXV0byBzaG1QYXRoID0gbWFrZVN0cmluZyhtX3BhdGgsICIt
c2htIl9zKTsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc2htUGF0aCkgJiYg
IUZpbGVTeXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHNobVBhdGgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBlbmFibGVkOworfQor
CitzdGF0aWMgaW50IGNoZWNrcG9pbnRNb2RlVmFsdWUoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpDaGVja3BvaW50TW9kZSBtb2RlKQoreworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2Ug
U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpDaGVja3BvaW50TW9kZTo6RnVsbDoKKyAgICAgICAg
cmV0dXJuIFNRTElURV9DSEVDS1BPSU5UX0ZVTEw7CisgICAgY2FzZSBTUUxpdGVEYXRhYmFzZUNv
bm5lY3Rpb246OkNoZWNrcG9pbnRNb2RlOjpUcnVuY2F0ZToKKyAgICAgICAgcmV0dXJuIFNRTElU
RV9DSEVDS1BPSU5UX1RSVU5DQVRFOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCitib29sIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6ZXhlY3V0ZVdBTENo
ZWNrcG9pbnQoQ2hlY2twb2ludE1vZGUgbW9kZSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CisKKyAgICBpZiAoIW1faXNBY3RpdmUgfHwgIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNxbGl0ZTNfd2FsX2NoZWNrcG9pbnRf
djIobV9zcWxpdGVDb25uZWN0aW9uLCBudWxscHRyLCBjaGVja3BvaW50TW9kZVZhbHVlKG1vZGUp
LCBudWxscHRyLCBudWxscHRyKSA9PSBTUUxJVEVfT0s7Cit9CisKK3N0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRB
bmRQcmVwYXJlKFN0cmluZ1ZpZXcgcXVlcnkpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OworCisgICAgaWYgKCFtX2lzQWN0aXZlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBzcWxpdGUzX3N0bXQqIHNxbGl0ZVN0YXRlbWVudCB7IG51bGxwdHIgfTsK
KyAgICBjb25zdCBjaGFyKiB0YWlsID0gbnVsbHB0cjsKKyAgICBpbnQgcmVzdWx0OworICAgIGlm
IChxdWVyeS5pczhCaXQoKSAmJiBxdWVyeS5pc0FsbEFTQ0lJKCkpCisgICAgICAgIHJlc3VsdCA9
IHNxbGl0ZTNfcHJlcGFyZV92MihtX3NxbGl0ZUNvbm5lY3Rpb24sIHF1ZXJ5Lmxlbmd0aCgpID8g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocXVlcnkuY2hhcmFjdGVyczgoKSkgOiAiIiwg
cXVlcnkubGVuZ3RoKCkgKyAxLCAmc3FsaXRlU3RhdGVtZW50LCAmdGFpbCk7CisgICAgZWxzZQor
ICAgICAgICByZXN1bHQgPSBzcWxpdGUzX3ByZXBhcmVfdjIobV9zcWxpdGVDb25uZWN0aW9uLCBx
dWVyeS51dGY4KCkuZGF0YSgpLCBxdWVyeS51dGY4KCkubGVuZ3RoKCkgKyAxLCAmc3FsaXRlU3Rh
dGVtZW50LCAmdGFpbCk7CisgICAgaWYgKHRhaWwgJiYgKnRhaWwpCisgICAgICAgIHJlc3VsdCA9
IFNRTElURV9FUlJPUjsKKworICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
IHNxbGl0ZTNfZmluYWxpemUoc3FsaXRlU3RhdGVtZW50KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBuZXh0U3RhdGVtZW50SWRl
bnRpZmllcigpOworICAgIG1fc3RhdGVtZW50cy5hZGQoaWRlbnRpZmllciwgSW50ZXJuYWxTdGF0
ZW1lbnQgeyBpZGVudGlmaWVyLCBzcWxpdGVTdGF0ZW1lbnQsIHN0ZDo6bnVsbG9wdCB9KTsKKwor
ICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6ZGVzdHJveUludGVybmFsU3RhdGVtZW50KHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX3NxbGl0ZUNvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIGl0ZXIgPSBtX3N0YXRlbWVudHMuZmlu
ZChpZGVudGlmaWVyKTsgaXRlciAhPSBtX3N0YXRlbWVudHMuZW5kKCkpIHsKKyAgICAgICAgc3Fs
aXRlM19maW5hbGl6ZShpdGVyLT52YWx1ZS5zcWxpdGVTdGF0ZW1lbnQpOworICAgICAgICBtX3N0
YXRlbWVudHMucmVtb3ZlKGl0ZXIpOworICAgIH0KK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6bGFzdENoYW5nZXMoKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
KworICAgIGlmICghbV9zcWxpdGVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHJldHVybiBzcWxpdGUzX2NoYW5nZXMobV9zcWxpdGVDb25uZWN0aW9uKTsKK30KKworaW50IFNR
TGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6bGFzdEVycm9yKCkKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0
dXJuIFNRTElURV9FUlJPUjsKKworICAgIHJldHVybiBzcWxpdGUzX2VycmNvZGUobV9zcWxpdGVD
b25uZWN0aW9uKTsKK30KKworY29uc3QgY2hhciogU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjps
YXN0RXJyb3JNZXNzYWdlKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAg
ICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuICJEYXRhYmFzZSBjb25u
ZWN0aW9uIGlzIG5vdCBvcGVuIjsKKworICAgIHJldHVybiBzcWxpdGUzX2Vycm1zZyhtX3NxbGl0
ZUNvbm5lY3Rpb24pOworfQorCitTdHJpbmcgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjp0YWJs
ZUNyZWF0aW9uUXVlcnkoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCit7CisgICAgYXV0byBvcHRp
b25hbElkZW50aWZpZXIgPSBjcmVhdGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5n
VmlldyB7ICJTRUxFQ1Qgc3FsIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlID0gJ3RhYmxl
JyBBTkQgbmFtZSA9ID87Il9zIH0pOworICAgIGlmICghb3B0aW9uYWxJZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBpZGVudGlmaWVyID0gKm9wdGlvbmFsSWRlbnRp
ZmllcjsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmIChiaW5kVGV4dChpZGVudGlmaWVyLCAx
LCB0YWJsZU5hbWUpID09IFNRTElURV9PSyAmJiBzdGVwU3RhdGVtZW50KGlkZW50aWZpZXIpID09
IFNRTElURV9ST1cpCisgICAgICAgIHJlc3VsdCA9IGNvbHVtblRleHQoaWRlbnRpZmllciwgMCk7
CisgICAgZGVzdHJveUludGVybmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmV4ZWN1dGUoQVND
SUlMaXRlcmFsIHF1ZXJ5KQoreworICAgIHJldHVybiBleGVjdXRlKFN0cmluZ1ZpZXcgeyBxdWVy
eSB9KTsKK30KKworYm9vbCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmV4ZWN1dGUoU3RyaW5n
VmlldyBxdWVyeSkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAgICBpZiAo
IW1faXNBY3RpdmUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9zcWxpdGVD
b25uZWN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgcmVzdWx0ID0gc3Fs
aXRlM19leGVjKG1fc3FsaXRlQ29ubmVjdGlvbiwgcXVlcnkudXRmOCgpLmRhdGEoKSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgcmV0dXJuIHJlc3VsdCA9PSBTUUxJVEVfT0sgfHwg
cmVzdWx0ID09IFNRTElURV9ET05FOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6c2V0TWF4aW11bVNpemUoaW50NjRfdCBzaXplKQoreworICAgIGludCBjdXJyZW50UGFnZVNp
emUgPSBwYWdlU2l6ZSgpOworICAgIGlmICghY3VycmVudFBhZ2VTaXplKQorICAgICAgICByZXR1
cm47CisKKyAgICBpbnQ2NF90IG5ld01heFBhZ2VDb3VudCA9IGN1cnJlbnRQYWdlU2l6ZSA/IHNp
emUgLyBjdXJyZW50UGFnZVNpemUgOiAwOworICAgIGF1dG8gb3B0aW9uYWxJZGVudGlmaWVyID0g
Y3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKG1ha2VTdHJpbmcoIlBSQUdNQSBtYXhf
cGFnZV9jb3VudCA9ICIsIG5ld01heFBhZ2VDb3VudCkpOworICAgIGlmICghb3B0aW9uYWxJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSAqb3B0aW9u
YWxJZGVudGlmaWVyOworICAgIGlmIChzdGVwU3RhdGVtZW50KGlkZW50aWZpZXIpICE9IFNRTElU
RV9ST1cpCisgICAgICAgIExPR19FUlJPUigiU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpzZXRN
YXhpbXVtU2l6ZTogZmFpbGVkIHRvIHNldCBtYXhpbXVtIHNpemUgb2YgZGF0YWJhc2UgdG8gJWxs
aSBieXRlcyIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oc2l6ZSkpOworCisgICAgZGVzdHJveUlu
dGVybmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uOjpwYWdlU2l6ZSgpCit7CisgICAgYXV0byBvcHRpb25hbElkZW50aWZpZXIgPSBjcmVh
dGVJbnRlcm5hbFN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmlldyB7ICJQUkFHTUEgcGFnZV9z
aXplIl9zIH0pOworICAgIGlmICghb3B0aW9uYWxJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIGF1dG8gaWRlbnRpZmllciA9ICpvcHRpb25hbElkZW50aWZpZXI7CisgICAgaW50
IHNpemUgPSBjb2x1bW5JbnQoaWRlbnRpZmllciwgMCk7CisgICAgZGVzdHJveUludGVybmFsU3Rh
dGVtZW50KGlkZW50aWZpZXIpOworCisgICAgcmV0dXJuIHNpemU7Cit9CisKK3ZvaWQgU1FMaXRl
RGF0YWJhc2VDb25uZWN0aW9uOjpyZWxlYXNlTWVtb3J5KCkKK3sKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CisKKyAgICBpZiAoIW1fc3FsaXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgc3FsaXRlM19kYl9yZWxlYXNlX21lbW9yeShtX3NxbGl0ZUNvbm5lY3Rpb24p
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ+IFNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShBU0NJSUxpdGVyYWwg
cXVlcnkpCit7CisgICAgcmV0dXJuIGNyZWF0ZVN0YXRlbWVudEFuZFByZXBhcmUoU3RyaW5nVmll
dyB7IHF1ZXJ5IH0pOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnQ+IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShT
dHJpbmdWaWV3IHF1ZXJ5KQoreworICAgIGF1dG8gb3B0aW9uYWxJZGVudGlmaWVyID0gY3JlYXRl
SW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKHF1ZXJ5KTsKKyAgICBpZiAoIW9wdGlvbmFsSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50PihuZXcgU1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnQoKnRoaXMsICpvcHRpb25hbElkZW50aWZpZXIpKTsKK30KKworc3FsaXRlM19zdG10KiBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb246OmZpbmRTUUxpdGVTdGF0ZW1lbnRXaXRoTG9ja0hlbGQodWlu
dDY0X3QgaWRlbnRpZmllcikgY29uc3QgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJ
UworeworICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOworCisgICAgYXV0byBpdGVyID0gbV9z
dGF0ZW1lbnRzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXIgPT0gbV9zdGF0ZW1lbnRz
LmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBpdGVyLT52YWx1
ZS5zcWxpdGVTdGF0ZW1lbnQ7Cit9CisKK2ludCBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmJp
bmRCbG9iKHVpbnQ2NF90IGlkZW50aWZpZXIsIGludCBpbmRleCwgU3Bhbjxjb25zdCB1aW50OF90
PiBibG9iKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICBpZiAoIW1fc3Fs
aXRlQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogc3FsaXRl
U3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudFdpdGhMb2NrSGVsZChpZGVudGlmaWVyKTsK
KyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIFNRTElURV9FUlJPUjsK
KworICAgIHJldHVybiBzcWxpdGUzX2JpbmRfYmxvYihzcWxpdGVTdGF0ZW1lbnQsIGluZGV4LCBi
bG9iLmRhdGEoKSwgYmxvYi5zaXplKCksIFNRTElURV9UUkFOU0lFTlQpOworfQorCitpbnQgU1FM
aXRlRGF0YWJhc2VDb25uZWN0aW9uOjpiaW5kQmxvYih1aW50NjRfdCBpZGVudGlmaWVyLCBpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFj
dGVycyA9IFN0cmluZ1ZpZXcodGV4dCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgVUNo
YXIgYW55Q2hhcmFjdGVyID0gMDsKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczsKKyAgICBp
ZiAodGV4dC5pc0VtcHR5KCkgJiYgIXRleHQuaXNOdWxsKCkpCisgICAgICAgIGNoYXJhY3RlcnMg
PSAmYW55Q2hhcmFjdGVyOworICAgIGVsc2UKKyAgICAgICAgY2hhcmFjdGVycyA9IHVwY29udmVy
dGVkQ2hhcmFjdGVyczsKKworICAgIHJldHVybiBiaW5kQmxvYihpZGVudGlmaWVyLCBpbmRleCwg
U3BhbiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNoYXJhY3RlcnMpLCB0ZXh0
Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSB9KTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbjo6YmluZFRleHQodWludDY0X3QgaWRlbnRpZmllciwgaW50IGluZGV4LCBTdHJpbmdW
aWV3IHRleHQpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byog
c3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudFdpdGhMb2NrSGVsZChpZGVudGlm
aWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIFNRTElURV9F
UlJPUjsKKworICAgIGludCByZXN1bHQ7CisgICAgaWYgKHRleHQuaXM4Qml0KCkgJiYgdGV4dC5p
c0FsbEFTQ0lJKCkpCisgICAgICAgIHJlc3VsdCA9IHNxbGl0ZTNfYmluZF90ZXh0KHNxbGl0ZVN0
YXRlbWVudCwgaW5kZXgsIHRleHQubGVuZ3RoKCkgPyByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPih0ZXh0LmNoYXJhY3RlcnM4KCkpIDogIiIsIHRleHQubGVuZ3RoKCksIFNRTElURV9UUkFO
U0lFTlQpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gc3FsaXRlM19iaW5kX3RleHQoc3Fs
aXRlU3RhdGVtZW50LCBpbmRleCwgdGV4dC51dGY4KCkuZGF0YSgpLCB0ZXh0LnV0ZjgoKS5sZW5n
dGgoKSwgU1FMSVRFX1RSQU5TSUVOVCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitTdHJp
bmcgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb2x1bW5CbG9iQXNTdHJpbmcodWludDY0X3Qg
aWRlbnRpZmllciwgaW50IGNvbCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisK
KyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5kU1FMaXRlU3RhdGVtZW50V2l0aExvY2tI
ZWxkKGlkZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3RhdGVtZW50KQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgaWYgKHNxbGl0ZTNfY29sdW1uX3R5cGUoc3FsaXRlU3RhdGVtZW50LCBj
b2wpICE9IFNRTElURV9CTE9CKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaW50IHNpemUg
PSBzcWxpdGUzX2NvbHVtbl9ieXRlcyhzcWxpdGVTdGF0ZW1lbnQsIGNvbCk7CisgICAgaWYgKHNp
emUgPCAwKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgY29uc3Qgdm9pZCogYmxvYiA9IHNx
bGl0ZTNfY29sdW1uX2Jsb2Ioc3FsaXRlU3RhdGVtZW50LCBjb2wpOworICAgIGlmICghYmxvYikg
eworICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19j
YXN0PGNvbnN0IFVDaGFyKj4oYmxvYiksIHNpemUgLyBzaXplb2YoVUNoYXIpKTsKK30KKworaW50
IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uSW50KHVpbnQ2NF90IGlkZW50aWZpZXIs
IGludCBjb2wpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgYXV0byog
c3FsaXRlU3RhdGVtZW50ID0gZmluZFNRTGl0ZVN0YXRlbWVudFdpdGhMb2NrSGVsZChpZGVudGlm
aWVyKTsKKyAgICBpZiAoIXNxbGl0ZVN0YXRlbWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gc3FsaXRlM19jb2x1bW5faW50KHNxbGl0ZVN0YXRlbWVudCwgY29sKTsKK30KKwor
U3RyaW5nIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6Y29sdW1uVGV4dCh1aW50NjRfdCBpZGVu
dGlmaWVyLCBpbnQgY29sKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVTdGF0ZW1lbnRXaXRoTG9ja0hlbGQo
aWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1lbnQpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzcWxpdGUzX2NvbHVtbl90ZXh0KHNx
bGl0ZVN0YXRlbWVudCwgY29sKSwgc3FsaXRlM19jb2x1bW5fYnl0ZXMoc3FsaXRlU3RhdGVtZW50
LCBjb2wpKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbjo6cmVzZXRTdGF0ZW1l
bnQodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CisKKyAgICBhdXRvKiBzcWxpdGVTdGF0ZW1lbnQgPSBmaW5kU1FMaXRlU3RhdGVtZW50V2l0aExv
Y2tIZWxkKGlkZW50aWZpZXIpOworICAgIGlmICghc3FsaXRlU3RhdGVtZW50KQorICAgICAgICBy
ZXR1cm4gU1FMSVRFX0VSUk9SOworCisgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfcmVzZXQoc3Fs
aXRlU3RhdGVtZW50KTsKKyAgICBzcWxpdGUzX2NsZWFyX2JpbmRpbmdzKHNxbGl0ZVN0YXRlbWVu
dCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlv
bjo6c3RlcFN0YXRlbWVudCh1aW50NjRfdCBpZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKKworICAgIGF1dG8qIHNxbGl0ZVN0YXRlbWVudCA9IGZpbmRTUUxpdGVT
dGF0ZW1lbnRXaXRoTG9ja0hlbGQoaWRlbnRpZmllcik7CisgICAgaWYgKCFzcWxpdGVTdGF0ZW1l
bnQpCisgICAgICAgIHJldHVybiBTUUxJVEVfRVJST1I7CisKKyAgICByZXR1cm4gc3FsaXRlM19z
dGVwKHNxbGl0ZVN0YXRlbWVudCk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9u
OjpkZXN0cm95U3RhdGVtZW50KHVpbnQ2NF90IGlkZW50aWZpZXIpCit7CisgICAgZGVzdHJveUlu
dGVybmFsU3RhdGVtZW50KGlkZW50aWZpZXIpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRl
RGF0YWJhc2VUcmFuc2FjdGlvbj4gU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjcmVhdGVUcmFu
c2FjdGlvbkFuZEJlZ2luKCkKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKKyAg
ICBpZiAoIW1faXNBY3RpdmUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFt
X3NxbGl0ZUNvbm5lY3Rpb24gfHwgc3FsaXRlM19nZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5l
Y3Rpb24pKSB7CisgICAgICAgIG1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKHNxbGl0
ZTNfZXhlYyhtX3NxbGl0ZUNvbm5lY3Rpb24sICJCRUdJTiIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIpICE9IFNRTElURV9ET05FKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIG1f
b25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciA9IG5leHRUcmFuc2FjdGlvbklkZW50aWZpZXIo
KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24+
KG5ldyBTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKCp0aGlzLCAqbV9vbmdvaW5nVHJhbnNhY3Rp
b25JZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpjb21t
aXRUcmFuc2FjdGlvbih1aW50NjRfdCB0cmFuc2FjdGlvbklkZW50aWZpZXIpCit7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OworCisgICAgaWYgKCFtX2lzQWN0aXZlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIW1fb25nb2luZ1RyYW5zYWN0aW9uSWRlbnRpZmllciB8fCAqbV9v
bmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyICE9IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3FsaXRlQ29ubmVjdGlvbiAmJiAhc3FsaXRlM19n
ZXRfYXV0b2NvbW1pdChtX3NxbGl0ZUNvbm5lY3Rpb24pKQorICAgICAgICBzcWxpdGUzX2V4ZWMo
bV9zcWxpdGVDb25uZWN0aW9uLCAiQ09NTUlUIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7
CisKKyAgICBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7Cit9
CisKK3ZvaWQgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uOjpyb2xsYmFja1RyYW5zYWN0aW9uKHVp
bnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcikKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CisKKyAgICBpZiAoIW1faXNBY3RpdmUpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghbV9vbmdvaW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyIHx8ICptX29uZ29pbmdUcmFuc2FjdGlv
bklkZW50aWZpZXIgIT0gdHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9zcWxpdGVDb25uZWN0aW9uICYmICFzcWxpdGUzX2dldF9hdXRvY29tbWl0KG1f
c3FsaXRlQ29ubmVjdGlvbikpCisgICAgICAgIHNxbGl0ZTNfZXhlYyhtX3NxbGl0ZUNvbm5lY3Rp
b24sICJST0xMQkFDSyIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworCisgICAgbV9vbmdv
aW5nVHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OworfQorCitib29sIFNRTGl0
ZURhdGFiYXNlQ29ubmVjdGlvbjo6aXNPbmdvaW5nVHJhbnNhY3Rpb24odWludDY0X3QgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKQoreworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKworICAg
IHJldHVybiBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgJiYgKm1fb25nb2luZ1RyYW5z
YWN0aW9uSWRlbnRpZmllciA9PSB0cmFuc2FjdGlvbklkZW50aWZpZXI7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzFjY2I5MGE4Yzc1MDIxY2Vk
ZWQ3ZGM2MzFjMjUzNzcwMTlkZDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMTA4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxzcWxpdGUzLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5
VHJhY2tlcjsKK2NsYXNzIFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OworY2xhc3MgU1FMaXRlRGF0
YWJhc2VUcmFuc2FjdGlvbjsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbj4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGluTWVtb3J5UGF0aCgpIHsgcmV0dXJuICI6
bWVtb3J5OiI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNRTGl0ZURhdGFiYXNl
Q29ubmVjdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBzaG91bGRDb21taXRU
cmFuc2FjdGlvbkF0Q2xvc2UgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZURh
dGFiYXNlQ29ubmVjdGlvbigpOworCisgICAgU3RyaW5nIHBhdGgoKSBjb25zdCB7IHJldHVybiBt
X3BhdGg7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzT3BlbigpOworICAgIFdFQkNPUkVf
RVhQT1JUIGludCBsYXN0Q2hhbmdlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBsYXN0RXJy
b3IoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBjaGFyKiBsYXN0RXJyb3JNZXNzYWdlKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRhYmxlQ3JlYXRpb25RdWVyeShjb25zdCBTdHJp
bmcmIHRhYmxlTmFtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlKEFTQ0lJTGl0
ZXJhbCBxdWVyeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVjdXRlKFN0cmluZ1ZpZXcg
cXVlcnkpOworICAgIGVudW0gY2xhc3MgQ2hlY2twb2ludE1vZGUgOiB1aW50OF90IHsgRnVsbCwg
VHJ1bmNhdGUgfTsKKyAgICBib29sIGV4ZWN1dGVXQUxDaGVja3BvaW50KENoZWNrcG9pbnRNb2Rl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1TaXplKGludDY0X3QpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsZWFzZU1lbW9yeSgpOworICAgIHZvaWQgaW52YWxpZGF0
ZUFjdGl2aXR5KCk7CisgICAgdm9pZCBzZXRJc0FjdGl2ZShib29sKTsKKworICAgIC8vIFN0YXRl
bWVudCBvcGVyYXRpb25zLgorICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudD4gY3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShBU0NJSUxpdGVy
YWwgcXVlcnkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVEYXRhYmFzZVN0YXRlbWVudD4g
Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShTdHJpbmdWaWV3IHF1ZXJ5KTsKKyAgICBpbnQgYmlu
ZEJsb2IodWludDY0X3Qgc3RhdGVtZW50SWRlbnRpZmllciwgaW50IGluZGV4LCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+IGJsb2IpOworICAgIGludCBiaW5kQmxvYih1aW50NjRfdCBzdGF0ZW1lbnRJZGVu
dGlmaWVyLCBpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCk7CisgICAgaW50IGJpbmRUZXh0
KHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIsIGludCBpbmRleCwgU3RyaW5nVmlldyB0ZXh0
KTsKKyAgICBTdHJpbmcgY29sdW1uQmxvYkFzU3RyaW5nKHVpbnQ2NF90IHN0YXRlbWVudElkZW50
aWZpZXIsIGludCBjb2wpOworICAgIGludCBjb2x1bW5JbnQodWludDY0X3Qgc3RhdGVtZW50SWRl
bnRpZmllciwgaW50IGNvbCk7CisgICAgU3RyaW5nIGNvbHVtblRleHQodWludDY0X3Qgc3RhdGVt
ZW50SWRlbnRpZmllciwgaW50IGNvbCk7CisgICAgaW50IHJlc2V0U3RhdGVtZW50KHVpbnQ2NF90
IHN0YXRlbWVudElkZW50aWZpZXIpOworICAgIGludCBzdGVwU3RhdGVtZW50KHVpbnQ2NF90IHN0
YXRlbWVudElkZW50aWZpZXIpOworICAgIHZvaWQgZGVzdHJveVN0YXRlbWVudCh1aW50NjRfdCBz
dGF0ZW1lbnRJZGVudGlmaWVyKTsKKworICAgIC8vIFRyYW5zYWN0aW9uIG9wZXJhdGlvbnMuCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24+IGNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4oKTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zYWN0
aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgdm9pZCByb2xsYmFja1Ry
YW5zYWN0aW9uKHVpbnQ2NF90IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgYm9vbCBpc09u
Z29pbmdUcmFuc2FjdGlvbih1aW50NjRfdCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworCitwcml2
YXRlOgorICAgIFNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsIGJv
b2wgc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlKTsKKyAgICBib29sIG9wZW5Gcm9tQWN0
aXZpdHlUcmFja2VyKCk7CisgICAgdm9pZCBjbG9zZUZyb21BY3Rpdml0eVRyYWNrZXIoKTsKKyAg
ICB2b2lkIGJlZ2luQWN0aXZpdHkoKTsKKyAgICB2b2lkIGVuZEFjdGl2aXR5KCk7CisgICAgdm9p
ZCBpbnRlcnJ1cHRXaXRoTG9ja0hlbGQoKTsKKyAgICBib29sIGVuYWJsZUV4dGVuZGVkUmVzdWx0
Q29kZSgpOworICAgIGJvb2wgZW5hYmxlSW5NZW1vcnlUZW1wU3RvcmUoKTsKKyAgICBib29sIGVu
YWJsZVdBTEpvdXJuYWxNb2RlKCk7CisgICAgaW50IHBhZ2VTaXplKCk7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gY3JlYXRlSW50ZXJuYWxTdGF0ZW1lbnRBbmRQcmVwYXJlKFN0cmluZ1Zp
ZXcgcXVlcnkpOworICAgIHZvaWQgZGVzdHJveUludGVybmFsU3RhdGVtZW50KHVpbnQ2NF90IGlk
ZW50Zmllcik7CisgICAgc3FsaXRlM19zdG10KiBmaW5kU1FMaXRlU3RhdGVtZW50V2l0aExvY2tI
ZWxkKHVpbnQ2NF90IHN0YXRlbWVudElkZW50aWZpZXIpIGNvbnN0OworCisgICAgU3RyaW5nIG1f
cGF0aDsKKyAgICBib29sIG1fc2hvdWxkQ29tbWl0VHJhbnNhY3Rpb25BdENsb3NlOworICAgIExv
Y2sgbV9sb2NrOworICAgIHN0cnVjdCBJbnRlcm5hbFN0YXRlbWVudCB7CisgICAgICAgIHVpbnQ2
NF90IGlkZW50aWZpZXI7CisgICAgICAgIHNxbGl0ZTNfc3RtdCogc3FsaXRlU3RhdGVtZW50Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB0cmFuc2FjdGlvbklkZW50aWZpZXI7Cisg
ICAgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBJbnRlcm5hbFN0YXRlbWVudD4gbV9zdGF0ZW1l
bnRzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBzcWxpdGUzKiBtX3NxbGl0ZUNv
bm5lY3Rpb24gIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKSB7IG51bGxwdHIgfTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX29uZ29pbmdUcmFuc2FjdGlvbklkZW50aWZpZXIgV1RG
X0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIGJvb2wgbV9pc0FjdGl2ZSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9OworICAgIGZyaWVuZCBjbGFzcyBTUUxpdGVEYXRh
YmFzZUFjdGl2aXR5VHJhY2tlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQzOTlkZTZjMzg4OTFmYjc1NzgwZTEwMTczYWJhZTUwNmFiMmMx
NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2VTdGF0ZW1lbnQuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCIKKwor
I2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlQ29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpTUUxpdGVEYXRhYmFzZVN0YXRlbWVudChT
UUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIp
CisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQoreworfQorCitTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6flNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50KCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmRlc3Ryb3lTdGF0ZW1lbnQobV9pZGVu
dGlmaWVyKTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQg
aW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4gYmxvYikKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0
aW9uLT5iaW5kQmxvYihtX2lkZW50aWZpZXIsIGluZGV4LCBibG9iKTsKK30KKworaW50IFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4
dCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5iaW5kQmxvYihtX2lkZW50aWZpZXIsIGlu
ZGV4LCB0ZXh0KTsKK30KKworaW50IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50OjpiaW5kVGV4dChp
bnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCkKK3sKKyAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5i
aW5kVGV4dChtX2lkZW50aWZpZXIsIGluZGV4LCB0ZXh0KTsKK30KKworU3RyaW5nIFNRTGl0ZURh
dGFiYXNlU3RhdGVtZW50Ojpjb2x1bW5CbG9iQXNTdHJpbmcoaW50IGNvbCkKK3sKKyAgICByZXR1
cm4gbV9jb25uZWN0aW9uLT5jb2x1bW5CbG9iQXNTdHJpbmcobV9pZGVudGlmaWVyLCBjb2wpOwor
fQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OmNvbHVtbkludChpbnQgY29sKQorewor
ICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNvbHVtbkludChtX2lkZW50aWZpZXIsIGNvbCk7Cit9
CisKK1N0cmluZyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDo6Y29sdW1uVGV4dChpbnQgY29sKQor
eworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNvbHVtblRleHQobV9pZGVudGlmaWVyLCBjb2wp
OworfQorCitpbnQgU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OnJlc2V0KCkKK3sKKyAgICByZXR1
cm4gbV9jb25uZWN0aW9uLT5yZXNldFN0YXRlbWVudChtX2lkZW50aWZpZXIpOworfQorCitpbnQg
U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQ6OnN0ZXAoKQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rp
b24tPnN0ZXBTdGF0ZW1lbnQobV9pZGVudGlmaWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTdlOTA5MGQyZjUyNzhiMDRjYTFjNzk5MTljNzQ3
OGM0ZmJiZjUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb247CisKK2NsYXNzIFNRTGl0
ZURhdGFiYXNlU3RhdGVtZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNRTGl0ZURhdGFiYXNl
U3RhdGVtZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQpOworcHVibGljOgorICAgIFdFQkNP
UkVfRVhQT1JUIH5TUUxpdGVEYXRhYmFzZVN0YXRlbWVudCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IGludCBiaW5kQmxvYihpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4gYmxvYik7CisgICAg
V0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0ZXh0
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYmluZFRleHQoaW50IGluZGV4LCBTdHJpbmdWaWV3
IHRleHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjb2x1bW5CbG9iQXNTdHJpbmcoaW50
IGNvbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvbHVtbkludChpbnQgY29sKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgY29sdW1uVGV4dChpbnQgY29sKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBpbnQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgc3RlcCgpOworCitwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb247CisgICAgU1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQoU1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3Qg
aWRlbnRpZmllcik7CisKKyAgICBSZWY8U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZTIwZDlm
MDY0MWUzOWMyMjE3YWJjNmJjNTgwMjJhMzM5MzRmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3Bl
LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudDsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2VTdGF0
ZW1lbnRSZXNldFNjb3BlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVEYXRhYmFz
ZVN0YXRlbWVudFJlc2V0U2NvcGUpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIGV4cGxpY2l0IFNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZShTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudCogc3RhdGVtZW50KQorICAgICAgICA6IG1fc3RhdGVtZW50KHN0
YXRlbWVudCkKKyAgICB7CisgICAgfQorCisgICAgflNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVz
ZXRTY29wZSgpCisgICAgeworICAgICAgICBpZiAobV9zdGF0ZW1lbnQpCisgICAgICAgICAgICBt
X3N0YXRlbWVudC0+cmVzZXQoKTsKKyAgICB9CisKKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVu
dFJlc2V0U2NvcGUoU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlJiYgb3RoZXIpCisg
ICAgICAgIDogbV9zdGF0ZW1lbnQob3RoZXIubV9zdGF0ZW1lbnQuZ2V0KCkpCisgICAgeworICAg
ICAgICBvdGhlci5tX3N0YXRlbWVudCA9IG51bGxwdHI7CisgICAgfQorCisgICAgU1FMaXRlRGF0
YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlJiBvcGVyYXRvcj0oU1FMaXRlRGF0YWJhc2VTdGF0ZW1l
bnRSZXNldFNjb3BlJiYgb3RoZXIpCisgICAgeworICAgICAgICBzdGQ6OnN3YXAobV9zdGF0ZW1l
bnQsIG90aGVyLm1fc3RhdGVtZW50KTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwor
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fc3RhdGVtZW50
OyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zdGF0ZW1lbnQ7IH0K
KyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCogZ2V0KCkgeyByZXR1cm4gbV9zdGF0ZW1lbnQu
Z2V0KCk7IH0KKyAgICBTUUxpdGVEYXRhYmFzZVN0YXRlbWVudCogb3BlcmF0b3ItPigpIHsgcmV0
dXJuIG1fc3RhdGVtZW50LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgV2Vha1B0cjxTUUxpdGVE
YXRhYmFzZVN0YXRlbWVudD4gbV9zdGF0ZW1lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzgwZjdhN2Y4MzNlZTM1YTBmMGY4
MzQ2Nzg5YTA1YzMzMzdjYjhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC0wLDAgKzEsNTcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlRGF0YWJh
c2VUcmFuc2FjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NRTGl0ZURhdGFiYXNl
VHJhbnNhY3Rpb246OlNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24oU1FMaXRlRGF0YWJhc2VDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIDogbV9jb25uZWN0
aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK3sKK30KKwor
U1FMaXRlRGF0YWJhc2VUcmFuc2FjdGlvbjo6flNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24oKQor
eworICAgIG1fY29ubmVjdGlvbi0+cm9sbGJhY2tUcmFuc2FjdGlvbihtX2lkZW50aWZpZXIpOwor
fQorCit2b2lkIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246OmNvbW1pdCgpCit7CisgICAgbV9j
b25uZWN0aW9uLT5jb21taXRUcmFuc2FjdGlvbihtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFNR
TGl0ZURhdGFiYXNlVHJhbnNhY3Rpb246OnJvbGxiYWNrKCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24t
PnJvbGxiYWNrVHJhbnNhY3Rpb24obV9pZGVudGlmaWVyKTsKK30KKworYm9vbCBTUUxpdGVEYXRh
YmFzZVRyYW5zYWN0aW9uOjppc09uZ29pbmdUcmFuc2FjdGlvbigpCit7CisgICAgcmV0dXJuIG1f
Y29ubmVjdGlvbi0+aXNPbmdvaW5nVHJhbnNhY3Rpb24obV9pZGVudGlmaWVyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA1ZmRmZjQ4OWZm
OWQ0Y2ZlMmNmYWUzZTNlYzAxOTZhODI0ZDg4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uLmgKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1FMaXRlRGF0
YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxp
dGVEYXRhYmFzZUNvbm5lY3Rpb247CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNRTGl0ZURhdGFiYXNlVHJhbnNhY3Rpb24pOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IH5TUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b21taXQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJvbGxiYWNrKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc09uZ29pbmdUcmFuc2FjdGlvbigpOworCitwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb247CisgICAgU1FMaXRlRGF0YWJhc2VU
cmFuc2FjdGlvbihTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24mLCB1aW50NjRfdCBpZGVudGlmaWVy
KTsKKworICAgIFJlZjxTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAg
ICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggZWIyZjViYmJkZmE2ZTMxYTU5MDBjYWM3ZjJhMzBiNTc2ZTU1MGNmZi4uM2IyNjdmN2VlYjFh
N2Y0MjU1M2JjYmE1NjA3MGU3N2FiZDBlYzMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRl
ICJQcmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50U3Rv
cmUuaCIKICNpbmNsdWRlICJSZW1vdGVXb3JrZXJUeXBlLmgiCisjaW5jbHVkZSAiU1FMaXRlUHJv
Y2Vzc0Fzc2VydGlvbkhvbGRlci5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJTdG9y
YWdlTWFuYWdlclNldC5oIgpAQCAtNzksNiArODAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpAQCAtMTc3LDYgKzE3OSwx
MiBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRp
YWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogICAgIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlcjo6bmV0d29ya1Byb2Nlc3NDcmVhdGVkKCp0aGlzKTsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBTUUxpdGVEYXRhYmFzZUFjdGl2aXR5VHJhY2tlcjo6c2luZ2xl
dG9uKCkuc2V0SW1wbChbXSB7CisgICAgICAgIHJldHVybiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9u
SG9sZGVyOjpjcmVhdGUoKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgTmV0d29ya1N0YXRlTm90
aWZpZXI6OnNpbmdsZXRvbigpLmFkZExpc3RlbmVyKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9XShib29sIGlzT25MaW5lKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yNjYsNiArMjc0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJikKICAgICAgICAgcGxhdGZvcm1GbHVzaENvb2tpZXMoc2Vzc2lv
bi5zZXNzaW9uSUQoKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9KTsKIAorICAg
IFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5yZXN1bWUoKTsKKwog
ICAgIE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6Zm9yRWFjaChbJl0oYXV0byYgbWFuYWdlcikgewog
ICAgICAgICBtYW5hZ2VyLnN5bmNMb2NhbFN0b3JhZ2UoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKICAgICB9KTsKQEAgLTIxNTYsNiArMjE2Niw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBy
ZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRs
CiAKICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy52
YWx1ZXMoKSkKICAgICAgICAgY29ubmVjdGlvbi0+Y2xlYW51cEZvclN1c3BlbnNpb24oW2NhbGxi
YWNrQWdncmVnYXRvcl0geyB9KTsKKworICAgIFNRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2Vy
OjpzaW5nbGV0b24oKS5zdXNwZW5kKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKQEAgLTIxODksNiArMjIwMSw4IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnByb2Nlc3NEaWRSZXN1bWUoKQogI2VuZGlmCiAgICAgICAgIHNlc3Npb24u
c3RvcmFnZU1hbmFnZXIoKS5yZXN1bWUoKTsKICAgICB9KTsKKworICAgIFNRTGl0ZURhdGFiYXNl
QWN0aXZpdHlUcmFja2VyOjpzaW5nbGV0b24oKS5yZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9y
YWdlTWFuYWdlci5jcHAKaW5kZXggMDBhZDkxOGZkYzQ4ODVhZWRjOGU1YWJiNzExODExNmFmYTE2
YTg3Ny4uNjBiNjk0NWVjNGYzNmIxMmMzMjhlM2U0MjZlZTRkNGQyNTQxYTdiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdv
cmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTY1MCw4ICs2NTAsNiBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlTWFuYWdlcjo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZQogCiAgICAgbV9xdWV1ZS0+c3VzcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dIHsKICAgICAgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9sb2NhbE9yaWdp
blN0b3JhZ2VNYW5hZ2Vycy52YWx1ZXMoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gbG9jYWxT
dG9yYWdlTWFuYWdlciA9IG1hbmFnZXItPmV4aXN0aW5nTG9jYWxTdG9yYWdlTWFuYWdlcigpKQot
ICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZU1hbmFnZXItPnN5bmNMb2NhbFN0b3JhZ2UoKTsK
ICAgICAgICAgICAgIGlmIChhdXRvIGlkYlN0b3JhZ2VNYW5hZ2VyID0gbWFuYWdlci0+ZXhpc3Rp
bmdJREJTdG9yYWdlTWFuYWdlcigpKQogICAgICAgICAgICAgICAgIGlkYlN0b3JhZ2VNYW5hZ2Vy
LT5zdG9wRGF0YWJhc2VBY3Rpdml0aWVzRm9yU3VzcGVuZCgpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFy
ZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3Jh
Z2VBcmVhLmNwcAppbmRleCAxMGVjMjA3Njg1MTQ1OGNlZjE2MTkwZWYxYjkxNjZkMmYwYTQ0ZTQx
Li5iZTQ4NGM4ZmQ2NzQyNGViMDQyNGZhZWIzNTIyNTVmMjBiOWU5MTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvU1FMaXRlU3RvcmFnZUFyZWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdl
QXJlYS5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJTUUxpdGVTdG9yYWdlQXJlYS5o
IgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJh
c2VTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhbnNhY3Rp
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNh
Y3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VNYXAuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6aXNFbXB0
eSgpCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hlZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBl
OjpDb3VudEl0ZW1zKTsKICAgICBpZiAoIXN0YXRlbWVudCB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAh
PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxp
dGVTdG9yYWdlQXJlYTo6aXNFbXB0eSBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVudCAoJWQp
IC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTXNn
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFy
ZWE6OmlzRW1wdHkgZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9k
YXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTI4LDIxICsxMjgsMjEgQEAgYm9vbCBT
UUxpdGVTdG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKCFtX2Rh
dGFiYXNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgc3RhdGVtZW50ID0g
bV9kYXRhYmFzZS0+dGFibGVTUUwoIkl0ZW1UYWJsZSJfcyk7CisgICAgU3RyaW5nIHN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UtPnRhYmxlQ3JlYXRpb25RdWVyeSgiSXRlbVRhYmxlIl9zKTsKICAgICBp
ZiAoc3RhdGVtZW50ID09IGNyZWF0ZUl0ZW1UYWJsZVN0YXRlbWVudCB8fCBzdGF0ZW1lbnQgPT0g
Y3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50QWx0ZXJuYXRpdmUpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gVGFibGUgZXhpc3RzIGJ1dCBzdGF0ZW1lbnQgaXMgd3Jvbmc7IGRyb3AgaXQu
CiAgICAgaWYgKCFzdGF0ZW1lbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmICghbV9kYXRhYmFz
ZS0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgSXRlbVRhYmxlIl9zKSkgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpjcmVhdGVU
YWJsZUlmTmVjZXNzYXJ5IGZhaWxlZCB0byBkcm9wIGV4aXN0aW5nIGl0ZW0gdGFibGUgKCVkKSAt
ICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgaWYgKCFtX2RhdGFiYXNlLT5leGVjdXRlKCJEUk9QIFRBQkxFIEl0ZW1UYWJs
ZSJfcykpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVT
dG9yYWdlQXJlYTo6Y3JlYXRlVGFibGVJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gZHJvcCBleGlzdGlu
ZyBpdGVtIHRhYmxlICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgLy8gVGFibGUgZG9lcyBub3QgZXhpc3QuCi0gICAgaWYgKCFt
X2RhdGFiYXNlLT5leGVjdXRlQ29tbWFuZChjcmVhdGVJdGVtVGFibGVTdGF0ZW1lbnQpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y3Jl
YXRlVGFibGVJZk5lY2Vzc2FyeSBmYWlsZWQgdG8gY3JlYXRlIGl0ZW0gdGFibGUgKCVkKSAtICVz
IiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsK
KyAgICBpZiAoIW1fZGF0YWJhc2UtPmV4ZWN1dGUoY3JlYXRlSXRlbVRhYmxlU3RhdGVtZW50KSkg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6
OmNyZWF0ZVRhYmxlSWZOZWNlc3NhcnkgZmFpbGVkIHRvIGNyZWF0ZSBpdGVtIHRhYmxlICglZCkg
LSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNz
YWdlKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTgsMTcgKzE1OCwx
MiBAQCBib29sIFNRTGl0ZVN0b3JhZ2VBcmVhOjpwcmVwYXJlRGF0YWJhc2UoU2hvdWxkQ3JlYXRl
SWZOb3RFeGlzdHMgc2hvdWxkQ3JlYXRlSWZObwogICAgIGlmIChzaG91bGRDcmVhdGVJZk5vdEV4
aXN0cyA9PSBTaG91bGRDcmVhdGVJZk5vdEV4aXN0czo6Tm8gJiYgIUZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMobV9wYXRoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX2RhdGFiYXNlID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4oKTsKICAgICBGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChtX3BhdGgpKTsKLSAgICBp
ZiAoIW1fZGF0YWJhc2UtPm9wZW4obV9wYXRoKSkgeworICAgIG1fZGF0YWJhc2UgPSBXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZShtX3BhdGgsIHRydWUpLnB0cigpOwor
ICAgIGlmICghbV9kYXRhYmFzZS0+aXNPcGVuKCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpwcmVwYXJlRGF0YWJhc2UgZmFpbGVkIHRv
IG9wZW4gZGF0YWJhc2UgYXQgJyVzJyIsIG1fcGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
bV9kYXRhYmFzZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAg
ICAgIAotICAgIC8vIFNpbmNlIGEgV29ya1F1ZXVlIGlzbid0IGJvdW5kIHRvIGEgc3BlY2lmaWMg
dGhyZWFkLCB3ZSBuZWVkIHRvIGRpc2FibGUgdGhyZWFkaW5nIGNoZWNrLgotICAgIC8vIFdlIHdp
bGwgbmV2ZXIgYWNjZXNzIHRoZSBkYXRhYmFzZSBmcm9tIGRpZmZlcmVudCB0aHJlYWRzIHNpbXVs
dGFuZW91c2x5LgotICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKIAog
ICAgIGlmICghY3JlYXRlVGFibGVJZk5lY2Vzc2FyeSgpKSB7CiAgICAgICAgIG1fZGF0YWJhc2Ug
PSBudWxscHRyOwpAQCAtMTg0LDExICsxNzksMTAgQEAgYm9vbCBTUUxpdGVTdG9yYWdlQXJlYTo6
cHJlcGFyZURhdGFiYXNlKFNob3VsZENyZWF0ZUlmTm90RXhpc3RzIHNob3VsZENyZWF0ZUlmTm8K
IHZvaWQgU1FMaXRlU3RvcmFnZUFyZWE6OnN0YXJ0VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpCiB7
CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uKQotICAgICAgICBtX3RyYW5zYWN0aW9uID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbj4oKm1fZGF0YWJhc2UpOwotCi0gICAgaWYg
KG1fdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKKyAgICAgICAgbV90cmFuc2FjdGlvbiA9IG1f
ZGF0YWJhc2UtPmNyZWF0ZVRyYW5zYWN0aW9uQW5kQmVnaW4oKTsKKyAgICAKKyAgICBpZiAoIW1f
dHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBtX3RyYW5zYWN0aW9uLT5iZWdpbigp
OwogCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2hBZnRlcih0cmFuc2FjdGlvbkR1cmF0aW9uLCBbd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC0x
OTYsMTggKzE5MCwxNiBAQCB2b2lkIFNRTGl0ZVN0b3JhZ2VBcmVhOjpzdGFydFRyYW5zYWN0aW9u
SWZOZWNlc3NhcnkoKQogICAgIH0pOwogfQogCi1XZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRv
UmVzZXRTY29wZSBTUUxpdGVTdG9yYWdlQXJlYTo6Y2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5
cGUgdHlwZSkKK1dlYkNvcmU6OlNRTGl0ZURhdGFiYXNlU3RhdGVtZW50UmVzZXRTY29wZSBTUUxp
dGVTdG9yYWdlQXJlYTo6Y2FjaGVkU3RhdGVtZW50KFN0YXRlbWVudFR5cGUgdHlwZSkKIHsKICAg
ICBBU1NFUlQobV9kYXRhYmFzZSk7CiAgICAgQVNTRVJUKHR5cGUgPCBTdGF0ZW1lbnRUeXBlOjpJ
bnZhbGlkKTsKIAogICAgIGF1dG8gaW5kZXggPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKTsK
LSAgICBpZiAoIW1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0pIHsKLSAgICAgICAgaWYgKGF1dG8g
cmVzdWx0ID0gbV9kYXRhYmFzZS0+cHJlcGFyZUhlYXBTdGF0ZW1lbnQoc3RhdGVtZW50U3RyaW5n
KHR5cGUpKSkKLSAgICAgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tpbmRleF0gPSByZXN1bHQu
dmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICB9CisgICAgaWYgKCFtX2NhY2hlZFN0YXRl
bWVudHNbaW5kZXhdKQorICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhdID0gbV9kYXRh
YmFzZS0+Y3JlYXRlU3RhdGVtZW50QW5kUHJlcGFyZShzdGF0ZW1lbnRTdHJpbmcodHlwZSkpOwog
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlIHsgbV9j
YWNoZWRTdGF0ZW1lbnRzW2luZGV4XS5nZXQoKSB9OworICAgIHJldHVybiBXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZVN0YXRlbWVudFJlc2V0U2NvcGUgeyBtX2NhY2hlZFN0YXRlbWVudHNbaW5kZXhd
LmdldCgpIH07CiB9CiAKIEV4cGVjdGVkPFN0cmluZywgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9y
YWdlQXJlYTo6Z2V0SXRlbShjb25zdCBTdHJpbmcmIGtleSkKQEAgLTIzNCw3ICsyMjYsNyBAQCBF
eHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OmdldEl0ZW1G
cm9tRGF0YWJhc2UoY29uc3QgU3RyaQogCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBjYWNoZWRTdGF0
ZW1lbnQoU3RhdGVtZW50VHlwZTo6R2V0SXRlbSk7CiAgICAgaWYgKCFzdGF0ZW1lbnQgfHwgc3Rh
dGVtZW50LT5iaW5kVGV4dCgxLCBrZXkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24g
Y3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24g
Y3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0yNDIsNyArMjM0LDcg
QEAgRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+IFNRTGl0ZVN0b3JhZ2VBcmVhOjpnZXRJ
dGVtRnJvbURhdGFiYXNlKGNvbnN0IFN0cmkKICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cp
CiAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQtPmNvbHVtbkJsb2JBc1N0cmluZygwKTsKICAgICBp
ZiAocmVzdWx0ICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24g
c3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0
b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0SXRlbUZyb21EYXRhYmFzZSBmYWlsZWQgb24g
c3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBt
X2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0yNzQsNyArMjY2LDcg
QEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gU1FMaXRlU3RvcmFnZUFyZWE6OmFsbEl0ZW1zKCkK
ICAgICAvLyBJbXBvcnQgZnJvbSBkYXRhYmFzZS4KICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hl
ZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpHZXRBbGxJdGVtcyk7CiAgICAgaWYgKCFzdGF0ZW1l
bnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VB
cmVhOjpnZXRBbGxJdGVtcyBmYWlsZWQgb24gY3JlYXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIs
IG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0
QWxsSXRlbXMgZmFpbGVkIG9uIGNyZWF0aW5nIHN0YXRlbWVudCAoJWQpIC0gJXMiLCBtX2RhdGFi
YXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVycm9yTWVzc2FnZSgpKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTI5Miw3ICsyODQsNyBAQCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBTUUxpdGVTdG9yYWdlQXJlYTo6YWxsSXRlbXMoKQogICAgIH0KIAogICAgIGlm
IChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFN0b3Jh
Z2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Z2V0QWxsSXRlbXMgZmFpbGVkIG9uIGV4ZWN1dGluZyBz
dGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNR
TGl0ZVN0b3JhZ2VBcmVhOjpnZXRBbGxJdGVtcyBmYWlsZWQgb24gZXhlY3V0aW5nIHN0YXRlbWVu
dCAoJWQpIC0gJXMiLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+bGFzdEVy
cm9yTWVzc2FnZSgpKTsKIAogICAgIHJldHVybiBpdGVtczsKIH0KQEAgLTMxMSwxNSArMzAzLDE2
IEBAIEV4cGVjdGVkPHZvaWQsIFN0b3JhZ2VFcnJvcj4gU1FMaXRlU3RvcmFnZUFyZWE6OnNldEl0
ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJCiAKICAgICBhdXRvIHN0YXRlbWVudCA9IGNhY2hl
ZFN0YXRlbWVudChTdGF0ZW1lbnRUeXBlOjpTZXRJdGVtKTsKICAgICBpZiAoIXN0YXRlbWVudCB8
fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGtleSkgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigyLCB2
YWx1ZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3Jh
Z2VBcmVhOjpzZXRJdGVtIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwg
bV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVhOjpzZXRJ
dGVtIGZhaWxlZCBvbiBjcmVhdGluZyBzdGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+
bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChTdG9yYWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKICAg
ICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LT5zdGVwKCk7CiAgICAgaWYgKHJlc3VsdCA9PSBTUUxJ
VEVfRlVMTCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0b3JhZ2VFcnJvcjo6UXVv
dGFFeGNlZWRlZCk7CisKICAgICBpZiAocmVzdWx0ICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSBm
YWlsZWQgb24gc3RlcHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RF
cnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6c2V0SXRlbSBmYWlsZWQgb24gc3Rl
cHBpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2Rh
dGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0zNTAsNyArMzQzLDcgQEAg
RXhwZWN0ZWQ8dm9pZCwgU3RvcmFnZUVycm9yPiBTUUxpdGVTdG9yYWdlQXJlYTo6cmVtb3ZlSXRl
bShJUEM6OkNvbm5lY3Rpb246OlVuaXEKIAogICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVkU3Rh
dGVtZW50KFN0YXRlbWVudFR5cGU6OkRlbGV0ZUl0ZW0pOwogICAgIGlmICghc3RhdGVtZW50IHx8
IHN0YXRlbWVudC0+YmluZFRleHQoMSwga2V5KSB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3Rv
cmFnZUFyZWE6OnJlbW92ZUl0ZW0gZmFpbGVkIG9uIGV4ZWN1dGluZyBzdGF0ZW1lbnQgKCVkKSAt
ICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU3RvcmFnZSwgIlNRTGl0ZVN0b3JhZ2VBcmVh
OjpyZW1vdmVJdGVtIGZhaWxlZCBvbiBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1f
ZGF0YWJhc2UtPmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNZXNzYWdlKCkpOwog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoU3RvcmFnZUVycm9yOjpEYXRhYmFzZSk7CiAg
ICAgfQogCkBAIC0zODEsNyArMzc0LDcgQEAgRXhwZWN0ZWQ8dm9pZCwgU3RvcmFnZUVycm9yPiBT
UUxpdGVTdG9yYWdlQXJlYTo6Y2xlYXIoSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRAogICAgIHN0
YXJ0VHJhbnNhY3Rpb25JZk5lY2Vzc2FyeSgpOwogICAgIGF1dG8gc3RhdGVtZW50ID0gY2FjaGVk
U3RhdGVtZW50KFN0YXRlbWVudFR5cGU6OkRlbGV0ZUFsbEl0ZW1zKTsKICAgICBpZiAoIXN0YXRl
bWVudCB8fCBzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihTdG9yYWdlLCAiU1FMaXRlU3RvcmFnZUFyZWE6OmNsZWFyIGZhaWxlZCBv
biBleGVjdXRpbmcgc3RhdGVtZW50ICglZCkgLSAlcyIsIG1fZGF0YWJhc2UtPmxhc3RFcnJvcigp
LCBtX2RhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFN0b3JhZ2UsICJTUUxpdGVTdG9yYWdlQXJlYTo6Y2xlYXIgZmFpbGVkIG9uIGV4ZWN1dGluZyBz
dGF0ZW1lbnQgKCVkKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2Ut
Pmxhc3RFcnJvck1lc3NhZ2UoKSk7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChTdG9y
YWdlRXJyb3I6OkRhdGFiYXNlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9TUUxpdGVTdG9yYWdlQXJlYS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmgKaW5kZXggNTJjYzlk
NjBlN2U1YTUzOTFmYzhjNDgzZmI2OGMyOTAzNjA5NzE2MC4uNjI2M2YwZjVlYjZjY2UwNWFmMzIy
NjE5NzVjN2UyMDljMzIxYjkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL1NRTGl0ZVN0b3JhZ2VBcmVhLmgKQEAgLTI2LDggKzI2LDggQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFCYXNlLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVt
ZW50QXV0b1Jlc2V0U2NvcGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlQ29u
bmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNl
dFNjb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC02NiwxNiArNjYsMTYgQEAgcHJp
dmF0ZToKICAgICAgICAgSW52YWxpZAogICAgIH07CiAgICAgQVNDSUlMaXRlcmFsIHN0YXRlbWVu
dFN0cmluZyhTdGF0ZW1lbnRUeXBlKSBjb25zdDsKLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnRBdXRvUmVzZXRTY29wZSBjYWNoZWRTdGF0ZW1lbnQoU3RhdGVtZW50VHlwZSk7CisgICAgV2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2VTdGF0ZW1lbnRSZXNldFNjb3BlIGNhY2hlZFN0YXRlbWVudChT
dGF0ZW1lbnRUeXBlKTsKICAgICBFeHBlY3RlZDxTdHJpbmcsIFN0b3JhZ2VFcnJvcj4gZ2V0SXRl
bShjb25zdCBTdHJpbmcmIGtleSk7CiAgICAgRXhwZWN0ZWQ8U3RyaW5nLCBTdG9yYWdlRXJyb3I+
IGdldEl0ZW1Gcm9tRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBrZXkpOwogCiAgICAgU3RyaW5nIG1f
cGF0aDsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4gbV9kYXRhYmFzZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247Ci0gICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+PiBtX2NhY2hlZFN0YXRlbWVu
dHM7CiAgICAgc3RkOjpvcHRpb25hbDxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4gbV9jYWNoZTsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VDb25uZWN0aW9uPiBtX2RhdGFiYXNl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYW5zYWN0aW9u
PiBtX3RyYW5zYWN0aW9uOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2VTdGF0ZW1lbnQ+PiBtX2NhY2hlZFN0YXRlbWVudHM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NRTGl0ZVBy
b2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU1FMaXRlUHJv
Y2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNjMDZjYWM0NjJlODZiNWUyNzRj
YmY1NTVmYjM2MWI0NWZmZjA2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1FMaXRlUHJvY2Vzc0Fz
c2VydGlvbkhvbGRlci5oIgorCisjaW5jbHVkZSAiUHJvY2Vzc0Fzc2VydGlvbi5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VBY3Rpdml0eVRyYWNrZXIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1JlZjxTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyPiBTUUxpdGVQcm9j
ZXNzQXNzZXJ0aW9uSG9sZGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIpOworfQorCit2b2lkIFNRTGl0ZVByb2Nlc3NB
c3NlcnRpb25Ib2xkZXI6OndpbGxCZWdpbkZpcnN0QWN0aXZpdHkoKQoreworICAgIGlmIChtX2Fz
c2VydGlvbiAmJiBtX2Fzc2VydGlvbi0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2Fzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vz
c0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBkYXRhYmFzZSBsb2NrIl9zLCBQcm9j
ZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFza0ludGVycnVwdGFibGUsIFByb2Nlc3NBc3NlcnRp
b246Ok1vZGU6OlN5bmMpOworfQorCit2b2lkIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXI6
OmRpZEVuZExhc3RBY3Rpdml0eSgpCit7CisgICAgbV9hc3NlcnRpb24gPSBudWxscHRyOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NR
TGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDlhMjNiZThhMzEyNjMy
MDUxZDhlMjM5YzBiZjlkYTljODQxYzVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3NBc3NlcnRpb24u
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlQWN0aXZpdHlUcmFja2VySW1wbC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUHJvY2Vzc0Fzc2VydGlvbjsKKworY2xh
c3MgU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpTUUxpdGVE
YXRhYmFzZUFjdGl2aXR5VHJhY2tlckltcGwgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlcj4gY3JlYXRlKCk7CisgICAgdm9pZCB3aWxsQmVnaW5G
aXJzdEFjdGl2aXR5KCkgZmluYWw7CisgICAgdm9pZCBkaWRFbmRMYXN0QWN0aXZpdHkoKSBmaW5h
bDsKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVBc3NlcnRpb24oKTsKKyAgICB2b2lkIHJlbGVh
c2VBc3NlcnRpb24oKTsKKworICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2Fzc2VydGlv
bjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRl
ci5jcHAKaW5kZXggYTNmYmI3NjBlNzc2MDQwNzhkOGU1MGMxNGNkZDdkN2NlYTZlYjZkMy4uMzFh
OGYxYmUxNDU1Y2FjODRjNjNiYjZkNDNkZmMxNDg0YmU1NGE2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFG
b3JtYXRSZWFkZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCisjaW5jbHVkZSA8cGFsL2Nm
L0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW5jbHVkZSA8cGFsL2NvY29hL01lZGlhVG9vbGJveFNv
ZnRMaW5rLmg+CiAKIFdURl9ERUNMQVJFX0NGX1RZUEVfVFJBSVQoTVRQbHVnaW5Gb3JtYXRSZWFk
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggYmVjMWEzZjEzNGUyZGQzOTIzNjEyNzUyYTg5ZDg4MTU3OWUy
MGY4NC4uOWFiY2IyMDU5M2EyMzhmYTRjZGFmZWUzYjUwYmMyOWIxMTgxM2QyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0yMzksNiArMjM5LDcgQEAgU2hhcmVkL1ByaW50SW5mby5jcHAKIFNoYXJlZC9SVENO
ZXR3b3JrLmNwcAogU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuY3BwCiBTaGFyZWQvUmVtb3RlV29y
a2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcAorU2hhcmVkL1NRTGl0ZVByb2Nlc3NBc3NlcnRpb25I
b2xkZXIuY3BwCiBTaGFyZWQvU2Nyb2xsaW5nQWNjZWxlcmF0aW9uQ3VydmUuY3BwCiBTaGFyZWQv
U2Vzc2lvblN0YXRlLmNwcAogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI5MWQ5OGM4YmM1
YzFlODA5MTNiMmUyOTNlMjBhNTYwZjk0MzY1YmUuLjA5MTgxMTZiYzVkNTQ2NGQ3MzYxOTgyNmQ5
NjVjYTdlZWI4NWVhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTUwNiw2ICsxNTA2LDcgQEAKIAkJOTNCNjMxRjEyN0FCQUNBOTAw
NDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNCNjMxRUYyN0FCQUNBOTAwNDQzQTQ0IC8qIFF1b3RhTWFuYWdlci5o
ICovOyB9OwogCQk5M0I2MzFGMzI3QUJBRDgwMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVl
c3RJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0I2MzFGMjI3QUJBRDdGMDA0NDNBNDQgLyogUXVvdGFJbmNyZWFzZVJlcXVlc3RJZGVu
dGlmaWVyLmggKi87IH07CiAJCTkzQkRFQjAxMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2Fk
VHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDVE
RDIwMjdEQTU1NTYwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q1REQxRTI3REE1
NTU1MDAxMDdDNzUgLyogU1FMaXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5oICovOyB9OwogCQk5
M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzZDMjU0Qjg5
NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oICovOyB9OwogCQk5M0Q2Qjc3
MzI1NEJCOEM3MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc2ODI1NEI3
QkM2MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggKi87IH07CiAJ
CTkzRDZCNzgyMjU0Q0NDRjQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q2Qjc4MTI1NENDQUJDMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtNTQ4MSw2ICs1NDgyLDggQEAKIAkJOTNCQTA0
RTAyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCQTA0RTEyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDVERDFFMjdEQTU1NTUwMDEwN0M3NSAvKiBT
UUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNENUREMUYyN0RBNTU1NTAwMTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3Nl
cnRpb25Ib2xkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRDZCNzY3MjU0QjdCQzYwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNENkI3NjgyNTRCN0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3NjkyNTRC
N0JDNjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQwMiw2ICs3NDA1LDggQEAKIAkJCQk4MzEz
RjdFNzFGN0RBRTAzMDBCOTQ0RUIgLyogU2hhcmVkU3RyaW5nSGFzaFRhYmxlLmggKi8sCiAJCQkJ
ODNGOTY0NEIxRkEwRjc2MjAwQzQ3NzUwIC8qIFNoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5
LmNwcCAqLywKIAkJCQk4M0Y5NjQ0QzFGQTBGNzYzMDBDNDc3NTAgLyogU2hhcmVkU3RyaW5nSGFz
aFRhYmxlUmVhZE9ubHkuaCAqLywKKwkJCQk5M0Q1REQxRjI3REE1NTU1MDAxMDdDNzUgLyogU1FM
aXRlUHJvY2Vzc0Fzc2VydGlvbkhvbGRlci5jcHAgKi8sCisJCQkJOTNENUREMUUyN0RBNTU1NTAw
MTA3Qzc1IC8qIFNRTGl0ZVByb2Nlc3NBc3NlcnRpb25Ib2xkZXIuaCAqLywKIAkJCQkxQTVFNERB
MzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oICovLAogCQkJCUY0QTdDRTg0
MjY2N0VCNEUwMDIyODY4NSAvKiBUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1bHQuaCAqLywKIAkJ
CQk3QkUzN0Y2RjI3QjE0NzVGMDA3QTZDRDMgLyogVGhyZWFkU2FmZU9iamVjdEhlYXAuaCAqLywK
QEAgLTEzNjA3LDYgKzEzNjEyLDcgQEAKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0MjU0
Q0NEMEUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0Q2Qjc4NTI1NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDVERDIwMjdE
QTU1NTYwMDEwN0M3NSAvKiBTUUxpdGVQcm9jZXNzQXNzZXJ0aW9uSG9sZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0U3OTlEQTI3NjEyMTA4MDA3NDAwOEEgLyogU1FMaXRlU3RvcmFnZUFyZWEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdBM0ZFQ0EyMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdl
QWNjZXNzU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4
NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ4NWIzMWIyZDA4ZDA1
MzMzYTk5ZDQzODc2ZGQ3YWRmNzI3OTA1NGUuLjQ0MDg3Yzg1MjBiMmQzYzdlMjAwYjYzN2MxN2Yx
MTIzOWFhNGVjYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMy0xOCAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBBYm9ydCBTUUxpdGUgYWN0aXZpdGll
cyB0byByZWxlYXNlIGZpbGUgbG9jayB3aGVuIHByb2Nlc3MgaXMgYWJvdXQgdG8gc3VzcGVuZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRl
c3RzIHRvIGNoZWNrIGlmIGZ1bmN0aW9uIGV4aXN0cyBiZWZvcmUgY2FsbGluZy4KKworICAgICAg
ICAqIHN0b3JhZ2UvZG9tc3RvcmFnZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRt
bDoKKyAgICAgICAgKiBzdG9yYWdlL3Jlc291cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9jYWxz
dG9yYWdlLWRhdGFiYXNlcy1pbW1lZGlhdGVseS5odG1sOgorCiAyMDIyLTAzLTE4ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIy
OTA2MjgpOiBTY3J1YmJlciBtYWtlcyBhIHZpc3VhbCB0cmFpbCB3aGVuIHNjcnViYmluZyBvbiB0
di55b3V0dWJlLmNvbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9kb21zdG9yYWdl
L3N0b3JhZ2UtY2xvc2UtZGF0YWJhc2Utb24taWRsZS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9kb21zdG9yYWdlL3N0b3JhZ2UtY2xvc2UtZGF0YWJhc2Utb24taWRsZS5odG1sCmluZGV4IDAz
YTc2ZGE1YTNhYmE2ZDQ2OTNiZThkYjUzZTdhMGZlMmE3YWViZTQuLmJkMTgxZDc0ZTMxMWM1OWJj
OTUwZWNmYWZmOGY4NjM5NTJmZjgwMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
ZG9tc3RvcmFnZS9zdG9yYWdlLWNsb3NlLWRhdGFiYXNlLW9uLWlkbGUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2RvbXN0b3JhZ2Uvc3RvcmFnZS1jbG9zZS1kYXRhYmFzZS1vbi1pZGxl
Lmh0bWwKQEAgLTIwLDcgKzIwLDggQEAgZnVuY3Rpb24gbG9hZE5leHRQYWdlKCkKIGZ1bmN0aW9u
IHJ1blRlc3QoKQogewogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0
UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCgwKTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyLnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCkKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKDApOwogICAgICAg
ICB0ZXN0UnVubmVyLnNldENhY2hlTW9kZWwoMCk7IC8vIFdlYkNhY2hlTW9kZWxEb2N1bWVudFZp
ZXdlci4KICAgICB9CiAKQEAgLTQ2LDcgKzQ3LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAg
ICAgICAgICBsb2cod2luZG93LmxvY2FsU3RvcmFnZVsnYmFyJ10gPT09ICdCQVInID8gJ1BBU1Mn
IDogJ0ZBSUwnKTsKIAogICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoMzAw
KTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIuc2V0U3RvcmFnZURhdGFi
YXNlSWRsZUludGVydmFsKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0b3Jh
Z2VEYXRhYmFzZUlkbGVJbnRlcnZhbCgzMDApOwogICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fs
c3RvcmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
cmVzb3VyY2VzL3N0b3JhZ2UtY2xvc2UtaWRsZS1sb2NhbHN0b3JhZ2UtZGF0YWJhc2VzLWltbWVk
aWF0ZWx5Lmh0bWwKaW5kZXggNGUwYTQ0NmUzZTQyMzRkZjkxYWE5ZTZhZGYyNmIwMzY4ZTU3YjRj
Yy4uN2IxNzM2MTY2ZTcxZDUxODMzMTBhMTlkMDNkNzdjOWUyMjIyNGZiMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9yZXNvdXJjZXMvc3RvcmFnZS1jbG9zZS1pZGxlLWxvY2Fsc3Rv
cmFnZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L3Jlc291cmNlcy9zdG9yYWdlLWNsb3NlLWlkbGUtbG9jYWxzdG9yYWdlLWRhdGFiYXNlcy1pbW1l
ZGlhdGVseS5odG1sCkBAIC0yLDcgKzIsNyBAQAogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBzd2lu
Z0JhY2soKSAKICAgICB7Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LnRlc3RSdW5uZXIuY2xvc2VJZGxlTG9j
YWxTdG9yYWdlRGF0YWJhc2VzKSB7CiAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5jbG9z
ZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXMoKTsKICAgICAgICAgfQogICAgICAgICBsb2NhdGlv
bi5ocmVmPScuLi9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9jbG9zZS1pZGxlLWxvY2Fsc3RvcmFn
ZS1kYXRhYmFzZXMtaW1tZWRpYXRlbHkuaHRtbCc7Cg==
</data>
<flag name="commit-queue"
          id="483046"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>