<?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>240269</bug_id>
          
          <creation_ts>2022-05-09 21:14:25 -0700</creation_ts>
          <short_desc>[GPU Process] [Filters] Filter result buffers should be attributed to WebProcess</short_desc>
          <delta_ts>2023-05-15 18:01:47 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>240777</dependson>
    
    <dependson>240807</dependson>
    
    <dependson>240808</dependson>
    
    <dependson>240809</dependson>
    
    <dependson>240810</dependson>
    
    <dependson>240811</dependson>
          <blocked>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youssefdevelops</cc>
    
    <cc>y_soliman</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1867832</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-05-09 21:14:25 -0700</bug_when>
    <thetext>Because the GPUProcess memory is limited and because applying a filter can require a large chunk of memory, this memory should be allocated by GPUProcess but should be owned by WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867834</commentid>
    <comment_count>1</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-05-09 21:15:05 -0700</bug_when>
    <thetext>rdar://92295215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867835</commentid>
    <comment_count>2</comment_count>
      <attachid>459091</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-05-09 21:17:44 -0700</bug_when>
    <thetext>Created attachment 459091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867845</commentid>
    <comment_count>3</comment_count>
      <attachid>459094</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-05-09 22:06:08 -0700</bug_when>
    <thetext>Created attachment 459094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870956</commentid>
    <comment_count>4</comment_count>
      <attachid>459639</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-05-21 13:00:33 -0700</bug_when>
    <thetext>Created attachment 459639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1955558</commentid>
    <comment_count>5</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2023-05-15 18:01:47 -0700</bug_when>
    <thetext>All the dependent bugs were resolved. Resolve as Fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459091</attachid>
            <date>2022-05-09 21:17:44 -0700</date>
            <delta_ts>2022-05-09 22:34:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240269-20220509211743.patch</filename>
            <type>text/plain</type>
            <size>42956</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzOTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGIwOWYwOWRiNjVmNjE1
OWQ5ZWRmZjRhMjc0NDVmOWRiM2RlZDRkNi4uMmQ5YjQzMjQyYjdkNzUwMTM2YzBhMzI2ZDk2N2Y3
MGUzZTkyNDEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTA1LTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
W0ZpbHRlcnNdIEZpbHRlciByZXN1bHQgYnVmZmVycyBzaG91bGQgYmUgYXR0cmlidXRlZCB0byBX
ZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDAyNjkKKyAgICAgICAgcmRhcjovLzkyMjk1MjE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVzZSB0aGUgR1BVUHJvY2VzcyBtZW1vcnkg
aXMgbGltaXRlZCBhbmQgYmVjYXVzZSBhcHBseWluZyBhIGZpbHRlcgorICAgICAgICBjYW4gcmVx
dWlyZSBhIGxhcmdlIGNodW5rIG9mIG1lbW9yeSwgdGhpcyBtZW1vcnkgc2hvdWxkIGJlIGFsbG9j
YXRlZCBieQorICAgICAgICBHUFVQcm9jZXNzIGJ1dCBzaG91bGQgYmUgb3duZWQgYnkgV2ViUHJv
Y2Vzcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6YXBwbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyQWxsb2NhdG9yLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJSZXN1bHRzLmguCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbGxvY2F0b3I6OmNyZWF0ZUlt
YWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckFsbG9jYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlcklt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVySW1hZ2U6OkZpbHRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckltYWdlOjppbWFnZUJ1ZmZlckZyb21QaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJJ
bWFnZTo6Y29weVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJSZXN1bHRzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJSZXN1bHRzLmguCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJS
ZXN1bHRzOjpGaWx0ZXJSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlclJlc3VsdHM6
OmVmZmVjdFJlc3VsdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJSZXN1bHRzOjpz
ZXRFZmZlY3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyUmVzdWx0czo6Y2xlYXJF
ZmZlY3RSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
UmVzdWx0cy5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyUmVzdWx0czo6YWxsb2NhdG9yIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlclJlc3VsdHM6OmVmZmVjdFJlc3VsdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJSZXN1bHRzOjpzZXRFZmZlY3RS
ZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyUmVzdWx0czo6Y2xlYXJF
ZmZlY3RSZXN1bHQpOiBEZWxldGVkLgorCiAyMDIyLTA1LTA5ICBHYWJyaWVsIE5hdmEgTWFyaW5v
ICA8Z25hdmFtYXJpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVCBpbiBXZWJDb3JlOjpS
ZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyMWExODNlZTEy
YjM1Yzk1N2RhNzFlZjllZjVjNzcwNGRlODhiMTI1Li4wYWEyYTYxNGIxYjBmODhiMjE0NmFlMTFj
YmEyZTgyYWMxMDJhYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA1LTA5ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gW0ZpbHRlcnNdIEZpbHRlciByZXN1bHQgYnVmZmVycyBzaG91bGQgYmUgYXR0cmlidXRlZCB0
byBXZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDAyNjkKKyAgICAgICAgcmRhcjovLzkyMjk1MjE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVGaWx0ZXJBbGxvY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRmlsdGVyQWxsb2NhdG9yOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVGaWx0ZXJBbGxvY2F0b3IuaDog
QWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0Rmls
dGVyZWRJbWFnZUZvckltYWdlQnVmZmVyKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wNS0wOSAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1
aWxkIGZpeCBmb3IgSW50ZXJuYWwgaU9TIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA3NTdm
MzI2MTdmNTdkMzk0MzUzMjAxNGQ4ZmIwYjAxZDMwNWIyYWFiLi5mOTQyZjM2YTBjMzUyZjgyODY4
MTAwNzZmY2JhMGQ0ZmExNWJiYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE2NTIsNiArMTY1
Miw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVR1cmJ1bGVuY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckFsbG9jYXRvci5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0QXBwbGllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3RHZW9tZXRyeS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDI5NjhjMGM4
ZWNlNWE4NTExNTZhMDE3MzE1NjIxYjViMTczZDg1ZWUuLjM3OWRmMzZmMGE5YThlNzU5MTRkZTQy
NzVlNjU4NjY0ZGIxODBhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTQwLDExICsyMTQwLDEzIEBA
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJBbGxvY2F0b3IuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRnVuY3Rpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlcklt
YWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCitwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUFscGhhLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDRmNDJiYTM3OWNlZjZmMTEyN2Q1OTJkZDI0ZTcyOGI2ODhmYjg4NzcuLmQ4YjIzZmUzODFl
ODU0NGFhODg3N2FhMGM2ODcwZDg2NjJjZjE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNDIsNiArMjM0Miw3IEBACiAJ
CTcxRkNCMTcwMjdCQUIzRkUwMEUwNjMxQyAvKiBGcmFtZVJhdGVBbGlnbmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUZDQjE2RDI3QkFCM0RGMDBF
MDYzMUMgLyogRnJhbWVSYXRlQWxpZ25lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBTVkdQcm9w
ZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVF
RTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3
IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIx
NThGREUyODI5RkQ4MzAwM0JCNDIzIC8qIEZpbHRlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxNThGREQyODI5RjYzRjAwM0JCNDIz
IC8qIEZpbHRlckFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyMUI0OTc0MjUxMkJBM0IwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJh
Y2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
MUI0OTcwMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjI4M0YwRTIzMEIyNjhD
MDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFn
ZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyMkFGMkRFMjdFMUMyMDYwMDc4RDk5NyAvKiBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjJBRjJEQjI3RTFDMjA0MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTM3
MSw2ICsxMTM3Miw5IEBACiAJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmltYXRl
ZFZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYxMkZG
NyAvKiBTVkdWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxNEI5QjcyNzQ0NThGQTAwM0JFNkRG
IC8qIEZpbHRlckVmZmVjdFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJFZmZlY3RWZWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNThGREIyODI5RjQxMDAwM0JC
NDIzIC8qIEZpbHRlclJlc3VsdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyUmVzdWx0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTU4RkRDMjgyOUY2M0YwMDNC
QjQyMyAvKiBGaWx0ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyQWxs
b2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNThGREQyODI5RjYz
RjAwM0JCNDIzIC8qIEZpbHRlckFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJBbGxv
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NkYyNTEyQUMwNDAw
RkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFn
ZUJpdG1hcEJhY2tpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjFCNDk3
MDI1MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlQml0bWFwQmFja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjJB
ODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFuaW1hdGlvbkZyYW1lUmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjcxNjQsNiArMjcxNjgsOCBAQAogCQkJCTg0NzMwRDcwMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVR1
cmJ1bGVuY2UuaCAqLywKIAkJCQk3MkI4QjAzMjI3NTMzRjgxMDBGNzUyQUEgLyogRmlsdGVyLmNw
cCAqLywKIAkJCQk4NDVFNzJGNzBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi8sCisJCQkJ
NzIxNThGREMyODI5RjYzRjAwM0JCNDIzIC8qIEZpbHRlckFsbG9jYXRvci5jcHAgKi8sCisJCQkJ
NzIxNThGREQyODI5RjYzRjAwM0JCNDIzIC8qIEZpbHRlckFsbG9jYXRvci5oICovLAogCQkJCTA4
QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICovLAogCQkJCTA4Qzky
NTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLywKIAkJCQk3MkExM0E5RjI3
NEM1Q0M3MDBFMkE4OEUgLyogRmlsdGVyRWZmZWN0QXBwbGllci5oICovLApAQCAtMjcxNzgsNiAr
MjcxODQsNyBAQAogCQkJCTQ5RUNFQjY0MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRp
b24uaCAqLywKIAkJCQk0OUVDRUI2NTE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9u
cy5jcHAgKi8sCiAJCQkJNDlFQ0VCNjYxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlv
bnMuaCAqLywKKwkJCQk3MjE1OEZEQjI4MjlGNDEwMDAzQkI0MjMgLyogRmlsdGVyUmVzdWx0cy5j
cHAgKi8sCiAJCQkJNzIxMUI1RDYyNzY1MzY4MjAwNzZGRUY4IC8qIEZpbHRlclJlc3VsdHMuaCAq
LywKIAkJCQk4NDczMEQ3NDEyNDhGMEIzMDBEM0E5QzkgLyogTGlnaHRTb3VyY2UuaCAqLywKIAkJ
CQlBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgKi8sCkBA
IC0zNDc5Miw2ICszNDc5OSw3IEBACiAJCQkJQkM1RUI2OUYwRTgxREFFQjAwQjI1OTY1IC8qIEZp
bGxMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEyQkU0ODMxRkU4NjVERDAwMjAzMUNDIC8q
IEZpbGxNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDVFNzJGODBGRDI2MUVFMDBBODdENzkg
LyogRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjE1OEZERTI4MjlGRDgzMDAzQkI0MjMg
LyogRmlsdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEM5MjUxQTBGQ0M3QzRB
MDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjhENDc5MTI3
OUE0OEI3MDBCQTdDMEUgLyogRmlsdGVyRWZmZWN0QXBwbGllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzI2Q0RFMjAyNzU5NzM1MDAwQTQ0NUIyIC8qIEZpbHRlckVmZmVjdEdlb21ldHJ5LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCBiZjY4ZDFhZDYxOGQzMWQ0YTIxMTY4Yjk3MGRm
ZWQxMDdlMmYxMjU4Li4zNTAxMjk0OGM0YjE1YjZiYzQxN2EyY2ZkYjJjZGEzNDRiYTkyZDMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCkBAIC0xNDgsNiArMTQ4LDEyIEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAg
ICBSZWZQdHI8SW1hZ2U+IGZpbHRlcmVkSW1hZ2UoRmlsdGVyJiBmaWx0ZXIpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBGaWx0ZXJSZXN1bHRzIHJlc3VsdHM7CisgICAgICAgIHJldHVybiBmaWx0
ZXJlZEltYWdlKGZpbHRlciwgcmVzdWx0cyk7CisgICAgfQorCisgICAgUmVmUHRyPEltYWdlPiBm
aWx0ZXJlZEltYWdlKEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJSZXN1bHRzJiByZXN1bHRzKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVk
KCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKQEAgLTE1NSw3ICsxNjEsNiBAQCBwcm90ZWN0ZWQ6
CiAKICAgICAgICAgY29uc3RfY2FzdDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNo
RHJhd2luZ0NvbnRleHQoKTsKICAgICAgICAgCi0gICAgICAgIEZpbHRlclJlc3VsdHMgcmVzdWx0
czsKICAgICAgICAgYXV0byByZXN1bHQgPSBmaWx0ZXIuYXBwbHkodGhpcywgeyB7IH0sIGxvZ2lj
YWxTaXplKCkgfSwgcmVzdWx0cyk7CiAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAppbmRleCBmYjRkMjY1ZjdkMzUwOWUwN2QyMzhmMWZhNzcxNTFkNWZmM2RiYjBh
Li5hMzRjNDcxNGU5NmYzNGQ3M2QyMTRiM2JhMGIyZWVmN2RkMGFhMTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTM4LDYgKzM4LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsdGVyOworY2xhc3MgRmlsdGVyUmVz
dWx0czsKIGNsYXNzIEhvc3RXaW5kb3c7CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiBjbGFzcyBJT1N1
cmZhY2VQb29sOwpAQCAtMTI3LDYgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0
cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFj
a2luZ1N0b3JlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9u
ID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRy
PEltYWdlPiBmaWx0ZXJlZEltYWdlKEZpbHRlciYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJ
bWFnZT4gZmlsdGVyZWRJbWFnZShGaWx0ZXImLCBGaWx0ZXJSZXN1bHRzJikgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSks
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKaW5kZXgg
YmJlZWZlN2NhMWVjY2QyMWJiZGQyMjk4NGM4MTA3NTM5MjE4ZDJkZC4uZTg3MjU1MjM0N2JjMDJi
YTFkNTg5ZTcwYjkyYmE5ZDA4MWYwZjk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmlsdGVySW1hZ2UuaCIKKyNpbmNs
dWRlICJGaWx0ZXJSZXN1bHRzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtODcsNyArODgsNyBAQCBSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRl
cjo6YXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdQog
CiAgICAgaWYgKHNvdXJjZUltYWdlKSB7CiAgICAgICAgIGF1dG8gYWJzb2x1dGVTb3VyY2VJbWFn
ZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZEJ5RmlsdGVyU2NhbGUoc291cmNlSW1hZ2VS
ZWN0KSk7Ci0gICAgICAgIGlucHV0ID0gRmlsdGVySW1hZ2U6OmNyZWF0ZShtX2ZpbHRlclJlZ2lv
biwgc291cmNlSW1hZ2VSZWN0LCBhYnNvbHV0ZVNvdXJjZUltYWdlUmVjdCwgUmVmIHsgKnNvdXJj
ZUltYWdlIH0pOworICAgICAgICBpbnB1dCA9IEZpbHRlckltYWdlOjpjcmVhdGUobV9maWx0ZXJS
ZWdpb24sIHNvdXJjZUltYWdlUmVjdCwgYWJzb2x1dGVTb3VyY2VJbWFnZVJlY3QsIFJlZiB7ICpz
b3VyY2VJbWFnZSB9LCByZXN1bHRzLmFsbG9jYXRvcigpKTsKICAgICAgICAgaWYgKCFpbnB1dCkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyQWxsb2NhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyQWxsb2NhdG9yLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mY2I1Y2UyM2IxYTY0ZWY3NTYzNzA5MTVjMmU5YjNmYWFjYWQyNDhlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJBbGxvY2F0b3IuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZpbHRlckFsbG9jYXRvci5oIgorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitGaWx0ZXJBbGxvY2F0b3I6OkZpbHRlckFsbG9jYXRvcigpID0g
ZGVmYXVsdDsKKworUmVmUHRyPEltYWdlQnVmZmVyPiBGaWx0ZXJBbGxvY2F0b3I6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6VW5z
cGVjaWZpZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgYnVmZmVyT3B0aW9u
c0ZvclJlbmRpbmdNb2RlKHJlbmRlcmluZ01vZGUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyQWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRiM2VkNDNhNTZhNmRjMDNkNDM2
OTBlNjNhZjZlY2E0ZTVjMGFkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyQWxsb2NhdG9yLmgKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CitjbGFzcyBGbG9hdFNpemU7CitjbGFz
cyBJbWFnZUJ1ZmZlcjsKKworY2xhc3MgRmlsdGVyQWxsb2NhdG9yIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBGaWx0ZXJBbGxvY2F0
b3IoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5GaWx0ZXJBbGxvY2F0b3IoKSA9IGRl
ZmF1bHQ7CisKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVy
aW5nTW9kZSkgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAKaW5kZXggY2I5M2ExOWZkODliMGIxNTI4Y2RhYjNjNmUxMjFlOGNkNGMxODEyZS4uYzEy
MGZmYjM5NjIzZDlhZTA4MWM2OGYyMjJhZDUyNDI3NmM2ZDk1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cApAQCAtMTM0LDcgKzEzNCw3IEBAIFJlZlB0cjxGaWx0ZXJJbWFnZT4gRmlsdGVyRWZmZWN0Ojph
cHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWCiAgICAgaWYgKCFh
cHBsaWVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcmVzdWx0ID0gRmls
dGVySW1hZ2U6OmNyZWF0ZShwcmltaXRpdmVTdWJyZWdpb24sIGltYWdlUmVjdCwgYWJzb2x1dGVJ
bWFnZVJlY3QsIGlzQWxwaGFJbWFnZSwgaXNWYWxpZFByZW11bHRpcGxpZWQsIGZpbHRlci5yZW5k
ZXJpbmdNb2RlKCksIGltYWdlQ29sb3JTcGFjZSk7CisgICAgYXV0byByZXN1bHQgPSBGaWx0ZXJJ
bWFnZTo6Y3JlYXRlKHByaW1pdGl2ZVN1YnJlZ2lvbiwgaW1hZ2VSZWN0LCBhYnNvbHV0ZUltYWdl
UmVjdCwgaXNBbHBoYUltYWdlLCBpc1ZhbGlkUHJlbXVsdGlwbGllZCwgZmlsdGVyLnJlbmRlcmlu
Z01vZGUoKSwgaW1hZ2VDb2xvclNwYWNlLCByZXN1bHRzLmFsbG9jYXRvcigpKTsKICAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKaW5kZXgg
YjEwNmRmM2IxZmZjYmE5N2U0OTExMjE5ZDIwM2YyMDAwMmM0YmUzYi4uODA0MGZmNzRlMWRhMGM3
NThiNTk1YmVkMmI3MDczYjk2ODRlMzc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKQEAgLTM4LDE4ICsz
OCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxGaWx0ZXJJbWFnZT4gRmls
dGVySW1hZ2U6OmNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29u
c3QgRmxvYXRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0
LCBib29sIGlzQWxwaGFJbWFnZSwgYm9vbCBpc1ZhbGlkUHJlbXVsdGlwbGllZCwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UpCitSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckltYWdlOjpjcmVhdGUoY29uc3QgRmxvYXRS
ZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgYm9vbCBpc0FscGhhSW1hZ2UsIGJvb2wgaXNW
YWxpZFByZW11bHRpcGxpZWQsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGaWx0ZXJBbGxvY2F0b3ImIGFsbG9jYXRv
cikKIHsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhhYnNvbHV0
ZUltYWdlUmVjdC5zaXplKCkpKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbHRlckltYWdl
KHByaW1pdGl2ZVN1YnJlZ2lvbiwgaW1hZ2VSZWN0LCBhYnNvbHV0ZUltYWdlUmVjdCwgaXNBbHBo
YUltYWdlLCBpc1ZhbGlkUHJlbXVsdGlwbGllZCwgcmVuZGVyaW5nTW9kZSwgY29sb3JTcGFjZSkp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsdGVySW1hZ2UocHJpbWl0aXZlU3VicmVnaW9u
LCBpbWFnZVJlY3QsIGFic29sdXRlSW1hZ2VSZWN0LCBpc0FscGhhSW1hZ2UsIGlzVmFsaWRQcmVt
dWx0aXBsaWVkLCByZW5kZXJpbmdNb2RlLCBjb2xvclNwYWNlLCBhbGxvY2F0b3IpKTsKIH0KIAot
UmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXJJbWFnZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYg
cHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50
UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikK
K1JlZlB0cjxGaWx0ZXJJbWFnZT4gRmlsdGVySW1hZ2U6OmNyZWF0ZShjb25zdCBGbG9hdFJlY3Qm
IHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIs
IEZpbHRlckFsbG9jYXRvciYgYWxsb2NhdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZpbHRlckltYWdlKHByaW1pdGl2ZVN1YnJlZ2lvbiwgaW1hZ2VSZWN0LCBhYnNvbHV0ZUltYWdl
UmVjdCwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
aWx0ZXJJbWFnZShwcmltaXRpdmVTdWJyZWdpb24sIGltYWdlUmVjdCwgYWJzb2x1dGVJbWFnZVJl
Y3QsIFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBhbGxvY2F0b3IpKTsKIH0KIAotRmlsdGVySW1hZ2U6
OkZpbHRlckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBG
bG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIGJv
b2wgaXNBbHBoYUltYWdlLCBib29sIGlzVmFsaWRQcmVtdWx0aXBsaWVkLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkK
K0ZpbHRlckltYWdlOjpGaWx0ZXJJbWFnZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJl
Z2lvbiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRl
SW1hZ2VSZWN0LCBib29sIGlzQWxwaGFJbWFnZSwgYm9vbCBpc1ZhbGlkUHJlbXVsdGlwbGllZCwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIEZpbHRlckFsbG9jYXRvciYgYWxsb2NhdG9yKQogICAgIDogbV9wcmltaXRp
dmVTdWJyZWdpb24ocHJpbWl0aXZlU3VicmVnaW9uKQogICAgICwgbV9pbWFnZVJlY3QoaW1hZ2VS
ZWN0KQogICAgICwgbV9hYnNvbHV0ZUltYWdlUmVjdChhYnNvbHV0ZUltYWdlUmVjdCkKQEAgLTU3
LDE2ICs1NywxOCBAQCBGaWx0ZXJJbWFnZTo6RmlsdGVySW1hZ2UoY29uc3QgRmxvYXRSZWN0JiBw
cmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaQogICAgICwgbV9pc1ZhbGlkUHJl
bXVsdGlwbGllZChpc1ZhbGlkUHJlbXVsdGlwbGllZCkKICAgICAsIG1fcmVuZGVyaW5nTW9kZShy
ZW5kZXJpbmdNb2RlKQogICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCisgICAgLCBtX2Fs
bG9jYXRvcihhbGxvY2F0b3IpCiB7CiB9CiAKLUZpbHRlckltYWdlOjpGaWx0ZXJJbWFnZShjb25z
dCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBSZWY8SW1hZ2VCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIpCitGaWx0ZXJJbWFnZTo6RmlsdGVySW1hZ2UoY29uc3QgRmxvYXRSZWN0JiBw
cmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBG
aWx0ZXJBbGxvY2F0b3ImIGFsbG9jYXRvcikKICAgICA6IG1fcHJpbWl0aXZlU3VicmVnaW9uKHBy
aW1pdGl2ZVN1YnJlZ2lvbikKICAgICAsIG1faW1hZ2VSZWN0KGltYWdlUmVjdCkKICAgICAsIG1f
YWJzb2x1dGVJbWFnZVJlY3QoYWJzb2x1dGVJbWFnZVJlY3QpCiAgICAgLCBtX3JlbmRlcmluZ01v
ZGUoaW1hZ2VCdWZmZXItPnJlbmRlcmluZ01vZGUoKSkKICAgICAsIG1fY29sb3JTcGFjZShpbWFn
ZUJ1ZmZlci0+Y29sb3JTcGFjZSgpKQogICAgICwgbV9pbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdl
QnVmZmVyKSkKKyAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKIHsKIH0KIApAQCAtOTksNyAr
MTAxLDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckltYWdlOjppbWFnZUJ1ZmZlckZyb21QaXhlbEJ1
ZmZlcigpCiAgICAgaWYgKG1faW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVm
ZmVyLmdldCgpOwogCi0gICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9h
YnNvbHV0ZUltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAx
LCBtX2NvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgYnVmZmVyT3B0aW9uc0ZvclJlbmRp
bmdNb2RlKG1fcmVuZGVyaW5nTW9kZSkpOworICAgIG1faW1hZ2VCdWZmZXIgPSBtX2FsbG9jYXRv
ci5jcmVhdGVJbWFnZUJ1ZmZlcihtX2Fic29sdXRlSW1hZ2VSZWN0LnNpemUoKSwgbV9jb2xvclNw
YWNlLCBtX3JlbmRlcmluZ01vZGUpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2NywxMCArMTY5LDEwIEBAIHN0YXRpYyB2b2lkIGNvcHlJ
bWFnZUJ5dGVzKGNvbnN0IFBpeGVsQnVmZmVyJiBzb3VyY2VQaXhlbEJ1ZmZlciwgUGl4ZWxCdWZm
ZXImIGRlCiAgICAgfQogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0
Q29udmVydGVkUGl4ZWxCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIs
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGaWx0ZXJBbGxvY2F0b3Im
IGFsbG9jYXRvcikKIHsKICAgICBhdXRvIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1w
ZWRTaXplKHNvdXJjZVJlY3Quc2l6ZSgpKTsKLSAgICBhdXRvIGNvbnZlcnRlZEltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6VW5z
cGVjaWZpZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBj
b252ZXJ0ZWRJbWFnZUJ1ZmZlciA9IGFsbG9jYXRvci5jcmVhdGVJbWFnZUJ1ZmZlcihjbGFtcGVk
U2l6ZSwgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAgCiAg
ICAgaWYgKCFjb252ZXJ0ZWRJbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKQEAgLTE4MSwxOCArMTgzLDE4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVy
PiBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmCiAgICAgcmV0
dXJuIGNvbnZlcnRlZEltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHNvdXJjZVJl
Y3QpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0Q29udmVydGVk
UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImIHNvdXJjZVBpeGVsQnVmZmVyLCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uIGFscGhhRm9ybWF0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZl
cihQaXhlbEJ1ZmZlciYgc291cmNlUGl4ZWxCdWZmZXIsIEFscGhhUHJlbXVsdGlwbGljYXRpb24g
YWxwaGFGb3JtYXQsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGaWx0ZXJBbGxv
Y2F0b3ImIGFsbG9jYXRvcikKIHsKICAgICBhdXRvIHNvdXJjZVJlY3QgPSBJbnRSZWN0IHsgeyB9
ICwgc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpIH07CiAgICAgYXV0byBjbGFtcGVkU2l6ZSA9IElt
YWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShzb3VyY2VSZWN0LnNpemUoKSk7CiAKICAgICBhdXRvJiBz
b3VyY2VDb2xvclNwYWNlID0gc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCkuY29sb3JTcGFjZTsK
LSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwg
UmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIHNvdXJjZUNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGFsbG9jYXRvci5jcmVhdGVJ
bWFnZUJ1ZmZlcihjbGFtcGVkU2l6ZSwgc291cmNlQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGltYWdlQnVmZmVyLT5wdXRQaXhlbEJ1ZmZlcihzb3VyY2VQaXhl
bEJ1ZmZlciwgc291cmNlUmVjdCk7Ci0gICAgcmV0dXJuIGdldENvbnZlcnRlZFBpeGVsQnVmZmVy
KCppbWFnZUJ1ZmZlciwgYWxwaGFGb3JtYXQsIHNvdXJjZVJlY3QsIGNvbG9yU3BhY2UpOworICAg
IHJldHVybiBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFscGhhRm9ybWF0
LCBzb3VyY2VSZWN0LCBjb2xvclNwYWNlLCBhbGxvY2F0b3IpOwogfQogCiBib29sIEZpbHRlcklt
YWdlOjpyZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFjZUNvbnZlcnNpb24oc3RkOjpvcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpIGNvbnN0CkBAIC0yNzMsNyArMjc1
LDcgQEAgdm9pZCBGaWx0ZXJJbWFnZTo6Y29weVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiBkZXN0
aW5hdGlvblBpeGVsQnVmZmVyLCBjb25zdCBJbnQKICAgICAgICAgICAgIC8vIFdlIHByZWZlciBh
IGNvbnZlcnNpb24gZnJvbSB0aGUgaW1hZ2UgYnVmZmVyLgogICAgICAgICAgICAgaWYgKG1faW1h
Z2VCdWZmZXIpIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IHJlY3QgeyB7IH0sIG1fYWJzb2x1
dGVJbWFnZVJlY3Quc2l6ZSgpIH07Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY29udmVydGVk
UGl4ZWxCdWZmZXIgPSBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcigqbV9pbWFnZUJ1ZmZlciwgYWxw
aGFGb3JtYXQsIHJlY3QsIGNvbG9yU3BhY2UpKQorICAgICAgICAgICAgICAgIGlmIChhdXRvIGNv
bnZlcnRlZFBpeGVsQnVmZmVyID0gZ2V0Q29udmVydGVkUGl4ZWxCdWZmZXIoKm1faW1hZ2VCdWZm
ZXIsIGFscGhhRm9ybWF0LCByZWN0LCBjb2xvclNwYWNlLCBtX2FsbG9jYXRvcikpCiAgICAgICAg
ICAgICAgICAgICAgIGNvcHlJbWFnZUJ5dGVzKCpjb252ZXJ0ZWRQaXhlbEJ1ZmZlciwgZGVzdGlu
YXRpb25QaXhlbEJ1ZmZlciwgc291cmNlUmVjdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQpAQCAtMjg2LDcgKzI4OCw3IEBAIHZvaWQgRmlsdGVySW1hZ2U6OmNvcHlQ
aXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYgZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgY29uc3QgSW50
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFj
ZUNvbnZlcnNpb24oY29sb3JTcGFjZSkpIHsKLSAgICAgICAgaWYgKGF1dG8gY29udmVydGVkUGl4
ZWxCdWZmZXIgPSBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcigqc291cmNlUGl4ZWxCdWZmZXIsIGFs
cGhhRm9ybWF0LCBjb2xvclNwYWNlKSkKKyAgICAgICAgaWYgKGF1dG8gY29udmVydGVkUGl4ZWxC
dWZmZXIgPSBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcigqc291cmNlUGl4ZWxCdWZmZXIsIGFscGhh
Rm9ybWF0LCBjb2xvclNwYWNlLCBtX2FsbG9jYXRvcikpCiAgICAgICAgICAgICBjb3B5SW1hZ2VC
eXRlcygqY29udmVydGVkUGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIHNvdXJj
ZVJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCmluZGV4IGU5ZWZkNWZi
OGNkZDVmNThjZmY3OTU0YWU1ZThmMGE4NjZhNzQ2YzAuLmQyZmU5NjU4NzJhNzg3OTFmNWY3NWFm
YjE2MWI5MDI5YWUxMjQwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmgKQEAgLTQwLDEzICs0MCwxNCBAQCBPQkpD
X0NMQVNTIENJSW1hZ2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlcjsKK2Ns
YXNzIEZpbHRlckFsbG9jYXRvcjsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEltYWdlQnVmZmVy
OwogCiBjbGFzcyBGaWx0ZXJJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckltYWdlPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxGaWx0ZXJJbWFnZT4gY3JlYXRlKGNvbnN0IEZs
b2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwg
Y29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIGJvb2wgaXNBbHBoYUltYWdlLCBib29s
IGlzVmFsaWRQcmVtdWx0aXBsaWVkLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEZpbHRlckltYWdlPiBjcmVhdGUoY29uc3Qg
RmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgUmVmPEltYWdlQnVmZmVyPiYmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEZpbHRlckltYWdlPiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiBw
cmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgYm9vbCBpc0FscGhhSW1hZ2UsIGJvb2wgaXNWYWxpZFBy
ZW11bHRpcGxpZWQsIFJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IEZpbHRlckFsbG9jYXRvciYpOworICAgIHN0YXRpYyBSZWZQdHI8RmlsdGVySW1hZ2U+IGNyZWF0
ZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiBp
bWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBSZWY8SW1hZ2VCdWZm
ZXI+JiYsIEZpbHRlckFsbG9jYXRvciYpOwogCiAgICAgLy8gVGhlIHJldHVybiB2YWx1ZXMgYXJl
IGluIGZpbHRlciBjb29yZGluYXRlcy4KICAgICBGbG9hdFJlY3QgcHJpbWl0aXZlU3VicmVnaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVTdWJyZWdpb247IH0KQEAgLTc3LDggKzc4LDgg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgRmlsdGVySW1hZ2UoY29uc3QgRmxv
YXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgYm9vbCBpc0FscGhhSW1hZ2UsIGJvb2wg
aXNWYWxpZFByZW11bHRpcGxpZWQsIFJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYpOwotICAgIEZpbHRlckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3Vi
cmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1
dGVJbWFnZVJlY3QsIFJlZjxJbWFnZUJ1ZmZlcj4mJik7CisgICAgRmlsdGVySW1hZ2UoY29uc3Qg
RmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgYm9vbCBpc0FscGhhSW1hZ2UsIGJv
b2wgaXNWYWxpZFByZW11bHRpcGxpZWQsIFJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIEZpbHRlckFsbG9jYXRvciYpOworICAgIEZpbHRlckltYWdlKGNvbnN0IEZs
b2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwg
Y29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIFJlZjxJbWFnZUJ1ZmZlcj4mJiwgRmls
dGVyQWxsb2NhdG9yJik7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgcGl4ZWxC
dWZmZXJTbG90KEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogCkBAIC0xMDYsNiArMTA3LDggQEAg
cHJpdmF0ZToKICNpZiBVU0UoQ09SRV9JTUFHRSkKICAgICBSZXRhaW5QdHI8Q0lJbWFnZT4gbV9j
aUltYWdlOwogI2VuZGlmCisKKyAgICBGaWx0ZXJBbGxvY2F0b3ImIG1fYWxsb2NhdG9yOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJSZXN1bHRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVzdWx0cy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjMyOTNmM2JkZWVjNzQzNDdjMjk3OWU4MWRmOTUwOWIwOGUwZTE5NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVzdWx0
cy5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlsdGVyUmVzdWx0
cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZpbHRlclJlc3VsdHM6OkZpbHRlclJlc3Vs
dHMoc3RkOjp1bmlxdWVfcHRyPEZpbHRlckFsbG9jYXRvcj4mJiBhbGxvY2F0b3IpCisgICAgOiBt
X2FsbG9jYXRvcihhbGxvY2F0b3IgPyBXVEZNb3ZlKGFsbG9jYXRvcikgOiBtYWtlVW5pcXVlPEZp
bHRlckFsbG9jYXRvcj4oKSkKK3sKK30KKworRmlsdGVySW1hZ2UqIEZpbHRlclJlc3VsdHM6OmVm
ZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3QmIGVmZmVjdCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9y
ZXN1bHRzLmdldChlZmZlY3QpOworfQorCit2b2lkIEZpbHRlclJlc3VsdHM6OnNldEVmZmVjdFJl
c3VsdChGaWx0ZXJFZmZlY3QmIGVmZmVjdCwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0
cywgUmVmPEZpbHRlckltYWdlPiYmIHJlc3VsdCkKK3sKKyAgICBtX3Jlc3VsdHMuc2V0KHsgZWZm
ZWN0IH0sIFdURk1vdmUocmVzdWx0KSk7CisKKyAgICBmb3IgKGF1dG8mIGlucHV0IDogaW5wdXRz
KQorICAgICAgICBtX3Jlc3VsdFJlZmVyZW5jZXMuYWRkKGlucHV0LCBGaWx0ZXJFZmZlY3RTZXQo
KSkuaXRlcmF0b3ItPnZhbHVlLmFkZChlZmZlY3QpOworfQorCit2b2lkIEZpbHRlclJlc3VsdHM6
OmNsZWFyRWZmZWN0UmVzdWx0KEZpbHRlckVmZmVjdCYgZWZmZWN0KQoreworICAgIGF1dG8gaXRl
cmF0b3IgPSBtX3Jlc3VsdHMuZmluZChlZmZlY3QpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3Jl
c3VsdHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVzdWx0ID0gaXRlcmF0
b3ItPnZhbHVlOworICAgIG1fcmVzdWx0cy5yZW1vdmUoaXRlcmF0b3IpOworCisgICAgZm9yIChh
dXRvJiByZWZlcmVuY2UgOiBtX3Jlc3VsdFJlZmVyZW5jZXMuZ2V0KHJlc3VsdCkpCisgICAgICAg
IGNsZWFyRWZmZWN0UmVzdWx0KHJlZmVyZW5jZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyUmVzdWx0cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJSZXN1bHRzLmgKaW5kZXggZTUwYjZiY2U5OWJlNmNkYzJkYmI5NzkyMGIxOWY5MDk1
MDYyMjZkZi4uYTlhZGY2ZWRlOGVmM2U5ZGJiN2ZmMmNjZmIyZjIwYWUxNTBlN2FhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJSZXN1
bHRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJSZXN1bHRzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJGaWx0ZXJBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRl
ICJGaWx0ZXJJbWFnZVZlY3Rvci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNywz
OSArMzgsMjIgQEAgY2xhc3MgRmlsdGVySW1hZ2U7CiAKIGNsYXNzIEZpbHRlclJlc3VsdHMgewog
cHVibGljOgotICAgIEZpbHRlclJlc3VsdHMoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBP
UlQgRmlsdGVyUmVzdWx0cyhzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyQWxsb2NhdG9yPiYmID0gbnVs
bHB0cik7CiAKLSAgICBGaWx0ZXJJbWFnZSogZWZmZWN0UmVzdWx0KEZpbHRlckVmZmVjdCYgZWZm
ZWN0KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcmVzdWx0cy5nZXQoZWZmZWN0KTsK
LSAgICB9CisgICAgRmlsdGVyQWxsb2NhdG9yJiBhbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiAq
bV9hbGxvY2F0b3I7IH0KIAotICAgIHZvaWQgc2V0RWZmZWN0UmVzdWx0KEZpbHRlckVmZmVjdCYg
ZWZmZWN0LCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBSZWY8RmlsdGVySW1hZ2U+
JiYgcmVzdWx0KQotICAgIHsKLSAgICAgICAgbV9yZXN1bHRzLnNldCh7IGVmZmVjdCB9LCBXVEZN
b3ZlKHJlc3VsdCkpOwotICAgICAgICAKLSAgICAgICAgZm9yIChhdXRvJiBpbnB1dCA6IGlucHV0
cykKLSAgICAgICAgICAgIG1fcmVzdWx0UmVmZXJlbmNlcy5hZGQoaW5wdXQsIEZpbHRlckVmZmVj
dFNldCgpKS5pdGVyYXRvci0+dmFsdWUuYWRkKGVmZmVjdCk7Ci0gICAgfQotCi0gICAgdm9pZCBj
bGVhckVmZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKLSAgICB7Ci0gICAgICAgIGF1
dG8gaXRlcmF0b3IgPSBtX3Jlc3VsdHMuZmluZChlZmZlY3QpOwotICAgICAgICBpZiAoaXRlcmF0
b3IgPT0gbV9yZXN1bHRzLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1
dG8gcmVzdWx0ID0gaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICBtX3Jlc3VsdHMucmVtb3ZlKGl0
ZXJhdG9yKTsKLQotICAgICAgICBmb3IgKGF1dG8mIHJlZmVyZW5jZSA6IG1fcmVzdWx0UmVmZXJl
bmNlcy5nZXQocmVzdWx0KSkKLSAgICAgICAgICAgIGNsZWFyRWZmZWN0UmVzdWx0KHJlZmVyZW5j
ZSk7Ci0gICAgfQorICAgIEZpbHRlckltYWdlKiBlZmZlY3RSZXN1bHQoRmlsdGVyRWZmZWN0Jikg
Y29uc3Q7CisgICAgdm9pZCBzZXRFZmZlY3RSZXN1bHQoRmlsdGVyRWZmZWN0JiwgY29uc3QgRmls
dGVySW1hZ2VWZWN0b3ImIGlucHV0cywgUmVmPEZpbHRlckltYWdlPiYmIHJlc3VsdCk7CisgICAg
dm9pZCBjbGVhckVmZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3QmKTsKIAogcHJpdmF0ZToKLSAgICB1
c2luZyBGaWx0ZXJFZmZlY3RTZXQgPSBIYXNoU2V0PFJlZjxGaWx0ZXJFZmZlY3Q+PjsKICAgICBI
YXNoTWFwPFJlZjxGaWx0ZXJFZmZlY3Q+LCBSZWY8RmlsdGVySW1hZ2U+PiBtX3Jlc3VsdHM7CisK
ICAgICAvLyBUaGUgdmFsdWUgaXMgYSBsaXN0IG9mIEZpbHRlckVmZmVjdHMsIHdob3NlIEZpbHRl
ckltYWdlcyBkZXBlbmQgb24gdGhlIGtleSBGaWx0ZXJJbWFnZS4KKyAgICB1c2luZyBGaWx0ZXJF
ZmZlY3RTZXQgPSBIYXNoU2V0PFJlZjxGaWx0ZXJFZmZlY3Q+PjsKICAgICBIYXNoTWFwPFJlZjxG
aWx0ZXJJbWFnZT4sIEZpbHRlckVmZmVjdFNldD4gbV9yZXN1bHRSZWZlcmVuY2VzOworCisgICAg
c3RkOjp1bmlxdWVfcHRyPEZpbHRlckFsbG9jYXRvcj4gbV9hbGxvY2F0b3I7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggN2Ew
NzMyZTI5MmVlY2VmNTYzMDgwM2Y1MGQ2ODg3OWU0MGJkNTQ3OC4uYWI4ZTg1NjJhNGIyM2I5NTYx
MzFiMmIxMzEyNjQ0NjExOGYwZDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIlJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUZpbHRl
ckFsbG9jYXRvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbHRlclJlc3VsdHMuaD4KIApAQCAtMjM1LDcgKzIzNiw3IEBAIHZvaWQgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdSCiAgICAgICAgIGZlSW1hZ2Uuc2V0SW1hZ2VTb3VyY2UoV1RGTW92ZSgq
c291cmNlSW1hZ2UpKTsKICAgICB9CiAKLSAgICBGaWx0ZXJSZXN1bHRzIHJlc3VsdHM7CisgICAg
RmlsdGVyUmVzdWx0cyByZXN1bHRzKG1ha2VVbmlxdWU8UmVtb3RlRmlsdGVyQWxsb2NhdG9yPigp
KTsKICAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihz
b3VyY2VJbWFnZUlkZW50aWZpZXIsIHNvdXJjZUltYWdlUmVjdCwgV1RGTW92ZShmaWx0ZXIpKSwg
c291cmNlSW1hZ2UuZ2V0KCksIHJlc3VsdHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRmlsdGVyQWxsb2NhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVGaWx0ZXJBbGxvY2F0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE2MmIwYzk0YWVmYzkzYmM1NDExMzlkZDFiYjU4OGU5ZWJhM2UzODQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRmls
dGVyQWxsb2NhdG9yLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUZpbHRlckFsbG9jYXRvci5oIgorCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZlB0cjxJbWFn
ZUJ1ZmZlcj4gUmVtb3RlRmlsdGVyQWxsb2NhdG9yOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
UmVuZGVyaW5nTW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4gQ29uY3JldGVJbWFnZUJ1ZmZlcjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+OjpjcmVhdGUoc2l6ZSwgMSwgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwg
eyB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRmlsdGVyQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlRmlsdGVyQWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE0ZjlhOTRmODg3YWM4YWU2
NDY3YTlkNjBhN2UxZGZkYmZhOTAyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVGaWx0ZXJBbGxvY2F0b3IuaApAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9G
aWx0ZXJBbGxvY2F0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUZp
bHRlckFsbG9jYXRvciA6IHB1YmxpYyBXZWJDb3JlOjpGaWx0ZXJBbGxvY2F0b3IgeworcHVibGlj
OgorICAgIFJlbW90ZUZpbHRlckFsbG9jYXRvcigpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUpIGNvbnN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKaW5kZXggOTM0ODZjNzg2Y2UyOTYyYzQ4ZDVlNTRjNjcxNmZmZjk1OGRlNmJjOC4uZDlkNmI2
N2JiZDAwZDM1MjNkODNlZWFkMmJmOTMwYjc3M2MwYjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcApAQCAtMzE3LDE2ICszMTcsMjEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpn
ZXRGaWx0ZXJlZEltYWdlRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGUKICAgICAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1
ZmZlcih7IGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSB9KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBGaWx0ZXJSZXN1bHRzIHJlc3VsdHMobWFrZVVuaXF1ZTxSZW1v
dGVGaWx0ZXJBbGxvY2F0b3I+KCkpOwogICAgICAgICBhdXRvIGltYWdlID0gaW1hZ2VCdWZmZXIt
PmZpbHRlcmVkSW1hZ2UoZmlsdGVyKTsKICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAg
IHJldHVybjsKKwogICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7CiAgICAg
ICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoSW50U2l6ZShpbWFnZVNp
emUpLCB7IGltYWdlQnVmZmVyLT5jb2xvclNwYWNlKCkgfSk7CiAgICAgICAgIGlmICghYml0bWFw
KQogICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGF1dG8gY29udGV4dCA9IGJpdG1hcC0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgICAgIGlmICghY29udGV4dCkKICAgICAgICAg
ICAgIHJldHVybjsKKwogICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBv
aW50KCkpOwogICAgICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogICAgIH0oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IGVhMGMwNjYzM2E0NjcyNmQ2NmZiNzQxMjE5NmYzNDEwYTgzOTI0OTMu
LmVmZThkMzI5ZWY4ODY5NjNhZjI2YmUwZmMxZjMwYThjMGVkN2E3ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtMjUsOCArMjUsOSBAQCBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCi1HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CitHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUZpbHRlckFsbG9jYXRvci5jcHAKIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCitHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFJlbmRlcmluZ1Jl
c291cmNlc1JlcXVlc3QuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Njb3BlZFdlYkdMUmVuZGVy
aW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDViZGJkNjgzYmNjM2ZkZDBkMjkxNjU5ZjAwMjA2Y2Ri
M2M5MzMwOGMuLjY0YjZhNDA3OWIxOGFlNTk1OGJiYjA2ODFkZjRhYjBhYWE0MzBmMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQ1
NSw2ICs1NDU1LDggQEAKIAkJNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11
bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMDM0NDlBMjZBNkM0NEMwMDBBNUY1NCAvKiBN
b25vdG9uaWNPYmplY3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vbm90b25pY09iamVj
dElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIwMzQ0OUIyNkE2
QzQ3NjAwMEE1RjU0IC8qIFJlbmRlcmluZ1VwZGF0ZUlELmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
cmluZ1VwZGF0ZUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTU4RkRGMjgy
QTAxRDYwMDNCQjQyMyAvKiBSZW1vdGVGaWx0ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlRmlsdGVyQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzIxNThGRTAyODJBMDFENjAwM0JCNDIzIC8qIFJlbW90ZUZpbHRlckFsbG9jYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVGaWx0ZXJBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzIyNzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0Njk2M0EyNzVCN0U2
NzAwQTkxNTZBIC8qIEZpbHRlclJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJSZWZl
cmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2RDU2REQyNTNBNjQ4MTAw
MDJFRjkwIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlUmVzb3VyY2VDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDUz
OSw2ICsxMDU0MSw4IEBACiAJCQkJRjQ4QkI4RTAyNkY5NjM5MjAwMUMxQzQwIC8qIFJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAogCQkJCUY0OEJCOERGMjZGOTYzOTIwMDFDMUM0MCAv
KiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCiAJCQkJRjQ1MUMxMDAyNzAzRDg1MzAw
MkJBMDNCIC8qIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4gKi8sCisJCQkJ
NzIxNThGREYyODJBMDFENjAwM0JCNDIzIC8qIFJlbW90ZUZpbHRlckFsbG9jYXRvci5jcHAgKi8s
CisJCQkJNzIxNThGRTAyODJBMDFENjAwM0JCNDIzIC8qIFJlbW90ZUZpbHRlckFsbG9jYXRvci5o
ICovLAogCQkJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAgKi8sCiAJCQkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmggKi8sCiAJCQkJN0I5MDQxNjgyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluICovLAo=
</data>
<flag name="commit-queue"
          id="488107"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459094</attachid>
            <date>2022-05-09 22:06:08 -0700</date>
            <delta_ts>2022-05-21 13:00:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240269-20220509220607.patch</filename>
            <type>text/plain</type>
            <size>42981</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzOTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGIwOWYwOWRiNjVmNjE1
OWQ5ZWRmZjRhMjc0NDVmOWRiM2RlZDRkNi4uMmQ5YjQzMjQyYjdkNzUwMTM2YzBhMzI2ZDk2N2Y3
MGUzZTkyNDEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTA1LTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
W0ZpbHRlcnNdIEZpbHRlciByZXN1bHQgYnVmZmVycyBzaG91bGQgYmUgYXR0cmlidXRlZCB0byBX
ZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDAyNjkKKyAgICAgICAgcmRhcjovLzkyMjk1MjE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVzZSB0aGUgR1BVUHJvY2VzcyBtZW1vcnkg
aXMgbGltaXRlZCBhbmQgYmVjYXVzZSBhcHBseWluZyBhIGZpbHRlcgorICAgICAgICBjYW4gcmVx
dWlyZSBhIGxhcmdlIGNodW5rIG9mIG1lbW9yeSwgdGhpcyBtZW1vcnkgc2hvdWxkIGJlIGFsbG9j
YXRlZCBieQorICAgICAgICBHUFVQcm9jZXNzIGJ1dCBzaG91bGQgYmUgb3duZWQgYnkgV2ViUHJv
Y2Vzcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6YXBwbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyQWxsb2NhdG9yLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJSZXN1bHRzLmguCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJBbGxvY2F0b3I6OmNyZWF0ZUlt
YWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckFsbG9jYXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlcklt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckltYWdlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVySW1hZ2U6OkZpbHRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckltYWdlOjppbWFnZUJ1ZmZlckZyb21QaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJJ
bWFnZTo6Y29weVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJSZXN1bHRzLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJSZXN1bHRzLmguCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJS
ZXN1bHRzOjpGaWx0ZXJSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlclJlc3VsdHM6
OmVmZmVjdFJlc3VsdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJSZXN1bHRzOjpz
ZXRFZmZlY3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyUmVzdWx0czo6Y2xlYXJF
ZmZlY3RSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
UmVzdWx0cy5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyUmVzdWx0czo6YWxsb2NhdG9yIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlclJlc3VsdHM6OmVmZmVjdFJlc3VsdCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJSZXN1bHRzOjpzZXRFZmZlY3RS
ZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyUmVzdWx0czo6Y2xlYXJF
ZmZlY3RSZXN1bHQpOiBEZWxldGVkLgorCiAyMDIyLTA1LTA5ICBHYWJyaWVsIE5hdmEgTWFyaW5v
ICA8Z25hdmFtYXJpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVCBpbiBXZWJDb3JlOjpS
ZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyMWExODNlZTEy
YjM1Yzk1N2RhNzFlZjllZjVjNzcwNGRlODhiMTI1Li4wYWEyYTYxNGIxYjBmODhiMjE0NmFlMTFj
YmEyZTgyYWMxMDJhYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA1LTA5ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gW0ZpbHRlcnNdIEZpbHRlciByZXN1bHQgYnVmZmVycyBzaG91bGQgYmUgYXR0cmlidXRlZCB0
byBXZWJQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDAyNjkKKyAgICAgICAgcmRhcjovLzkyMjk1MjE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVGaWx0ZXJBbGxvY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlRmlsdGVyQWxsb2NhdG9yOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVGaWx0ZXJBbGxvY2F0b3IuaDog
QWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0Rmls
dGVyZWRJbWFnZUZvckltYWdlQnVmZmVyKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wNS0wOSAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1
aWxkIGZpeCBmb3IgSW50ZXJuYWwgaU9TIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA3NTdm
MzI2MTdmNTdkMzk0MzUzMjAxNGQ4ZmIwYjAxZDMwNWIyYWFiLi5mOTQyZjM2YTBjMzUyZjgyODY4
MTAwNzZmY2JhMGQ0ZmExNWJiYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE2NTIsNiArMTY1
Miw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVR1cmJ1bGVuY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckFsbG9jYXRvci5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0QXBwbGllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3RHZW9tZXRyeS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDI5NjhjMGM4
ZWNlNWE4NTExNTZhMDE3MzE1NjIxYjViMTczZDg1ZWUuLjM3OWRmMzZmMGE5YThlNzU5MTRkZTQy
NzVlNjU4NjY0ZGIxODBhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTQwLDExICsyMTQwLDEzIEBA
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJBbGxvY2F0b3IuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRnVuY3Rpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlcklt
YWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3BwCitwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUFscGhhLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDRmNDJiYTM3OWNlZjZmMTEyN2Q1OTJkZDI0ZTcyOGI2ODhmYjg4NzcuLmQ4YjIzZmUzODFl
ODU0NGFhODg3N2FhMGM2ODcwZDg2NjJjZjE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNDIsNiArMjM0Miw3IEBACiAJ
CTcxRkNCMTcwMjdCQUIzRkUwMEUwNjMxQyAvKiBGcmFtZVJhdGVBbGlnbmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUZDQjE2RDI3QkFCM0RGMDBF
MDYzMUMgLyogRnJhbWVSYXRlQWxpZ25lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBTVkdQcm9w
ZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVF
RTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3
IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIx
NThGREUyODI5RkQ4MzAwM0JCNDIzIC8qIEZpbHRlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIxNThGREQyODI5RjYzRjAwM0JCNDIz
IC8qIEZpbHRlckFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyMUI0OTc0MjUxMkJBM0IwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJh
Y2tpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
MUI0OTcwMjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjI4M0YwRTIzMEIyNjhD
MDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFn
ZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyMkFGMkRFMjdFMUMyMDYwMDc4RDk5NyAvKiBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjJBRjJEQjI3RTFDMjA0MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTM3
MSw2ICsxMTM3Miw5IEBACiAJCTcyMTQ0MzQ1MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmltYXRl
ZFZhbHVlUHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzQ2MjI0MENBRDIwMEYxMkZG
NyAvKiBTVkdWYWx1ZVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxNEI5QjcyNzQ0NThGQTAwM0JFNkRG
IC8qIEZpbHRlckVmZmVjdFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJFZmZlY3RWZWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNThGREIyODI5RjQxMDAwM0JC
NDIzIC8qIEZpbHRlclJlc3VsdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyUmVzdWx0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTU4RkRDMjgyOUY2M0YwMDNC
QjQyMyAvKiBGaWx0ZXJBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyQWxs
b2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNThGREQyODI5RjYz
RjAwM0JCNDIzIC8qIEZpbHRlckFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJBbGxv
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NkYyNTEyQUMwNDAw
RkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFn
ZUJpdG1hcEJhY2tpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjFCNDk3
MDI1MTJBQzA0MDBGRTlEM0IgLyogSW1hZ2VCaXRtYXBCYWNraW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlQml0bWFwQmFja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjJB
ODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFuaW1hdGlvbkZyYW1lUmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjcxNjQsNiArMjcxNjgsOCBAQAogCQkJCTg0NzMwRDcwMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVR1
cmJ1bGVuY2UuaCAqLywKIAkJCQk3MkI4QjAzMjI3NTMzRjgxMDBGNzUyQUEgLyogRmlsdGVyLmNw
cCAqLywKIAkJCQk4NDVFNzJGNzBGRDI2MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi8sCisJCQkJ
NzIxNThGREMyODI5RjYzRjAwM0JCNDIzIC8qIEZpbHRlckFsbG9jYXRvci5jcHAgKi8sCisJCQkJ
NzIxNThGREQyODI5RjYzRjAwM0JCNDIzIC8qIEZpbHRlckFsbG9jYXRvci5oICovLAogCQkJCTA4
QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICovLAogCQkJCTA4Qzky
NTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCAqLywKIAkJCQk3MkExM0E5RjI3
NEM1Q0M3MDBFMkE4OEUgLyogRmlsdGVyRWZmZWN0QXBwbGllci5oICovLApAQCAtMjcxNzgsNiAr
MjcxODQsNyBAQAogCQkJCTQ5RUNFQjY0MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRp
b24uaCAqLywKIAkJCQk0OUVDRUI2NTE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9u
cy5jcHAgKi8sCiAJCQkJNDlFQ0VCNjYxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlv
bnMuaCAqLywKKwkJCQk3MjE1OEZEQjI4MjlGNDEwMDAzQkI0MjMgLyogRmlsdGVyUmVzdWx0cy5j
cHAgKi8sCiAJCQkJNzIxMUI1RDYyNzY1MzY4MjAwNzZGRUY4IC8qIEZpbHRlclJlc3VsdHMuaCAq
LywKIAkJCQk4NDczMEQ3NDEyNDhGMEIzMDBEM0E5QzkgLyogTGlnaHRTb3VyY2UuaCAqLywKIAkJ
CQlBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgKi8sCkBA
IC0zNDc5Miw2ICszNDc5OSw3IEBACiAJCQkJQkM1RUI2OUYwRTgxREFFQjAwQjI1OTY1IC8qIEZp
bGxMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEyQkU0ODMxRkU4NjVERDAwMjAzMUNDIC8q
IEZpbGxNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDVFNzJGODBGRDI2MUVFMDBBODdENzkg
LyogRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjE1OEZERTI4MjlGRDgzMDAzQkI0MjMg
LyogRmlsdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEM5MjUxQTBGQ0M3QzRB
MDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjhENDc5MTI3
OUE0OEI3MDBCQTdDMEUgLyogRmlsdGVyRWZmZWN0QXBwbGllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzI2Q0RFMjAyNzU5NzM1MDAwQTQ0NUIyIC8qIEZpbHRlckVmZmVjdEdlb21ldHJ5LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCBiZjY4ZDFhZDYxOGQzMWQ0YTIxMTY4Yjk3MGRm
ZWQxMDdlMmYxMjU4Li4zNTAxMjk0OGM0YjE1YjZiYzQxN2EyY2ZkYjJjZGEzNDRiYTkyZDMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCkBAIC0xNDgsNiArMTQ4LDEyIEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAg
ICBSZWZQdHI8SW1hZ2U+IGZpbHRlcmVkSW1hZ2UoRmlsdGVyJiBmaWx0ZXIpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBGaWx0ZXJSZXN1bHRzIHJlc3VsdHM7CisgICAgICAgIHJldHVybiBmaWx0
ZXJlZEltYWdlKGZpbHRlciwgcmVzdWx0cyk7CisgICAgfQorCisgICAgUmVmUHRyPEltYWdlPiBm
aWx0ZXJlZEltYWdlKEZpbHRlciYgZmlsdGVyLCBGaWx0ZXJSZXN1bHRzJiByZXN1bHRzKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVk
KCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKQEAgLTE1NSw3ICsxNjEsNiBAQCBwcm90ZWN0ZWQ6
CiAKICAgICAgICAgY29uc3RfY2FzdDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNo
RHJhd2luZ0NvbnRleHQoKTsKICAgICAgICAgCi0gICAgICAgIEZpbHRlclJlc3VsdHMgcmVzdWx0
czsKICAgICAgICAgYXV0byByZXN1bHQgPSBmaWx0ZXIuYXBwbHkodGhpcywgeyB7IH0sIGxvZ2lj
YWxTaXplKCkgfSwgcmVzdWx0cyk7CiAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAppbmRleCBmYjRkMjY1ZjdkMzUwOWUwN2QyMzhmMWZhNzcxNTFkNWZmM2RiYjBh
Li5hMzRjNDcxNGU5NmYzNGQ3M2QyMTRiM2JhMGIyZWVmN2RkMGFhMTU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTM4LDYgKzM4LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsdGVyOworY2xhc3MgRmlsdGVyUmVz
dWx0czsKIGNsYXNzIEhvc3RXaW5kb3c7CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiBjbGFzcyBJT1N1
cmZhY2VQb29sOwpAQCAtMTI3LDYgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0
cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFj
a2luZ1N0b3JlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9u
ID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRy
PEltYWdlPiBmaWx0ZXJlZEltYWdlKEZpbHRlciYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJ
bWFnZT4gZmlsdGVyZWRJbWFnZShGaWx0ZXImLCBGaWx0ZXJSZXN1bHRzJikgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSks
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKaW5kZXgg
YmJlZWZlN2NhMWVjY2QyMWJiZGQyMjk4NGM4MTA3NTM5MjE4ZDJkZC4uZTg3MjU1MjM0N2JjMDJi
YTFkNTg5ZTcwYjkyYmE5ZDA4MWYwZjk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmlsdGVySW1hZ2UuaCIKKyNpbmNs
dWRlICJGaWx0ZXJSZXN1bHRzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtODcsNyArODgsNyBAQCBSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRl
cjo6YXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdQog
CiAgICAgaWYgKHNvdXJjZUltYWdlKSB7CiAgICAgICAgIGF1dG8gYWJzb2x1dGVTb3VyY2VJbWFn
ZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZEJ5RmlsdGVyU2NhbGUoc291cmNlSW1hZ2VS
ZWN0KSk7Ci0gICAgICAgIGlucHV0ID0gRmlsdGVySW1hZ2U6OmNyZWF0ZShtX2ZpbHRlclJlZ2lv
biwgc291cmNlSW1hZ2VSZWN0LCBhYnNvbHV0ZVNvdXJjZUltYWdlUmVjdCwgUmVmIHsgKnNvdXJj
ZUltYWdlIH0pOworICAgICAgICBpbnB1dCA9IEZpbHRlckltYWdlOjpjcmVhdGUobV9maWx0ZXJS
ZWdpb24sIHNvdXJjZUltYWdlUmVjdCwgYWJzb2x1dGVTb3VyY2VJbWFnZVJlY3QsIFJlZiB7ICpz
b3VyY2VJbWFnZSB9LCByZXN1bHRzLmFsbG9jYXRvcigpKTsKICAgICAgICAgaWYgKCFpbnB1dCkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyQWxsb2NhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyQWxsb2NhdG9yLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mY2I1Y2UyM2IxYTY0ZWY3NTYzNzA5MTVjMmU5YjNmYWFjYWQyNDhlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJBbGxvY2F0b3IuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZpbHRlckFsbG9jYXRvci5oIgorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitGaWx0ZXJBbGxvY2F0b3I6OkZpbHRlckFsbG9jYXRvcigpID0g
ZGVmYXVsdDsKKworUmVmUHRyPEltYWdlQnVmZmVyPiBGaWx0ZXJBbGxvY2F0b3I6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6VW5z
cGVjaWZpZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgYnVmZmVyT3B0aW9u
c0ZvclJlbmRpbmdNb2RlKHJlbmRlcmluZ01vZGUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyQWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhiYTAyZDFiZTgyN2NmZjU0YTgy
ZGZmNzZkODJiODU1MGRmMmY2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyQWxsb2NhdG9yLmgKQEAgLTAsMCArMSw0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OworY2xhc3MgRmxvYXRTaXplOworY2xhc3MgSW1hZ2VCdWZmZXI7CisKK2NsYXNzIEZpbHRlckFs
bG9jYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV0VC
Q09SRV9FWFBPUlQgRmlsdGVyQWxsb2NhdG9yKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+RmlsdGVyQWxsb2NhdG9yKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUpIGNvbnN0OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGNiOTNhMTlmZDg5YjBiMTUyOGNk
YWIzYzZlMTIxZThjZDRjMTgxMmUuLmMxMjBmZmIzOTYyM2Q5YWUwODFjNjhmMjIyYWQ1MjQyNzZj
NmQ5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBSZWZQdHI8Rmls
dGVySW1hZ2U+IEZpbHRlckVmZmVjdDo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IEZpbHRlckltYWdlVgogICAgIGlmICghYXBwbGllcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvIHJlc3VsdCA9IEZpbHRlckltYWdlOjpjcmVhdGUocHJpbWl0aXZlU3VicmVn
aW9uLCBpbWFnZVJlY3QsIGFic29sdXRlSW1hZ2VSZWN0LCBpc0FscGhhSW1hZ2UsIGlzVmFsaWRQ
cmVtdWx0aXBsaWVkLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBpbWFnZUNvbG9yU3BhY2UpOwor
ICAgIGF1dG8gcmVzdWx0ID0gRmlsdGVySW1hZ2U6OmNyZWF0ZShwcmltaXRpdmVTdWJyZWdpb24s
IGltYWdlUmVjdCwgYWJzb2x1dGVJbWFnZVJlY3QsIGlzQWxwaGFJbWFnZSwgaXNWYWxpZFByZW11
bHRpcGxpZWQsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIGltYWdlQ29sb3JTcGFjZSwgcmVzdWx0
cy5hbGxvY2F0b3IoKSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVySW1hZ2UuY3BwCmluZGV4IGIxMDZkZjNiMWZmY2JhOTdlNDkxMTIxOWQyMDNmMjAw
MDJjNGJlM2IuLjgwNDBmZjc0ZTFkYTBjNzU4YjU5NWJlZDJiNzA3M2I5Njg0ZTM3N2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW1hZ2UuY3BwCkBAIC0zOCwxOCArMzgsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckltYWdlOjpjcmVhdGUoY29uc3QgRmxvYXRSZWN0
JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgYm9vbCBpc0FscGhhSW1hZ2UsIGJvb2wgaXNWYWxp
ZFByZW11bHRpcGxpZWQsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQorUmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXJJ
bWFnZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBG
bG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIGJv
b2wgaXNBbHBoYUltYWdlLCBib29sIGlzVmFsaWRQcmVtdWx0aXBsaWVkLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
RmlsdGVyQWxsb2NhdG9yJiBhbGxvY2F0b3IpCiB7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6
c2l6ZU5lZWRzQ2xhbXBpbmcoYWJzb2x1dGVJbWFnZVJlY3Quc2l6ZSgpKSk7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGaWx0ZXJJbWFnZShwcmltaXRpdmVTdWJyZWdpb24sIGltYWdlUmVjdCwg
YWJzb2x1dGVJbWFnZVJlY3QsIGlzQWxwaGFJbWFnZSwgaXNWYWxpZFByZW11bHRpcGxpZWQsIHJl
bmRlcmluZ01vZGUsIGNvbG9yU3BhY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbHRl
ckltYWdlKHByaW1pdGl2ZVN1YnJlZ2lvbiwgaW1hZ2VSZWN0LCBhYnNvbHV0ZUltYWdlUmVjdCwg
aXNBbHBoYUltYWdlLCBpc1ZhbGlkUHJlbXVsdGlwbGllZCwgcmVuZGVyaW5nTW9kZSwgY29sb3JT
cGFjZSwgYWxsb2NhdG9yKSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJJbWFnZT4gRmlsdGVySW1hZ2U6
OmNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRS
ZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBSZWY8SW1h
Z2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCitSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckltYWdl
OjpjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0
UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgUmVmPElt
YWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBGaWx0ZXJBbGxvY2F0b3ImIGFsbG9jYXRvcikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWx0ZXJJbWFnZShwcmltaXRpdmVTdWJyZWdpb24s
IGltYWdlUmVjdCwgYWJzb2x1dGVJbWFnZVJlY3QsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsdGVySW1hZ2UocHJpbWl0aXZlU3VicmVnaW9uLCBp
bWFnZVJlY3QsIGFic29sdXRlSW1hZ2VSZWN0LCBXVEZNb3ZlKGltYWdlQnVmZmVyKSwgYWxsb2Nh
dG9yKSk7CiB9CiAKLUZpbHRlckltYWdlOjpGaWx0ZXJJbWFnZShjb25zdCBGbG9hdFJlY3QmIHBy
aW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGFic29sdXRlSW1hZ2VSZWN0LCBib29sIGlzQWxwaGFJbWFnZSwgYm9vbCBpc1ZhbGlkUHJl
bXVsdGlwbGllZCwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCitGaWx0ZXJJbWFnZTo6RmlsdGVySW1hZ2UoY29uc3Qg
RmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgYm9vbCBpc0FscGhhSW1hZ2UsIGJv
b2wgaXNWYWxpZFByZW11bHRpcGxpZWQsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGaWx0ZXJBbGxvY2F0b3ImIGFs
bG9jYXRvcikKICAgICA6IG1fcHJpbWl0aXZlU3VicmVnaW9uKHByaW1pdGl2ZVN1YnJlZ2lvbikK
ICAgICAsIG1faW1hZ2VSZWN0KGltYWdlUmVjdCkKICAgICAsIG1fYWJzb2x1dGVJbWFnZVJlY3Qo
YWJzb2x1dGVJbWFnZVJlY3QpCkBAIC01NywxNiArNTcsMTggQEAgRmlsdGVySW1hZ2U6OkZpbHRl
ckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBGbG9hdFJl
Y3QmIGkKICAgICAsIG1faXNWYWxpZFByZW11bHRpcGxpZWQoaXNWYWxpZFByZW11bHRpcGxpZWQp
CiAgICAgLCBtX3JlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSkKICAgICAsIG1fY29sb3JTcGFj
ZShjb2xvclNwYWNlKQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQogewogfQogCi1GaWx0
ZXJJbWFnZTo6RmlsdGVySW1hZ2UoY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24s
IGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdl
UmVjdCwgUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyKQorRmlsdGVySW1hZ2U6OkZpbHRl
ckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBGbG9hdFJl
Y3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIFJlZjxJbWFn
ZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgRmlsdGVyQWxsb2NhdG9yJiBhbGxvY2F0b3IpCiAgICAg
OiBtX3ByaW1pdGl2ZVN1YnJlZ2lvbihwcmltaXRpdmVTdWJyZWdpb24pCiAgICAgLCBtX2ltYWdl
UmVjdChpbWFnZVJlY3QpCiAgICAgLCBtX2Fic29sdXRlSW1hZ2VSZWN0KGFic29sdXRlSW1hZ2VS
ZWN0KQogICAgICwgbV9yZW5kZXJpbmdNb2RlKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdNb2RlKCkp
CiAgICAgLCBtX2NvbG9yU3BhY2UoaW1hZ2VCdWZmZXItPmNvbG9yU3BhY2UoKSkKICAgICAsIG1f
aW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZUJ1ZmZlcikpCisgICAgLCBtX2FsbG9jYXRvcihhbGxv
Y2F0b3IpCiB7CiB9CiAKQEAgLTk5LDcgKzEwMSw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJJbWFn
ZTo6aW1hZ2VCdWZmZXJGcm9tUGl4ZWxCdWZmZXIoKQogICAgIGlmIChtX2ltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1faW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVJbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJp
bmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgbV9jb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdS
QTgsIGJ1ZmZlck9wdGlvbnNGb3JSZW5kaW5nTW9kZShtX3JlbmRlcmluZ01vZGUpKTsKKyAgICBt
X2ltYWdlQnVmZmVyID0gbV9hbGxvY2F0b3IuY3JlYXRlSW1hZ2VCdWZmZXIobV9hYnNvbHV0ZUlt
YWdlUmVjdC5zaXplKCksIG1fY29sb3JTcGFjZSwgbV9yZW5kZXJpbmdNb2RlKTsKICAgICBpZiAo
IW1faW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNjcsMTAgKzE2
OSwxMCBAQCBzdGF0aWMgdm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBQaXhlbEJ1ZmZlciYgc291
cmNlUGl4ZWxCdWZmZXIsIFBpeGVsQnVmZmVyJiBkZQogICAgIH0KIH0KIAotc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldENvbnZlcnRlZFBpeGVsQnVmZmVyKEltYWdlQnVmZmVy
JiBpbWFnZUJ1ZmZlciwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdCwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0Q29udmVydGVkUGl4ZWxCdWZmZXIo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9y
bWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgRmlsdGVyQWxsb2NhdG9yJiBhbGxvY2F0b3IpCiB7CiAgICAgYXV0byBjbGFtcGVk
U2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShzb3VyY2VSZWN0LnNpemUoKSk7Ci0gICAg
YXV0byBjb252ZXJ0ZWRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gY29udmVydGVkSW1hZ2VCdWZmZXIgPSBhbGxvY2F0b3Iu
Y3JlYXRlSW1hZ2VCdWZmZXIoY2xhbXBlZFNpemUsIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQpOwogICAgIAogICAgIGlmICghY29udmVydGVkSW1hZ2VCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xODEsMTggKzE4MywxOCBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0Q29udmVydGVkUGl4ZWxCdWZmZXIoSW1hZ2VC
dWZmZXImIGltYWdlQnVmZgogICAgIHJldHVybiBjb252ZXJ0ZWRJbWFnZUJ1ZmZlci0+Z2V0UGl4
ZWxCdWZmZXIoZm9ybWF0LCBzb3VyY2VSZWN0KTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IGdldENvbnZlcnRlZFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiBzb3VyY2VQ
aXhlbEJ1ZmZlciwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdCwgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gZ2V0Q29udmVydGVkUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImIHNvdXJjZVBpeGVsQnVmZmVy
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0LCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgRmlsdGVyQWxsb2NhdG9yJiBhbGxvY2F0b3IpCiB7CiAgICAgYXV0byBz
b3VyY2VSZWN0ID0gSW50UmVjdCB7IHsgfSAsIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKSB9Owog
ICAgIGF1dG8gY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUoc291cmNlUmVj
dC5zaXplKCkpOwogCiAgICAgYXV0byYgc291cmNlQ29sb3JTcGFjZSA9IHNvdXJjZVBpeGVsQnVm
ZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2U7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAx
LCBzb3VyY2VDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBhbGxvY2F0b3IuY3JlYXRlSW1hZ2VCdWZmZXIoY2xhbXBlZFNpemUsIHNvdXJjZUNv
bG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbWFnZUJ1ZmZlci0+
cHV0UGl4ZWxCdWZmZXIoc291cmNlUGl4ZWxCdWZmZXIsIHNvdXJjZVJlY3QpOwotICAgIHJldHVy
biBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFscGhhRm9ybWF0LCBzb3Vy
Y2VSZWN0LCBjb2xvclNwYWNlKTsKKyAgICByZXR1cm4gZ2V0Q29udmVydGVkUGl4ZWxCdWZmZXIo
KmltYWdlQnVmZmVyLCBhbHBoYUZvcm1hdCwgc291cmNlUmVjdCwgY29sb3JTcGFjZSwgYWxsb2Nh
dG9yKTsKIH0KIAogYm9vbCBGaWx0ZXJJbWFnZTo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3Bh
Y2VDb252ZXJzaW9uKHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNw
YWNlKSBjb25zdApAQCAtMjczLDcgKzI3NSw3IEBAIHZvaWQgRmlsdGVySW1hZ2U6OmNvcHlQaXhl
bEJ1ZmZlcihQaXhlbEJ1ZmZlciYgZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgY29uc3QgSW50CiAg
ICAgICAgICAgICAvLyBXZSBwcmVmZXIgYSBjb252ZXJzaW9uIGZyb20gdGhlIGltYWdlIGJ1ZmZl
ci4KICAgICAgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgSW50
UmVjdCByZWN0IHsgeyB9LCBtX2Fic29sdXRlSW1hZ2VSZWN0LnNpemUoKSB9OwotICAgICAgICAg
ICAgICAgIGlmIChhdXRvIGNvbnZlcnRlZFBpeGVsQnVmZmVyID0gZ2V0Q29udmVydGVkUGl4ZWxC
dWZmZXIoKm1faW1hZ2VCdWZmZXIsIGFscGhhRm9ybWF0LCByZWN0LCBjb2xvclNwYWNlKSkKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRQaXhlbEJ1ZmZlciA9IGdldENvbnZlcnRl
ZFBpeGVsQnVmZmVyKCptX2ltYWdlQnVmZmVyLCBhbHBoYUZvcm1hdCwgcmVjdCwgY29sb3JTcGFj
ZSwgbV9hbGxvY2F0b3IpKQogICAgICAgICAgICAgICAgICAgICBjb3B5SW1hZ2VCeXRlcygqY29u
dmVydGVkUGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIHNvdXJjZVJlY3QpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTI4Niw3ICsyODgsNyBA
QCB2b2lkIEZpbHRlckltYWdlOjpjb3B5UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImIGRlc3RpbmF0
aW9uUGl4ZWxCdWZmZXIsIGNvbnN0IEludAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmVx
dWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252ZXJzaW9uKGNvbG9yU3BhY2UpKSB7Ci0gICAg
ICAgIGlmIChhdXRvIGNvbnZlcnRlZFBpeGVsQnVmZmVyID0gZ2V0Q29udmVydGVkUGl4ZWxCdWZm
ZXIoKnNvdXJjZVBpeGVsQnVmZmVyLCBhbHBoYUZvcm1hdCwgY29sb3JTcGFjZSkpCisgICAgICAg
IGlmIChhdXRvIGNvbnZlcnRlZFBpeGVsQnVmZmVyID0gZ2V0Q29udmVydGVkUGl4ZWxCdWZmZXIo
KnNvdXJjZVBpeGVsQnVmZmVyLCBhbHBoYUZvcm1hdCwgY29sb3JTcGFjZSwgbV9hbGxvY2F0b3Ip
KQogICAgICAgICAgICAgY29weUltYWdlQnl0ZXMoKmNvbnZlcnRlZFBpeGVsQnVmZmVyLCBkZXN0
aW5hdGlvblBpeGVsQnVmZmVyLCBzb3VyY2VSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW1hZ2UuaAppbmRleCBlOWVmZDVmYjhjZGQ1ZjU4Y2ZmNzk1NGFlNWU4ZjBhODY2YTc0NmMw
Li5kMmZlOTY1ODcyYTc4NzkxZjVmNzVhZmIxNjFiOTAyOWFlMTI0MDA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5o
CkBAIC00MCwxMyArNDAsMTQgQEAgT0JKQ19DTEFTUyBDSUltYWdlOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGaWx0ZXI7CitjbGFzcyBGaWx0ZXJBbGxvY2F0b3I7CiBjbGFzcyBGbG9h
dFJlY3Q7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogY2xhc3MgRmlsdGVySW1hZ2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxGaWx0ZXJJbWFnZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Rmls
dGVySW1hZ2U+IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29u
c3QgRmxvYXRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0
LCBib29sIGlzQWxwaGFJbWFnZSwgYm9vbCBpc1ZhbGlkUHJlbXVsdGlwbGllZCwgUmVuZGVyaW5n
TW9kZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7Ci0gICAgc3RhdGljIFJlZlB0cjxG
aWx0ZXJJbWFnZT4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBj
b25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJl
Y3QsIFJlZjxJbWFnZUJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxGaWx0ZXJJbWFnZT4g
Y3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBGbG9hdFJl
Y3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIGJvb2wgaXNB
bHBoYUltYWdlLCBib29sIGlzVmFsaWRQcmVtdWx0aXBsaWVkLCBSZW5kZXJpbmdNb2RlLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGaWx0ZXJBbGxvY2F0b3ImKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEZpbHRlckltYWdlPiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJy
ZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBhYnNvbHV0
ZUltYWdlUmVjdCwgUmVmPEltYWdlQnVmZmVyPiYmLCBGaWx0ZXJBbGxvY2F0b3ImKTsKIAogICAg
IC8vIFRoZSByZXR1cm4gdmFsdWVzIGFyZSBpbiBmaWx0ZXIgY29vcmRpbmF0ZXMuCiAgICAgRmxv
YXRSZWN0IHByaW1pdGl2ZVN1YnJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlU3Vi
cmVnaW9uOyB9CkBAIC03Nyw4ICs3OCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIEZpbHRlckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25z
dCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3Qs
IGJvb2wgaXNBbHBoYUltYWdlLCBib29sIGlzVmFsaWRQcmVtdWx0aXBsaWVkLCBSZW5kZXJpbmdN
b2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKLSAgICBGaWx0ZXJJbWFnZShjb25z
dCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBSZWY8SW1hZ2VCdWZmZXI+JiYp
OworICAgIEZpbHRlckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBj
b25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJl
Y3QsIGJvb2wgaXNBbHBoYUltYWdlLCBib29sIGlzVmFsaWRQcmVtdWx0aXBsaWVkLCBSZW5kZXJp
bmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGaWx0ZXJBbGxvY2F0b3ImKTsK
KyAgICBGaWx0ZXJJbWFnZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29u
c3QgRmxvYXRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0
LCBSZWY8SW1hZ2VCdWZmZXI+JiYsIEZpbHRlckFsbG9jYXRvciYpOwogCiAgICAgc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4mIHBpeGVsQnVmZmVyU2xvdChBbHBoYVByZW11bHRpcGxpY2F0aW9u
KTsKIApAQCAtMTA2LDYgKzEwNyw4IEBAIHByaXZhdGU6CiAjaWYgVVNFKENPUkVfSU1BR0UpCiAg
ICAgUmV0YWluUHRyPENJSW1hZ2U+IG1fY2lJbWFnZTsKICNlbmRpZgorCisgICAgRmlsdGVyQWxs
b2NhdG9yJiBtX2FsbG9jYXRvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVz
dWx0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
clJlc3VsdHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzMjkzZjNiZGVlYzc0MzQ3YzI5NzllODFkZjk1MDli
MDhlMGUxOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkZpbHRlclJlc3VsdHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitG
aWx0ZXJSZXN1bHRzOjpGaWx0ZXJSZXN1bHRzKHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJBbGxvY2F0
b3I+JiYgYWxsb2NhdG9yKQorICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yID8gV1RGTW92ZShh
bGxvY2F0b3IpIDogbWFrZVVuaXF1ZTxGaWx0ZXJBbGxvY2F0b3I+KCkpCit7Cit9CisKK0ZpbHRl
ckltYWdlKiBGaWx0ZXJSZXN1bHRzOjplZmZlY3RSZXN1bHQoRmlsdGVyRWZmZWN0JiBlZmZlY3Qp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzdWx0cy5nZXQoZWZmZWN0KTsKK30KKwordm9pZCBG
aWx0ZXJSZXN1bHRzOjpzZXRFZmZlY3RSZXN1bHQoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIGNvbnN0
IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIFJlZjxGaWx0ZXJJbWFnZT4mJiByZXN1bHQpCit7
CisgICAgbV9yZXN1bHRzLnNldCh7IGVmZmVjdCB9LCBXVEZNb3ZlKHJlc3VsdCkpOworCisgICAg
Zm9yIChhdXRvJiBpbnB1dCA6IGlucHV0cykKKyAgICAgICAgbV9yZXN1bHRSZWZlcmVuY2VzLmFk
ZChpbnB1dCwgRmlsdGVyRWZmZWN0U2V0KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQoZWZmZWN0KTsK
K30KKwordm9pZCBGaWx0ZXJSZXN1bHRzOjpjbGVhckVmZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3Qm
IGVmZmVjdCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZXN1bHRzLmZpbmQoZWZmZWN0KTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZXN1bHRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIHJlc3VsdCA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICBtX3Jlc3VsdHMucmVtb3Zl
KGl0ZXJhdG9yKTsKKworICAgIGZvciAoYXV0byYgcmVmZXJlbmNlIDogbV9yZXN1bHRSZWZlcmVu
Y2VzLmdldChyZXN1bHQpKQorICAgICAgICBjbGVhckVmZmVjdFJlc3VsdChyZWZlcmVuY2UpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVzdWx0cy5oCmluZGV4IGU1MGI2YmNl
OTliZTZjZGMyZGJiOTc5MjBiMTlmOTA5NTA2MjI2ZGYuLmE5YWRmNmVkZThlZjNlOWRiYjdmZjJj
Y2ZiMmYyMGFlMTUwZTdhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVzdWx0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVzdWx0cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmlsdGVyQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmlsdGVySW1hZ2VWZWN0b3IuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtMzcsMzkgKzM4LDIyIEBAIGNsYXNzIEZpbHRlckltYWdlOwog
CiBjbGFzcyBGaWx0ZXJSZXN1bHRzIHsKIHB1YmxpYzoKLSAgICBGaWx0ZXJSZXN1bHRzKCkgPSBk
ZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIEZpbHRlclJlc3VsdHMoc3RkOjp1bmlxdWVfcHRy
PEZpbHRlckFsbG9jYXRvcj4mJiA9IG51bGxwdHIpOwogCi0gICAgRmlsdGVySW1hZ2UqIGVmZmVj
dFJlc3VsdChGaWx0ZXJFZmZlY3QmIGVmZmVjdCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX3Jlc3VsdHMuZ2V0KGVmZmVjdCk7Ci0gICAgfQorICAgIEZpbHRlckFsbG9jYXRvciYgYWxs
b2NhdG9yKCkgY29uc3QgeyByZXR1cm4gKm1fYWxsb2NhdG9yOyB9CiAKLSAgICB2b2lkIHNldEVm
ZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3QmIGVmZmVjdCwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3Im
IGlucHV0cywgUmVmPEZpbHRlckltYWdlPiYmIHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIG1fcmVz
dWx0cy5zZXQoeyBlZmZlY3QgfSwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgCi0gICAgICAg
IGZvciAoYXV0byYgaW5wdXQgOiBpbnB1dHMpCi0gICAgICAgICAgICBtX3Jlc3VsdFJlZmVyZW5j
ZXMuYWRkKGlucHV0LCBGaWx0ZXJFZmZlY3RTZXQoKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChlZmZl
Y3QpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJFZmZlY3RSZXN1bHQoRmlsdGVyRWZmZWN0JiBl
ZmZlY3QpCi0gICAgewotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZXN1bHRzLmZpbmQoZWZm
ZWN0KTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzdWx0cy5lbmQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIHJlc3VsdCA9IGl0ZXJhdG9yLT52YWx1ZTsKLSAg
ICAgICAgbV9yZXN1bHRzLnJlbW92ZShpdGVyYXRvcik7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBy
ZWZlcmVuY2UgOiBtX3Jlc3VsdFJlZmVyZW5jZXMuZ2V0KHJlc3VsdCkpCi0gICAgICAgICAgICBj
bGVhckVmZmVjdFJlc3VsdChyZWZlcmVuY2UpOwotICAgIH0KKyAgICBGaWx0ZXJJbWFnZSogZWZm
ZWN0UmVzdWx0KEZpbHRlckVmZmVjdCYpIGNvbnN0OworICAgIHZvaWQgc2V0RWZmZWN0UmVzdWx0
KEZpbHRlckVmZmVjdCYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIFJlZjxGaWx0
ZXJJbWFnZT4mJiByZXN1bHQpOworICAgIHZvaWQgY2xlYXJFZmZlY3RSZXN1bHQoRmlsdGVyRWZm
ZWN0Jik7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgRmlsdGVyRWZmZWN0U2V0ID0gSGFzaFNldDxS
ZWY8RmlsdGVyRWZmZWN0Pj47CiAgICAgSGFzaE1hcDxSZWY8RmlsdGVyRWZmZWN0PiwgUmVmPEZp
bHRlckltYWdlPj4gbV9yZXN1bHRzOworCiAgICAgLy8gVGhlIHZhbHVlIGlzIGEgbGlzdCBvZiBG
aWx0ZXJFZmZlY3RzLCB3aG9zZSBGaWx0ZXJJbWFnZXMgZGVwZW5kIG9uIHRoZSBrZXkgRmlsdGVy
SW1hZ2UuCisgICAgdXNpbmcgRmlsdGVyRWZmZWN0U2V0ID0gSGFzaFNldDxSZWY8RmlsdGVyRWZm
ZWN0Pj47CiAgICAgSGFzaE1hcDxSZWY8RmlsdGVySW1hZ2U+LCBGaWx0ZXJFZmZlY3RTZXQ+IG1f
cmVzdWx0UmVmZXJlbmNlczsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJBbGxvY2F0b3I+
IG1fYWxsb2NhdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCmluZGV4IDdhMDczMmUyOTJlZWNlZjU2MzA4MDNmNTBkNjg4NzllNDBi
ZDU0NzguLmFiOGU4NTYyYTRiMjNiOTU2MTMxYjJiMTMxMjY0NDYxMThmMGQ5NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJSZW1vdGVGaWx0ZXJBbGxvY2F0b3IuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJSZXN1bHRzLmg+CiAKQEAg
LTIzNSw3ICsyMzYsNyBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdGaWx0
ZXJlZEltYWdlQnVmZmVyKHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUgogICAgICAgICBmZUltYWdl
LnNldEltYWdlU291cmNlKFdURk1vdmUoKnNvdXJjZUltYWdlKSk7CiAgICAgfQogCi0gICAgRmls
dGVyUmVzdWx0cyByZXN1bHRzOworICAgIEZpbHRlclJlc3VsdHMgcmVzdWx0cyhtYWtlVW5pcXVl
PFJlbW90ZUZpbHRlckFsbG9jYXRvcj4oKSk7CiAgICAgaGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6
RHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc291cmNlSW1hZ2VJZGVudGlmaWVyLCBzb3VyY2VJbWFn
ZVJlY3QsIFdURk1vdmUoZmlsdGVyKSksIHNvdXJjZUltYWdlLmdldCgpLCByZXN1bHRzKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUZp
bHRlckFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlRmlsdGVyQWxsb2NhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjJiMGM5NGFlZmM5M2JjNTQxMTM5
ZGQxYmI1ODhlOWViYTNlMzg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUZpbHRlckFsbG9jYXRvci5jcHAKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVGaWx0
ZXJBbGxvY2F0b3IuaCIKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29uY3JldGVJbWFnZUJ1ZmZlci5oPgorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZUZpbHRlckFsbG9jYXRvcjo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0
dXJuIENvbmNyZXRlSW1hZ2VCdWZmZXI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Pjo6Y3JlYXRlKHNpemUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgUmVuZGVy
aW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHsgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUZpbHRlckFsbG9jYXRvci5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUZpbHRlckFsbG9jYXRvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjExNGY5YTk0Zjg4N2FjOGFlNjQ2N2E5ZDYwYTdlMWRmZGJmYTkwMjcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRmlsdGVy
QWxsb2NhdG9yLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKKworI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyQWxsb2NhdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVGaWx0ZXJBbGxvY2F0b3IgOiBwdWJsaWMgV2ViQ29yZTo6
RmlsdGVyQWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAgICBSZW1vdGVGaWx0ZXJBbGxvY2F0b3IoKSA9
IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlKSBjb25zdDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9D
RVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDkzNDg2Yzc4NmNlMjk2MmM0OGQ1ZTU0
YzY3MTZmZmY5NThkZTZiYzguLmQ5ZDZiNjdiYmQwMGQzNTIzZDgzZWVhZDJiZjkzMGI3NzNjMGIw
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMxNywxNiArMzE3LDIxIEBAIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RmlsdGVyZWRJbWFnZUZvckltYWdlQnVmZmVyKFJl
bmRlcmluZ1Jlc291cmNlSWRlCiAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJl
c291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoeyBpZGVudGlmaWVyLCBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSk7CiAgICAgICAgIGlmICgh
aW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgRmlsdGVyUmVzdWx0
cyByZXN1bHRzKG1ha2VVbmlxdWU8UmVtb3RlRmlsdGVyQWxsb2NhdG9yPigpKTsKICAgICAgICAg
YXV0byBpbWFnZSA9IGltYWdlQnVmZmVyLT5maWx0ZXJlZEltYWdlKGZpbHRlcik7CiAgICAgICAg
IGlmICghaW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgYXV0byBpbWFnZVNp
emUgPSBpbWFnZS0+c2l6ZSgpOwogICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlKEludFNpemUoaW1hZ2VTaXplKSwgeyBpbWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgp
IH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAg
ICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogICAgICAg
ICBpZiAoIWNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgY29udGV4dC0+
ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpKTsKICAgICAgICAgYml0bWFwLT5jcmVhdGVI
YW5kbGUoaGFuZGxlKTsKICAgICB9KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBlYTBjMDY2MzNhNDY3MjZk
NjZmYjc0MTIxOTZmMzQxMGE4MzkyNDkzLi5lZmU4ZDMyOWVmODg2OTYzYWYyNmJlMGZjMWYzMGE4
YzBlZDdhNzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI1LDggKzI1LDkgQEAgR1BVUHJvY2Vzcy9HUFVQ
cm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BV
UHJvY2Vzcy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAotR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVGaWx0
ZXJBbGxvY2F0b3IuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAogR1BVUHJvY2Vzcy9n
cmFwaGljcy9TY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcAogR1BVUHJvY2Vzcy9n
cmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNlc1JlcXVlc3QuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YmRiZDY4
M2JjYzNmZGQwZDI5MTY1OWYwMDIwNmNkYjNjOTMzMDhjLi42NGI2YTQwNzliMThhZTU5NThiYmIw
NjgxZGY0YWIwYWFhNDMwZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTU0NTUsNiArNTQ1NSw4IEBACiAJCTcxRkI4MTBBMjI2MDYy
N0EwMDMyMzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VF
dmVudHNEaXNwYXRjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjAz
NDQ5QTI2QTZDNDRDMDAwQTVGNTQgLyogTW9ub3RvbmljT2JqZWN0SWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb25vdG9uaWNPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyMDM0NDlCMjZBNkM0NzYwMDBBNUY1NCAvKiBSZW5kZXJpbmdVcGRhdGVJ
RC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdVcGRhdGVJRC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MjE1OEZERjI4MkEwMUQ2MDAzQkI0MjMgLyogUmVtb3RlRmlsdGVyQWxs
b2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUZpbHRlckFsbG9jYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTU4RkUwMjgyQTAxRDYwMDNCQjQyMyAv
KiBSZW1vdGVGaWx0ZXJBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlRmlsdGVyQWxs
b2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMjc4MDBCMjQwOEJEN0Qw
MDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyNDY5NjNBMjc1QjdFNjcwMEE5MTU2QSAvKiBGaWx0ZXJSZWZlcmVuY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRmlsdGVyUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyNkQ1NkREMjUzQTY0ODEwMDAyRUY5MCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTA1MzksNiArMTA1NDEsOCBAQAogCQkJCUY0OEJCOEUwMjZG
OTYzOTIwMDFDMUM0MCAvKiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCAqLywKIAkJCQlG
NDhCQjhERjI2Rjk2MzkyMDAxQzFDNDAgLyogUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5oICov
LAogCQkJCUY0NTFDMTAwMjcwM0Q4NTMwMDJCQTAzQiAvKiBSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyLm1lc3NhZ2VzLmluICovLAorCQkJCTcyMTU4RkRGMjgyQTAxRDYwMDNCQjQyMyAvKiBSZW1v
dGVGaWx0ZXJBbGxvY2F0b3IuY3BwICovLAorCQkJCTcyMTU4RkUwMjgyQTAxRDYwMDNCQjQyMyAv
KiBSZW1vdGVGaWx0ZXJBbGxvY2F0b3IuaCAqLywKIAkJCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovLAogCQkJCTdCOTA0MTZBMjU0QUZF
QTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovLAogCQkJCTdCOTA0MTY4
MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiAq
LywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459639</attachid>
            <date>2022-05-21 13:00:33 -0700</date>
            <delta_ts>2022-05-21 13:45:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240269-20220521130032.patch</filename>
            <type>text/plain</type>
            <size>237469</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">RnJvbSBmYTZiZmI2OWZkNDdhMWQ1MDBlNTU3NDdlNzA1NWM5OWY5OThjNThhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYWlkIEFib3UtSGFsbGF3YSA8c2FpZEBhcHBsZS5jb20+CkRh
dGU6IFNhdCwgMjEgTWF5IDIwMjIgMTI6NTg6MTggLTA3MDAKU3ViamVjdDogW1BBVENIXSAgW0dQ
VSBQcm9jZXNzXSBbRmlsdGVyc10gRmlsdGVyIHJlc3VsdCBidWZmZXJzIHNob3VsZCBiZQogYXR0
cmlidXRlZCB0byBXZWJQcm9jZXNzICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQwMjY5IAogcmRhcjovLzkyMjk1MjE1CgpCZWNhdXNlIHRoZSBHUFVQcm9jZXNzIG1l
bW9yeSBpcyBsaW1pdGVkIGFuZCBiZWNhdXNlIGFwcGx5aW5nIGEgZmlsdGVyCmNhbiByZXF1aXJl
IGEgbGFyZ2UgY2h1bmsgb2YgbWVtb3J5LCB0aGlzIG1lbW9yeSBzaG91bGQgYmUgYWxsb2NhdGVk
IGJ5CkdQVVByb2Nlc3MgYnV0IHNob3VsZCBiZSBvd25lZCBieSBXZWJQcm9jZXNzLgotLS0KIFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgICAgICAgICAgICAgICAgICB8ICAgMSArCiBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogLi4uL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIHwgIDE0ICsrKwogLi4uL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgICAgIHwgICA1ICstCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCAgICAgfCAgIDcgKy0KIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCAgICAgICAgICAgICB8ICAxNCArLS0KIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmggICAgICAgICAgICAgICB8ICAgOCArLQogLi4uL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCAgIHwgICAyICstCiAuLi4vaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgfCAgIDQgKy0KIC4uLi9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggICB8ICAgMiArLQogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcCAgICAgIHwgICA0ICstCiAuLi4vcGxhdGZvcm0v
Z3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oICAgfCAgMTMgKystCiAuLi4vcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwICAgfCAgIDIgKy0KIC4uLi9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oICAgICB8ICAgNCArLQogLi4uL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCAgIHwgICA1ICstCiAuLi4vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJBbGxvY2F0b3IuY3BwICAgICAgICAgfCAgNDYgKysrKysrKysKIC4uLi9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckFsbG9jYXRvci5oICB8ICA0OSArKysrKysrKwogLi4uL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAgIHwgIDI3ICsrKy0tCiAuLi4v
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggICAgfCAgIDUgKy0KIC4uLi9w
bGF0Zm9ybS9ncmFwaGljcy9KU1BpeGVsQnVmZmVyLmNwcCAgICAgICB8IDEwMiArKysrKysrKysr
KysrKysrKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSlNQaXhlbEJ1ZmZlci5oIHwg
MTA1ICsrKysrKysrKysrKysrKysrKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXIuY3BwIHwgIDc5ICsrKystLS0tLS0tLS0KIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyLmggICB8ICA5MSArKystLS0tLS0tLS0tLS0KIC4uLi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwICB8ICAgMiArLQogLi4uL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIHwgIDM2ICsrKy0tLQogLi4uL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCAgIHwgIDEyICstCiAuLi4vY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcCAgfCAgIDIgKy0KIC4uLi9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCAgICB8ICAgMiArLQogLi4uL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwICAgICAgIHwgIDE0ICstLQogLi4uL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCAgICAgIHwgICA2ICstCiAuLi4vY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwICAgICAgICAgfCAgIDQgKy0KIC4uLi9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oICB8ICAgMiArLQogLi4uL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgICAgICAgIHwgICA0ICstCiAuLi4vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggfCAgIDIgKy0KIC4uLi9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcCAgICB8ICAgNCArLQogLi4uL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gIHwgICA4ICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9GcmFtZUNWLmggICAgICAgfCAgIDIgKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9WaWRlb0ZyYW1lQ1YubW0gICAgICB8ICAxMiArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuaCAgIHwgICAyIC0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlci5jcHAgICAgICB8ICAgMyArLQogLi4uL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcCAgICAgICAgIHwgICAyICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJJbWFnZS5jcHAgfCAgODQgKysrKysrKy0tLS0tLS0KIC4uLi9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmggICB8ICAyMSArKy0tCiAuLi4vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJSZXN1bHRzLmNwcCAgICAgICAgfCAgNjQgKysrKysrKysrKysKIC4uLi9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuaCB8ICA0MCArKy0tLS0tCiAu
Li4vc29mdHdhcmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAgfCAgNjkgKysrKysr
LS0tLS0tCiAuLi4vRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllci5jcHAgICAgfCAg
IDkgKy0KIC4uLi9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAgICB8ICAx
MCArLQogLi4uL0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuY3BwICAgICAgIHwgIDM3
ICsrKy0tLQogLi4uL0ZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuaCAgICAgICAgIHwg
ICA2ICstCiAuLi4vRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXIuY3BwICAgICAgfCAg
MTQgKy0tCiAuLi4vc29mdHdhcmUvRkVEcm9wU2hhZG93U29mdHdhcmVBcHBsaWVyLmNwcCAgfCAg
IDUgKy0KIC4uLi9GRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllci5jcHAgICAgICAgICB8ICA2
NyArKysrKystLS0tLQogLi4uL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVy
LmggIHwgIDE2ICstLQogLi4uL3NvZnR3YXJlL0ZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxpZXIuY3Bw
ICAgIHwgIDQxICsrKystLS0KIC4uLi9zb2Z0d2FyZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVy
LmggICAgICB8ICAgMiArLQogLi4uL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGll
ci5jcHAgIHwgIDIzICsrLS0KIC4uLi9zb2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxp
ZXIuaCAgICB8ICAgNiArLQogLi4uL3NvZnR3YXJlL0ZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGll
ci5jcHAgIHwgIDIwICsrLS0KIC4uLi9zb2Z0d2FyZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxp
ZXIuaCAgICB8ICAgNiArLQogLi4uL2dyYXBoaWNzL2dibS9HcmFwaGljc0NvbnRleHRHTEdCTS5j
cHAgICAgIHwgICAyICstCiAuLi4vb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCAg
ICAgICAgfCAgMjIgKystLQogLi4uL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oIHwgIDEyICstCiAuLi4vb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHAgICAgfCAgIDggKy0KIC4uLi9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAg
ICAgICB8ICAgOCArLQogLi4uL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNw
cCAgIHwgICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCAg
ICAgfCAgIDYgKy0KIC4uLi9JbWFnZUJ1ZmZlclNoYXJlYWJsZUFsbG9jYXRvci5jcHAgICAgICAg
ICB8ICA4OSArKysrKysrKysrKysrKysKIC4uLi9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUFsbG9jYXRvci5oICB8ICA1MSArKysrKysrKysKIC4uLi9ncmFwaGljcy9SZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyLmNwcCAgICB8ICAgMyArLQogLi4uL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmNwcCAgICAgIHwgICA4ICstCiAuLi4vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaCAgICAgICAgfCAgIDMgKy0KIC4uLi9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbiAgICAgICB8ICAgMiArLQogLi4uZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0
aW9uc0dlbmVyYXRlZC5oIHwgICA3ICstCiAuLi4vZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAgICAgICAgfCAgMjAgKysrLQogLi4uL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaCAgICAgICAgIHwgICA0ICstCiAuLi4vUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbiAgICAgICAgfCAgIDIgKy0KIC4uLi9ncmFwaGljcy9TaGFyZWFibGVQaXhlbEJ1ZmZl
ci5jcHAgICAgICAgICB8ICA2NyArKysrKysrKysrKwogLi4uL2dyYXBoaWNzL1NoYXJlYWJsZVBp
eGVsQnVmZmVyLmggICAgICAgICAgIHwgIDQ4ICsrKysrKysrCiAuLi4vbWVkaWEvUmVtb3RlVmlk
ZW9GcmFtZU9iamVjdEhlYXAuY3BwICAgICAgfCAgIDEgKwogLi4uL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIHwgICAxICsKIC4uLi9QbGF0Zm9ybS9JUEMvUGl4ZWxC
dWZmZXJSZWZlcmVuY2UuaCAgICAgICB8ICA2MyArKysrKysrKysrKwogU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9NZW1vcnlMZWRnZXIuaCAgICAgICAgIHwgIDU4ICsrKysrKysrKysKIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggICAgICAgICB8ICAgMyArLQogU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSAgICAgIHwgICAxICsKIC4uLi9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAgICAgICB8ICAgMiArLQogLi4uL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCAgICAgICAgIHwgICAyICstCiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCAgICAgICAgfCAgIDUgKy0KIFNvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogLi4uL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgIDU0ICsrLS0tLS0tLQogLi4uL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgICAgIHwgICA0ICstCiAuLi4vSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggICAgICAgfCAgIDIgKy0KIC4uLi9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggICB8ICAgMiArLQogLi4uYXBoaWNzQ29u
dGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIHwgICA2ICstCiAuLi4vR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAgICAgfCAgMTMgKy0tCiAuLi4vZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCAgfCAgIDggKy0KIC4uLi9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCAgICB8ICAgMSArCiAuLi4vUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluICAgfCAgIDEgKwogLi4uL0ltYWdlQnVmZmVyUmVt
b3RlSU9TdXJmYWNlQmFja2VuZC5jcHAgICAgIHwgICA0ICstCiAuLi4vY29jb2EvSW1hZ2VCdWZm
ZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmggfCAgIDIgKy0KIC4uLi9UZXN0cy9XZWJDb3JlL0lt
YWdlQnVmZmVyVGVzdHMuY3BwICAgICAgICB8ICAgMyArLQogMTAxIGZpbGVzIGNoYW5nZWQsIDEy
NTMgaW5zZXJ0aW9ucygrKSwgNjAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQWxsb2NhdG9yLmNwcAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQWxsb2NhdG9yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9KU1BpeGVsQnVmZmVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0pTUGl4ZWxCdWZmZXIuaAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVz
dWx0cy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVBbGxvY2F0b3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
QWxsb2NhdG9yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvU2hhcmVhYmxlUGl4ZWxCdWZmZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1NoYXJlYWJsZVBpeGVsQnVmZmVyLmgKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9QaXhlbEJ1ZmZlclJl
ZmVyZW5jZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9NZW1v
cnlMZWRnZXIuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGMzN2Q0MTFjMzE3My4uZWZmOWY1ZjM1
YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE2NTMsNiArMTY1Myw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckFsbG9jYXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0QXBwbGllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3RHZW9tZXRyeS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDgyNmJkMDQyOThkMi4uNGMxN2Y1ZDk1MzFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjA2OCw2ICsyMDY4LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SEVWQ1V0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJBbGxvY2F0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBp
cGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCkBAIC0yMDc4LDYgKzIw
NzksNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVJlc29sdXRpb24uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9JbnRQb2ludC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvSlNQaXhlbEJ1ZmZl
ci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvTGF5b3V0UmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuY3BwCkBAIC0y
MTQ1LDYgKzIxNDcsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckZ1bmN0aW9u
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJSZXN1bHRzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291
cmNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZDk5N2NmYmExNDAu
LjNmOWZmYjliNWFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjM0NSw2ICsyMzQ1LDcgQEAKIAkJNzFGQ0IxNzAyN0JBQjNG
RTAwRTA2MzFDIC8qIEZyYW1lUmF0ZUFsaWduZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRkNCMTZEMjdCQUIzREYwMEUwNjMxQyAvKiBGcmFtZVJh
dGVBbGlnbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzIxNDQzMzMyMjNFQzhCMDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MzIyM0IyQTI0MDBG
QkE5NDQgLyogU1ZHUHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlP
d25lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVF
RTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjE1OEZERTI4MjlGRDgzMDAz
QkI0MjMgLyogSW1hZ2VCdWZmZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTU4RkREMjgyOUY2M0YwMDNCQjQyMyAvKiBJbWFnZUJ1
ZmZlckFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyMUI0OTc0MjUxMkJBM0IwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMUI0OTcw
MjUxMkFDMDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4
MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50
aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTcyMkFGMkRFMjdFMUMyMDYwMDc4RDk5NyAvKiBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJB
RjJEQjI3RTFDMjA0MDA3OEQ5OTcgLyogR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzY0LDYgKzIz
NjUsNyBAQAogCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5
RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MjhENDc5MTI3OUE0OEI3MDBCQTdDMEUgLyogRmlsdGVyRWZmZWN0QXBwbGllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJBMTNBOUYy
NzRDNUNDNzAwRTJBODhFIC8qIEZpbHRlckVmZmVjdEFwcGxpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjkxQTQ1OTI4MzgwM0IzMDA5QjM4
OTAgLyogSlNQaXhlbEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI4REQ1RTcyODM1NUEzRjAwREIyQTlFIC8qIEpTUGl4ZWxCdWZmZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2
NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2
ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVu
ZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjlEMDUzMDI1MzE0MjQz
MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTgg
LyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMzgwLDYgKzExMzgyLDkgQEAKIAkJNzIxNDQz
NDUyMjQwQzhCQTAwRjEyRkY3IC8qIFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzIxNDQzNDYyMjQwQ0FEMjAwRjEyRkY3IC8qIFNWR1ZhbHVlUHJvcGVydHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjE0QjlCNzI3NDQ1OEZBMDAzQkU2REYgLyogRmlsdGVyRWZmZWN0VmVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZpbHRlckVmZmVjdFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MjE1OEZEQjI4MjlGNDEwMDAzQkI0MjMgLyogRmlsdGVyUmVzdWx0cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGaWx0ZXJSZXN1bHRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzIxNThGREMyODI5RjYzRjAwM0JCNDIzIC8qIEltYWdlQnVmZmVyQWxsb2Nh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQWxsb2NhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNThGREQyODI5RjYzRjAwM0JCNDIzIC8qIElt
YWdlQnVmZmVyQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQWxsb2NhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMUI0OTZGMjUxMkFDMDQwMEZFOUQz
QiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCaXRt
YXBCYWNraW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxQjQ5NzAyNTEy
QUMwNDAwRkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFn
ZUJpdG1hcEJhY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIyQTgxNUMy
MzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
bmltYXRpb25GcmFtZVJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDE2
LDYgKzExNDIxLDggQEAKIAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRz
UkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNS
R0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MjhERDVFNjI4MzU1QTNGMDBEQjJBOUUgLyogSlNQaXhlbEJ1ZmZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BpeGVsQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzI4REQ1RTcyODM1NUEzRjAwREIyQTlFIC8qIEpTUGl4ZWxCdWZm
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQaXhlbEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3Mjk2NjFBMjI3NTk2MEE1MDBFN0RGOUIgLyogRmlsdGVyRWZmZWN0R2VvbWV0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyRWZmZWN0R2VvbWV0cnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVs
dGlwbGljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyog
UmVuZGVyaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzE4OCw2ICsyNzE5NSw3IEBACiAJCQkJNDlFQ0VCNjQx
NDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbi5oICovLAogCQkJCTQ5RUNFQjY1MTQ5
OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmNwcCAqLywKIAkJCQk0OUVDRUI2NjE0
OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5oICovLAorCQkJCTcyMTU4RkRCMjgy
OUY0MTAwMDNCQjQyMyAvKiBGaWx0ZXJSZXN1bHRzLmNwcCAqLywKIAkJCQk3MjExQjVENjI3NjUz
NjgyMDA3NkZFRjggLyogRmlsdGVyUmVzdWx0cy5oICovLAogCQkJCTg0NzMwRDc0MTI0OEYwQjMw
MEQzQTlDOSAvKiBMaWdodFNvdXJjZS5oICovLAogCQkJCUExRTExNTQ1MTMwMTVDNEUwMDU0QUM4
QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCAqLywKQEAgLTI5MjMyLDYgKzI5MjQwLDggQEAKIAkJ
CQk1NUEzMzZGODFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCAqLywKIAkJ
CQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VCdWZmZXIuY3BwICovLAogCQkJCUIy
QTEwQjkxMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlci5oICovLAorCQkJCTcyMTU4RkRD
MjgyOUY2M0YwMDNCQjQyMyAvKiBJbWFnZUJ1ZmZlckFsbG9jYXRvci5jcHAgKi8sCisJCQkJNzIx
NThGREQyODI5RjYzRjAwM0JCNDIzIC8qIEltYWdlQnVmZmVyQWxsb2NhdG9yLmggKi8sCiAJCQkJ
NzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5jcHAgKi8sCiAJ
CQkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovLAog
CQkJCTQzRDI1OTg2MTNDODE2RjQwMDYwODU1OSAvKiBJbWFnZUJ1ZmZlclBpcGUuY3BwICovLApA
QCAtMjkyNjUsNiArMjkyNzUsOCBAQAogCQkJCTJENDZGMDRGMTdCOTZGRDIwMDU2NDdGMCAvKiBJ
bnRTaXplLmNwcCAqLywKIAkJCQlCMjc1MzU0NzBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZS5o
ICovLAogCQkJCUIyNzUzNTQ4MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oICovLAor
CQkJCTcyOERENUU2MjgzNTVBM0YwMERCMkE5RSAvKiBKU1BpeGVsQnVmZmVyLmNwcCAqLywKKwkJ
CQk3MjhERDVFNzI4MzU1QTNGMDBEQjJBOUUgLyogSlNQaXhlbEJ1ZmZlci5oICovLAogCQkJCTY1
Q0M2QkVEMTYwMTRFQzAwMDBFRDI3RCAvKiBMYXRpbjFUZXh0SXRlcmF0b3IuaCAqLywKIAkJCQkw
RjczNkVDQTI2Q0NCOTdBMDAwQUQ3Q0EgLyogTGF5ZXJUcmVlQXNUZXh0T3B0aW9ucy5oICovLAog
CQkJCTBGMzZFNzM2MUJEMTgzN0EwMDJEQjg5MSAvKiBMYXlvdXRQb2ludC5jcHAgKi8sCkBAIC0z
NDgwMiw2ICszNDgxNCw3IEBACiAJCQkJQkM1RUI2OUYwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxM
YXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEyQkU0ODMxRkU4NjVERDAwMjAzMUNDIC8qIEZp
bGxNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDVFNzJGODBGRDI2MUVFMDBBODdENzkgLyog
RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjE1OEZERTI4MjlGRDgzMDAzQkI0MjMgLyog
SW1hZ2VCdWZmZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4QzkyNTFBMEZDQzdD
NEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyOEQ0Nzkx
Mjc5QTQ4QjcwMEJBN0MwRSAvKiBGaWx0ZXJFZmZlY3RBcHBsaWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjZDREUyMDI3NTk3MzUwMDBBNDQ1QjIgLyogRmlsdGVyRWZmZWN0R2VvbWV0cnkuaCBp
biBIZWFkZXJzICovLApAQCAtMzgwODgsNiArMzgxMDEsNyBAQAogCQkJCUU0QUZDRkE1MERBRjI5
QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMThDQzBBNDI1
ODBFRkIxMDAzRDc1RkIgLyogVW5pdmVyc2FsQWNjZXNzWm9vbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDA4NkZFOTgwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcyOTFBNDU5MjgzODAzQjMwMDlCMzg5MCAvKiBKU1BpeGVsQnVmZmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDE3NjJFMDE3NjY4NkQ5MDBEODM2QTggLyogVXBTYW1wbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0MzdBMjFENTdCM0ZFMDBBQjg1RUEgLyogVVJMRGVjb21w
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY3NzI2MDUxQTVERjZGMjAwM0MyNEREIC8q
IFVSTEZpbHRlclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAwZWFmZGMxNGNm
YmMuLjA4YjAwZjU1MTIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAi
SlNJbWFnZURhdGEuaCIKICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiSlNO
YXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJKU1BpeGVsQnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNSVEND
ZXJ0aWZpY2F0ZS5oIgogI2luY2x1ZGUgIkpTUlRDRGF0YUNoYW5uZWwuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC0xMTE2LDcgKzExMTcsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBhcnJheUJ1ZmZl
ciA9IHBpeGVsQnVmZmVyLT5kYXRhKCkucG9zc2libHlTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAg
YXV0byBhcnJheUJ1ZmZlciA9IGRvd25jYXN0PEpTUGl4ZWxCdWZmZXI+KCpwaXhlbEJ1ZmZlciku
ZGF0YSgpLnBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgIGlmICghYXJyYXlCdWZmZXIp
IHsKICAgICAgICAgICAgIGNvZGUgPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlv
bkVycm9yOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzM4OCw3ICszMzg5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogCiAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgY29s
b3JTcGFjZSB9OwotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNy
ZWF0ZShmb3JtYXQsIGltYWdlRGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gSlNQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZv
cm1hdCwgaW1hZ2VEYXRhU2l6ZSwgYXJyYXlCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
ICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IDMyMjcyZTAzODVkMC4uMzBkNzNjZmIxYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNzY0LDcgKzc2NCw4IEBAIFJlZlB0cjxJbWFn
ZURhdGE+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRJbWFnZURhdGEoKQogICAgIGlmIChpczxXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQpKSB7CiAgICAgICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFibGVk
KCkpCiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nQ2FudmFz
UmVhZChkb2N1bWVudCgpKTsKLSAgICAgICAgcmV0dXJuIEltYWdlRGF0YTo6Y3JlYXRlKGRvd25j
YXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KCptX2NvbnRleHQpLnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSk7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBkb3du
Y2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPigqbV9jb250ZXh0KS5wYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBJbWFnZURhdGE6OmNyZWF0
ZShzdGF0aWNfcG9pbnRlcl9jYXN0PEpTUGl4ZWxCdWZmZXI+KFdURk1vdmUocGl4ZWxCdWZmZXIp
KSk7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03OTgsOSArNzk5LDkg
QEAgUmVmUHRyPFZpZGVvRnJhbWU+IEhUTUxDYW52YXNFbGVtZW50Ojp0b1ZpZGVvRnJhbWUoKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVy
biBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihXVEZNb3ZlKCpwaXhlbEJ1ZmZl
cikpOworICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihwaXhl
bEJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICNlbGlmIFVTRShHU1RSRUFNRVIpCi0gICAgcmV0
dXJuIFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihXVEZNb3ZlKCpw
aXhlbEJ1ZmZlcikpOworICAgIHJldHVybiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVGcm9t
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAjZW5kaWYKICNlbHNl
CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKaW5kZXggMmY3
YzQyYzBkOWE1Li4xMGMzYjM2YWJmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKQEAg
LTUwLDE3ICs1MCwxNyBAQCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBJbWFnZURhdGE6OmNvbXB1dGVD
b2xvclNwYWNlKHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZwogICAgIHJldHVybiBkZWZh
dWx0Q29sb3JTcGFjZTsKIH0KIAotUmVmPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoUGl4
ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlcikKK1JlZjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRl
KFJlZjxKU1BpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyKQogewotICAgIGF1dG8gY29sb3JTcGFj
ZSA9IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UocGl4ZWxCdWZmZXIuZm9ybWF0KCkuY29sb3JTcGFj
ZSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHBpeGVsQnVmZmVyLnNpemUo
KSwgcGl4ZWxCdWZmZXIudGFrZURhdGEoKSwgKmNvbG9yU3BhY2UpKTsKKyAgICBhdXRvIGNvbG9y
U3BhY2UgPSB0b1ByZWRlZmluZWRDb2xvclNwYWNlKHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xv
clNwYWNlKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEocGl4ZWxCdWZmZXIt
PnNpemUoKSwgcGl4ZWxCdWZmZXItPnRha2VEYXRhKCksICpjb2xvclNwYWNlKSk7CiB9CiAKLVJl
ZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+JiYgcGl4ZWxCdWZmZXIpCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShS
ZWZQdHI8SlNQaXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlcikKIHsKICAgICBpZiAoIXBpeGVsQnVm
ZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUo
KnBpeGVsQnVmZmVyKSk7CisgICAgcmV0dXJuIGNyZWF0ZShwaXhlbEJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpKTsKIH0KIAogUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKQEAgLTE1MywxMCArMTUzLDEwIEBAIEltYWdlRGF0YTo6SW1hZ2VEYXRh
KGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRhdGEs
IFByCiAKIEltYWdlRGF0YTo6fkltYWdlRGF0YSgpID0gZGVmYXVsdDsKIAotUGl4ZWxCdWZmZXIg
SW1hZ2VEYXRhOjpwaXhlbEJ1ZmZlcigpIGNvbnN0CitSZWY8UGl4ZWxCdWZmZXI+IEltYWdlRGF0
YTo6cGl4ZWxCdWZmZXIoKSBjb25zdAogewogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJH
QkE4LCB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShtX2NvbG9yU3BhY2UpIH07Ci0gICAgcmV0dXJu
IHsgZm9ybWF0LCBtX3NpemUsIG1fZGF0YS5nZXQoKSB9OworICAgIHJldHVybiBKU1BpeGVsQnVm
ZmVyOjpjcmVhdGUoZm9ybWF0LCBtX3NpemUsIG1fZGF0YS5nZXQoKSk7CiB9CiAKIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRh
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKaW5kZXggYjkxZDQwMDcwMTJhLi5lMmUyY2U2NmNlMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhU2V0dGluZ3MuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCi0jaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKKyNpbmNsdWRlICJKU1BpeGVsQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQwLDgg
KzQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZURhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEltYWdlRGF0YT4gY3JlYXRlKFBpeGVsQnVmZmVyJiYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoc3RkOjpvcHRpb25hbDxQaXhlbEJ1
ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxJbWFnZURhdGE+IGNyZWF0
ZShSZWY8SlNQaXhlbEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxJbWFnZURhdGE+IGNyZWF0ZShSZWZQdHI8SlNQaXhlbEJ1ZmZlcj4mJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25z
dCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCBQcmVkZWZpbmVkQ29sb3JTcGFj
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+
PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIHJvd3MsIHVuc2lnbmVkIHBpeGVsc1BlclJv
dywgUHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8
SW1hZ2VEYXRhU2V0dGluZ3M+ID0gc3RkOjpudWxsb3B0KTsKQEAgLTU5LDcgKzU5LDcgQEAgcHVi
bGljOgogICAgIFVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmdldCgpOyB9CiAgICAgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCi0gICAgUGl4ZWxCdWZmZXIgcGl4ZWxCdWZmZXIoKSBj
b25zdDsKKyAgICBSZWY8UGl4ZWxCdWZmZXI+IHBpeGVsQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgSW1hZ2VEYXRhKGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50
OENsYW1wZWRBcnJheT4mJiwgUHJlZGVmaW5lZENvbG9yU3BhY2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcAppbmRleCBkZjExZjliMjQxODUuLjlmNzFiYWUyYTc0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKQEAgLTIxOTYsNyArMjE5Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEoaW50IHN4LCBpCiAKICAg
ICBBU1NFUlQocGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0gdG9EZXN0aW5hdGlv
bkNvbG9yU3BhY2UoY29tcHV0ZWRDb2xvclNwYWNlKSk7CiAKLSAgICByZXR1cm4geyB7IEltYWdl
RGF0YTo6Y3JlYXRlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSkgfSB9OworICAgIHJldHVybiB7IHsg
SW1hZ2VEYXRhOjpjcmVhdGUoc3RhdGljX3JlZmVyZW5jZV9jYXN0PEpTUGl4ZWxCdWZmZXI+KHBp
eGVsQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpKSB9IH07CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSYgZGF0YSwgaW50IGR4LCBp
bnQgZHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGE3NWI1ZTgxZTk0Ny4uMDFlY2ZmMWNkYzE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcApAQCAtMTQ1NywxMCArMTQ1NywxMCBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKICAgICB9CiB9
CiAKLXN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKQorUmVmUHRyPFBpeGVsQnVmZmVy
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVs
QnVmZmVyKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjbGVhcklm
Q29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKICAgICByZXR1cm4gbV9jb250ZXh0LT5wYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNTJl
MjZiNjNiM2U3Li41N2M1ZDU5YjZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTM5Myw3ICszOTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5V2l0aFBhaW50KCkgZmluYWw7
CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIGZpbmFsOwotICAgIHN0
ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZm
ZXIoKTsKKyAgICBSZWZQdHI8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4
ZWxCdWZmZXIoKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJlZlB0cjxWaWRlb0Zy
YW1lPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9WaWRlb0ZyYW1lKCk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCmluZGV4IDk0YzZiMWQyYzdkYi4uNGM3
NzZiMDYzNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKQEAg
LTEyOCwxMCArMTI4LDEwIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExhYjxmbG9hdD4+IHNhbXBs
ZUNvbG9yKERvY3VtZW50JiBkb2N1bWVudCwgSW50UG9pbnQmJiBsb2NhCiAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmIChwaXhlbEJ1
ZmZlci0+ZGF0YSgpLmxlbmd0aCgpIDwgNCkKKyAgICBpZiAocGl4ZWxCdWZmZXItPmJ5dGVMZW5n
dGgoKSA8IDQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHNuYXBz
aG90RGF0YSA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpOworICAgIGF1dG8gc25hcHNob3RE
YXRhID0gcGl4ZWxCdWZmZXItPmJ5dGVzKCk7CiAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxMYWI8
ZmxvYXQ+PihTUkdCQTx1aW50OF90PiB7IHNuYXBzaG90RGF0YVsyXSwgc25hcHNob3REYXRhWzFd
LCBzbmFwc2hvdERhdGFbMF0sIHNuYXBzaG90RGF0YVszXSB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmlu
ZGV4IGIxMjhkN2JmZjA0Ni4uZTU1NmJhMDEyOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0xNDksNiAr
MTQ5LDEyIEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAgICBSZWZQdHI8SW1hZ2U+IGZpbHRlcmVk
SW1hZ2UoRmlsdGVyJiBmaWx0ZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBGaWx0ZXJSZXN1
bHRzIHJlc3VsdHM7CisgICAgICAgIHJldHVybiBmaWx0ZXJlZEltYWdlKGZpbHRlciwgcmVzdWx0
cyk7CisgICAgfQorCisgICAgUmVmUHRyPEltYWdlPiBmaWx0ZXJlZEltYWdlKEZpbHRlciYgZmls
dGVyLCBGaWx0ZXJSZXN1bHRzJiByZXN1bHRzKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0
byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CiAgICAgICAgIGlmICghYmFja2Vu
ZCkKQEAgLTE1Niw3ICsxNjIsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgY29uc3RfY2FzdDxD
b25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKICAgICAg
ICAgCi0gICAgICAgIEZpbHRlclJlc3VsdHMgcmVzdWx0czsKICAgICAgICAgYXV0byByZXN1bHQg
PSBmaWx0ZXIuYXBwbHkodGhpcywgeyB7IH0sIGxvZ2ljYWxTaXplKCkgfSwgcmVzdWx0cyk7CiAg
ICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNjUs
MTMgKzI3MCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0g
ICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICBSZWZQdHI8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBp
eGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlQnVmZmVyQWxsb2NhdG9yJiBhbGxvY2F0b3IpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsK
ICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVz
aENvbnRleHQoKTsKLSAgICAgICAgICAgIHJldHVybiBiYWNrZW5kLT5nZXRQaXhlbEJ1ZmZlcihv
dXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmdldFBp
eGVsQnVmZmVyKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgYWxsb2NhdG9yKTsKICAgICAgICAgfQot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1
ZmZlciwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCA9
IHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA4N2I5ZGE3
ZWZmM2IuLmQ5MDRjMDg4MTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtNTcwLDcgKzU3MCw3IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0w6OmV4dHJhY3RQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZl
ciYgcGl4ZWxCdWZmZXIsIERhdGFGCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkYXRhLnJl
c2l6ZShwYWNrZWRTaXplKTsKIAotICAgIGlmICghcGFja1BpeGVscyhwaXhlbEJ1ZmZlci5kYXRh
KCkuZGF0YSgpLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VJbWFnZVN1
YlJlY3RhbmdsZSwgZGVwdGgsIDAsIHVucGFja0ltYWdlSGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBy
ZW11bHRpcGx5QWxwaGEgPyBBbHBoYU9wOjpEb1ByZW11bHRpcGx5IDogQWxwaGFPcDo6RG9Ob3Ro
aW5nLCBkYXRhLmRhdGEoKSwgZmxpcFkpKQorICAgIGlmICghcGFja1BpeGVscyhwaXhlbEJ1ZmZl
ci5ieXRlcygpLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VJbWFnZVN1
YlJlY3RhbmdsZSwgZGVwdGgsIDAsIHVucGFja0ltYWdlSGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBy
ZW11bHRpcGx5QWxwaGEgPyBBbHBoYU9wOjpEb1ByZW11bHRpcGx5IDogQWxwaGFPcDo6RG9Ob3Ro
aW5nLCBkYXRhLmRhdGEoKSwgZmxpcFkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDNhZDkxZDFlNjY4NS4uN2U0NjZhYjM5N2NkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmgKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHB1YmxpYzoKICAgICAvLyBkaXNwbGF5IGJ1ZmZl
ciBhYnN0cmFjdGlvbnMgdGhhdCB0aGUgY2FsbGVyIHNob3VsZCBob2xkIHNlcGFyYXRlIHRvCiAg
ICAgLy8gdGhlIGNvbnRleHQuCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpID0gMDsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhl
bEJ1ZmZlcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyJikgPSAwOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
dmlydHVhbCBSZWZQdHI8VmlkZW9GcmFtZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvVmlkZW9G
cmFtZSgpID0gMDsKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5z
IHRydWUgdXBvbiBzdWNjZXNzLgogICAgIHN0YXRpYyBib29sIHBhY2tJbWFnZURhdGEoSW1hZ2Uq
LCBjb25zdCB2b2lkKiBwaXhlbHMsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9v
bCBmbGlwWSwgQWxwaGFPcCwgRGF0YUZvcm1hdCBzb3VyY2VGb3JtYXQsIHVuc2lnbmVkIHNvdXJj
ZUltYWdlV2lkdGgsIHVuc2lnbmVkIHNvdXJjZUltYWdlSGVpZ2h0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VJbWFnZVN1YlJlY3RhbmdsZSwgaW50IGRlcHRoLCB1bnNpZ25lZCBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQsIGludCB1bnBhY2tJbWFnZUhlaWdodCwgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgUGl4ZWxCdWZmZXImJiwgY29uc3QgSW50U2l6ZSYg
Y2FudmFzU2l6ZSwgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBS
ZWY8UGl4ZWxCdWZmZXI+JiYsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIEdyYXBoaWNzQ29u
dGV4dCYpOwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yY2VDb250ZXh0
TG9zdCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5v
dGlmaWNhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKaW5kZXggZmI0ZDI2NWY3ZDM1Li4yZGY0YWI4N2VkN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMjgsNiArMjgsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRGbHVzaElkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyQmFja2VuZC5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlICJS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKQEAgLTM4LDYgKzM5LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsdGVyOworY2xhc3MgRmlsdGVyUmVzdWx0czsKIGNsYXNz
IEhvc3RXaW5kb3c7CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiBjbGFzcyBJT1N1cmZhY2VQb29sOwpA
QCAtMTI3LDYgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3Rv
cmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVS
ZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBmaWx0
ZXJlZEltYWdlKEZpbHRlciYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gZmlsdGVy
ZWRJbWFnZShGaWx0ZXImLCBGaWx0ZXJSZXN1bHRzJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CkBAIC0xNDQsNyArMTQ3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVS
ZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgPSAwOwogCi0gICAg
dmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVy
KGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlQnVmZmVyQWxsb2NhdG9yJiA9IEltYWdlQnVmZmVyQWxsb2NhdG9y
KCkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBv
aW50ID0geyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSA9IDA7CiAKICAgICAvLyBGSVhNRTogY3VycmVu
dCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBtZXRob2QgaGF2ZSB0aGUgcmVzdHJpY3Rpb24gdGhh
dCB0aGV5IG9ubHkgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJBbGxvY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJBbGxvY2F0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZTgzZDJiOGUwMWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJBbGxvY2F0b3IuY3BwCkBAIC0w
LDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQWxsb2NhdG9yLmgi
CisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTUGl4ZWxCdWZmZXIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbWFnZUJ1ZmZlckFsbG9jYXRvcjo6SW1hZ2VCdWZm
ZXJBbGxvY2F0b3IoKSA9IGRlZmF1bHQ7CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXJBbGxvY2F0b3I6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwg
UmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
OjpCR1JBOCwgYnVmZmVyT3B0aW9uc0ZvclJlbmRpbmdNb2RlKHJlbmRlcmluZ01vZGUpKTsKK30K
KworUmVmUHRyPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckFsbG9jYXRvcjo6Y3JlYXRlUGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gSlNQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwg
c2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQWxsb2NhdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckFsbG9jYXRvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDlhYmIzN2IzMTkzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJBbGxv
Y2F0b3IuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3Jt
YXQuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEltYWdl
QnVmZmVyOworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIFBpeGVsQnVmZmVyOworCitjbGFzcyBJbWFn
ZUJ1ZmZlckFsbG9jYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJBbGxvY2F0b3IoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckFsbG9jYXRvcigpID0gZGVmYXVsdDsKKworICAg
IHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxQaXhlbEJ1ZmZlcj4gY3JlYXRl
UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJikgY29u
c3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBkMGUz
MTM0MjAwYjYuLjNlZDkzY2I3ZDM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC03MiwzMiArNzIsMzEg
QEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKQogICAg
IGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHBpeGVsQXJy
YXkgPSBwaXhlbEJ1ZmZlci0+ZGF0YSgpOwotICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGgg
PSBwaXhlbEFycmF5Lmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgcGl4ZWxPZmZzZXQgPSAw
OyBwaXhlbE9mZnNldCA8IHBpeGVsQXJyYXlMZW5ndGg7IHBpeGVsT2Zmc2V0ICs9IDQpIHsKLSAg
ICAgICAgdWludDhfdCBhID0gcGl4ZWxBcnJheS5pdGVtKHBpeGVsT2Zmc2V0ICsgMyk7CisgICAg
YXV0byBwaXhlbEJ5dGVMZW5ndGggPSBwaXhlbEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIGZv
ciAodW5zaWduZWQgcGl4ZWxPZmZzZXQgPSAwOyBwaXhlbE9mZnNldCA8IHBpeGVsQnl0ZUxlbmd0
aDsgcGl4ZWxPZmZzZXQgKz0gNCkgeworICAgICAgICB1aW50OF90IGEgPSBwaXhlbEJ1ZmZlci0+
aXRlbShwaXhlbE9mZnNldCArIDMpOwogICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgdWludDhfdCByID0gcGl4ZWxBcnJheS5pdGVtKHBpeGVsT2Zmc2V0KTsK
LSAgICAgICAgdWludDhfdCBnID0gcGl4ZWxBcnJheS5pdGVtKHBpeGVsT2Zmc2V0ICsgMSk7Ci0g
ICAgICAgIHVpbnQ4X3QgYiA9IHBpeGVsQXJyYXkuaXRlbShwaXhlbE9mZnNldCArIDIpOworICAg
ICAgICB1aW50OF90IHIgPSBwaXhlbEJ1ZmZlci0+aXRlbShwaXhlbE9mZnNldCk7CisgICAgICAg
IHVpbnQ4X3QgZyA9IHBpeGVsQnVmZmVyLT5pdGVtKHBpeGVsT2Zmc2V0ICsgMSk7CisgICAgICAg
IHVpbnQ4X3QgYiA9IHBpeGVsQnVmZmVyLT5pdGVtKHBpeGVsT2Zmc2V0ICsgMik7CiAKICAgICAg
ICAgZG91YmxlIGx1bWEgPSAociAqIDAuMjEyNSArIGcgKiAwLjcxNTQgKyBiICogMC4wNzIxKSAq
ICgoZG91YmxlKWEgLyAyNTUuMCk7Ci0gICAgICAgIHBpeGVsQXJyYXkuc2V0KHBpeGVsT2Zmc2V0
ICsgMywgbHVtYSk7CisgICAgICAgIHBpeGVsQnVmZmVyLT5zZXQocGl4ZWxPZmZzZXQgKyAzLCBs
dW1hKTsKICAgICB9CiAKICAgICBwdXRQaXhlbEJ1ZmZlcigqcGl4ZWxCdWZmZXIsIGxvZ2ljYWxS
ZWN0KCksIEludFBvaW50Ojp6ZXJvKCksIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRp
cGxpZWQpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBkZXN0aW5hdGlvbkZv
cm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgdm9pZCogZGF0YSkgY29uc3QKK1JlZlB0
cjxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIHZvaWQqIGRhdGEsIGNvbnN0IEltYWdlQnVmZmVyQWxsb2NhdG9yJiBhbGxvY2F0b3Ip
IGNvbnN0CiB7CiAgICAgQVNTRVJUKFBpeGVsQnVmZmVyOjpzdXBwb3J0ZWRQaXhlbEZvcm1hdChk
ZXN0aW5hdGlvbkZvcm1hdC5waXhlbEZvcm1hdCkpOwogCiAgICAgYXV0byBzb3VyY2VSZWN0U2Nh
bGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7CiAKLSAgICBhdXRvIHBpeGVs
QnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5hdGlvbkZvcm1hdCwgc291cmNl
UmVjdFNjYWxlZC5zaXplKCkpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBhbGxvY2F0b3IuY3Jl
YXRlUGl4ZWxCdWZmZXIoZGVzdGluYXRpb25Gb3JtYXQsIHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgp
KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gc291cmNlUmVjdENsaXBwZWQgPSBp
bnRlcnNlY3Rpb24oYmFja2VuZFJlY3QoKSwgc291cmNlUmVjdFNjYWxlZCk7CiAgICAgSW50UmVj
dCBkZXN0aW5hdGlvblJlY3QgeyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VSZWN0Q2xpcHBlZC5z
aXplKCkgfTsKQEAgLTEwOSw3ICsxMDgsNyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRgogICAg
ICAgICBkZXN0aW5hdGlvblJlY3Quc2V0WSgtc291cmNlUmVjdFNjYWxlZC55KCkpOwogCiAgICAg
aWYgKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkgIT0gc291cmNlUmVjdFNjYWxlZC5zaXplKCkpCi0g
ICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuemVyb0ZpbGwoKTsKKyAgICAgICAgcGl4ZWxCdWZm
ZXItPnplcm9GaWxsKCk7CiAKICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291
cmNlIHsKICAgICAgICAgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBw
aXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfSwKQEAgLTEyMCw3ICsxMTksNyBAQCBzdGQ6Om9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNv
bnN0IFBpeGVsQnVmZmVyRgogICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRp
b24gewogICAgICAgICBkZXN0aW5hdGlvbkZvcm1hdCwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCkpLAotICAgICAgICBwaXhlbEJ1ZmZl
ci0+ZGF0YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRl
c1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0CisgICAgICAgIHBpeGVsQnVmZmVyLT5i
eXRlcygpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsg
ZGVzdGluYXRpb25SZWN0LngoKSAqIDQKICAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxz
KHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwpAQCAtMTQ5LDcg
KzE0OCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlciYgc291cmNlUGl4ZWxCdWZmZXIsIGNvCiAgICAgQ29uc3RQaXhlbEJ1ZmZlckNv
bnZlcnNpb25WaWV3IHNvdXJjZSB7CiAgICAgICAgIHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgp
LAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oNCAqIHNvdXJjZVBpeGVsQnVmZmVyLnNp
emUoKS53aWR0aCgpKSwKLSAgICAgICAgc291cmNlUGl4ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSAr
IHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RD
bGlwcGVkLngoKSAqIDQKKyAgICAgICAgc291cmNlUGl4ZWxCdWZmZXIuYnl0ZXMoKSArIHNvdXJj
ZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVk
LngoKSAqIDQKICAgICB9OwogCiAgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5h
dGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5oCmluZGV4IDY1NDgxMDk0MjM5Ny4uNWRjNDdhYmMxZGNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tl
bmQuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXJG
b3JtYXQuaCIKQEAgLTEyMyw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZlY3Rv
cjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHF1YWxpdHkpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1
dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxQ
aXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1
dEZvcm1hdCwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEltYWdlQnVmZmVyQWxsb2NhdG9yJiA9IElt
YWdlQnVmZmVyQWxsb2NhdG9yKCkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHV0UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQp
ID0gMDsKIAogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTE3OSw3ICsxODAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
SW50UmVjdCBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgbG9naWNhbFNpemUoKSk7IH07CiAgICAgSW50UmVjdCBiYWNrZW5kUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgYmFja2VuZFNpemUoKSk7IH07CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1
ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0LCB2b2lkKiBkYXRhKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRw
dXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIHZvaWQqIGRhdGEsIGNvbnN0IEltYWdl
QnVmZmVyQWxsb2NhdG9yJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRQaXhl
bEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCwg
dm9pZCogZGF0YSk7CiAKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0pTUGl4ZWxCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSlNQaXhlbEJ1ZmZlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yZDlhNjcwZTE4ZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9KU1BpeGVsQnVmZmVyLmNw
cApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJKU1BpeGVsQnVmZmVyLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9UeXBl
ZEFycmF5SW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxKU1BpeGVs
QnVmZmVyPiBKU1BpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBkYXRhQnl0
ZUxlbmd0aCkKK3sKKyAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9ybWF0LnBpeGVs
Rm9ybWF0KSk7CisgICAgQVNTRVJUKGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSkgPT0g
ZGF0YUJ5dGVMZW5ndGgpOworCisgICAgYXV0byBkYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YUJ5dGVMZW5ndGgpOworICAgIGlmICghZGF0YSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTUGl4ZWxC
dWZmZXIoZm9ybWF0LCBzaXplLCBkYXRhLnJlbGVhc2VOb25OdWxsKCkpKTsKK30KKworUmVmUHRy
PEpTUGl4ZWxCdWZmZXI+IEpTUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZl
ckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIEFTU0VSVChzdXBw
b3J0ZWRQaXhlbEZvcm1hdChmb3JtYXQucGl4ZWxGb3JtYXQpKTsKKworICAgIGF1dG8gYnVmZmVy
U2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CisgICAgaWYgKGJ1ZmZlclNp
emUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoYnVm
ZmVyU2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gZGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlclNpemUpOworICAgIGlmICghZGF0YSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTUGl4ZWxCdWZmZXIo
Zm9ybWF0LCBzaXplLCBkYXRhLnJlbGVhc2VOb25OdWxsKCkpKTsKK30KKworUmVmUHRyPEpTUGl4
ZWxCdWZmZXI+IEpTUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJiBh
cnJheUJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9ybWF0LnBp
eGVsRm9ybWF0KSk7CisKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZShm
b3JtYXQsIHNpemUpOworICAgIGlmIChidWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGJ1ZmZlclNpemUgIT0gYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGRhdGEgPSBV
aW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBidWZm
ZXJTaXplKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBKU1BpeGVsQnVmZmVyKGZvcm1hdCwgc2l6ZSwgZGF0YS5yZWxl
YXNlTm9uTnVsbCgpKSk7Cit9CisKK1JlZjxKU1BpeGVsQnVmZmVyPiBKU1BpeGVsQnVmZmVyOjpj
cmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBKU1BpeGVsQnVmZmVyKGZvcm1hdCwgc2l6ZSwgeyBkYXRhIH0pKTsKK30KKworSlNQaXhl
bEJ1ZmZlcjo6SlNQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBj
b25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiBkYXRhKQor
ICAgIDogUGl4ZWxCdWZmZXIoZm9ybWF0LCBzaXplKQorICAgICwgbV9kYXRhKFdURk1vdmUoZGF0
YSkpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9z
aXplLmFyZWEoKSAqIDQpIDw9IGJ5dGVMZW5ndGgoKSk7Cit9CisKK3VpbnQ4X3QqIEpTUGl4ZWxC
dWZmZXI6OmJ5dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhLT5kYXRhKCk7Cit9CisK
K3NpemVfdCBKU1BpeGVsQnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV9kYXRhLT5ieXRlTGVuZ3RoKCkgPT0gbV9zaXplLmFyZWEoKSAqIDQpOworICAgIHJldHVybiBt
X2RhdGEtPmJ5dGVMZW5ndGgoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSlNQaXhlbEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSlNQaXhlbEJ1ZmZlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjA3YWY1Y2IzYTFlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSlNQaXhlbEJ1ZmZlci5o
CkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEpTUGl4ZWxCdWZmZXIgOiBwdWJsaWMgUGl4ZWxCdWZmZXIgeworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SlNQaXhlbEJ1ZmZlcj4gdHJ5
Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SlNQaXhlbEJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0
IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYsIFJlZjxKU0M6OkFycmF5QnVmZmVy
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEpTUGl4ZWxCdWZmZXI+IGNyZWF0
ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBKU0M6OlVpbnQ4Q2xh
bXBlZEFycmF5Jik7CisKKyAgICBKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+
JiYgdGFrZURhdGEoKSB7IHJldHVybiBXVEZNb3ZlKG1fZGF0YSk7IH0KKworICAgIHVpbnQ4X3Qq
IGJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGgoKSBjb25zdCBv
dmVycmlkZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWY8UGl4ZWxCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SlNQaXhlbEJ1ZmZlcj4gdHJ5Q3JlYXRlRm9y
RGVjb2RpbmcoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJiwgdW5zaWdu
ZWQgZGF0YUJ5dGVMZW5ndGgpOworCisgICAgSlNQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZl
ckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJik7
CisKKyAgICBib29sIGlzSlNQaXhlbEJ1ZmZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKworICAgIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBtX2RhdGE7Cit9OworCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEpTUGl4ZWxCdWZmZXI6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIEFTU0VSVChtX2RhdGEtPmJ5dGVMZW5ndGgoKSA9PSAo
bV9zaXplLmFyZWEoKSAqIDQpKTsKKworICAgIGVuY29kZXIgPDwgbV9mb3JtYXQ7CisgICAgZW5j
b2RlciA8PCBtX3NpemU7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpLCAxKTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxSZWY8UGl4ZWxCdWZmZXI+PiBKU1BpeGVsQnVmZmVyOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVy
Rm9ybWF0PiBmb3JtYXQ7CisgICAgZGVjb2RlciA+PiBmb3JtYXQ7CisgICAgaWYgKCFmb3JtYXQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBu
b24tOCBiaXQgZm9ybWF0cy4KKyAgICBpZiAoIShmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVs
Rm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JB
OCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPElu
dFNpemU+IHNpemU7CisgICAgZGVjb2RlciA+PiBzaXplOworICAgIGlmICghc2l6ZSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gY29tcHV0ZWRCdWZmZXJTaXplID0g
UGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKCpmb3JtYXQsICpzaXplKTsKKyAgICBpZiAo
Y29tcHV0ZWRCdWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVkQnVmZmVyU2l6ZTsKKyAg
ICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50
OF90PihidWZmZXJTaXplKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1
dG8gcmVzdWx0ID0gSlNQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoV1RGTW92ZSgq
Zm9ybWF0KSwgKnNpemUsIGJ1ZmZlclNpemUpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZXN1bHQtPm1fZGF0YS0+ZGF0YSgpLCByZXN1bHQtPm1fZGF0YS0+Ynl0ZUxlbmd0aCgp
LCAxKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZU5vbk51bGwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkpTUGl4ZWxCdWZmZXIpCisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikgeyBy
ZXR1cm4gcGl4ZWxCdWZmZXIuaXNKU1BpeGVsQnVmZmVyKCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyLmNwcAppbmRleCA3NTQzZjQ3NWEyN2EuLmIzYzk1ZGVjZTY1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3
IEBAIGJvb2wgUGl4ZWxCdWZmZXI6OnN1cHBvcnRlZFBpeGVsRm9ybWF0KFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0KQogICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OlJHQjEwQTg6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC01Niw3MyArNTYsNDIgQEAgQ2hlY2tlZFVpbnQzMiBQaXhlbEJ1
ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwg
Y28KICAgICByZXR1cm4gc2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogYnl0ZXNQZXJQaXhl
bDsKIH0KIAotc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0
ZUZvckRlY29kaW5nKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNp
emUmIHNpemUsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKQorUGl4ZWxCdWZmZXI6OlBpeGVsQnVm
ZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUp
CisgICAgOiBtX2Zvcm1hdChmb3JtYXQpCisgICAgLCBtX3NpemUoc2l6ZSkKIHsKLSAgICBBU1NF
UlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9ybWF0LnBpeGVsRm9ybWF0KSk7Ci0gICAgQVNTRVJU
KGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSkgPT0gZGF0YUJ5dGVMZW5ndGgpOwotCi0g
ICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQoZGF0YUJ5dGVMZW5ndGgpOwotICAgIGlmICghcGl4ZWxBcnJheSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4geyB7IGZvcm1hdCwgc2l6ZSwgcGl4ZWxBcnJh
eS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKIH0KIAotc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBj
b25zdCBJbnRTaXplJiBzaXplKQotewotICAgIEFTU0VSVChzdXBwb3J0ZWRQaXhlbEZvcm1hdChm
b3JtYXQucGl4ZWxGb3JtYXQpKTsKLQotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZm
ZXJTaXplKGZvcm1hdCwgc2l6ZSk7Ci0gICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgp
KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmIChidWZmZXJTaXplID4gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZSk7Ci0gICAgaWYgKCFwaXhlbEFycmF5KQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhl
bEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OwotfQorUGl4ZWxCdWZmZXI6On5QaXhlbEJ1ZmZl
cigpID0gZGVmYXVsdDsKIAotc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6
OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXpl
JiBzaXplLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlcikKK3VpbnQ4X3QgUGl4
ZWxCdWZmZXI6Oml0ZW0oc2l6ZV90IGluZGV4KSBjb25zdAogewotICAgIEFTU0VSVChzdXBwb3J0
ZWRQaXhlbEZvcm1hdChmb3JtYXQucGl4ZWxGb3JtYXQpKTsKLQotICAgIGF1dG8gYnVmZmVyU2l6
ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7Ci0gICAgaWYgKGJ1ZmZlclNpemUu
aGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmIChi
dWZmZXJTaXplICE9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYnVmZmVyU2l6ZSk7Ci0gICAgaWYgKCFw
aXhlbEFycmF5KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7IHsg
Zm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OworICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCBieXRlTGVuZ3RoKCkp
OworICAgIHJldHVybiBieXRlcygpW2luZGV4XTsKIH0KIAotUGl4ZWxCdWZmZXI6OlBpeGVsQnVm
ZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUs
IFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRhdGEpCi0gICAgOiBtX2Zvcm1hdCB7IGZv
cm1hdCB9Ci0gICAgLCBtX3NpemUgeyBzaXplIH0KLSAgICAsIG1fZGF0YSB7IFdURk1vdmUoZGF0
YSkgfQordm9pZCBQaXhlbEJ1ZmZlcjo6c2V0KHNpemVfdCBpbmRleCwgZmxvYXQgdmFsdWUpCiB7
Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXplLmFy
ZWEoKSAqIDQpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCBieXRlTGVuZ3RoKCkpOworICAgIGJ5dGVzKClb
aW5kZXhdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUpOwogfQogCi1QaXhlbEJ1ZmZlcjo6
UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSkKLSAgICA6IG1fZm9ybWF0IHsg
Zm9ybWF0IH0KLSAgICAsIG1fc2l6ZSB7IHNpemUgfQotICAgICwgbV9kYXRhIHsgZGF0YSB9Citi
b29sIFBpeGVsQnVmZmVyOjpzZXRSYW5nZShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUJ5
dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KQogewotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oKG1fc2l6ZS5hcmVhKCkgKiA0KSA8PSBtX2RhdGEtPmxlbmd0
aCgpKTsKLX0KLQotUGl4ZWxCdWZmZXI6On5QaXhlbEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBp
ZiAoIWlzU3VtU21hbGxlclRoYW5PckVxdWFsKGJ5dGVPZmZzZXQsIGRhdGFCeXRlTGVuZ3RoLCBi
eXRlTGVuZ3RoKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLVBpeGVsQnVmZmVyIFBpeGVs
QnVmZmVyOjpkZWVwQ2xvbmUoKSBjb25zdAotewotICAgIHJldHVybiB7IG1fZm9ybWF0LCBtX3Np
emUsIFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+bGVu
Z3RoKCkpIH07CisgICAgbWVtbW92ZShieXRlcygpICsgYnl0ZU9mZnNldCwgZGF0YSwgZGF0YUJ5
dGVMZW5ndGgpOworICAgIHJldHVybiB0cnVlOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIpCitib29sIFBp
eGVsQnVmZmVyOjp6ZXJvUmFuZ2Uoc2l6ZV90IGJ5dGVPZmZzZXQsIHNpemVfdCByYW5nZUJ5dGVM
ZW5ndGgpCiB7Ci0gICAgcmV0dXJuIHRzIDw8ICZwaXhlbEJ1ZmZlci5kYXRhKCkgPDwgImZvcm1h
dCAoICIgPDwgcGl4ZWxCdWZmZXIuZm9ybWF0KCkgPDwgIikiOwotfQorICAgIGlmICghaXNTdW1T
bWFsbGVyVGhhbk9yRXF1YWwoYnl0ZU9mZnNldCwgcmFuZ2VCeXRlTGVuZ3RoLCBieXRlTGVuZ3Ro
KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtZW1zZXQoYnl0ZXMoKSArIGJ5dGVP
ZmZzZXQsIDAsIHJhbmdlQnl0ZUxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7CiB9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5oCmluZGV4IDA0MzRjZWViOTg3Zi4uOWU2YmIzNjk4OTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOTggKzI1LDQx
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IgotI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkludFNpemUu
aCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlckZvcm1hdC5oIgotI2luY2x1ZGUgIlBpeGVsRm9ybWF0
LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVkQXJyYXkuaD4KLQotbmFt
ZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUGl4ZWxCdWZmZXIgeworY2xh
c3MgUGl4ZWxCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQaXhlbEJ1ZmZlcj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBpeGVsQnVmZmVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0ZWRQaXhlbEZvcm1hdChQaXhlbEZvcm1hdCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IFBpeGVs
QnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJG
b3JtYXQmLCBjb25zdCBJbnRTaXplJiwgUmVmPEpTQzo6QXJyYXlCdWZmZXI+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1cHBvcnRlZFBpeGVsRm9ybWF0KFBpeGVsRm9ybWF0
KTsKIAotICAgIFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50
U2l6ZSYsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKLSAgICBQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBKU0M6OlVpbnQ4Q2xhbXBl
ZEFycmF5Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgflBpeGVsQnVmZmVyKCk7Ci0KLSAgICBQaXhl
bEJ1ZmZlcihQaXhlbEJ1ZmZlciYmKSA9IGRlZmF1bHQ7Ci0gICAgUGl4ZWxCdWZmZXImIG9wZXJh
dG9yPShQaXhlbEJ1ZmZlciYmKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+UGl4ZWxCdWZmZXIoKTsKIAogICAgIGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKLSAgICBSZWY8SlNDOjpVaW50OENs
YW1wZWRBcnJheT4mJiB0YWtlRGF0YSgpIHsgcmV0dXJuIFdURk1vdmUobV9kYXRhKTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc0pTUGl4ZWxCdWZmZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
CisgICAgdmlydHVhbCB1aW50OF90KiBieXRlcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHNp
emVfdCBieXRlTGVuZ3RoKCkgY29uc3QgPSAwOwogCi0gICAgUGl4ZWxCdWZmZXIgZGVlcENsb25l
KCkgY29uc3Q7CisgICAgYm9vbCBzZXRSYW5nZShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0
YUJ5dGVMZW5ndGgsIHNpemVfdCBieXRlT2Zmc2V0KTsKKyAgICBib29sIHplcm9SYW5nZShzaXpl
X3QgYnl0ZU9mZnNldCwgc2l6ZV90IHJhbmdlQnl0ZUxlbmd0aCk7CisgICAgdm9pZCB6ZXJvRmls
bCgpIHsgemVyb1JhbmdlKDAsIGJ5dGVMZW5ndGgoKSk7IH0KIAotICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZGVjb2RlKERlY29k
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50OF90IGl0ZW0oc2l6ZV90IGluZGV4KSBjb25z
dDsKKyAgICB2b2lkIHNldChzaXplX3QgaW5kZXgsIGZsb2F0IHZhbHVlKTsKIAotcHJpdmF0ZToK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gdHJ5
Q3JlYXRlRm9yRGVjb2RpbmcoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXpl
JiwgdW5zaWduZWQgZGF0YUJ5dGVMZW5ndGgpOworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQ
T1JUIFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENoZWNrZWRVaW50MzIgY29tcHV0ZUJ1ZmZl
clNpemUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJik7CiAKICAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBtX2Zvcm1hdDsKICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICBSZWY8
SlNDOjpVaW50OENsYW1wZWRBcnJheT4gbV9kYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFBpeGVsQnVm
ZmVyJik7Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXI6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIEFTU0VSVChtX2RhdGEtPmJ5dGVMZW5n
dGgoKSA9PSAobV9zaXplLmFyZWEoKSAqIDQpKTsKLQotICAgIGVuY29kZXIgPDwgbV9mb3JtYXQ7
Ci0gICAgZW5jb2RlciA8PCBtX3NpemU7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpLCAxKTsKLX0KLQotdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXJGb3JtYXQ+IGZvcm1hdDsKLSAgICBkZWNvZGVyID4+IGZvcm1hdDsKLSAgICBpZiAoIWZvcm1h
dCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0
IG5vbi04IGJpdCBmb3JtYXRzLgotICAgIGlmICghKGZvcm1hdC0+cGl4ZWxGb3JtYXQgPT0gUGl4
ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC0+cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJH
UkE4KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8
SW50U2l6ZT4gc2l6ZTsKLSAgICBkZWNvZGVyID4+IHNpemU7Ci0gICAgaWYgKCFzaXplKQotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgYXV0byBjb21wdXRlZEJ1ZmZlclNpemUg
PSBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUoKmZvcm1hdCwgKnNpemUpOwotICAgIGlm
IChjb21wdXRlZEJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotCi0gICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZWRCdWZmZXJTaXplOwot
ICAgIGlmICghZGVjb2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVp
bnQ4X3Q+KGJ1ZmZlclNpemUpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
YXV0byByZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoV1RGTW92ZSgq
Zm9ybWF0KSwgKnNpemUsIGJ1ZmZlclNpemUpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZXN1bHQtPm1fZGF0YS0+ZGF0YSgpLCByZXN1bHQtPm1fZGF0YS0+Ynl0ZUxlbmd0aCgp
LCAxKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggODE2MWI0ODM5ZjIwLi5iM2E2OGIw
NzExNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwCkBAIC04OTksNyArODk5LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVm
ZmVyKEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBJbnRTaXplJiB0ZW1wbGEKICAgICBp
ZiAoIWxheWVyRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYmx1ckxheWVySW1hZ2UobGF5
ZXJEYXRhLT5kYXRhKCkuZGF0YSgpLCBibHVyUmVjdC5zaXplKCksIGJsdXJSZWN0LndpZHRoKCkg
KiA0KTsKKyAgICBibHVyTGF5ZXJJbWFnZShsYXllckRhdGEtPmJ5dGVzKCksIGJsdXJSZWN0LnNp
emUoKSwgYmx1clJlY3Qud2lkdGgoKSAqIDQpOwogICAgIGxheWVySW1hZ2UucHV0UGl4ZWxCdWZm
ZXIoKmxheWVyRGF0YSwgYmx1clJlY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwCmluZGV4IGY5NzFlNDc5NDc0Zi4uMzQyMDQ1MzI5N2Q2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNs
dWRlICJKU1BpeGVsQnVmZmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKICNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
Y3N0cmluZz4KQEAgLTE4OSwxMiArMTg5LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6cmVsZWFzZVRocmVhZFJlc291cmNlcyhSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvCiAg
ICAgcmV0dXJuIEVHTF9SZWxlYXNlVGhyZWFkKCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMo
KQorUmVmUHRyPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkUGl4ZWxz
Rm9yUGFpbnRSZXN1bHRzKCkKIHsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0g
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCkpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBKU1BpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9y
bWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVy
KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tBbGlnbm1lbnQoR0xfUEFDS19BTElHTk1F
TlQpOwogICAgIGlmIChwYWNrQWxpZ25tZW50ID4gNCkKICAgICAgICAgcGFja0FsaWdubWVudC5w
aXhlbFN0b3JlKDQpOwpAQCAtMjAzLDE0ICsyMDMsMTQgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygp
CiAgICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrU2tpcFBpeGVscyhHTF9QQUNLX1NLSVBf
UElYRUxTLCAwLCBtX2lzRm9yV2ViR0wyKTsKICAgICBTY29wZWRCdWZmZXJCaW5kaW5nIHNjb3Bl
ZFBpeGVsUGFja0J1ZmZlclJlc2V0KEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwLCBtX2lzRm9yV2Vi
R0wyKTsKIAotICAgIEdMX1JlYWRuUGl4ZWxzUm9idXN0QU5HTEUoMCwgMCwgcGl4ZWxCdWZmZXIt
PnNpemUoKS53aWR0aCgpLCBwaXhlbEJ1ZmZlci0+c2l6ZSgpLmhlaWdodCgpLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmJ5dGVMZW5ndGgoKSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkpOworICAgIEdM
X1JlYWRuUGl4ZWxzUm9idXN0QU5HTEUoMCwgMCwgcGl4ZWxCdWZmZXItPnNpemUoKS53aWR0aCgp
LCBwaXhlbEJ1ZmZlci0+c2l6ZSgpLmhlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBwaXhlbEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBw
aXhlbEJ1ZmZlci0+Ynl0ZXMoKSk7CiAgICAgLy8gRklYTUU6IFJlbmRlcmluZyB0byBHTF9SR0Ig
dGV4dHVyZXMgd2l0aCBhIElPU3VyZmFjZSBib3VuZCB0byB0aGUgdGV4dHVyZSBpbWFnZSBsZWF2
ZXMKICAgICAvLyB0aGUgYWxwaGEgaW4gdGhlIElPU3VyZmFjZSBpbiBpbmNvcnJlY3Qgc3RhdGUu
IEFsc28gQU5HTEUgR0xfUmVhZFBpeGVscyB3aWxsIGluIHNvbWUKICAgICAvLyBjYXNlcyBleHBv
c2UgdGhlIG5vbi0yNTUgdmFsdWVzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTU4MDQKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKCFjb250ZXh0QXR0cmlidXRlcygpLmFscGhhKQotICAgICAgICB3aXBl
QWxwaGFDaGFubmVsRnJvbVBpeGVscyhwaXhlbEJ1ZmZlci0+c2l6ZSgpLndpZHRoKCksIHBpeGVs
QnVmZmVyLT5zaXplKCkuaGVpZ2h0KCksIHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpKTsKKyAg
ICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMocGl4ZWxCdWZmZXItPnNpemUoKS53aWR0
aCgpLCBwaXhlbEJ1ZmZlci0+c2l6ZSgpLmhlaWdodCgpLCBwaXhlbEJ1ZmZlci0+Ynl0ZXMoKSk7
CiAjZW5kaWYKICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7CiB9CkBAIC01NzUsNyArNTc1LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwcmVwYXJlVGV4dHVyZSgpCiAjZW5kaWYKIH0K
IAotc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVh
ZFJlbmRlcmluZ1Jlc3VsdHMoKQorUmVmUHRyPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TEFOR0xFOjpyZWFkUmVuZGVyaW5nUmVzdWx0cygpCiB7CiAgICAgU2NvcGVkUmVzdG9yZVJlYWRG
cmFtZWJ1ZmZlckJpbmRpbmcgZmJvQmluZGluZyhtX2lzRm9yV2ViR0wyLCBtX3N0YXRlLmJvdW5k
UmVhZEZCTyk7CiAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKCkuYW50aWFsaWFzKSB7CkBAIC0y
OTc1LDcgKzI5NzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZgogICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAg
ICAgICAgIHJldHVybjsKLSAgICBwYWludFRvQ2FudmFzKGNvbnRleHRBdHRyaWJ1dGVzKCksIFdU
Rk1vdmUoKnBpeGVsQnVmZmVyKSwgaW1hZ2VCdWZmZXIuYmFja2VuZFNpemUoKSwgaW1hZ2VCdWZm
ZXIuY29udGV4dCgpKTsKKyAgICBwYWludFRvQ2FudmFzKGNvbnRleHRBdHRyaWJ1dGVzKCksIHBp
eGVsQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGltYWdlQnVmZmVyLmJhY2tlbmRTaXplKCksIGlt
YWdlQnVmZmVyLmNvbnRleHQoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikK
QEAgLTI5ODcsMjEgKzI5ODcsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImIGltYWdlQnUKICAgICBhdXRv
IHBpeGVsQnVmZmVyID0gcmVhZENvbXBvc2l0ZWRSZXN1bHRzKCk7CiAgICAgaWYgKCFwaXhlbEJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwotICAgIHBhaW50VG9DYW52YXMoY29udGV4dEF0dHJpYnV0
ZXMoKSwgV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBpbWFnZUJ1ZmZlci5iYWNrZW5kU2l6ZSgpLCBp
bWFnZUJ1ZmZlci5jb250ZXh0KCkpOworICAgIHBhaW50VG9DYW52YXMoY29udGV4dEF0dHJpYnV0
ZXMoKSwgcGl4ZWxCdWZmZXIucmVsZWFzZU5vbk51bGwoKSwgaW1hZ2VCdWZmZXIuYmFja2VuZFNp
emUoKSwgaW1hZ2VCdWZmZXIuY29udGV4dCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhl
bEJ1ZmZlcigpCitSZWZQdHI8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKQogewogICAgIC8vIFJlYWRpbmcgcHJl
bXVsdGlwbGllZCBhbHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVsdGlwbHlpbmcsIHdoaWNoIGlz
IGxvc3N5LgogICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgYXV0byByZXN1bHRzID0gcmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpOwogICAg
IGlmIChyZXN1bHRzICYmICFyZXN1bHRzLT5zaXplKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFT
U0VSVChyZXN1bHRzLT5mb3JtYXQoKS5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTgg
fHwgcmVzdWx0cy0+Zm9ybWF0KCkucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgLy8gRklYTUU6IE1ha2UgUGl4ZWxCdWZmZXJDb252ZXJzaW9ucyBzdXBwb3J0IG5l
Z2F0aXZlIHJvd0J5dGVzIGFuZCBpbi1wbGFjZSBjb252ZXJzaW9ucy4KICAgICAgICAgY29uc3Qg
YXV0byBzaXplID0gcmVzdWx0cy0+c2l6ZSgpOwogICAgICAgICBjb25zdCBzaXplX3Qgcm93U3Ry
aWRlID0gc2l6ZS53aWR0aCgpICogNDsKLSAgICAgICAgdWludDhfdCogdG9wID0gcmVzdWx0cy0+
ZGF0YSgpLmRhdGEoKTsKKyAgICAgICAgdWludDhfdCogdG9wID0gcmVzdWx0cy0+Ynl0ZXMoKTsK
ICAgICAgICAgdWludDhfdCogYm90dG9tID0gdG9wICsgKHNpemUuaGVpZ2h0KCkgLSAxKSAqIHJv
d1N0cmlkZTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gdGVtcChuZXcgdWlu
dDhfdFtyb3dTdHJpZGVdKTsKICAgICAgICAgZm9yICg7IHRvcCA8IGJvdHRvbTsgdG9wICs9IHJv
d1N0cmlkZSwgYm90dG9tIC09IHJvd1N0cmlkZSkgewpAQCAtMzAxMywyMSArMzAxMywyMSBAQCBz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb1BpeGVsQgogICAgIHJldHVybiByZXN1bHRzOwogfQogCi1zdGQ6Om9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkUmVuZGVyaW5n
UmVzdWx0c0ZvclBhaW50aW5nKCkKK1JlZlB0cjxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6cmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpCiB7CiAgICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCku
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAotc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVhZENvbXBvc2l0
ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKQorUmVmUHRyPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVhZENvbXBvc2l0ZWRSZXN1bHRzKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCA2M2MzOTJhNDZkNzcuLmU1YmI5NDE4MjRh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaApAQCAtMzI4LDExICszMjgsMTEgQEAg
cHVibGljOgogICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgZmluYWw7
CiAgICAgdm9pZCBzaW11bGF0ZUV2ZW50Rm9yVGVzdGluZyhTaW11bGF0ZWRFdmVudEZvclRlc3Rp
bmcpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1h
Z2VCdWZmZXImKSBmaW5hbDsKLSAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkgZmluYWw7CisgICAgUmVmUHRyPFBpeGVsQnVm
ZmVyPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkgZmluYWw7CiAgICAgdm9p
ZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImKSBmaW5hbDsKIAot
ICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFp
bnRpbmcoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJl
c3VsdHNGb3JQYWludGluZygpOworICAgIFJlZlB0cjxQaXhlbEJ1ZmZlcj4gcmVhZFJlbmRlcmlu
Z1Jlc3VsdHNGb3JQYWludGluZygpOworICAgIFJlZlB0cjxQaXhlbEJ1ZmZlcj4gcmVhZENvbXBv
c2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKTsKIAogcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzKTsKQEAgLTM2MSw5ICszNjEs
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gRGlkIHRoZSBtb3N0IHJlY2VudCBkcmF3aW5nIG9wZXJh
dGlvbiBsZWF2ZSB0aGUgR1BVIGluIGFuIGFjY2VwdGFibGUgc3RhdGU/CiAgICAgdm9pZCBjaGVj
a0dQVVN0YXR1cygpOwogCi0gICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcmVhZFJlbmRl
cmluZ1Jlc3VsdHMoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9z
aXRlZFJlc3VsdHMoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkUGl4ZWxz
Rm9yUGFpbnRSZXN1bHRzKCk7CisgICAgUmVmUHRyPFBpeGVsQnVmZmVyPiByZWFkUmVuZGVyaW5n
UmVzdWx0cygpOworICAgIFJlZlB0cjxQaXhlbEJ1ZmZlcj4gcmVhZENvbXBvc2l0ZWRSZXN1bHRz
KCk7CisgICAgUmVmUHRyPFBpeGVsQnVmZmVyPiByZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCk7
CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFj
ZUJhY2tlbmQuY3BwCmluZGV4IDY5Y2I3ODU4OGRkZC4uOTgxMTk0NDVlOTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTEwNCw3ICsxMDQs
NyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6
Y2Fpcm9TdXJmYWNlQ29lcmNlVG9JbWFnZSgpCiAgICAgcmV0dXJuIGNvcHlOYXRpdmVJbWFnZShj
b3B5QmVoYXZpb3IpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZl
ckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9y
bWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CitSZWZQdHI8
UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4ZWxCdWZm
ZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYg
c3JjUmVjdCkgY29uc3QKIHsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhl
bEJ1ZmZlcihvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Rh
dGEobV9zdXJmYWNlLmdldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJm
YWNlQmFja2VuZC5oCmluZGV4IDk5YmJjNWYyNGY2ZC4uNDA1NmY3ZWZkMjg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
U3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaApAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiAKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2Uo
KSBvdmVycmlkZTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVm
ZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3Qm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVy
KGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVy
JiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0R0xDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRHTENHLmNwcAppbmRleCA5YTM4NDhkOTIyNWQuLjg1MGVhNGY3YWY3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0R0xDRy5jcHAKQEAgLTUwNiw5ICs1MDYsOSBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgaQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMOjpw
YWludFRvQ2FudmFzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgc291cmNlQ29u
dGV4dEF0dHJpYnV0ZXMsIFBpeGVsQnVmZmVyJiYgcGl4ZWxCdWZmZXIsIGNvbnN0IEludFNpemUm
IGNhbnZhc1NpemUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0w6OnBhaW50VG9DYW52YXMoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBz
b3VyY2VDb250ZXh0QXR0cmlidXRlcywgUmVmPFBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyLCBj
b25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0g
ICAgQVNTRVJUKCFwaXhlbEJ1ZmZlci5zaXplKCkuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIXBp
eGVsQnVmZmVyLT5zaXplKCkuaXNFbXB0eSgpKTsKICAgICBpZiAoY2FudmFzU2l6ZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBJbnB1dCBpcyBHTF9SR0JBID09IGtDR0JpdG1h
cEJ5dGVPcmRlcjMyQmlnIHwga0NHSW1hZ2VBbHBoYSpMYXN0LgpAQCAtNTIxLDE4ICs1MjEsMTgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTDo6cGFpbnRUb0NhbnZhcyhjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIHNvdXJjZUMKICAgICBlbHNlCiAgICAgICAgIGJpdG1hcEluZm8g
fD0ga0NHSW1hZ2VBbHBoYUxhc3Q7CiAKLSAgICBSZWYgcGl4ZWxBcnJheSA9IHBpeGVsQnVmZmVy
LmRhdGEoKTsKKyAgICBSZWYgcGl4ZWxBcnJheSA9IHBpeGVsQnVmZmVyOwogICAgIGF1dG8gZGF0
YVNpemUgPSBwaXhlbEFycmF5LT5ieXRlTGVuZ3RoKCk7Ci0gICAgYXV0byBkYXRhID0gcGl4ZWxB
cnJheS0+ZGF0YSgpOworICAgIGF1dG8gZGF0YSA9IHBpeGVsQXJyYXktPmJ5dGVzKCk7CiAKICAg
ICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIGRhdGFTaXplKTsKIAogICAgIGF1
dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKCZw
aXhlbEFycmF5LmxlYWtSZWYoKSwgZGF0YSwgZGF0YVNpemUsIFtdICh2b2lkKiBjb250ZXh0LCBj
b25zdCB2b2lkKiwgc2l6ZV90KSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PEpTQzo6VWludDhDbGFt
cGVkQXJyYXkqPihjb250ZXh0KS0+ZGVyZWYoKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGl4ZWxC
dWZmZXIqPihjb250ZXh0KS0+ZGVyZWYoKTsKICAgICB9KSk7CiAKLSAgICBhdXRvIGltYWdlU2l6
ZSA9IHBpeGVsQnVmZmVyLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5o
ZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgcGl4ZWxCdWZmZXIuZm9ybWF0
KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbywgZGF0YVByb3Zp
ZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKKyAgICBh
dXRvIGltYWdlU2l6ZSA9IHBpeGVsQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVs
QnVmZmVyLT5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiaXRtYXBJ
bmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZh
dWx0KSkpOwogCiAgICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBjb250
ZW50IHRvIGJlIHJlc2l6ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28gYmFjayB0byB0aGUgQ2Fu
dmFzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRl
eCBmYjhhMGRhODJlNzcuLmEwNjlmM2Q0ZWMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApA
QCAtMTU5LDE0ICsxNTksMTQgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dC
YWNrZW5kOjpjb3B5Q0dJbWFnZUZvckVuY29kaW5nKENGU3RyaW5nUmVmIGQKICAgICAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIFJl
ZiBwaXhlbEFycmF5ID0gcGl4ZWxCdWZmZXItPmRhdGEoKTsKKyAgICAgICAgUmVmIHBpeGVsQXJy
YXkgPSAqcGl4ZWxCdWZmZXI7CiAgICAgICAgIGF1dG8gZGF0YVNpemUgPSBwaXhlbEFycmF5LT5i
eXRlTGVuZ3RoKCk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IHBpeGVsQXJyYXktPmRhdGEoKTsKKyAg
ICAgICAgYXV0byBkYXRhID0gcGl4ZWxBcnJheS0+Ynl0ZXMoKTsKIAogICAgICAgICB2ZXJpZnlJ
bWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIGRhdGFTaXplKTsKIAogICAgICAgICBhdXRvIGRh
dGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgmcGl4ZWxB
cnJheS5sZWFrUmVmKCksIGRhdGEsIGRhdGFTaXplLCBbXSAodm9pZCogY29udGV4dCwgY29uc3Qg
dm9pZCosIHNpemVfdCkgewotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SlNDOjpVaW50OENsYW1w
ZWRBcnJheSo+KGNvbnRleHQpLT5kZXJlZigpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UGl4
ZWxCdWZmZXIqPihjb250ZXh0KS0+ZGVyZWYoKTsKICAgICAgICAgfSkpOwogICAgICAgICBpZiAo
IWRhdGFQcm92aWRlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmluZGV4IDVlMjMwN2FlMGQ1Zi4uYmZmMzYwODY4NWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBAIC0xNTUsOSArMTU1LDkgQEAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmdldFBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QpIGNvbnN0CitSZWZQdHI8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0
Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckFsbG9jYXRv
ciYgYWxsb2NhdG9yKSBjb25zdAogewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6Omdl
dFBpeGVsQnVmZmVyKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9kYXRhKTsKKyAgICByZXR1cm4g
SW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihvdXRwdXRGb3JtYXQsIHNyY1JlY3Qs
IG1fZGF0YSwgYWxsb2NhdG9yKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJ
bnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uIGRlc3RGb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRl
eCBhZmI2NDQ4N2Y0NTAuLjg2ZTM2NzEwODViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkg
Y29uc3QgZmluYWw7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1
ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0
JikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgSW1hZ2VCdWZmZXJBbGxvY2F0b3ImKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHB1dFBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBm
aW5hbDsKIAogICAgIHZvaWQqIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuY3BwCmluZGV4IGRkOWNjYmJmN2ExYS4uNzlmMWJjZmUzZjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTE5MCwxMCArMTkwLDEwIEBAIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlDR0ltYWdlRm9yRW5j
b2RpbmcoQ0ZTdHJpCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFn
ZUZvckVuY29kaW5nKGRlc3RpbmF0aW9uVVRJLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Omdl
dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0
IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CitSZWZQdHI8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQm
IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJB
bGxvY2F0b3ImIGFsbG9jYXRvcikgY29uc3QKIHsKICAgICBJT1N1cmZhY2U6OkxvY2tlciBsb2Nr
KCptX3N1cmZhY2UpOwotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVm
ZmVyKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbG9jay5zdXJmYWNlQmFzZUFkZHJlc3MoKSk7Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9ybWF0
LCBzcmNSZWN0LCBsb2NrLnN1cmZhY2VCYXNlQWRkcmVzcygpLCBhbGxvY2F0b3IpOwogfQogCiB2
b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGI5NmFkZTYxNDZhNy4uOWM2ZGNmODVl
YmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtNjYsNyArNjYsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJyaWRlOwogCi0gICAg
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZm
ZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJG
b3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEltYWdlQnVmZmVyQWxs
b2NhdG9yJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGlzSW5Vc2UoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5j
cHAKaW5kZXggNDE1ZjM4MjViMGUyLi43ODhmZjVkYTk1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0
aWVzQ0cuY3BwCkBAIC0xMzksOCArMTM5LDggQEAgc3RhdGljIGJvb2wgZW5jb2RlKGNvbnN0IFBp
eGVsQnVmZmVyJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW8KIAog
ICAgIENHSW1hZ2VBbHBoYUluZm8gZGF0YUFscGhhSW5mbyA9IGtDR0ltYWdlQWxwaGFMYXN0Owog
ICAgIAotICAgIGF1dG8gZGF0YSA9IHNvdXJjZS5kYXRhKCkuZGF0YSgpOwotICAgIGF1dG8gZGF0
YVNpemUgPSBzb3VyY2UuZGF0YSgpLmJ5dGVMZW5ndGgoKTsKKyAgICBhdXRvIGRhdGEgPSBzb3Vy
Y2UuYnl0ZXMoKTsKKyAgICBhdXRvIGRhdGFTaXplID0gc291cmNlLmJ5dGVMZW5ndGgoKTsKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBwcmVtdWx0aXBsaWVkRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EubW0KaW5kZXggZjEyNDI3ZDA5MmU1Li5lM2E0ZTcxMmQzN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtNzQwLDEzICs3NDAsMTMgQEAgR3JhcGhpY3ND
b250ZXh0R0xDViogR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6YXNDVigpCiB9CiAjZW5kaWYKIAot
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVhZENv
bXBvc2l0ZWRSZXN1bHRzKCkKK1JlZlB0cjxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKIHsKICAgICBhdXRvJiBkaXNwbGF5QnVmZmVy
ID0gbV9zd2FwQ2hhaW4uZGlzcGxheUJ1ZmZlcigpOwogICAgIGlmICghZGlzcGxheUJ1ZmZlci5z
dXJmYWNlIHx8ICFkaXNwbGF5QnVmZmVyLmhhbmRsZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIuc3Vy
ZmFjZS0+c2l6ZSgpICE9IGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIE5vdGU6
IFdlIGFyZSB1c2luZyBHTCB0byByZWFkIHRoZSBJT1N1cmZhY2UuIEF0IHRoZSB0aW1lIG9mIHdy
aXRpbmcsIHRoZXJlIGFyZSBubyBjb252aW5pZW50CiAgICAgLy8gZnVuY3Rpb25zIHRvIGNvbnZl
cnQgdGhlIElPU3VyZmFjZSBwaXhlbCBkYXRhIHRvIEltYWdlRGF0YS4gVGhlIGltYWdlIGRhdGEg
ZW5kcyB1cCBiZWluZwogICAgIC8vIGRyYXduIHRvIGEgSW1hZ2VCdWZmZXIsIGJ1dCBhdCB0aGUg
dGltZSB0aGVyZSdzIG5vIGZ1bmN0aW9ucyB0byBjb25zdHJ1Y3QgYSBOYXRpdmVJbWFnZQpAQCAt
NzU3LDcgKzc1Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgU2NvcGVkUmVzdG9yZVRleHR1
cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlG
b3JEcmF3aW5nVGFyZ2V0KGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkpLCB0ZXh0dXJlVGFy
Z2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CiAgICAgR0xfQmlu
ZFRleHR1cmUodGV4dHVyZVRhcmdldCwgdGV4dHVyZSk7CiAgICAgaWYgKCFFR0xfQmluZFRleElt
YWdlKG1fZGlzcGxheU9iaiwgZGlzcGxheUJ1ZmZlci5oYW5kbGUsIEVHTF9CQUNLX0JVRkZFUikp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIEdMX1RleFBhcmFtZXRlcmkodGV4dHVyZVRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBHTF9MSU5FQVIpOwogICAgIFNjb3BlZEZyYW1lYnVmZmVyIGZibzsKICAgICBTY29wZWRSZXN0
b3JlUmVhZEZyYW1lYnVmZmVyQmluZGluZyBmYm9CaW5kaW5nKG1faXNGb3JXZWJHTDIsIG1fc3Rh
dGUuYm91bmRSZWFkRkJPLCBmYm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAppbmRleCAwY2QyZTEwOWJjNzguLjJjY2MyMTk4MDQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9G
cmFtZUNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9G
cmFtZUNWLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgVmlkZW9GcmFtZUNWIDogcHVibGljIFZp
ZGVvRnJhbWUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9G
cmFtZUNWPiBjcmVhdGUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3Jl
ZCwgUm90YXRpb24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFZpZGVvRnJhbWVDVj4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVm
LCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uKTsKLSAgICBzdGF0aWMgUmVmUHRyPFZpZGVvRnJh
bWVDVj4gY3JlYXRlRnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYpOworICAgIHN0YXRpYyBS
ZWZQdHI8VmlkZW9GcmFtZUNWPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoUmVmPFBpeGVsQnVmZmVy
PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZUNWKCk7CiAKICAgICBDVlBpeGVs
QnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9waXhlbEJ1ZmZl
ci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVmlkZW9GcmFtZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
VmlkZW9GcmFtZUNWLm1tCmluZGV4IGJmZmUyYjRiZDZiNS4uODVkODRkYWEwZGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLm1t
CkBAIC01MCwxOCArNTAsMTggQEAgUmVmPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjpjcmVh
dGUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3IKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBWaWRlb0ZyYW1lQ1YocHJlc2VudGF0aW9uVGltZSwgaXNNaXJyb3JlZCwg
cm90YXRpb24sIFdURk1vdmUocGl4ZWxCdWZmZXIpKSk7CiB9CiAKLVJlZlB0cjxWaWRlb0ZyYW1l
Q1Y+IFZpZGVvRnJhbWVDVjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYgcGl4
ZWxCdWZmZXIpCitSZWZQdHI8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZUZyb21Q
aXhlbEJ1ZmZlcihSZWY8UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIpCiB7Ci0gICAgYXV0byBz
aXplID0gcGl4ZWxCdWZmZXIuc2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IHBpeGVsQnVmZmVyLT5z
aXplKCk7CiAgICAgYXV0byB3aWR0aCA9IHNpemUud2lkdGgoKTsKICAgICBhdXRvIGhlaWdodCA9
IHNpemUuaGVpZ2h0KCk7CiAKLSAgICBhdXRvIGRhdGEgPSBwaXhlbEJ1ZmZlci50YWtlRGF0YSgp
OwotICAgIGF1dG8gZGF0YUJhc2VBZGRyZXNzID0gZGF0YS0+ZGF0YSgpOwotICAgIGF1dG8gbGVh
a2VkRGF0YSA9ICZkYXRhLmxlYWtSZWYoKTsKKyAgICBSZWYgcGl4ZWxBcnJheSA9IHBpeGVsQnVm
ZmVyOworICAgIGF1dG8gZGF0YUJhc2VBZGRyZXNzID0gcGl4ZWxBcnJheS0+Ynl0ZXMoKTsKKyAg
ICBhdXRvIGxlYWtlZERhdGEgPSAmcGl4ZWxBcnJheS5sZWFrUmVmKCk7CiAgICAgCiAgICAgYXV0
byBkZXJlZkJ1ZmZlciA9IFtdICh2b2lkKiBjb250ZXh0LCBjb25zdCB2b2lkKikgewotICAgICAg
ICBzdGF0aWNfY2FzdDxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5Kj4oY29udGV4dCktPmRlcmVmKCk7
CisgICAgICAgIHN0YXRpY19jYXN0PFBpeGVsQnVmZmVyKj4oY29udGV4dCktPmRlcmVmKCk7CiAg
ICAgfTsKIAogICAgIENWUGl4ZWxCdWZmZXJSZWYgY3ZQaXhlbEJ1ZmZlclJhdyA9IG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9zaXRlLmgKaW5kZXggMTliNjhmNGFlOWQyLi42ODAxYjdkY2Y1NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmgKQEAgLTczLDggKzczLDYgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBGaWx0ZXJSZXByZXNlbnRhdGlv
bikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBpbmxpbmUgdm9pZCBwbGF0Zm9ybUFyaXRobWV0aWNT
b2Z0d2FyZShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJh
eSYgZGVzdGluYXRpb24sIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsK
LQogI2lmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKICAgICB0ZW1wbGF0ZSA8aW50IGIxLCBp
bnQgYjQ+CiAgICAgc3RhdGljIGlubGluZSB2b2lkIGNvbXB1dGVBcml0aG1ldGljUGl4ZWxzTmVv
bihjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBw
aXhlbEFycmF5TGVuZ3RoLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5jcHAKaW5kZXggYmJlZWZlN2NhMWVjLi5lODcyNTUyMzQ3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZpbHRlcklt
YWdlLmgiCisjaW5jbHVkZSAiRmlsdGVyUmVzdWx0cy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg3LDcgKzg4LDcgQEAgUmVmUHRyPEZpbHRl
ckltYWdlPiBGaWx0ZXI6OmFwcGx5KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBzb3UKIAogICAgIGlmIChzb3VyY2VJbWFnZSkgewogICAgICAgICBhdXRvIGFic29s
dXRlU291cmNlSW1hZ2VSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChzY2FsZWRCeUZpbHRlclNjYWxl
KHNvdXJjZUltYWdlUmVjdCkpOwotICAgICAgICBpbnB1dCA9IEZpbHRlckltYWdlOjpjcmVhdGUo
bV9maWx0ZXJSZWdpb24sIHNvdXJjZUltYWdlUmVjdCwgYWJzb2x1dGVTb3VyY2VJbWFnZVJlY3Qs
IFJlZiB7ICpzb3VyY2VJbWFnZSB9KTsKKyAgICAgICAgaW5wdXQgPSBGaWx0ZXJJbWFnZTo6Y3Jl
YXRlKG1fZmlsdGVyUmVnaW9uLCBzb3VyY2VJbWFnZVJlY3QsIGFic29sdXRlU291cmNlSW1hZ2VS
ZWN0LCBSZWYgeyAqc291cmNlSW1hZ2UgfSwgcmVzdWx0cy5hbGxvY2F0b3IoKSk7CiAgICAgICAg
IGlmICghaW5wdXQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAKaW5kZXggY2I5M2ExOWZkODliLi5jMTIwZmZiMzk2MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckVmZmVj
dDo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVgogICAgIGlm
ICghYXBwbGllcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHJlc3VsdCA9
IEZpbHRlckltYWdlOjpjcmVhdGUocHJpbWl0aXZlU3VicmVnaW9uLCBpbWFnZVJlY3QsIGFic29s
dXRlSW1hZ2VSZWN0LCBpc0FscGhhSW1hZ2UsIGlzVmFsaWRQcmVtdWx0aXBsaWVkLCBmaWx0ZXIu
cmVuZGVyaW5nTW9kZSgpLCBpbWFnZUNvbG9yU3BhY2UpOworICAgIGF1dG8gcmVzdWx0ID0gRmls
dGVySW1hZ2U6OmNyZWF0ZShwcmltaXRpdmVTdWJyZWdpb24sIGltYWdlUmVjdCwgYWJzb2x1dGVJ
bWFnZVJlY3QsIGlzQWxwaGFJbWFnZSwgaXNWYWxpZFByZW11bHRpcGxpZWQsIGZpbHRlci5yZW5k
ZXJpbmdNb2RlKCksIGltYWdlQ29sb3JTcGFjZSwgcmVzdWx0cy5hbGxvY2F0b3IoKSk7CiAgICAg
aWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCmlu
ZGV4IGIxMDZkZjNiMWZmYy4uZDk3OWIyZTM0MzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDE4
ICszOCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxGaWx0ZXJJbWFnZT4g
RmlsdGVySW1hZ2U6OmNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwg
Y29uc3QgRmxvYXRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VS
ZWN0LCBib29sIGlzQWxwaGFJbWFnZSwgYm9vbCBpc1ZhbGlkUHJlbXVsdGlwbGllZCwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UpCitSZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckltYWdlOjpjcmVhdGUoY29uc3QgRmxv
YXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgYm9vbCBpc0FscGhhSW1hZ2UsIGJvb2wg
aXNWYWxpZFByZW11bHRpcGxpZWQsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckFsbG9jYXRvciYg
YWxsb2NhdG9yKQogewogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5n
KGFic29sdXRlSW1hZ2VSZWN0LnNpemUoKSkpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmls
dGVySW1hZ2UocHJpbWl0aXZlU3VicmVnaW9uLCBpbWFnZVJlY3QsIGFic29sdXRlSW1hZ2VSZWN0
LCBpc0FscGhhSW1hZ2UsIGlzVmFsaWRQcmVtdWx0aXBsaWVkLCByZW5kZXJpbmdNb2RlLCBjb2xv
clNwYWNlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0ZXJJbWFnZShwcmltaXRpdmVT
dWJyZWdpb24sIGltYWdlUmVjdCwgYWJzb2x1dGVJbWFnZVJlY3QsIGlzQWxwaGFJbWFnZSwgaXNW
YWxpZFByZW11bHRpcGxpZWQsIHJlbmRlcmluZ01vZGUsIGNvbG9yU3BhY2UsIGFsbG9jYXRvcikp
OwogfQogCi1SZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlckltYWdlOjpjcmVhdGUoY29uc3QgRmxv
YXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBhYnNvbHV0ZUltYWdlUmVjdCwgUmVmPEltYWdlQnVmZmVyPiYmIGltYWdl
QnVmZmVyKQorUmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXJJbWFnZTo6Y3JlYXRlKGNvbnN0IEZs
b2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwg
Y29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIFJlZjxJbWFnZUJ1ZmZlcj4mJiBpbWFn
ZUJ1ZmZlciwgSW1hZ2VCdWZmZXJBbGxvY2F0b3ImIGFsbG9jYXRvcikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGaWx0ZXJJbWFnZShwcmltaXRpdmVTdWJyZWdpb24sIGltYWdlUmVjdCwg
YWJzb2x1dGVJbWFnZVJlY3QsIFdURk1vdmUoaW1hZ2VCdWZmZXIpKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBGaWx0ZXJJbWFnZShwcmltaXRpdmVTdWJyZWdpb24sIGltYWdlUmVjdCwgYWJz
b2x1dGVJbWFnZVJlY3QsIFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBhbGxvY2F0b3IpKTsKIH0KIAot
RmlsdGVySW1hZ2U6OkZpbHRlckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVn
aW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJ
bWFnZVJlY3QsIGJvb2wgaXNBbHBoYUltYWdlLCBib29sIGlzVmFsaWRQcmVtdWx0aXBsaWVkLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSkKK0ZpbHRlckltYWdlOjpGaWx0ZXJJbWFnZShjb25zdCBGbG9hdFJlY3QmIHBy
aW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGFic29sdXRlSW1hZ2VSZWN0LCBib29sIGlzQWxwaGFJbWFnZSwgYm9vbCBpc1ZhbGlkUHJl
bXVsdGlwbGllZCwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQWxsb2NhdG9yJiBhbGxvY2F0b3Ip
CiAgICAgOiBtX3ByaW1pdGl2ZVN1YnJlZ2lvbihwcmltaXRpdmVTdWJyZWdpb24pCiAgICAgLCBt
X2ltYWdlUmVjdChpbWFnZVJlY3QpCiAgICAgLCBtX2Fic29sdXRlSW1hZ2VSZWN0KGFic29sdXRl
SW1hZ2VSZWN0KQpAQCAtNTcsMTYgKzU3LDE4IEBAIEZpbHRlckltYWdlOjpGaWx0ZXJJbWFnZShj
b25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiBpCiAg
ICAgLCBtX2lzVmFsaWRQcmVtdWx0aXBsaWVkKGlzVmFsaWRQcmVtdWx0aXBsaWVkKQogICAgICwg
bV9yZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpCiAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JT
cGFjZSkKKyAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKIHsKIH0KIAotRmlsdGVySW1hZ2U6
OkZpbHRlckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBG
bG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIFJl
ZjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK0ZpbHRlckltYWdlOjpGaWx0ZXJJbWFnZShj
b25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiBpbWFn
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBSZWY8SW1hZ2VCdWZmZXI+
JiYgaW1hZ2VCdWZmZXIsIEltYWdlQnVmZmVyQWxsb2NhdG9yJiBhbGxvY2F0b3IpCiAgICAgOiBt
X3ByaW1pdGl2ZVN1YnJlZ2lvbihwcmltaXRpdmVTdWJyZWdpb24pCiAgICAgLCBtX2ltYWdlUmVj
dChpbWFnZVJlY3QpCiAgICAgLCBtX2Fic29sdXRlSW1hZ2VSZWN0KGFic29sdXRlSW1hZ2VSZWN0
KQogICAgICwgbV9yZW5kZXJpbmdNb2RlKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdNb2RlKCkpCiAg
ICAgLCBtX2NvbG9yU3BhY2UoaW1hZ2VCdWZmZXItPmNvbG9yU3BhY2UoKSkKICAgICAsIG1faW1h
Z2VCdWZmZXIoV1RGTW92ZShpbWFnZUJ1ZmZlcikpCisgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0
b3IpCiB7CiB9CiAKQEAgLTk5LDcgKzEwMSw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJJbWFnZTo6
aW1hZ2VCdWZmZXJGcm9tUGl4ZWxCdWZmZXIoKQogICAgIGlmIChtX2ltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1faW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVJbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdQ
dXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgbV9jb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IGJ1ZmZlck9wdGlvbnNGb3JSZW5kaW5nTW9kZShtX3JlbmRlcmluZ01vZGUpKTsKKyAgICBtX2lt
YWdlQnVmZmVyID0gbV9hbGxvY2F0b3IuY3JlYXRlSW1hZ2VCdWZmZXIobV9hYnNvbHV0ZUltYWdl
UmVjdC5zaXplKCksIG1fY29sb3JTcGFjZSwgbV9yZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIW1f
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMjAsMTcgKzEyMiwx
NCBAQCBzdGF0aWMgdm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBQaXhlbEJ1ZmZlciYgc291cmNl
UGl4ZWxCdWZmZXIsIFBpeGVsQnVmZmVyJiBkZQogICAgIGF1dG8gZGVzdGluYXRpb25TaXplID0g
ZGVzdGluYXRpb25QaXhlbEJ1ZmZlci5zaXplKCk7CiAgICAgdW5zaWduZWQgcm93Qnl0ZXMgPSBk
ZXN0aW5hdGlvblNpemUud2lkdGgoKSAqIDQ7CiAKLSAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVy
c2lvblZpZXcgc291cmNlIHsgc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCksIHJvd0J5dGVzLCBz
b3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpIH07Ci0gICAgUGl4ZWxCdWZmZXJDb252ZXJz
aW9uVmlldyBkZXN0aW5hdGlvbiB7IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIuZm9ybWF0KCksIHJv
d0J5dGVzLCBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgfTsKKyAgICBDb25z
dFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlIHsgc291cmNlUGl4ZWxCdWZmZXIuZm9y
bWF0KCksIHJvd0J5dGVzLCBzb3VyY2VQaXhlbEJ1ZmZlci5ieXRlcygpIH07CisgICAgUGl4ZWxC
dWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIu
Zm9ybWF0KCksIHJvd0J5dGVzLCBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLmJ5dGVzKCkgfTsKIAog
ICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNp
emUpOwogfQogCiBzdGF0aWMgdm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBQaXhlbEJ1ZmZlciYg
c291cmNlUGl4ZWxCdWZmZXIsIFBpeGVsQnVmZmVyJiBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQogewotICAgIGF1dG8mIHNvdXJjZSA9IHNvdXJjZVBp
eGVsQnVmZmVyLmRhdGEoKTsKLSAgICBhdXRvJiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uUGl4
ZWxCdWZmZXIuZGF0YSgpOwotCiAgICAgYXV0byBzb3VyY2VQaXhlbEJ1ZmZlclJlY3QgPSBJbnRS
ZWN0IHsgeyB9LCBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkgfTsKICAgICBhdXRvIGRlc3RpbmF0
aW9uUGl4ZWxCdWZmZXJSZWN0ID0gSW50UmVjdCB7IHsgfSwgZGVzdGluYXRpb25QaXhlbEJ1ZmZl
ci5zaXplKCkgfTsKIApAQCAtMTQ4LDcgKzE0Nyw3IEBAIHN0YXRpYyB2b2lkIGNvcHlJbWFnZUJ5
dGVzKGNvbnN0IFBpeGVsQnVmZmVyJiBzb3VyY2VQaXhlbEJ1ZmZlciwgUGl4ZWxCdWZmZXImIGRl
CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiB0byB0cmFuc3BhcmVudCBibGFj
aywgaWYgbm90IGVudGlyZWx5IGNvdmVyZWQgYnkgdGhlIHNvdXJjZS4KICAgICBpZiAoZGVzdGlu
YXRpb25SZWN0LnNpemUoKSAhPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyUmVjdC5zaXplKCkpCi0g
ICAgICAgIGRlc3RpbmF0aW9uLnplcm9GaWxsKCk7CisgICAgICAgIGRlc3RpbmF0aW9uUGl4ZWxC
dWZmZXIuemVyb0ZpbGwoKTsKIAogICAgIC8vIEVhcmx5IHJldHVybiBpZiB0aGUgcmVjdCBkb2Vz
IG5vdCBpbnRlcnNlY3Qgd2l0aCB0aGUgc291cmNlLgogICAgIGlmIChkZXN0aW5hdGlvblJlY3Qu
aXNFbXB0eSgpKQpAQCAtMTU3LDggKzE1Niw4IEBAIHN0YXRpYyB2b2lkIGNvcHlJbWFnZUJ5dGVz
KGNvbnN0IFBpeGVsQnVmZmVyJiBzb3VyY2VQaXhlbEJ1ZmZlciwgUGl4ZWxCdWZmZXImIGRlCiAg
ICAgaW50IHNpemUgPSBzb3VyY2VSZWN0Q2xpcHBlZC53aWR0aCgpICogNDsKICAgICBpbnQgZGVz
dGluYXRpb25CeXRlc1BlclJvdyA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXJSZWN0LndpZHRoKCkg
KiA0OwogICAgIGludCBzb3VyY2VCeXRlc1BlclJvdyA9IHNvdXJjZVBpeGVsQnVmZmVyUmVjdC53
aWR0aCgpICogNDsKLSAgICB1aW50OF90KiBkZXN0aW5hdGlvblBpeGVsID0gZGVzdGluYXRpb24u
ZGF0YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgKyBk
ZXN0aW5hdGlvblJlY3QueCgpICogNDsKLSAgICBjb25zdCB1aW50OF90KiBzb3VyY2VQaXhlbCA9
IHNvdXJjZS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2VCeXRlc1BlclJv
dyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CisgICAgdWludDhfdCogZGVzdGluYXRpb25Q
aXhlbCA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIuYnl0ZXMoKSArIGRlc3RpbmF0aW9uUmVjdC55
KCkgKiBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7Cisg
ICAgY29uc3QgdWludDhfdCogc291cmNlUGl4ZWwgPSBzb3VyY2VQaXhlbEJ1ZmZlci5ieXRlcygp
ICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlQnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0
Q2xpcHBlZC54KCkgKiA0OwogCiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBzb3VyY2VSZWN0Q2xp
cHBlZC5oZWlnaHQoKTsgKyt5KSB7CiAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvblBpeGVsLCBz
b3VyY2VQaXhlbCwgc2l6ZSk7CkBAIC0xNjcsMzIgKzE2NiwzMiBAQCBzdGF0aWMgdm9pZCBjb3B5
SW1hZ2VCeXRlcyhjb25zdCBQaXhlbEJ1ZmZlciYgc291cmNlUGl4ZWxCdWZmZXIsIFBpeGVsQnVm
ZmVyJiBkZQogICAgIH0KIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdl
dENvbnZlcnRlZFBpeGVsQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCitzdGF0aWMgUmVmUHRyPFBpeGVsQnVmZmVy
PiBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckFsbG9jYXRvciYg
YWxsb2NhdG9yKQogewogICAgIGF1dG8gY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBl
ZFNpemUoc291cmNlUmVjdC5zaXplKCkpOwotICAgIGF1dG8gY29udmVydGVkSW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNw
ZWNpZmllZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGNv
bnZlcnRlZEltYWdlQnVmZmVyID0gYWxsb2NhdG9yLmNyZWF0ZUltYWdlQnVmZmVyKGNsYW1wZWRT
aXplLCBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICAKICAg
ICBpZiAoIWNvbnZlcnRlZEltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENvbG9yIHNwYWNlIGNvbnZlcnNp
b24gaGFwcGVucyBpbnRlcm5hbGx5IHdoZW4gZHJhd2luZyBmcm9tIG9uZSBpbWFnZSBidWZmZXIg
dG8gYW5vdGhlcgogICAgIGNvbnZlcnRlZEltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBzb3VyY2VSZWN0KTsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBm
b3JtYXQgeyBhbHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBjb2xvclNwYWNlIH07Ci0g
ICAgcmV0dXJuIGNvbnZlcnRlZEltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHNv
dXJjZVJlY3QpOworICAgIHJldHVybiBjb252ZXJ0ZWRJbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZm
ZXIoZm9ybWF0LCBzb3VyY2VSZWN0LCBhbGxvY2F0b3IpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gZ2V0Q29udmVydGVkUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImIHNv
dXJjZVBpeGVsQnVmZmVyLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3N0YXRpYyBSZWZQdHI8UGl4ZWxCdWZmZXI+
IGdldENvbnZlcnRlZFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiBzb3VyY2VQaXhlbEJ1ZmZlciwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdCwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQWxsb2NhdG9yJiBhbGxvY2F0b3IpCiB7CiAgICAgYXV0
byBzb3VyY2VSZWN0ID0gSW50UmVjdCB7IHsgfSAsIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKSB9
OwogICAgIGF1dG8gY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUoc291cmNl
UmVjdC5zaXplKCkpOwogCiAgICAgYXV0byYgc291cmNlQ29sb3JTcGFjZSA9IHNvdXJjZVBpeGVs
QnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2U7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVk
LCAxLCBzb3VyY2VDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBhbGxvY2F0b3IuY3JlYXRlSW1hZ2VCdWZmZXIoY2xhbXBlZFNpemUsIHNvdXJj
ZUNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghaW1h
Z2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgaW1hZ2VCdWZmZXItPnB1dFBpeGVsQnVmZmVyKHNvdXJjZVBpeGVsQnVm
ZmVyLCBzb3VyY2VSZWN0KTsKLSAgICByZXR1cm4gZ2V0Q29udmVydGVkUGl4ZWxCdWZmZXIoKmlt
YWdlQnVmZmVyLCBhbHBoYUZvcm1hdCwgc291cmNlUmVjdCwgY29sb3JTcGFjZSk7CisgICAgcmV0
dXJuIGdldENvbnZlcnRlZFBpeGVsQnVmZmVyKCppbWFnZUJ1ZmZlciwgYWxwaGFGb3JtYXQsIHNv
dXJjZVJlY3QsIGNvbG9yU3BhY2UsIGFsbG9jYXRvcik7CiB9CiAKIGJvb2wgRmlsdGVySW1hZ2U6
OnJlcXVpcmVzUGl4ZWxCdWZmZXJDb2xvclNwYWNlQ29udmVyc2lvbihzdGQ6Om9wdGlvbmFsPERl
c3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgY29uc3QKQEAgLTIwOSw3ICsyMDgsNyBA
QCBib29sIEZpbHRlckltYWdlOjpyZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFjZUNvbnZlcnNp
b24oc3RkOjpvcHRpb25hbDxEZXN0aW5hdAogI2VuZGlmCiB9CiAKLXN0ZDo6b3B0aW9uYWw8UGl4
ZWxCdWZmZXI+JiBGaWx0ZXJJbWFnZTo6cGl4ZWxCdWZmZXJTbG90KEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gYWxwaGFGb3JtYXQpCitSZWZQdHI8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJJbWFnZTo6cGl4
ZWxCdWZmZXJTbG90KEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQpCiB7CiAgICAg
cmV0dXJuIGFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCA/IG1fdW5wcmVtdWx0aXBsaWVkUGl4ZWxCdWZmZXIgOiBtX3ByZW11bHRpcGxpZWRQaXhl
bEJ1ZmZlcjsKIH0KQEAgLTIxOCwyMSArMjE3LDIxIEBAIFBpeGVsQnVmZmVyKiBGaWx0ZXJJbWFn
ZTo6cGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdCkKIHsKICAg
ICBhdXRvJiBwaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyU2xvdChhbHBoYUZvcm1hdCk7CiAgICAg
aWYgKHBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gJnBpeGVsQnVmZmVyLnZhbHVlKCk7Cisg
ICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlci5nZXQoKTsKIAogICAgIFBpeGVsQnVmZmVyRm9ybWF0
IGZvcm1hdCB7IGFscGhhRm9ybWF0LCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fY29sb3JTcGFjZSB9
OwogCiAgICAgaWYgKG1faW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgcGl4ZWxCdWZmZXIgPSBtX2lt
YWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgeyB9LCBtX2Fic29sdXRlSW1hZ2VS
ZWN0LnNpemUoKSB9KTsKKyAgICAgICAgcGl4ZWxCdWZmZXIgPSBtX2ltYWdlQnVmZmVyLT5nZXRQ
aXhlbEJ1ZmZlcihmb3JtYXQsIHsgeyB9LCBtX2Fic29sdXRlSW1hZ2VSZWN0LnNpemUoKSB9LCBt
X2FsbG9jYXRvcik7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuICZwaXhlbEJ1ZmZlci52YWx1ZSgpOworICAgICAg
ICByZXR1cm4gcGl4ZWxCdWZmZXIuZ2V0KCk7CiAgICAgfQogCiAgICAgSW50U2l6ZSBsb2dpY2Fs
U2l6ZShtX2Fic29sdXRlSW1hZ2VSZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZl
cjo6c2l6ZU5lZWRzQ2xhbXBpbmcobG9naWNhbFNpemUpKTsKIAotICAgIHBpeGVsQnVmZmVyID0g
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGxvZ2ljYWxTaXplKTsKKyAgICBwaXhlbEJ1
ZmZlciA9IG1fYWxsb2NhdG9yLmNyZWF0ZVBpeGVsQnVmZmVyKGZvcm1hdCwgbG9naWNhbFNpemUp
OwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0y
NDQsMTggKzI0MywxOCBAQCBQaXhlbEJ1ZmZlciogRmlsdGVySW1hZ2U6OnBpeGVsQnVmZmVyKEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQpCiAgICAgICAgICAgICBjb3B5SW1hZ2VC
eXRlcygqc291cmNlUGl4ZWxCdWZmZXIsICpwaXhlbEJ1ZmZlcik7CiAgICAgfQogCi0gICAgcmV0
dXJuICZwaXhlbEJ1ZmZlci52YWx1ZSgpOworICAgIHJldHVybiBwaXhlbEJ1ZmZlci5nZXQoKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVySW1hZ2U6OmdldFBpeGVsQnVm
ZmVyKEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNl
KQorUmVmUHRyPFBpeGVsQnVmZmVyPiBGaWx0ZXJJbWFnZTo6Z2V0UGl4ZWxCdWZmZXIoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
c3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAgICAg
QVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc291cmNlUmVjdC5zaXplKCkp
KTsKIAogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IGFscGhhRm9ybWF0LCBQaXhlbEZv
cm1hdDo6UkdCQTgsIGNvbG9yU3BhY2U/ICpjb2xvclNwYWNlIDogbV9jb2xvclNwYWNlIH07CiAK
LSAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHNv
dXJjZVJlY3Quc2l6ZSgpKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gbV9hbGxvY2F0b3IuY3Jl
YXRlUGl4ZWxCdWZmZXIoZm9ybWF0LCBzb3VyY2VSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBjb3B5UGl4ZWxCdWZmZXIoKnBpeGVsQnVmZmVyLCBzb3VyY2VSZWN0KTsK
ICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7CkBAIC0yNjYsMTQgKzI2NSwxNCBAQCB2b2lkIEZpbHRl
ckltYWdlOjpjb3B5UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImIGRlc3RpbmF0aW9uUGl4ZWxCdWZm
ZXIsIGNvbnN0IEludAogICAgIGF1dG8gYWxwaGFGb3JtYXQgPSBkZXN0aW5hdGlvblBpeGVsQnVm
ZmVyLmZvcm1hdCgpLmFscGhhRm9ybWF0OwogICAgIGF1dG8mIGNvbG9yU3BhY2UgPSBkZXN0aW5h
dGlvblBpeGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2U7CiAKLSAgICBhdXRvKiBzb3VyY2VQ
aXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyU2xvdChhbHBoYUZvcm1hdCkgPyAmcGl4ZWxCdWZmZXJT
bG90KGFscGhhRm9ybWF0KS52YWx1ZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiBzb3VyY2VQaXhl
bEJ1ZmZlciA9IHBpeGVsQnVmZmVyU2xvdChhbHBoYUZvcm1hdCkgPyBwaXhlbEJ1ZmZlclNsb3Qo
YWxwaGFGb3JtYXQpLmdldCgpIDogbnVsbHB0cjsKIAogICAgIGlmICghc291cmNlUGl4ZWxCdWZm
ZXIpIHsKICAgICAgICAgaWYgKHJlcXVpcmVzUGl4ZWxCdWZmZXJDb2xvclNwYWNlQ29udmVyc2lv
bihjb2xvclNwYWNlKSkgewogICAgICAgICAgICAgLy8gV2UgcHJlZmVyIGEgY29udmVyc2lvbiBm
cm9tIHRoZSBpbWFnZSBidWZmZXIuCiAgICAgICAgICAgICBpZiAobV9pbWFnZUJ1ZmZlcikgewog
ICAgICAgICAgICAgICAgIEludFJlY3QgcmVjdCB7IHsgfSwgbV9hYnNvbHV0ZUltYWdlUmVjdC5z
aXplKCkgfTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRQaXhlbEJ1ZmZlciA9
IGdldENvbnZlcnRlZFBpeGVsQnVmZmVyKCptX2ltYWdlQnVmZmVyLCBhbHBoYUZvcm1hdCwgcmVj
dCwgY29sb3JTcGFjZSkpCisgICAgICAgICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkUGl4ZWxC
dWZmZXIgPSBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcigqbV9pbWFnZUJ1ZmZlciwgYWxwaGFGb3Jt
YXQsIHJlY3QsIGNvbG9yU3BhY2UsIG1fYWxsb2NhdG9yKSkKICAgICAgICAgICAgICAgICAgICAg
Y29weUltYWdlQnl0ZXMoKmNvbnZlcnRlZFBpeGVsQnVmZmVyLCBkZXN0aW5hdGlvblBpeGVsQnVm
ZmVyLCBzb3VyY2VSZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC0yODYsNyArMjg1LDcgQEAgdm9pZCBGaWx0ZXJJbWFnZTo6Y29weVBpeGVsQnVmZmVyKFBp
eGVsQnVmZmVyJiBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBjb25zdCBJbnQKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKHJlcXVpcmVzUGl4ZWxCdWZmZXJDb2xvclNwYWNlQ29udmVyc2lvbihj
b2xvclNwYWNlKSkgewotICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRQaXhlbEJ1ZmZlciA9IGdl
dENvbnZlcnRlZFBpeGVsQnVmZmVyKCpzb3VyY2VQaXhlbEJ1ZmZlciwgYWxwaGFGb3JtYXQsIGNv
bG9yU3BhY2UpKQorICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRQaXhlbEJ1ZmZlciA9IGdldENv
bnZlcnRlZFBpeGVsQnVmZmVyKCpzb3VyY2VQaXhlbEJ1ZmZlciwgYWxwaGFGb3JtYXQsIGNvbG9y
U3BhY2UsIG1fYWxsb2NhdG9yKSkKICAgICAgICAgICAgIGNvcHlJbWFnZUJ5dGVzKCpjb252ZXJ0
ZWRQaXhlbEJ1ZmZlciwgZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgc291cmNlUmVjdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yOTQsMTUgKzI5MywyMiBAQCB2b2lkIEZpbHRlckltYWdl
Ojpjb3B5UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIGNv
bnN0IEludAogICAgIGNvcHlJbWFnZUJ5dGVzKCpzb3VyY2VQaXhlbEJ1ZmZlciwgZGVzdGluYXRp
b25QaXhlbEJ1ZmZlciwgc291cmNlUmVjdCk7CiB9CiAKK1JlZlB0cjxQaXhlbEJ1ZmZlcj4gRmls
dGVySW1hZ2U6OmNyZWF0ZVNjcmF0Y2hQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYgZm9ybWF0KSBjb25zdAoreworICAgIEludFNpemUgbG9naWNhbFNpemUobV9hYnNvbHV0ZUlt
YWdlUmVjdC5zaXplKCkpOworICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1w
aW5nKGxvZ2ljYWxTaXplKSk7CisKKyAgICByZXR1cm4gbV9hbGxvY2F0b3IuY3JlYXRlUGl4ZWxC
dWZmZXIoZm9ybWF0LCBsb2dpY2FsU2l6ZSk7Cit9CisKIHZvaWQgRmlsdGVySW1hZ2U6OmNvcnJl
Y3RQcmVtdWx0aXBsaWVkUGl4ZWxCdWZmZXIoKQogewogICAgIC8vIE11c3Qgb3BlcmF0ZSBvbiBw
cmUtbXVsdGlwbGllZCByZXN1bHRzOyBvdGhlciBmb3JtYXRzIGNhbm5vdCBoYXZlIGludmFsaWQg
cGl4ZWxzLgogICAgIGlmICghbV9wcmVtdWx0aXBsaWVkUGl4ZWxCdWZmZXIgfHwgbV9pc1ZhbGlk
UHJlbXVsdGlwbGllZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVWludDhDbGFtcGVkQXJyYXkm
IGltYWdlQXJyYXkgPSBtX3ByZW11bHRpcGxpZWRQaXhlbEJ1ZmZlci0+ZGF0YSgpOwotICAgIHVp
bnQ4X3QqIHBpeGVsRGF0YSA9IGltYWdlQXJyYXkuZGF0YSgpOwotICAgIGludCBwaXhlbEFycmF5
TGVuZ3RoID0gaW1hZ2VBcnJheS5sZW5ndGgoKTsKKyAgICB1aW50OF90KiBwaXhlbERhdGEgPSBt
X3ByZW11bHRpcGxpZWRQaXhlbEJ1ZmZlci0+Ynl0ZXMoKTsKKyAgICBpbnQgcGl4ZWxBcnJheUxl
bmd0aCA9IG1fcHJlbXVsdGlwbGllZFBpeGVsQnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAKICAgICAv
LyBXZSBtdXN0IGhhdmUgZm91ciBieXRlcyBwZXIgcGl4ZWwsIGFuZCBjb21wbGV0ZSBwaXhlbHMK
ICAgICBBU1NFUlQoIShwaXhlbEFycmF5TGVuZ3RoICUgNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCmluZGV4IGU5
ZWZkNWZiOGNkZC4uOWJiYzJiNzE0ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5oCkBAIC00MiwxMSArNDIsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmlsdGVyOwogY2xhc3MgRmxvYXRSZWN0Owog
Y2xhc3MgSW1hZ2VCdWZmZXI7CitjbGFzcyBJbWFnZUJ1ZmZlckFsbG9jYXRvcjsKIAogY2xhc3Mg
RmlsdGVySW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWx0ZXJJbWFnZT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8RmlsdGVySW1hZ2U+IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHBy
aW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGFic29sdXRlSW1hZ2VSZWN0LCBib29sIGlzQWxwaGFJbWFnZSwgYm9vbCBpc1ZhbGlkUHJl
bXVsdGlwbGllZCwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7
Ci0gICAgc3RhdGljIFJlZlB0cjxGaWx0ZXJJbWFnZT4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYg
cHJpbWl0aXZlU3VicmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50
UmVjdCYgYWJzb2x1dGVJbWFnZVJlY3QsIFJlZjxJbWFnZUJ1ZmZlcj4mJik7CisgICAgc3RhdGlj
IFJlZlB0cjxGaWx0ZXJJbWFnZT4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3Vi
cmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1
dGVJbWFnZVJlY3QsIGJvb2wgaXNBbHBoYUltYWdlLCBib29sIGlzVmFsaWRQcmVtdWx0aXBsaWVk
LCBSZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBJbWFnZUJ1ZmZl
ckFsbG9jYXRvciYpOworICAgIHN0YXRpYyBSZWZQdHI8RmlsdGVySW1hZ2U+IGNyZWF0ZShjb25z
dCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBSZWY8SW1hZ2VCdWZmZXI+JiYs
IEltYWdlQnVmZmVyQWxsb2NhdG9yJik7CiAKICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlcyBhcmUg
aW4gZmlsdGVyIGNvb3JkaW5hdGVzLgogICAgIEZsb2F0UmVjdCBwcmltaXRpdmVTdWJyZWdpb24o
KSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVN1YnJlZ2lvbjsgfQpAQCAtNjUsOSArNjYsMTEg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigp
OwogICAgIFBpeGVsQnVmZmVyKiBwaXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsK
IAotICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKEFscGhhUHJl
bXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIHN0ZDo6b3B0aW9uYWw8
RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgUmVmUHRyPFBpeGVs
QnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBz
dGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY29weVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiBkZXN0
aW5hdGlvblBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKIAorICAgIFJl
ZlB0cjxQaXhlbEJ1ZmZlcj4gY3JlYXRlU2NyYXRjaFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVm
ZmVyRm9ybWF0JikgY29uc3Q7CisKICAgICB2b2lkIGNvcnJlY3RQcmVtdWx0aXBsaWVkUGl4ZWxC
dWZmZXIoKTsKICAgICB2b2lkIHRyYW5zZm9ybVRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmKTsKIApAQCAtNzcsMTAgKzgwLDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiBw
cml2YXRlOgotICAgIEZpbHRlckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVn
aW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1dGVJ
bWFnZVJlY3QsIGJvb2wgaXNBbHBoYUltYWdlLCBib29sIGlzVmFsaWRQcmVtdWx0aXBsaWVkLCBS
ZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKLSAgICBGaWx0ZXJJ
bWFnZShjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0
JiBpbWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIGFic29sdXRlSW1hZ2VSZWN0LCBSZWY8SW1hZ2VC
dWZmZXI+JiYpOworICAgIEZpbHRlckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3Vi
cmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJzb2x1
dGVJbWFnZVJlY3QsIGJvb2wgaXNBbHBoYUltYWdlLCBib29sIGlzVmFsaWRQcmVtdWx0aXBsaWVk
LCBSZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBJbWFnZUJ1ZmZl
ckFsbG9jYXRvciYpOworICAgIEZpbHRlckltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZl
U3VicmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgYWJz
b2x1dGVJbWFnZVJlY3QsIFJlZjxJbWFnZUJ1ZmZlcj4mJiwgSW1hZ2VCdWZmZXJBbGxvY2F0b3Im
KTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBwaXhlbEJ1ZmZlclNsb3QoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbik7CisgICAgUmVmUHRyPFBpeGVsQnVmZmVyPiYgcGl4ZWxCdWZm
ZXJTbG90KEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdl
QnVmZmVyRnJvbVBpeGVsQnVmZmVyKCk7CiAKQEAgLTEwMCwxMiArMTAzLDE0IEBAIHByaXZhdGU6
CiAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFjZTsKIAogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKLSAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVy
PiBtX3VucHJlbXVsdGlwbGllZFBpeGVsQnVmZmVyOwotICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IG1fcHJlbXVsdGlwbGllZFBpeGVsQnVmZmVyOworICAgIFJlZlB0cjxQaXhlbEJ1ZmZl
cj4gbV91bnByZW11bHRpcGxpZWRQaXhlbEJ1ZmZlcjsKKyAgICBSZWZQdHI8UGl4ZWxCdWZmZXI+
IG1fcHJlbXVsdGlwbGllZFBpeGVsQnVmZmVyOwogCiAjaWYgVVNFKENPUkVfSU1BR0UpCiAgICAg
UmV0YWluUHRyPENJSW1hZ2U+IG1fY2lJbWFnZTsKICNlbmRpZgorCisgICAgSW1hZ2VCdWZmZXJB
bGxvY2F0b3ImIG1fYWxsb2NhdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJS
ZXN1bHRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyUmVzdWx0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5i
NmE4NmViNjFlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkZpbHRlclJlc3VsdHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitGaWx0ZXJSZXN1bHRzOjpGaWx0ZXJSZXN1bHRzKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckFsbG9jYXRvcj4mJiBhbGxvY2F0b3IpCisgICAgOiBtX2FsbG9jYXRvcihhbGxvY2F0b3IgPyBX
VEZNb3ZlKGFsbG9jYXRvcikgOiBtYWtlVW5pcXVlPEltYWdlQnVmZmVyQWxsb2NhdG9yPigpKQor
eworfQorCitGaWx0ZXJJbWFnZSogRmlsdGVyUmVzdWx0czo6ZWZmZWN0UmVzdWx0KEZpbHRlckVm
ZmVjdCYgZWZmZWN0KSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc3VsdHMuZ2V0KGVmZmVjdCk7
Cit9CisKK3ZvaWQgRmlsdGVyUmVzdWx0czo6c2V0RWZmZWN0UmVzdWx0KEZpbHRlckVmZmVjdCYg
ZWZmZWN0LCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBSZWY8RmlsdGVySW1hZ2U+
JiYgcmVzdWx0KQoreworICAgIG1fcmVzdWx0cy5zZXQoeyBlZmZlY3QgfSwgV1RGTW92ZShyZXN1
bHQpKTsKKworICAgIGZvciAoYXV0byYgaW5wdXQgOiBpbnB1dHMpCisgICAgICAgIG1fcmVzdWx0
UmVmZXJlbmNlcy5hZGQoaW5wdXQsIEZpbHRlckVmZmVjdFNldCgpKS5pdGVyYXRvci0+dmFsdWUu
YWRkKGVmZmVjdCk7Cit9CisKK3ZvaWQgRmlsdGVyUmVzdWx0czo6Y2xlYXJFZmZlY3RSZXN1bHQo
RmlsdGVyRWZmZWN0JiBlZmZlY3QpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzdWx0cy5m
aW5kKGVmZmVjdCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzdWx0cy5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byByZXN1bHQgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgbV9y
ZXN1bHRzLnJlbW92ZShpdGVyYXRvcik7CisKKyAgICBmb3IgKGF1dG8mIHJlZmVyZW5jZSA6IG1f
cmVzdWx0UmVmZXJlbmNlcy5nZXQocmVzdWx0KSkKKyAgICAgICAgY2xlYXJFZmZlY3RSZXN1bHQo
cmVmZXJlbmNlKTsKKworICAgIG1fcmVzdWx0UmVmZXJlbmNlcy5yZW1vdmUocmVzdWx0KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJSZXN1bHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlclJlc3VsdHMuaAppbmRleCBhNDFiMmIwYmZj
MTIuLjQyMDIwZDllYzY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJSZXN1bHRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJSZXN1bHRzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZpbHRlckltYWdlVmVjdG9yLmgi
CisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJBbGxvY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKQEAgLTM3LDQxICszOCwyMiBAQCBjbGFz
cyBGaWx0ZXJJbWFnZTsKIAogY2xhc3MgRmlsdGVyUmVzdWx0cyB7CiBwdWJsaWM6Ci0gICAgRmls
dGVyUmVzdWx0cygpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGaWx0ZXJSZXN1bHRz
KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckFsbG9jYXRvcj4mJiA9IG51bGxwdHIpOwogCi0g
ICAgRmlsdGVySW1hZ2UqIGVmZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3QmIGVmZmVjdCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Jlc3VsdHMuZ2V0KGVmZmVjdCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBzZXRFZmZlY3RSZXN1bHQoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIGNvbnN0IEZpbHRl
ckltYWdlVmVjdG9yJiBpbnB1dHMsIFJlZjxGaWx0ZXJJbWFnZT4mJiByZXN1bHQpCi0gICAgewot
ICAgICAgICBtX3Jlc3VsdHMuc2V0KHsgZWZmZWN0IH0sIFdURk1vdmUocmVzdWx0KSk7Ci0gICAg
ICAgIAotICAgICAgICBmb3IgKGF1dG8mIGlucHV0IDogaW5wdXRzKQotICAgICAgICAgICAgbV9y
ZXN1bHRSZWZlcmVuY2VzLmFkZChpbnB1dCwgRmlsdGVyRWZmZWN0U2V0KCkpLml0ZXJhdG9yLT52
YWx1ZS5hZGQoZWZmZWN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyRWZmZWN0UmVzdWx0KEZp
bHRlckVmZmVjdCYgZWZmZWN0KQotICAgIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVz
dWx0cy5maW5kKGVmZmVjdCk7Ci0gICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc3VsdHMuZW5k
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byByZXN1bHQgPSBpdGVyYXRv
ci0+dmFsdWU7Ci0gICAgICAgIG1fcmVzdWx0cy5yZW1vdmUoaXRlcmF0b3IpOwotCi0gICAgICAg
IGZvciAoYXV0byYgcmVmZXJlbmNlIDogbV9yZXN1bHRSZWZlcmVuY2VzLmdldChyZXN1bHQpKQot
ICAgICAgICAgICAgY2xlYXJFZmZlY3RSZXN1bHQocmVmZXJlbmNlKTsKLSAgICAgICAgCi0gICAg
ICAgIG1fcmVzdWx0UmVmZXJlbmNlcy5yZW1vdmUocmVzdWx0KTsKLSAgICB9CisgICAgSW1hZ2VC
dWZmZXJBbGxvY2F0b3ImIGFsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuICptX2FsbG9jYXRvcjsg
fQogCisgICAgRmlsdGVySW1hZ2UqIGVmZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3QmKSBjb25zdDsK
KyAgICB2b2lkIHNldEVmZmVjdFJlc3VsdChGaWx0ZXJFZmZlY3QmLCBjb25zdCBGaWx0ZXJJbWFn
ZVZlY3RvciYgaW5wdXRzLCBSZWY8RmlsdGVySW1hZ2U+JiYgcmVzdWx0KTsKKyAgICB2b2lkIGNs
ZWFyRWZmZWN0UmVzdWx0KEZpbHRlckVmZmVjdCYpOworICAgIAogcHJpdmF0ZToKLSAgICB1c2lu
ZyBGaWx0ZXJFZmZlY3RTZXQgPSBIYXNoU2V0PFJlZjxGaWx0ZXJFZmZlY3Q+PjsKICAgICBIYXNo
TWFwPFJlZjxGaWx0ZXJFZmZlY3Q+LCBSZWY8RmlsdGVySW1hZ2U+PiBtX3Jlc3VsdHM7CisKICAg
ICAvLyBUaGUgdmFsdWUgaXMgYSBsaXN0IG9mIEZpbHRlckVmZmVjdHMsIHdob3NlIEZpbHRlcklt
YWdlcyBkZXBlbmQgb24gdGhlIGtleSBGaWx0ZXJJbWFnZS4KKyAgICB1c2luZyBGaWx0ZXJFZmZl
Y3RTZXQgPSBIYXNoU2V0PFJlZjxGaWx0ZXJFZmZlY3Q+PjsKICAgICBIYXNoTWFwPFJlZjxGaWx0
ZXJJbWFnZT4sIEZpbHRlckVmZmVjdFNldD4gbV9yZXN1bHRSZWZlcmVuY2VzOworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQWxsb2NhdG9yPiBtX2FsbG9jYXRvcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
Q29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDMxNjNhNTZkZTQzNS4uMDQ1ZDdk
OTBkZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL0ZFQ29sb3JNYXRyaXhTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb2xvck1hdHJp
eFNvZnR3YXJlQXBwbGllci5jcHAKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNSBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsg
U2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC04Mywy
NSArODMsMjEgQEAgaW5saW5lIHZvaWQgRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllcjo6bHVt
aW5hbmNlKGZsb2F0JiByZWQsIGZsb2F0JiBncmVlbiwgZmwKICNpZiBVU0UoQUNDRUxFUkFURSkK
IHZvaWQgRkVDb2xvck1hdHJpeFNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybUFjY2VsZXJh
dGVkKFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikgY29uc3QKIHsKLSAgICBhdXRvJiBwaXhlbEFy
cmF5ID0gcGl4ZWxCdWZmZXIuZGF0YSgpOworICAgIGF1dG8gcGl4ZWxCeXRlcyA9IHBpeGVsQnVm
ZmVyLmJ5dGVzKCk7CiAgICAgYXV0byBidWZmZXJTaXplID0gcGl4ZWxCdWZmZXIuc2l6ZSgpOwot
Ci0gICAgQVNTRVJUKHBpeGVsQXJyYXkubGVuZ3RoKCkgPT0gYnVmZmVyU2l6ZS5hcmVhKCkgKiA0
KTsKLSAgICAKICAgICBjb25zdCBpbnQzMl90IGRpdmlzb3IgPSAyNTY7Ci0gICAgdWludDhfdCog
ZGF0YSA9IHBpeGVsQXJyYXkuZGF0YSgpOwogCiAgICAgdkltYWdlX0J1ZmZlciBzcmM7CiAgICAg
c3JjLndpZHRoID0gYnVmZmVyU2l6ZS53aWR0aCgpOwogICAgIHNyYy5oZWlnaHQgPSBidWZmZXJT
aXplLmhlaWdodCgpOwogICAgIHNyYy5yb3dCeXRlcyA9IGJ1ZmZlclNpemUud2lkdGgoKSAqIDQ7
Ci0gICAgc3JjLmRhdGEgPSBkYXRhOworICAgIHNyYy5kYXRhID0gcGl4ZWxCeXRlczsKICAgICAK
ICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7CiAgICAgZGVzdC53aWR0aCA9IGJ1ZmZlclNpemUud2lk
dGgoKTsKICAgICBkZXN0LmhlaWdodCA9IGJ1ZmZlclNpemUuaGVpZ2h0KCk7CiAgICAgZGVzdC5y
b3dCeXRlcyA9IGJ1ZmZlclNpemUud2lkdGgoKSAqIDQ7Ci0gICAgZGVzdC5kYXRhID0gZGF0YTsK
KyAgICBkZXN0LmRhdGEgPSBwaXhlbEJ5dGVzOwogCiAgICAgc3dpdGNoIChtX2VmZmVjdC50eXBl
KCkpIHsKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOOgpAQCAtMTkyLDUzICsx
ODgsNTIgQEAgdm9pZCBGRUNvbG9yTWF0cml4U29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3Jt
QWNjZWxlcmF0ZWQoUGl4ZWxCdWZmZXImIHBpeGVsQnUKIAogdm9pZCBGRUNvbG9yTWF0cml4U29m
dHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtVW5hY2NlbGVyYXRlZChQaXhlbEJ1ZmZlciYgcGl4
ZWxCdWZmZXIpIGNvbnN0CiB7Ci0gICAgYXV0byYgcGl4ZWxBcnJheSA9IHBpeGVsQnVmZmVyLmRh
dGEoKTsKLSAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJheS5sZW5ndGgo
KTsKKyAgICBhdXRvIHBpeGVsQnl0ZUxlbmd0aCA9IHBpeGVsQnVmZmVyLmJ5dGVMZW5ndGgoKTsK
IAogICAgIHN3aXRjaCAobV9lZmZlY3QudHlwZSgpKSB7CiAgICAgY2FzZSBGRUNPTE9STUFUUklY
X1RZUEVfVU5LTk9XTjoKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZFQ09MT1JNQVRSSVhf
VFlQRV9NQVRSSVg6Ci0gICAgICAgIGZvciAodW5zaWduZWQgcGl4ZWxCeXRlT2Zmc2V0ID0gMDsg
cGl4ZWxCeXRlT2Zmc2V0IDwgcGl4ZWxBcnJheUxlbmd0aDsgcGl4ZWxCeXRlT2Zmc2V0ICs9IDQp
IHsKLSAgICAgICAgICAgIGZsb2F0IHJlZCA9IHBpeGVsQXJyYXkuaXRlbShwaXhlbEJ5dGVPZmZz
ZXQpOwotICAgICAgICAgICAgZmxvYXQgZ3JlZW4gPSBwaXhlbEFycmF5Lml0ZW0ocGl4ZWxCeXRl
T2Zmc2V0ICsgMSk7Ci0gICAgICAgICAgICBmbG9hdCBibHVlID0gcGl4ZWxBcnJheS5pdGVtKHBp
eGVsQnl0ZU9mZnNldCArIDIpOwotICAgICAgICAgICAgZmxvYXQgYWxwaGEgPSBwaXhlbEFycmF5
Lml0ZW0ocGl4ZWxCeXRlT2Zmc2V0ICsgMyk7CisgICAgICAgIGZvciAodW5zaWduZWQgcGl4ZWxC
eXRlT2Zmc2V0ID0gMDsgcGl4ZWxCeXRlT2Zmc2V0IDwgcGl4ZWxCeXRlTGVuZ3RoOyBwaXhlbEJ5
dGVPZmZzZXQgKz0gNCkgeworICAgICAgICAgICAgZmxvYXQgcmVkICAgPSBwaXhlbEJ1ZmZlci5p
dGVtKHBpeGVsQnl0ZU9mZnNldCk7CisgICAgICAgICAgICBmbG9hdCBncmVlbiA9IHBpeGVsQnVm
ZmVyLml0ZW0ocGl4ZWxCeXRlT2Zmc2V0ICsgMSk7CisgICAgICAgICAgICBmbG9hdCBibHVlICA9
IHBpeGVsQnVmZmVyLml0ZW0ocGl4ZWxCeXRlT2Zmc2V0ICsgMik7CisgICAgICAgICAgICBmbG9h
dCBhbHBoYSA9IHBpeGVsQnVmZmVyLml0ZW0ocGl4ZWxCeXRlT2Zmc2V0ICsgMyk7CiAgICAgICAg
ICAgICBtYXRyaXgocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwotICAgICAgICAgICAgcGl4ZWxB
cnJheS5zZXQocGl4ZWxCeXRlT2Zmc2V0LCByZWQpOwotICAgICAgICAgICAgcGl4ZWxBcnJheS5z
ZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMSwgZ3JlZW4pOwotICAgICAgICAgICAgcGl4ZWxBcnJheS5z
ZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMiwgYmx1ZSk7Ci0gICAgICAgICAgICBwaXhlbEFycmF5LnNl
dChwaXhlbEJ5dGVPZmZzZXQgKyAzLCBhbHBoYSk7CisgICAgICAgICAgICBwaXhlbEJ1ZmZlci5z
ZXQocGl4ZWxCeXRlT2Zmc2V0LCByZWQpOworICAgICAgICAgICAgcGl4ZWxCdWZmZXIuc2V0KHBp
eGVsQnl0ZU9mZnNldCArIDEsIGdyZWVuKTsKKyAgICAgICAgICAgIHBpeGVsQnVmZmVyLnNldChw
aXhlbEJ5dGVPZmZzZXQgKyAyLCBibHVlKTsKKyAgICAgICAgICAgIHBpeGVsQnVmZmVyLnNldChw
aXhlbEJ5dGVPZmZzZXQgKyAzLCBhbHBoYSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURToKICAgICBjYXNlIEZFQ09MT1JN
QVRSSVhfVFlQRV9IVUVST1RBVEU6Ci0gICAgICAgIGZvciAodW5zaWduZWQgcGl4ZWxCeXRlT2Zm
c2V0ID0gMDsgcGl4ZWxCeXRlT2Zmc2V0IDwgcGl4ZWxBcnJheUxlbmd0aDsgcGl4ZWxCeXRlT2Zm
c2V0ICs9IDQpIHsKLSAgICAgICAgICAgIGZsb2F0IHJlZCA9IHBpeGVsQXJyYXkuaXRlbShwaXhl
bEJ5dGVPZmZzZXQpOwotICAgICAgICAgICAgZmxvYXQgZ3JlZW4gPSBwaXhlbEFycmF5Lml0ZW0o
cGl4ZWxCeXRlT2Zmc2V0ICsgMSk7Ci0gICAgICAgICAgICBmbG9hdCBibHVlID0gcGl4ZWxBcnJh
eS5pdGVtKHBpeGVsQnl0ZU9mZnNldCArIDIpOwotICAgICAgICAgICAgZmxvYXQgYWxwaGEgPSBw
aXhlbEFycmF5Lml0ZW0ocGl4ZWxCeXRlT2Zmc2V0ICsgMyk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgcGl4ZWxCeXRlT2Zmc2V0ID0gMDsgcGl4ZWxCeXRlT2Zmc2V0IDwgcGl4ZWxCeXRlTGVuZ3Ro
OyBwaXhlbEJ5dGVPZmZzZXQgKz0gNCkgeworICAgICAgICAgICAgZmxvYXQgcmVkICAgPSBwaXhl
bEJ1ZmZlci5pdGVtKHBpeGVsQnl0ZU9mZnNldCk7CisgICAgICAgICAgICBmbG9hdCBncmVlbiA9
IHBpeGVsQnVmZmVyLml0ZW0ocGl4ZWxCeXRlT2Zmc2V0ICsgMSk7CisgICAgICAgICAgICBmbG9h
dCBibHVlICA9IHBpeGVsQnVmZmVyLml0ZW0ocGl4ZWxCeXRlT2Zmc2V0ICsgMik7CisgICAgICAg
ICAgICBmbG9hdCBhbHBoYSA9IHBpeGVsQnVmZmVyLml0ZW0ocGl4ZWxCeXRlT2Zmc2V0ICsgMyk7
CiAgICAgICAgICAgICBzYXR1cmF0ZUFuZEh1ZVJvdGF0ZShyZWQsIGdyZWVuLCBibHVlKTsKLSAg
ICAgICAgICAgIHBpeGVsQXJyYXkuc2V0KHBpeGVsQnl0ZU9mZnNldCwgcmVkKTsKLSAgICAgICAg
ICAgIHBpeGVsQXJyYXkuc2V0KHBpeGVsQnl0ZU9mZnNldCArIDEsIGdyZWVuKTsKLSAgICAgICAg
ICAgIHBpeGVsQXJyYXkuc2V0KHBpeGVsQnl0ZU9mZnNldCArIDIsIGJsdWUpOwotICAgICAgICAg
ICAgcGl4ZWxBcnJheS5zZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMywgYWxwaGEpOworICAgICAgICAg
ICAgcGl4ZWxCdWZmZXIuc2V0KHBpeGVsQnl0ZU9mZnNldCwgcmVkKTsKKyAgICAgICAgICAgIHBp
eGVsQnVmZmVyLnNldChwaXhlbEJ5dGVPZmZzZXQgKyAxLCBncmVlbik7CisgICAgICAgICAgICBw
aXhlbEJ1ZmZlci5zZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMiwgYmx1ZSk7CisgICAgICAgICAgICBw
aXhlbEJ1ZmZlci5zZXQocGl4ZWxCeXRlT2Zmc2V0ICsgMywgYWxwaGEpOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9B
TFBIQToKLSAgICAgICAgZm9yICh1bnNpZ25lZCBwaXhlbEJ5dGVPZmZzZXQgPSAwOyBwaXhlbEJ5
dGVPZmZzZXQgPCBwaXhlbEFycmF5TGVuZ3RoOyBwaXhlbEJ5dGVPZmZzZXQgKz0gNCkgewotICAg
ICAgICAgICAgZmxvYXQgcmVkID0gcGl4ZWxBcnJheS5pdGVtKHBpeGVsQnl0ZU9mZnNldCk7Ci0g
ICAgICAgICAgICBmbG9hdCBncmVlbiA9IHBpeGVsQXJyYXkuaXRlbShwaXhlbEJ5dGVPZmZzZXQg
KyAxKTsKLSAgICAgICAgICAgIGZsb2F0IGJsdWUgPSBwaXhlbEFycmF5Lml0ZW0ocGl4ZWxCeXRl
T2Zmc2V0ICsgMik7Ci0gICAgICAgICAgICBmbG9hdCBhbHBoYSA9IHBpeGVsQXJyYXkuaXRlbShw
aXhlbEJ5dGVPZmZzZXQgKyAzKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBwaXhlbEJ5dGVPZmZz
ZXQgPSAwOyBwaXhlbEJ5dGVPZmZzZXQgPCBwaXhlbEJ5dGVMZW5ndGg7IHBpeGVsQnl0ZU9mZnNl
dCArPSA0KSB7CisgICAgICAgICAgICBmbG9hdCByZWQgICA9IHBpeGVsQnVmZmVyLml0ZW0ocGl4
ZWxCeXRlT2Zmc2V0KTsKKyAgICAgICAgICAgIGZsb2F0IGdyZWVuID0gcGl4ZWxCdWZmZXIuaXRl
bShwaXhlbEJ5dGVPZmZzZXQgKyAxKTsKKyAgICAgICAgICAgIGZsb2F0IGJsdWUgID0gcGl4ZWxC
dWZmZXIuaXRlbShwaXhlbEJ5dGVPZmZzZXQgKyAyKTsKKyAgICAgICAgICAgIGZsb2F0IGFscGhh
ID0gcGl4ZWxCdWZmZXIuaXRlbShwaXhlbEJ5dGVPZmZzZXQgKyAzKTsKICAgICAgICAgICAgIGx1
bWluYW5jZShyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Ci0gICAgICAgICAgICBwaXhlbEFycmF5
LnNldChwaXhlbEJ5dGVPZmZzZXQsIHJlZCk7Ci0gICAgICAgICAgICBwaXhlbEFycmF5LnNldChw
aXhlbEJ5dGVPZmZzZXQgKyAxLCBncmVlbik7Ci0gICAgICAgICAgICBwaXhlbEFycmF5LnNldChw
aXhlbEJ5dGVPZmZzZXQgKyAyLCBibHVlKTsKLSAgICAgICAgICAgIHBpeGVsQXJyYXkuc2V0KHBp
eGVsQnl0ZU9mZnNldCArIDMsIGFscGhhKTsKKyAgICAgICAgICAgIHBpeGVsQnVmZmVyLnNldChw
aXhlbEJ5dGVPZmZzZXQsIHJlZCk7CisgICAgICAgICAgICBwaXhlbEJ1ZmZlci5zZXQocGl4ZWxC
eXRlT2Zmc2V0ICsgMSwgZ3JlZW4pOworICAgICAgICAgICAgcGl4ZWxCdWZmZXIuc2V0KHBpeGVs
Qnl0ZU9mZnNldCArIDIsIGJsdWUpOworICAgICAgICAgICAgcGl4ZWxCdWZmZXIuc2V0KHBpeGVs
Qnl0ZU9mZnNldCArIDMsIGFscGhhKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvbmVudFRyYW5z
ZmVyU29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCA0ZjRiMzIwMTNlMWEuLjEyODcxNTFhOGU5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRUNvbXBvbmVudFRyYW5zZmVyU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9uZW50VHJh
bnNmZXJTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC00LDcgKzQsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDA1IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTExNCwxNiArMTE0LDE1IEBAIEZFQ29tcG9uZW50VHJhbnNmZXJT
b2Z0d2FyZUFwcGxpZXI6Okxvb2t1cFRhYmxlIEZFQ29tcG9uZW50VHJhbnNmZXJTb2Z0d2FyZUFw
cGxpCiAKIHZvaWQgRkVDb21wb25lbnRUcmFuc2ZlclNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0
Zm9ybShQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIpIGNvbnN0CiB7Ci0gICAgYXV0byYgcGl4ZWxB
cnJheSA9IHBpeGVsQnVmZmVyLmRhdGEoKTsKLSAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3Ro
ID0gcGl4ZWxBcnJheS5sZW5ndGgoKTsKLSAgICB1aW50OF90KiBkYXRhID0gcGl4ZWxBcnJheS5k
YXRhKCk7CisgICAgYXV0byogZGF0YSA9IHBpeGVsQnVmZmVyLmJ5dGVzKCk7CisgICAgYXV0byBw
aXhlbEJ5dGVMZW5ndGggPSBwaXhlbEJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAKICAgICBhdXRvIHJl
ZFRhYmxlICAgPSBjb21wdXRlTG9va3VwVGFibGUobV9lZmZlY3QucmVkRnVuY3Rpb24oKSk7CiAg
ICAgYXV0byBncmVlblRhYmxlID0gY29tcHV0ZUxvb2t1cFRhYmxlKG1fZWZmZWN0LmdyZWVuRnVu
Y3Rpb24oKSk7CiAgICAgYXV0byBibHVlVGFibGUgID0gY29tcHV0ZUxvb2t1cFRhYmxlKG1fZWZm
ZWN0LmJsdWVGdW5jdGlvbigpKTsKICAgICBhdXRvIGFscGhhVGFibGUgPSBjb21wdXRlTG9va3Vw
VGFibGUobV9lZmZlY3QuYWxwaGFGdW5jdGlvbigpKTsKIAotICAgIGZvciAodW5zaWduZWQgcGl4
ZWxPZmZzZXQgPSAwOyBwaXhlbE9mZnNldCA8IHBpeGVsQXJyYXlMZW5ndGg7IHBpeGVsT2Zmc2V0
ICs9IDQpIHsKKyAgICBmb3IgKHVuc2lnbmVkIHBpeGVsT2Zmc2V0ID0gMDsgcGl4ZWxPZmZzZXQg
PCBwaXhlbEJ5dGVMZW5ndGg7IHBpeGVsT2Zmc2V0ICs9IDQpIHsKICAgICAgICAgZGF0YVtwaXhl
bE9mZnNldF0gICAgID0gcmVkVGFibGVbZGF0YVtwaXhlbE9mZnNldF1dOwogICAgICAgICBkYXRh
W3BpeGVsT2Zmc2V0ICsgMV0gPSBncmVlblRhYmxlW2RhdGFbcGl4ZWxPZmZzZXQgKyAxXV07CiAg
ICAgICAgIGRhdGFbcGl4ZWxPZmZzZXQgKyAyXSA9IGJsdWVUYWJsZVtkYXRhW3BpeGVsT2Zmc2V0
ICsgMl1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29tcG9zaXRlU29mdHdh
cmVBcHBsaWVyLmNwcAppbmRleCAyOGExNmNlNzViYmMuLmI1ZDZjYzJkNWY1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNv
bXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbXBvc2l0ZVNvZnR3YXJlQXBwbGllci5jcHAK
QEAgLTE0MCwxMyArMTQwLDEzIEBAIGJvb2wgRkVDb21wb3NpdGVTb2Z0d2FyZUFwcGxpZXI6OmFw
cGx5QXJpdGhtZXRpYyhGaWx0ZXJJbWFnZSYgaW5wdXQsIEZpbHRlckltYWdlCiAgICAgSW50UmVj
dCBlZmZlY3RCRHJhd2luZ1JlY3QgPSByZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3RSZWxhdGl2ZVRv
KGlucHV0Mik7CiAgICAgaW5wdXQyLmNvcHlQaXhlbEJ1ZmZlcigqZGVzdGluYXRpb25QaXhlbEJ1
ZmZlciwgZWZmZWN0QkRyYXdpbmdSZWN0KTsKIAotICAgIGF1dG8mIHNvdXJjZVBpeGVsQXJyYXkg
PSBzb3VyY2VQaXhlbEJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8mIGRlc3RpbmF0aW9uUGl4ZWxB
cnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIHNvdXJjZVBp
eGVsQnl0ZXMgPSBzb3VyY2VQaXhlbEJ1ZmZlci0+Ynl0ZXMoKTsKKyAgICBhdXRvIGRlc3RpbmF0
aW9uUGl4ZWxCeXRlcyA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmJ5dGVzKCk7CiAKLSAgICBp
bnQgbGVuZ3RoID0gc291cmNlUGl4ZWxBcnJheS5sZW5ndGgoKTsKLSAgICBBU1NFUlQobGVuZ3Ro
ID09IHN0YXRpY19jYXN0PGludD4oZGVzdGluYXRpb25QaXhlbEFycmF5Lmxlbmd0aCgpKSk7Cisg
ICAgYXV0byBsZW5ndGggPSBzb3VyY2VQaXhlbEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIEFT
U0VSVChsZW5ndGggPT0gZGVzdGluYXRpb25QaXhlbEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICNp
ZiAhSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIGFwcGx5UGxhdGZvcm1Bcml0aG1ldGlj
KHNvdXJjZVBpeGVsQXJyYXkuZGF0YSgpLCBkZXN0aW5hdGlvblBpeGVsQXJyYXkuZGF0YSgpLCBs
ZW5ndGgsIG1fZWZmZWN0LmsxKCksIG1fZWZmZWN0LmsyKCksIG1fZWZmZWN0LmszKCksIG1fZWZm
ZWN0Lms0KCkpOworICAgIGFwcGx5UGxhdGZvcm1Bcml0aG1ldGljKHNvdXJjZVBpeGVsQnl0ZXMs
IGRlc3RpbmF0aW9uUGl4ZWxCeXRlcywgbGVuZ3RoLCBtX2VmZmVjdC5rMSgpLCBtX2VmZmVjdC5r
MigpLCBtX2VmZmVjdC5rMygpLCBtX2VmZmVjdC5rNCgpKTsKICNlbmRpZgogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVDb252b2x2ZU1h
dHJpeFNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggZTYxNDEyMDRkMDViLi42YmUwYjMyMWNkMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29m
dHdhcmUvRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4
U29mdHdhcmVBcHBsaWVyLmNwcApAQCAtNCw3ICs0LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAw
NSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA5IERp
cmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDEwIFpvbHRh
biBIZXJjemVnIDx6aGVyY3plZ0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAy
MiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC05OSwxNyArOTksMTcgQEAgaW5saW5lIHVpbnQ4X3QgRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJl
QXBwbGllcjo6Y2xhbXBSR0JBVmFsdWUoZmxvYXQgY2hhbm5lbCwgdWkKICAgICByZXR1cm4gY2hh
bm5lbDsKIH0KIAotaW5saW5lIHZvaWQgRkVDb252b2x2ZU1hdHJpeFNvZnR3YXJlQXBwbGllcjo6
c2V0RGVzdGluYXRpb25QaXhlbHMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZVBpeGVs
cywgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RQaXhlbHMsIGludCYgcGl4ZWwsIGZsb2F0KiB0b3Rh
bHMsIGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIGJvb2wgcHJlc2VydmVBbHBoYVZhbHVlcykK
K2lubGluZSB2b2lkIEZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6OnNldERlc3RpbmF0
aW9uUGl4ZWxzKGNvbnN0IFBpeGVsQnVmZmVyJiBzb3VyY2VQaXhlbEJ1ZmZlciwgUGl4ZWxCdWZm
ZXImIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIGludCYgcGl4ZWwsIGZsb2F0KiB0b3RhbHMsIGZs
b2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIGJvb2wgcHJlc2VydmVBbHBoYVZhbHVlcykKIHsKICAg
ICB1aW50OF90IG1heEFscGhhID0gcHJlc2VydmVBbHBoYVZhbHVlcyA/IDI1NSA6IGNsYW1wUkdC
QVZhbHVlKHRvdGFsc1szXSAvIGRpdmlzb3IgKyBiaWFzKTsKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDM7ICsraSkKLSAgICAgICAgZGVzdFBpeGVscy5zZXQocGl4ZWwrKywgY2xhbXBSR0JBVmFs
dWUodG90YWxzW2ldIC8gZGl2aXNvciArIGJpYXMsIG1heEFscGhhKSk7CisgICAgICAgIGRlc3Rp
bmF0aW9uUGl4ZWxCdWZmZXIuc2V0KHBpeGVsKyssIGNsYW1wUkdCQVZhbHVlKHRvdGFsc1tpXSAv
IGRpdmlzb3IgKyBiaWFzLCBtYXhBbHBoYSkpOwogCiAgICAgaWYgKHByZXNlcnZlQWxwaGFWYWx1
ZXMpIHsKLSAgICAgICAgZGVzdFBpeGVscy5zZXQocGl4ZWwsIHNvdXJjZVBpeGVscy5pdGVtKHBp
eGVsKSk7CisgICAgICAgIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIuc2V0KHBpeGVsLCBzb3VyY2VQ
aXhlbEJ1ZmZlci5pdGVtKHBpeGVsKSk7CiAgICAgICAgICsrcGl4ZWw7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGRlc3RQaXhlbHMuc2V0KHBpeGVsKyssIG1heEFscGhhKTsKKyAgICAgICAgZGVzdGlu
YXRpb25QaXhlbEJ1ZmZlci5zZXQocGl4ZWwrKywgbWF4QWxwaGEpOwogfQogCiBpbmxpbmUgaW50
IEZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6OmdldFBpeGVsVmFsdWUoY29uc3QgUGFp
bnRpbmdEYXRhJiBwYWludGluZ0RhdGEsIGludCB4LCBpbnQgeSkKQEAgLTE3MCwxMSArMTcwLDEx
IEBAIGlubGluZSB2b2lkIEZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6OnNldEludGVy
aW9yUGl4ZWxzKFBhaW50aW5nRGF0YSYgcGFpCiAgICAgICAgICAgICB0b3RhbHNbM10gPSAwOwog
CiAgICAgICAgICAgICB3aGlsZSAoa2VybmVsVmFsdWUgPj0gMCkgewotICAgICAgICAgICAgICAg
IHRvdGFsc1swXSArPSBwYWludGluZ0RhdGEua2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0
YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS5pdGVtKGtlcm5lbFBp
eGVsKyspKTsKLSAgICAgICAgICAgICAgICB0b3RhbHNbMV0gKz0gcGFpbnRpbmdEYXRhLmtlcm5l
bE1hdHJpeFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNy
Y1BpeGVsQXJyYXkuaXRlbShrZXJuZWxQaXhlbCsrKSk7Ci0gICAgICAgICAgICAgICAgdG90YWxz
WzJdICs9IHBhaW50aW5nRGF0YS5rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5Lml0ZW0oa2VybmVsUGl4ZWwrKykp
OworICAgICAgICAgICAgICAgIHRvdGFsc1swXSArPSBwYWludGluZ0RhdGEua2VybmVsTWF0cml4
W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc291cmNlUGl4
ZWxCdWZmZXIuaXRlbShrZXJuZWxQaXhlbCsrKSk7CisgICAgICAgICAgICAgICAgdG90YWxzWzFd
ICs9IHBhaW50aW5nRGF0YS5rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHBhaW50aW5nRGF0YS5zb3VyY2VQaXhlbEJ1ZmZlci5pdGVtKGtlcm5lbFBpeGVsKysp
KTsKKyAgICAgICAgICAgICAgICB0b3RhbHNbMl0gKz0gcGFpbnRpbmdEYXRhLmtlcm5lbE1hdHJp
eFtrZXJuZWxWYWx1ZV0gKiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFpbnRpbmdEYXRhLnNvdXJjZVBp
eGVsQnVmZmVyLml0ZW0oa2VybmVsUGl4ZWwrKykpOwogICAgICAgICAgICAgICAgIGlmICghcGFp
bnRpbmdEYXRhLnByZXNlcnZlQWxwaGEpCi0gICAgICAgICAgICAgICAgICAgIHRvdGFsc1szXSAr
PSBwYWludGluZ0RhdGEua2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZs
b2F0PihwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheS5pdGVtKGtlcm5lbFBpeGVsKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRvdGFsc1szXSArPSBwYWludGluZ0RhdGEua2VybmVsTWF0cml4W2tl
cm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc291cmNlUGl4ZWxC
dWZmZXIuaXRlbShrZXJuZWxQaXhlbCkpOwogICAgICAgICAgICAgICAgICsra2VybmVsUGl4ZWw7
CiAgICAgICAgICAgICAgICAgLS1rZXJuZWxWYWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoIS0t
d2lkdGgpIHsKQEAgLTE4Myw3ICsxODMsNyBAQCBpbmxpbmUgdm9pZCBGRUNvbnZvbHZlTWF0cml4
U29mdHdhcmVBcHBsaWVyOjpzZXRJbnRlcmlvclBpeGVscyhQYWludGluZ0RhdGEmIHBhaQogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc2V0RGVzdGluYXRp
b25QaXhlbHMocGFpbnRpbmdEYXRhLnNyY1BpeGVsQXJyYXksIHBhaW50aW5nRGF0YS5kc3RQaXhl
bEFycmF5LCBwaXhlbCwgdG90YWxzLCBwYWludGluZ0RhdGEuZGl2aXNvciwgcGFpbnRpbmdEYXRh
LmJpYXMsIHBhaW50aW5nRGF0YS5wcmVzZXJ2ZUFscGhhKTsKKyAgICAgICAgICAgIHNldERlc3Rp
bmF0aW9uUGl4ZWxzKHBhaW50aW5nRGF0YS5zb3VyY2VQaXhlbEJ1ZmZlciwgcGFpbnRpbmdEYXRh
LmRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIHBpeGVsLCB0b3RhbHMsIHBhaW50aW5nRGF0YS5kaXZp
c29yLCBwYWludGluZ0RhdGEuYmlhcywgcGFpbnRpbmdEYXRhLnByZXNlcnZlQWxwaGEpOwogICAg
ICAgICAgICAgc3RhcnRLZXJuZWxQaXhlbCArPSA0OwogICAgICAgICB9CiAgICAgICAgIHBpeGVs
ICs9IHhJbmNyZWFzZTsKQEAgLTIyMiwxMiArMjIyLDEyIEBAIGlubGluZSB2b2lkIEZFQ29udm9s
dmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6OnNldE91dGVyUGl4ZWxzKFBhaW50aW5nRGF0YSYgcGFp
bnRpCiAgICAgICAgICAgICB3aGlsZSAoa2VybmVsVmFsdWUgPj0gMCkgewogICAgICAgICAgICAg
ICAgIGludCBwaXhlbEluZGV4ID0gZ2V0UGl4ZWxWYWx1ZShwYWludGluZ0RhdGEsIGtlcm5lbFBp
eGVsWCwga2VybmVsUGl4ZWxZKTsKICAgICAgICAgICAgICAgICBpZiAocGl4ZWxJbmRleCA+PSAw
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvdGFsc1swXSArPSBwYWludGluZ0RhdGEua2VybmVs
TWF0cml4W2tlcm5lbFZhbHVlXSAqIHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc3Jj
UGl4ZWxBcnJheS5pdGVtKHBpeGVsSW5kZXgpKTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxz
WzFdICs9IHBhaW50aW5nRGF0YS5rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5Lml0ZW0ocGl4ZWxJbmRleCArIDEp
KTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxzWzJdICs9IHBhaW50aW5nRGF0YS5rZXJuZWxN
YXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQ
aXhlbEFycmF5Lml0ZW0ocGl4ZWxJbmRleCArIDIpKTsKKyAgICAgICAgICAgICAgICAgICAgdG90
YWxzWzBdICs9IHBhaW50aW5nRGF0YS5rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zb3VyY2VQaXhlbEJ1ZmZlci5pdGVtKHBpeGVsSW5k
ZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxzWzFdICs9IHBhaW50aW5nRGF0YS5rZXJu
ZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5z
b3VyY2VQaXhlbEJ1ZmZlci5pdGVtKHBpeGVsSW5kZXggKyAxKSk7CisgICAgICAgICAgICAgICAg
ICAgIHRvdGFsc1syXSArPSBwYWludGluZ0RhdGEua2VybmVsTWF0cml4W2tlcm5lbFZhbHVlXSAq
IHN0YXRpY19jYXN0PGZsb2F0PihwYWludGluZ0RhdGEuc291cmNlUGl4ZWxCdWZmZXIuaXRlbShw
aXhlbEluZGV4ICsgMikpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
IXBhaW50aW5nRGF0YS5wcmVzZXJ2ZUFscGhhICYmIHBpeGVsSW5kZXggPj0gMCkKLSAgICAgICAg
ICAgICAgICAgICAgdG90YWxzWzNdICs9IHBhaW50aW5nRGF0YS5rZXJuZWxNYXRyaXhba2VybmVs
VmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhaW50aW5nRGF0YS5zcmNQaXhlbEFycmF5Lml0
ZW0ocGl4ZWxJbmRleCArIDMpKTsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxzWzNdICs9IHBh
aW50aW5nRGF0YS5rZXJuZWxNYXRyaXhba2VybmVsVmFsdWVdICogc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHBhaW50aW5nRGF0YS5zb3VyY2VQaXhlbEJ1ZmZlci5pdGVtKHBpeGVsSW5kZXggKyAzKSk7CiAg
ICAgICAgICAgICAgICAgKytrZXJuZWxQaXhlbFg7CiAgICAgICAgICAgICAgICAgLS1rZXJuZWxW
YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoIS0td2lkdGgpIHsKQEAgLTIzNyw3ICsyMzcsNyBA
QCBpbmxpbmUgdm9pZCBGRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyOjpzZXRPdXRlclBp
eGVscyhQYWludGluZ0RhdGEmIHBhaW50aQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgc2V0RGVzdGluYXRpb25QaXhlbHMocGFpbnRpbmdEYXRhLnNyY1Bp
eGVsQXJyYXksIHBhaW50aW5nRGF0YS5kc3RQaXhlbEFycmF5LCBwaXhlbCwgdG90YWxzLCBwYWlu
dGluZ0RhdGEuZGl2aXNvciwgcGFpbnRpbmdEYXRhLmJpYXMsIHBhaW50aW5nRGF0YS5wcmVzZXJ2
ZUFscGhhKTsKKyAgICAgICAgICAgIHNldERlc3RpbmF0aW9uUGl4ZWxzKHBhaW50aW5nRGF0YS5z
b3VyY2VQaXhlbEJ1ZmZlciwgcGFpbnRpbmdEYXRhLmRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIHBp
eGVsLCB0b3RhbHMsIHBhaW50aW5nRGF0YS5kaXZpc29yLCBwYWludGluZ0RhdGEuYmlhcywgcGFp
bnRpbmdEYXRhLnByZXNlcnZlQWxwaGEpOwogICAgICAgICAgICAgKytzdGFydEtlcm5lbFBpeGVs
WDsKICAgICAgICAgfQogICAgICAgICBwaXhlbCArPSB4SW5jcmVhc2U7CkBAIC0zMDAsMTQgKzMw
MCwxMSBAQCBib29sIEZFQ29udm9sdmVNYXRyaXhTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0
IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdAogICAgIGlmICghc291cmNlUGl4ZWxCdWZm
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8mIHNvdXJjZVBpeGVsQXJyYXkg
PSBzb3VyY2VQaXhlbEJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8mIGRlc3RpbmF0aW9uUGl4ZWxB
cnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmRhdGEoKTsKLSAgICAKICAgICBhdXRvIHBh
aW50U2l6ZSA9IHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLnNpemUoKTsKIAogICAgIFBhaW50
aW5nRGF0YSBwYWludGluZ0RhdGEgPSB7Ci0gICAgICAgIHNvdXJjZVBpeGVsQXJyYXksCi0gICAg
ICAgIGRlc3RpbmF0aW9uUGl4ZWxBcnJheSwKKyAgICAgICAgKnNvdXJjZVBpeGVsQnVmZmVyLAor
ICAgICAgICAqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwKICAgICAgICAgcGFpbnRTaXplLndpZHRo
KCksCiAgICAgICAgIHBhaW50U2l6ZS5oZWlnaHQoKSwKICAgICAgICAgbV9lZmZlY3Qua2VybmVs
U2l6ZSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFQ29udm9sdmVNYXRy
aXhTb2Z0d2FyZUFwcGxpZXIuaAppbmRleCA1M2ExOGE2Mjk0OTYuLjg4YzM1MmY4NDczZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUNvbnZvbHZlTWF0cml4U29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRUNvbnZvbHZlTWF0cml4U29mdHdh
cmVBcHBsaWVyLmgKQEAgLTQ1LDggKzQ1LDggQEAgcHJpdmF0ZToKICAgICBib29sIGFwcGx5KGNv
bnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdl
JiByZXN1bHQpIGNvbnN0IGZpbmFsOwogCiAgICAgc3RydWN0IFBhaW50aW5nRGF0YSB7Ci0gICAg
ICAgIGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzcmNQaXhlbEFycmF5OwotICAgICAgICBVaW50
OENsYW1wZWRBcnJheSYgZHN0UGl4ZWxBcnJheTsKKyAgICAgICAgY29uc3QgUGl4ZWxCdWZmZXIm
IHNvdXJjZVBpeGVsQnVmZmVyOworICAgICAgICBQaXhlbEJ1ZmZlciYgZGVzdGluYXRpb25QaXhl
bEJ1ZmZlcjsKICAgICAgICAgaW50IHdpZHRoOwogICAgICAgICBpbnQgaGVpZ2h0OwogCkBAIC02
MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHN0YXRpYyBpbmxpbmUgdWludDhf
dCBjbGFtcFJHQkFWYWx1ZShmbG9hdCBjaGFubmVsLCB1aW50OF90IG1heCA9IDI1NSk7Ci0gICAg
c3RhdGljIGlubGluZSB2b2lkIHNldERlc3RpbmF0aW9uUGl4ZWxzKGNvbnN0IFVpbnQ4Q2xhbXBl
ZEFycmF5JiBzb3VyY2VQaXhlbHMsIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0UGl4ZWxzLCBpbnQm
IHBpeGVsLCBmbG9hdCogdG90YWxzLCBmbG9hdCBkaXZpc29yLCBmbG9hdCBiaWFzLCBib29sIHBy
ZXNlcnZlQWxwaGFWYWx1ZXMpOworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXREZXN0aW5hdGlv
blBpeGVscyhjb25zdCBQaXhlbEJ1ZmZlciYgc291cmNlUGl4ZWxCdWZmZXIsIFBpeGVsQnVmZmVy
JiBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBpbnQmIHBpeGVsLCBmbG9hdCogdG90YWxzLCBmbG9h
dCBkaXZpc29yLCBmbG9hdCBiaWFzLCBib29sIHByZXNlcnZlQWxwaGFWYWx1ZXMpOwogCiAgICAg
c3RhdGljIGlubGluZSBpbnQgZ2V0UGl4ZWxWYWx1ZShjb25zdCBQYWludGluZ0RhdGEmLCBpbnQg
eCwgaW50IHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVEaXNw
bGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDEyMTY0ZTM3OGMyOS4uN2I4NjQ1
ODAxYWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL3NvZnR3YXJlL0ZFRGlzcGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRGlzcGxh
Y2VtZW50TWFwU29mdHdhcmVBcHBsaWVyLmNwcApAQCAtNTgsOCArNTgsNiBAQCBib29sIEZFRGlz
cGxhY2VtZW50TWFwU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwg
Y29uc3QgRmlsdGVySQogICAgIGlmICghZGVzdGluYXRpb25QaXhlbEJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byYgZGVzdGluYXRpb25QaXhlbEFycmF5ID0gZGVzdGlu
YXRpb25QaXhlbEJ1ZmZlci0+ZGF0YSgpOwotCiAgICAgYXV0byBlZmZlY3RBRHJhd2luZ1JlY3Qg
PSByZXN1bHQuYWJzb2x1dGVJbWFnZVJlY3RSZWxhdGl2ZVRvKGlucHV0KTsKICAgICBhdXRvIGlu
cHV0UGl4ZWxCdWZmZXIgPSBpbnB1dC5nZXRQaXhlbEJ1ZmZlcihBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkLCBlZmZlY3RBRHJhd2luZ1JlY3QpOwogCkBAIC03MCw5ICs2OCw3
IEBAIGJvb2wgRkVEaXNwbGFjZW1lbnRNYXBTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZp
bHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJCiAgICAgaWYgKCFpbnB1dFBpeGVsQnVmZmVyIHx8
ICFkaXNwbGFjZW1lbnRQaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
YXV0byYgaW5wdXRQaXhlbEFycmF5ID0gaW5wdXRQaXhlbEJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1
dG8mIGRpc3BsYWNlbWVudFBpeGVsQXJyYXkgPSBkaXNwbGFjZW1lbnRQaXhlbEJ1ZmZlci0+ZGF0
YSgpOwotICAgIEFTU0VSVChpbnB1dFBpeGVsQXJyYXkubGVuZ3RoKCkgPT0gZGlzcGxhY2VtZW50
UGl4ZWxBcnJheS5sZW5ndGgoKSk7CisgICAgQVNTRVJUKGlucHV0UGl4ZWxCdWZmZXItPmJ5dGVM
ZW5ndGgoKSA9PSBkaXNwbGFjZW1lbnRQaXhlbEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKIAogICAg
IGF1dG8gcGFpbnRTaXplID0gcmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0KCkuc2l6ZSgpOwogICAg
IGF1dG8gc2NhbGUgPSBmaWx0ZXIucmVzb2x2ZWRTaXplKHsgbV9lZmZlY3Quc2NhbGUoKSwgbV9l
ZmZlY3Quc2NhbGUoKSB9KTsKQEAgLTk0LDE2ICs5MCwxNiBAQCBib29sIEZFRGlzcGxhY2VtZW50
TWFwU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmls
dGVySQogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHBhaW50U2l6ZS53aWR0aCgpOyArK3gp
IHsKICAgICAgICAgICAgIGludCBkZXN0aW5hdGlvbkluZGV4ID0gbGluZVN0YXJ0T2Zmc2V0ICsg
eCAqIDQ7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGludCBzcmNYID0geCArIHN0YXRpY19j
YXN0PGludD4oc2NhbGVGb3JDb2xvclggKiBkaXNwbGFjZW1lbnRQaXhlbEFycmF5Lml0ZW0oZGVz
dGluYXRpb25JbmRleCArIGRpc3BsYWNlbWVudENoYW5uZWxYKSArIHNjYWxlZE9mZnNldFgpOwot
ICAgICAgICAgICAgaW50IHNyY1kgPSB5ICsgc3RhdGljX2Nhc3Q8aW50PihzY2FsZUZvckNvbG9y
WSAqIGRpc3BsYWNlbWVudFBpeGVsQXJyYXkuaXRlbShkZXN0aW5hdGlvbkluZGV4ICsgZGlzcGxh
Y2VtZW50Q2hhbm5lbFkpICsgc2NhbGVkT2Zmc2V0WSk7CisgICAgICAgICAgICBpbnQgc3JjWCA9
IHggKyBzdGF0aWNfY2FzdDxpbnQ+KHNjYWxlRm9yQ29sb3JYICogZGlzcGxhY2VtZW50UGl4ZWxC
dWZmZXItPml0ZW0oZGVzdGluYXRpb25JbmRleCArIGRpc3BsYWNlbWVudENoYW5uZWxYKSArIHNj
YWxlZE9mZnNldFgpOworICAgICAgICAgICAgaW50IHNyY1kgPSB5ICsgc3RhdGljX2Nhc3Q8aW50
PihzY2FsZUZvckNvbG9yWSAqIGRpc3BsYWNlbWVudFBpeGVsQnVmZmVyLT5pdGVtKGRlc3RpbmF0
aW9uSW5kZXggKyBkaXNwbGFjZW1lbnRDaGFubmVsWSkgKyBzY2FsZWRPZmZzZXRZKTsKIAotICAg
ICAgICAgICAgdW5zaWduZWQqIGRlc3RpbmF0aW9uUGl4ZWxQdHIgPSByZWludGVycHJldF9jYXN0
PHVuc2lnbmVkKj4oZGVzdGluYXRpb25QaXhlbEFycmF5LmRhdGEoKSArIGRlc3RpbmF0aW9uSW5k
ZXgpOworICAgICAgICAgICAgdW5zaWduZWQqIGRlc3RpbmF0aW9uUGl4ZWxQdHIgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkKj4oZGVzdGluYXRpb25QaXhlbEJ1ZmZlci0+Ynl0ZXMoKSArIGRl
c3RpbmF0aW9uSW5kZXgpOwogICAgICAgICAgICAgaWYgKHNyY1ggPCAwIHx8IHNyY1ggPj0gcGFp
bnRTaXplLndpZHRoKCkgfHwgc3JjWSA8IDAgfHwgc3JjWSA+PSBwYWludFNpemUuaGVpZ2h0KCkp
IHsKICAgICAgICAgICAgICAgICAqZGVzdGluYXRpb25QaXhlbFB0ciA9IDA7CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICpkZXN0aW5hdGlv
blBpeGVsUHRyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPihpbnB1dFBpeGVsQXJyYXku
ZGF0YSgpICsgYnl0ZU9mZnNldE9mUGl4ZWwoc3JjWCwgc3JjWSwgcm93Qnl0ZXMpKTsKKyAgICAg
ICAgICAgICpkZXN0aW5hdGlvblBpeGVsUHRyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQq
PihpbnB1dFBpeGVsQnVmZmVyLT5ieXRlcygpICsgYnl0ZU9mZnNldE9mUGl4ZWwoc3JjWCwgc3Jj
WSwgcm93Qnl0ZXMpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0
d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDQ0N2M4OTVk
MTk4NC4uNmRiMDNjNDQzOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFRHJvcFNoYWRvd1NvZnR3YXJlQXBwbGllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9G
RURyb3BTaGFkb3dTb2Z0d2FyZUFwcGxpZXIuY3BwCkBAIC02NSw5ICs2NSw4IEBAIGJvb2wgRkVE
cm9wU2hhZG93U29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29u
c3QgRmlsdGVySW1hZ2VWCiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byYgc291cmNlUGl4ZWxBcnJheSA9IHBpeGVsQnVmZmVyLT5kYXRhKCk7
Ci0gICAgY29udGV4dFNoYWRvdy5ibHVyTGF5ZXJJbWFnZShzb3VyY2VQaXhlbEFycmF5LmRhdGEo
KSwgcGl4ZWxCdWZmZXItPnNpemUoKSwgNCAqIHBpeGVsQnVmZmVyLT5zaXplKCkud2lkdGgoKSk7
Ci0gICAgCisgICAgY29udGV4dFNoYWRvdy5ibHVyTGF5ZXJJbWFnZShwaXhlbEJ1ZmZlci0+Ynl0
ZXMoKSwgcGl4ZWxCdWZmZXItPnNpemUoKSwgNCAqIHBpeGVsQnVmZmVyLT5zaXplKCkud2lkdGgo
KSk7CisKICAgICByZXN1bHRJbWFnZS0+cHV0UGl4ZWxCdWZmZXIoKnBpeGVsQnVmZmVyLCBzaGFk
b3dBcmVhKTsKIAogICAgIHJlc3VsdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZU9wZXJhdG9yOjpTb3VyY2VJbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBs
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdh
cmUvRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IGE4NmE5ZmQwYWVhNS4u
ZGYwZDk5ZmU0MWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1
c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyLmNwcApAQCAtNzMsMTAgKzczLDEwIEBAIGlubGluZSB2
b2lkIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjprZXJuZWxQb3NpdGlvbihpbnQgYmx1
ckl0ZXJhdGlvbiwgdW5zCiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gb25seSBvcGVyYXRlcyBvbiBB
bHBoYSBjaGFubmVsLgotaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6
OmJveEJsdXJBbHBoYU9ubHkoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNyY1BpeGVsQXJyYXks
IFVpbnQ4Q2xhbXBlZEFycmF5JiBkc3RQaXhlbEFycmF5LCB1bnNpZ25lZCBkeCwgaW50JiBkeExl
ZnQsIGludCYgZHhSaWdodCwgaW50JiBzdHJpZGUsIGludCYgc3RyaWRlTGluZSwgaW50JiBlZmZl
Y3RXaWR0aCwgaW50JiBlZmZlY3RIZWlnaHQsIGNvbnN0IGludCYgbWF4S2VybmVsU2l6ZSkKK2lu
bGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjpib3hCbHVyQWxwaGFPbmx5
KGNvbnN0IFBpeGVsQnVmZmVyJiBzcmNQaXhlbEJ1ZmZlciwgUGl4ZWxCdWZmZXImIGRzdFBpeGVs
QnVmZmVyLCB1bnNpZ25lZCBkeCwgaW50JiBkeExlZnQsIGludCYgZHhSaWdodCwgaW50JiBzdHJp
ZGUsIGludCYgc3RyaWRlTGluZSwgaW50JiBlZmZlY3RXaWR0aCwgaW50JiBlZmZlY3RIZWlnaHQs
IGNvbnN0IGludCYgbWF4S2VybmVsU2l6ZSkKIHsKLSAgICBjb25zdCB1aW50OF90KiBzcmNEYXRh
ID0gc3JjUGl4ZWxBcnJheS5kYXRhKCk7Ci0gICAgdWludDhfdCogZHN0RGF0YSA9IGRzdFBpeGVs
QXJyYXkuZGF0YSgpOworICAgIGNvbnN0IHVpbnQ4X3QqIHNyY0RhdGEgPSBzcmNQaXhlbEJ1ZmZl
ci5ieXRlcygpOworICAgIHVpbnQ4X3QqIGRzdERhdGEgPSBkc3RQaXhlbEJ1ZmZlci5ieXRlcygp
OwogICAgIC8vIE1lbW9yeSBhbGlnbm1lbnQgaXM6IFJHQkEsIHplcm8taW5kZXggYmFzZWQuCiAg
ICAgY29uc3QgaW50IGNoYW5uZWwgPSAzOwogCkBAIC0xMTMsMTQgKzExMywxNCBAQCBpbmxpbmUg
dm9pZCBGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcjo6Ym94Qmx1ckFscGhhT25seShjb25z
dCBVaW50OENsYW1wZWRBcgogICAgIH0KIH0KIAotaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXJT
b2Z0d2FyZUFwcGxpZXI6OmJveEJsdXIoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNyY1BpeGVs
QXJyYXksIFVpbnQ4Q2xhbXBlZEFycmF5JiBkc3RQaXhlbEFycmF5LCB1bnNpZ25lZCBkeCwgaW50
IGR4TGVmdCwgaW50IGR4UmlnaHQsIGludCBzdHJpZGUsIGludCBzdHJpZGVMaW5lLCBpbnQgZWZm
ZWN0V2lkdGgsIGludCBlZmZlY3RIZWlnaHQsIGJvb2wgYWxwaGFJbWFnZSwgRWRnZU1vZGVUeXBl
IGVkZ2VNb2RlKQoraW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6OmJv
eEJsdXIoY29uc3QgUGl4ZWxCdWZmZXImIHNyY1BpeGVsQnVmZmVyLCBQaXhlbEJ1ZmZlciYgZHN0
UGl4ZWxCdWZmZXIsIHVuc2lnbmVkIGR4LCBpbnQgZHhMZWZ0LCBpbnQgZHhSaWdodCwgaW50IHN0
cmlkZSwgaW50IHN0cmlkZUxpbmUsIGludCBlZmZlY3RXaWR0aCwgaW50IGVmZmVjdEhlaWdodCwg
Ym9vbCBhbHBoYUltYWdlLCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCiB7CiAgICAgY29uc3QgaW50
IG1heEtlcm5lbFNpemUgPSBzdGQ6Om1pbihkeFJpZ2h0LCBlZmZlY3RXaWR0aCk7CiAgICAgaWYg
KGFscGhhSW1hZ2UpCi0gICAgICAgIHJldHVybiBib3hCbHVyQWxwaGFPbmx5KHNyY1BpeGVsQXJy
YXksIGRzdFBpeGVsQXJyYXksIGR4LCBkeExlZnQsIGR4UmlnaHQsIHN0cmlkZSwgc3RyaWRlTGlu
ZSwgIGVmZmVjdFdpZHRoLCBlZmZlY3RIZWlnaHQsIG1heEtlcm5lbFNpemUpOworICAgICAgICBy
ZXR1cm4gYm94Qmx1ckFscGhhT25seShzcmNQaXhlbEJ1ZmZlciwgZHN0UGl4ZWxCdWZmZXIsIGR4
LCBkeExlZnQsIGR4UmlnaHQsIHN0cmlkZSwgc3RyaWRlTGluZSwgIGVmZmVjdFdpZHRoLCBlZmZl
Y3RIZWlnaHQsIG1heEtlcm5lbFNpemUpOwogCi0gICAgY29uc3QgdWludDhfdCogc3JjRGF0YSA9
IHNyY1BpeGVsQXJyYXkuZGF0YSgpOwotICAgIHVpbnQ4X3QqIGRzdERhdGEgPSBkc3RQaXhlbEFy
cmF5LmRhdGEoKTsKKyAgICBjb25zdCB1aW50OF90KiBzcmNEYXRhID0gc3JjUGl4ZWxCdWZmZXIu
Ynl0ZXMoKTsKKyAgICB1aW50OF90KiBkc3REYXRhID0gZHN0UGl4ZWxCdWZmZXIuYnl0ZXMoKTsK
IAogICAgIC8vIENvbmNlcm5pbmcgdGhlIGFycmF5IHdpZHRoL2xlbmd0aDogaXQgaXMgRWxlbWVu
dCBzaXplICsgTWFyZ2luICsgQm9yZGVyLiBUaGUgbnVtYmVyIG9mIHBpeGVscyB3aWxsIGJlCiAg
ICAgLy8gUCA9IHdpZHRoICogaGVpZ2h0ICogY2hhbm5lbHMuCkBAIC0yNDMsOSArMjQzLDkgQEAg
aW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6OmJveEJsdXIoY29uc3Qg
VWludDhDbGFtcGVkQXJyYXkmIHNyY1AKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFKQotaW5saW5l
IHZvaWQgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6OmJveEJsdXJBY2NlbGVyYXRlZChV
aW50OENsYW1wZWRBcnJheSYgaW9CdWZmZXIsIFVpbnQ4Q2xhbXBlZEFycmF5JiB0ZW1wQnVmZmVy
LCB1bnNpZ25lZCBrZXJuZWxTaXplLCBpbnQgc3RyaWRlLCBpbnQgZWZmZWN0V2lkdGgsIGludCBl
ZmZlY3RIZWlnaHQpCitpbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1clNvZnR3YXJlQXBwbGllcjo6
Ym94Qmx1ckFjY2VsZXJhdGVkKFBpeGVsQnVmZmVyJiBpb0J1ZmZlciwgUGl4ZWxCdWZmZXImIHRl
bXBCdWZmZXIsIHVuc2lnbmVkIGtlcm5lbFNpemUsIGludCBzdHJpZGUsIGludCBlZmZlY3RXaWR0
aCwgaW50IGVmZmVjdEhlaWdodCkKIHsKLSAgICBpZiAoIWlvQnVmZmVyLmRhdGEoKSB8fCAhdGVt
cEJ1ZmZlci5kYXRhKCkpIHsKKyAgICBpZiAoIWlvQnVmZmVyLmJ5dGVzKCkgfHwgIXRlbXBCdWZm
ZXIuYnl0ZXMoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTI2MCwxMyArMjYwLDEzIEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5C
bHVyU29mdHdhcmVBcHBsaWVyOjpib3hCbHVyQWNjZWxlcmF0ZWQoVWludDhDbGFtcGVkQXJyYXkm
CiAgICAgICAgIGtlcm5lbFNpemUgKz0gMTsKIAogICAgIHZJbWFnZV9CdWZmZXIgZWZmZWN0SW5C
dWZmZXI7Ci0gICAgZWZmZWN0SW5CdWZmZXIuZGF0YSA9IHN0YXRpY19jYXN0PHZvaWQqPihpb0J1
ZmZlci5kYXRhKCkpOworICAgIGVmZmVjdEluQnVmZmVyLmRhdGEgPSBpb0J1ZmZlci5ieXRlcygp
OwogICAgIGVmZmVjdEluQnVmZmVyLndpZHRoID0gZWZmZWN0V2lkdGg7CiAgICAgZWZmZWN0SW5C
dWZmZXIuaGVpZ2h0ID0gZWZmZWN0SGVpZ2h0OwogICAgIGVmZmVjdEluQnVmZmVyLnJvd0J5dGVz
ID0gc3RyaWRlOwogCiAgICAgdkltYWdlX0J1ZmZlciBlZmZlY3RPdXRCdWZmZXI7Ci0gICAgZWZm
ZWN0T3V0QnVmZmVyLmRhdGEgPSB0ZW1wQnVmZmVyLmRhdGEoKTsKKyAgICBlZmZlY3RPdXRCdWZm
ZXIuZGF0YSA9IHRlbXBCdWZmZXIuYnl0ZXMoKTsKICAgICBlZmZlY3RPdXRCdWZmZXIud2lkdGgg
PSBlZmZlY3RXaWR0aDsKICAgICBlZmZlY3RPdXRCdWZmZXIuaGVpZ2h0ID0gZWZmZWN0SGVpZ2h0
OwogICAgIGVmZmVjdE91dEJ1ZmZlci5yb3dCeXRlcyA9IHN0cmlkZTsKQEAgLTI4NCwyMCArMjg0
LDIwIEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjpib3hCbHVy
QWNjZWxlcmF0ZWQoVWludDhDbGFtcGVkQXJyYXkmCiAgICAgZmFzdEZyZWUodG1wQnVmZmVyKTsK
IAogICAgIC8vIFRoZSBmaW5hbCByZXN1bHQgc2hvdWxkIGJlIHN0b3JlZCBpbiBpb0J1ZmZlci4K
LSAgICBBU1NFUlQoaW9CdWZmZXIubGVuZ3RoKCkgPT0gdGVtcEJ1ZmZlci5sZW5ndGgoKSk7Ci0g
ICAgbWVtY3B5KGlvQnVmZmVyLmRhdGEoKSwgdGVtcEJ1ZmZlci5kYXRhKCksIGlvQnVmZmVyLmxl
bmd0aCgpKTsKKyAgICBBU1NFUlQoaW9CdWZmZXIuYnl0ZUxlbmd0aCgpID09IHRlbXBCdWZmZXIu
Ynl0ZUxlbmd0aCgpKTsKKyAgICBtZW1jcHkoaW9CdWZmZXIuYnl0ZXMoKSwgdGVtcEJ1ZmZlci5i
eXRlcygpLCBpb0J1ZmZlci5ieXRlTGVuZ3RoKCkpOwogfQogI2VuZGlmCiAKLWlubGluZSB2b2lk
IEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjpib3hCbHVyVW5hY2NlbGVyYXRlZChVaW50
OENsYW1wZWRBcnJheSYgaW9CdWZmZXIsIFVpbnQ4Q2xhbXBlZEFycmF5JiB0ZW1wQnVmZmVyLCB1
bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6ZVksIGludCBzdHJpZGUsIElu
dFNpemUmIHBhaW50U2l6ZSwgYm9vbCBpc0FscGhhSW1hZ2UsIEVkZ2VNb2RlVHlwZSBlZGdlTW9k
ZSkKK2lubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjpib3hCbHVyVW5h
Y2NlbGVyYXRlZChQaXhlbEJ1ZmZlciYgaW9CdWZmZXIsIFBpeGVsQnVmZmVyJiB0ZW1wQnVmZmVy
LCB1bnNpZ25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6ZVksIGludCBzdHJpZGUs
IEludFNpemUmIHBhaW50U2l6ZSwgYm9vbCBpc0FscGhhSW1hZ2UsIEVkZ2VNb2RlVHlwZSBlZGdl
TW9kZSkKIHsKICAgICBpbnQgZHhMZWZ0ID0gMDsKICAgICBpbnQgZHhSaWdodCA9IDA7CiAgICAg
aW50IGR5TGVmdCA9IDA7CiAgICAgaW50IGR5UmlnaHQgPSAwOwogICAgIAotICAgIFVpbnQ4Q2xh
bXBlZEFycmF5KiBmcm9tQnVmZmVyID0gJmlvQnVmZmVyOwotICAgIFVpbnQ4Q2xhbXBlZEFycmF5
KiB0b0J1ZmZlciA9ICZ0ZW1wQnVmZmVyOworICAgIGF1dG8qIGZyb21CdWZmZXIgPSAmaW9CdWZm
ZXI7CisgICAgYXV0byogdG9CdWZmZXIgPSAmdGVtcEJ1ZmZlcjsKIAogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgMzsgKytpKSB7CiAgICAgICAgIGlmIChrZXJuZWxTaXplWCkgewpAQCAtMzI5LDM0
ICszMjksMzQgQEAgaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6OmJv
eEJsdXJVbmFjY2VsZXJhdGVkKFVpbnQ4Q2xhbXBlZEFycmEKIAogICAgIC8vIFRoZSBmaW5hbCBy
ZXN1bHQgc2hvdWxkIGJlIHN0b3JlZCBpbiBpb0J1ZmZlci4KICAgICBpZiAoJmlvQnVmZmVyICE9
IGZyb21CdWZmZXIpIHsKLSAgICAgICAgQVNTRVJUKGlvQnVmZmVyLmxlbmd0aCgpID09IGZyb21C
dWZmZXItPmxlbmd0aCgpKTsKLSAgICAgICAgbWVtY3B5KGlvQnVmZmVyLmRhdGEoKSwgZnJvbUJ1
ZmZlci0+ZGF0YSgpLCBpb0J1ZmZlci5sZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChpb0J1ZmZl
ci5ieXRlTGVuZ3RoKCkgPT0gZnJvbUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgbWVt
Y3B5KGlvQnVmZmVyLmJ5dGVzKCksIGZyb21CdWZmZXItPmJ5dGVzKCksIGlvQnVmZmVyLmJ5dGVM
ZW5ndGgoKSk7CiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1clNvZnR3YXJl
QXBwbGllcjo6Ym94Qmx1ckdlbmVyaWMoVWludDhDbGFtcGVkQXJyYXkmIGlvQnVmZmVyLCBVaW50
OENsYW1wZWRBcnJheSYgdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2ln
bmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUsIGJvb2wgaXNBbHBoYUltYWdlLCBF
ZGdlTW9kZVR5cGUgZWRnZU1vZGUpCitpbmxpbmUgdm9pZCBGRUdhdXNzaWFuQmx1clNvZnR3YXJl
QXBwbGllcjo6Ym94Qmx1ckdlbmVyaWMoUGl4ZWxCdWZmZXImIGlvQnVmZmVyLCBQaXhlbEJ1ZmZl
ciYgdGVtcEJ1ZmZlciwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZ
LCBJbnRTaXplJiBwYWludFNpemUsIGJvb2wgaXNBbHBoYUltYWdlLCBFZGdlTW9kZVR5cGUgZWRn
ZU1vZGUpCiB7CiAgICAgaW50IHN0cmlkZSA9IDQgKiBwYWludFNpemUud2lkdGgoKTsKIAogI2lm
IFVTRShBQ0NFTEVSQVRFKQogICAgIGlmIChrZXJuZWxTaXplWCA9PSBrZXJuZWxTaXplWSAmJiAo
ZWRnZU1vZGUgPT0gRWRnZU1vZGVUeXBlOjpOb25lIHx8IGVkZ2VNb2RlID09IEVkZ2VNb2RlVHlw
ZTo6RHVwbGljYXRlKSkgewotICAgICAgICBib3hCbHVyQWNjZWxlcmF0ZWQoaW9CdWZmZXIsIHRt
cFBpeGVsQXJyYXksIGtlcm5lbFNpemVYLCBzdHJpZGUsIHBhaW50U2l6ZS53aWR0aCgpLCBwYWlu
dFNpemUuaGVpZ2h0KCkpOworICAgICAgICBib3hCbHVyQWNjZWxlcmF0ZWQoaW9CdWZmZXIsIHRl
bXBCdWZmZXIsIGtlcm5lbFNpemVYLCBzdHJpZGUsIHBhaW50U2l6ZS53aWR0aCgpLCBwYWludFNp
emUuaGVpZ2h0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBib3hC
bHVyVW5hY2NlbGVyYXRlZChpb0J1ZmZlciwgdG1wUGl4ZWxBcnJheSwga2VybmVsU2l6ZVgsIGtl
cm5lbFNpemVZLCBzdHJpZGUsIHBhaW50U2l6ZSwgaXNBbHBoYUltYWdlLCBlZGdlTW9kZSk7Cisg
ICAgYm94Qmx1clVuYWNjZWxlcmF0ZWQoaW9CdWZmZXIsIHRlbXBCdWZmZXIsIGtlcm5lbFNpemVY
LCBrZXJuZWxTaXplWSwgc3RyaWRlLCBwYWludFNpemUsIGlzQWxwaGFJbWFnZSwgZWRnZU1vZGUp
OwogfQogCiAjaWYgIVVTRShBQ0NFTEVSQVRFKQogaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXJT
b2Z0d2FyZUFwcGxpZXI6OmJveEJsdXJXb3JrZXIoQXBwbHlQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJz
KQogewogICAgIEludFNpemUgcGFpbnRTaXplKHBhcmFtZXRlcnMtPndpZHRoLCBwYXJhbWV0ZXJz
LT5oZWlnaHQpOwotICAgIGJveEJsdXJHZW5lcmljKCpwYXJhbWV0ZXJzLT5pb1BpeGVsQXJyYXks
ICpwYXJhbWV0ZXJzLT50bXBQaXhlbEFycmF5LCBwYXJhbWV0ZXJzLT5rZXJuZWxTaXplWCwgcGFy
YW1ldGVycy0+a2VybmVsU2l6ZVksIHBhaW50U2l6ZSwgcGFyYW1ldGVycy0+aXNBbHBoYUltYWdl
LCBwYXJhbWV0ZXJzLT5lZGdlTW9kZSk7CisgICAgYm94Qmx1ckdlbmVyaWMoKnBhcmFtZXRlcnMt
PmlvQnVmZmVyLCAqcGFyYW1ldGVycy0+dGVtcEJ1ZmZlciwgcGFyYW1ldGVycy0+a2VybmVsU2l6
ZVgsIHBhcmFtZXRlcnMtPmtlcm5lbFNpemVZLCBwYWludFNpemUsIHBhcmFtZXRlcnMtPmlzQWxw
aGFJbWFnZSwgcGFyYW1ldGVycy0+ZWRnZU1vZGUpOwogfQogI2VuZGlmCiAKLWlubGluZSB2b2lk
IEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtKFVpbnQ4Q2xhbXBl
ZEFycmF5JiBpb0J1ZmZlciwgVWludDhDbGFtcGVkQXJyYXkmIHRtcFBpeGVsQXJyYXksIHVuc2ln
bmVkIGtlcm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXpl
LCBib29sIGlzQWxwaGFJbWFnZSwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQoraW5saW5lIHZvaWQg
RkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZvcm0oUGl4ZWxCdWZmZXIm
IGlvQnVmZmVyLCBQaXhlbEJ1ZmZlciYgdGVtcEJ1ZmZlciwgdW5zaWduZWQga2VybmVsU2l6ZVgs
IHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUsIGJvb2wgaXNBbHBoYUlt
YWdlLCBFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCiB7CiAjaWYgIVVTRShBQ0NFTEVSQVRFKQogICAg
IGludCBzY2FubGluZSA9IDQgKiBwYWludFNpemUud2lkdGgoKTsKQEAgLTM4NSwxMiArMzg1LDEy
IEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRm
b3JtKFVpbnQ4Q2xhbXBlZEFycmF5JiBpb0J1CiAKICAgICAgICAgICAgICAgICBpbnQgYmxvY2tT
aXplID0gKGVuZFkgLSBzdGFydFkpICogc2NhbmxpbmU7CiAgICAgICAgICAgICAgICAgaWYgKCFq
b2IpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmlvUGl4ZWxBcnJheSA9ICZpb0J1ZmZl
cjsKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnRtcFBpeGVsQXJyYXkgPSAmdG1wUGl4ZWxB
cnJheTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmlvQnVmZmVyID0gJmlvQnVmZmVyOwor
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMudGVtcEJ1ZmZlciA9ICZ0ZW1wQnVmZmVyOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy5pb1BpeGVs
QXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChibG9ja1NpemUp
OwotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudG1wUGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBl
ZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGJsb2NrU2l6ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIG1lbWNweShwYXJhbXMuaW9QaXhlbEFycmF5LT5kYXRhKCksIGlvQnVmZmVyLmRhdGEoKSAr
IHN0YXJ0WSAqIHNjYW5saW5lLCBibG9ja1NpemUpOworICAgICAgICAgICAgICAgICAgICBwYXJh
bXMuaW9CdWZmZXIgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChibG9j
a1NpemUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbXMudGVtcEJ1ZmZlciA9IFVpbnQ4Q2xh
bXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKGJsb2NrU2l6ZSk7CisgICAgICAgICAgICAg
ICAgICAgIG1lbWNweShwYXJhbXMuaW9CdWZmZXItPmRhdGEoKSwgaW9CdWZmZXIuZGF0YSgpICsg
c3RhcnRZICogc2NhbmxpbmUsIGJsb2NrU2l6ZSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLndpZHRoID0gcGFpbnRTaXplLndpZHRoKCk7CkBAIC00MTcsNyAr
NDE3LDcgQEAgaW5saW5lIHZvaWQgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5
UGxhdGZvcm0oVWludDhDbGFtcGVkQXJyYXkmIGlvQnUKICAgICAgICAgICAgICAgICBkZXN0aW5h
dGlvbk9mZnNldCA9IGN1cnJlbnRZICogc2NhbmxpbmU7CiAgICAgICAgICAgICAgICAgc2l6ZSA9
IGFkanVzdGVkQmxvY2tIZWlnaHQgKiBzY2FubGluZTsKIAotICAgICAgICAgICAgICAgIG1lbWNw
eShpb0J1ZmZlci5kYXRhKCkgKyBkZXN0aW5hdGlvbk9mZnNldCwgcGFyYW1zLmlvUGl4ZWxBcnJh
eS0+ZGF0YSgpICsgc291cmNlT2Zmc2V0LCBzaXplKTsKKyAgICAgICAgICAgICAgICBtZW1jcHko
aW9CdWZmZXIuZGF0YSgpICsgZGVzdGluYXRpb25PZmZzZXQsIHBhcmFtcy5pb0J1ZmZlci0+ZGF0
YSgpICsgc291cmNlT2Zmc2V0LCBzaXplKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtNDI2LDcgKzQyNiw3IEBAIGlubGluZSB2b2lkIEZFR2F1c3Np
YW5CbHVyU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtKFVpbnQ4Q2xhbXBlZEFycmF5JiBp
b0J1CiAjZW5kaWYKIAogICAgIC8vIFRoZSBzZWxlY3Rpb24gaGVyZSBldmVudHVhbGx5IHNob3Vs
ZCBoYXBwZW4gZHluYW1pY2FsbHkgb24gc29tZSBwbGF0Zm9ybXMuCi0gICAgYm94Qmx1ckdlbmVy
aWMoaW9CdWZmZXIsIHRtcFBpeGVsQXJyYXksIGtlcm5lbFNpemVYLCBrZXJuZWxTaXplWSwgcGFp
bnRTaXplLCBpc0FscGhhSW1hZ2UsIGVkZ2VNb2RlKTsKKyAgICBib3hCbHVyR2VuZXJpYyhpb0J1
ZmZlciwgdGVtcEJ1ZmZlciwga2VybmVsU2l6ZVgsIGtlcm5lbFNpemVZLCBwYWludFNpemUsIGlz
QWxwaGFJbWFnZSwgZWRnZU1vZGUpOwogfQogCiBib29sIEZFR2F1c3NpYW5CbHVyU29mdHdhcmVB
cHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0
b3ImIGlucHV0cywgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3QKQEAgLTQ0NSwxMiArNDQ1LDEx
IEBAIGJvb2wgRkVHYXVzc2lhbkJsdXJTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRl
ciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnCiAgICAgYXV0byBrZXJuZWxTaXplID0gbV9lZmZl
Y3QuY2FsY3VsYXRlS2VybmVsU2l6ZShmaWx0ZXIsIHsgbV9lZmZlY3Quc3RkRGV2aWF0aW9uWCgp
LCBtX2VmZmVjdC5zdGREZXZpYXRpb25ZKCkgfSk7CiAKICAgICBJbnRTaXplIHBhaW50U2l6ZSA9
IHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLnNpemUoKTsKLSAgICBhdXRvIHRtcEltYWdlRGF0
YSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHBhaW50U2l6ZS5h
cmVhKCkgKiA0KTsKLSAgICBpZiAoIXRtcEltYWdlRGF0YSkKKyAgICBhdXRvIHRlbXBCdWZmZXIg
PSByZXN1bHQuY3JlYXRlU2NyYXRjaFBpeGVsQnVmZmVyKGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIt
PmZvcm1hdCgpKTsKKyAgICBpZiAoIXRlbXBCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF1dG8mIGRlc3RpbmF0aW9uUGl4ZWxBcnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZm
ZXItPmRhdGEoKTsKLSAgICBhcHBseVBsYXRmb3JtKGRlc3RpbmF0aW9uUGl4ZWxBcnJheSwgKnRt
cEltYWdlRGF0YSwga2VybmVsU2l6ZS53aWR0aCgpLCBrZXJuZWxTaXplLmhlaWdodCgpLCBwYWlu
dFNpemUsIHJlc3VsdC5pc0FscGhhSW1hZ2UoKSwgbV9lZmZlY3QuZWRnZU1vZGUoKSk7CisgICAg
YXBwbHlQbGF0Zm9ybSgqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgKnRlbXBCdWZmZXIsIGtlcm5l
bFNpemUud2lkdGgoKSwga2VybmVsU2l6ZS5oZWlnaHQoKSwgcGFpbnRTaXplLCByZXN1bHQuaXNB
bHBoYUltYWdlKCksIG1fZWZmZWN0LmVkZ2VNb2RlKCkpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nv
ZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVB
cHBsaWVyLmgKaW5kZXggMThjMDVkZTZlZmVlLi4wNWY0MWM2MTVjOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVHYXVzc2lh
bkJsdXJTb2Z0d2FyZUFwcGxpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFR2F1c3NpYW5CbHVyU29mdHdhcmVBcHBsaWVyLmgKQEAg
LTQyLDggKzQyLDggQEAgcHJpdmF0ZToKICAgICBib29sIGFwcGx5KGNvbnN0IEZpbHRlciYsIGNv
bnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIEZpbHRlckltYWdlJiByZXN1bHQpIGNvbnN0
IGZpbmFsOwogCiAgICAgc3RydWN0IEFwcGx5UGFyYW1ldGVycyB7Ci0gICAgICAgIFJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gaW9QaXhlbEFycmF5OwotICAgICAgICBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IHRtcFBpeGVsQXJyYXk7CisgICAgICAgIFBpeGVsQnVmZmVyKiBpb0J1ZmZlcjsK
KyAgICAgICAgUGl4ZWxCdWZmZXIqIHRlbXBCdWZmZXI7CiAgICAgICAgIGludCB3aWR0aDsKICAg
ICAgICAgaW50IGhlaWdodDsKICAgICAgICAgdW5zaWduZWQga2VybmVsU2l6ZVg7CkBAIC01NCwx
NiArNTQsMTYgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBrZXJuZWxQb3Np
dGlvbihpbnQgYmx1ckl0ZXJhdGlvbiwgdW5zaWduZWQmIHJhZGl1cywgaW50JiBkZWx0YUxlZnQs
IGludCYgZGVsdGFSaWdodCk7CiAKLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgYm94Qmx1ckFscGhh
T25seShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc3JjUGl4ZWxBcnJheSwgVWludDhDbGFtcGVk
QXJyYXkmIGRzdFBpeGVsQXJyYXksIHVuc2lnbmVkIGR4LCBpbnQmIGR4TGVmdCwgaW50JiBkeFJp
Z2h0LCBpbnQmIHN0cmlkZSwgaW50JiBzdHJpZGVMaW5lLCBpbnQmIGVmZmVjdFdpZHRoLCBpbnQm
IGVmZmVjdEhlaWdodCwgY29uc3QgaW50JiBtYXhLZXJuZWxTaXplKTsKLSAgICBzdGF0aWMgaW5s
aW5lIHZvaWQgYm94Qmx1cihjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc3JjUGl4ZWxBcnJheSwg
VWludDhDbGFtcGVkQXJyYXkmIGRzdFBpeGVsQXJyYXksIHVuc2lnbmVkIGR4LCBpbnQgZHhMZWZ0
LCBpbnQgZHhSaWdodCwgaW50IHN0cmlkZSwgaW50IHN0cmlkZUxpbmUsIGludCBlZmZlY3RXaWR0
aCwgaW50IGVmZmVjdEhlaWdodCwgYm9vbCBhbHBoYUltYWdlLCBFZGdlTW9kZVR5cGUpOworICAg
IHN0YXRpYyBpbmxpbmUgdm9pZCBib3hCbHVyQWxwaGFPbmx5KGNvbnN0IFBpeGVsQnVmZmVyJiBp
b0J1ZmZlciwgUGl4ZWxCdWZmZXImIHRlbXBCdWZmZXIsIHVuc2lnbmVkIGR4LCBpbnQmIGR4TGVm
dCwgaW50JiBkeFJpZ2h0LCBpbnQmIHN0cmlkZSwgaW50JiBzdHJpZGVMaW5lLCBpbnQmIGVmZmVj
dFdpZHRoLCBpbnQmIGVmZmVjdEhlaWdodCwgY29uc3QgaW50JiBtYXhLZXJuZWxTaXplKTsKKyAg
ICBzdGF0aWMgaW5saW5lIHZvaWQgYm94Qmx1cihjb25zdCBQaXhlbEJ1ZmZlciYgaW9CdWZmZXIs
IFBpeGVsQnVmZmVyJiB0ZW1wQnVmZmVyLCB1bnNpZ25lZCBkeCwgaW50IGR4TGVmdCwgaW50IGR4
UmlnaHQsIGludCBzdHJpZGUsIGludCBzdHJpZGVMaW5lLCBpbnQgZWZmZWN0V2lkdGgsIGludCBl
ZmZlY3RIZWlnaHQsIGJvb2wgYWxwaGFJbWFnZSwgRWRnZU1vZGVUeXBlKTsKIAotICAgIHN0YXRp
YyBpbmxpbmUgdm9pZCBib3hCbHVyQWNjZWxlcmF0ZWQoVWludDhDbGFtcGVkQXJyYXkmIGlvQnVm
ZmVyLCBVaW50OENsYW1wZWRBcnJheSYgdGVtcEJ1ZmZlciwgdW5zaWduZWQga2VybmVsU2l6ZSwg
aW50IHN0cmlkZSwgaW50IGVmZmVjdFdpZHRoLCBpbnQgZWZmZWN0SGVpZ2h0KTsKLSAgICBzdGF0
aWMgaW5saW5lIHZvaWQgYm94Qmx1clVuYWNjZWxlcmF0ZWQoVWludDhDbGFtcGVkQXJyYXkmIGlv
QnVmZmVyLCBVaW50OENsYW1wZWRBcnJheSYgdGVtcEJ1ZmZlciwgdW5zaWduZWQga2VybmVsU2l6
ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBpbnQgc3RyaWRlLCBJbnRTaXplJiBwYWludFNpemUs
IGJvb2wgaXNBbHBoYUltYWdlLCBFZGdlTW9kZVR5cGUpOworICAgIHN0YXRpYyBpbmxpbmUgdm9p
ZCBib3hCbHVyQWNjZWxlcmF0ZWQoUGl4ZWxCdWZmZXImIGlvQnVmZmVyLCBQaXhlbEJ1ZmZlciYg
dGVtcEJ1ZmZlciwgdW5zaWduZWQga2VybmVsU2l6ZSwgaW50IHN0cmlkZSwgaW50IGVmZmVjdFdp
ZHRoLCBpbnQgZWZmZWN0SGVpZ2h0KTsKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgYm94Qmx1clVu
YWNjZWxlcmF0ZWQoUGl4ZWxCdWZmZXImIGlvQnVmZmVyLCBQaXhlbEJ1ZmZlciYgdGVtcEJ1ZmZl
ciwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBpbnQgc3RyaWRl
LCBJbnRTaXplJiBwYWludFNpemUsIGJvb2wgaXNBbHBoYUltYWdlLCBFZGdlTW9kZVR5cGUpOwog
Ci0gICAgc3RhdGljIGlubGluZSB2b2lkIGJveEJsdXJHZW5lcmljKFVpbnQ4Q2xhbXBlZEFycmF5
JiBpb0J1ZmZlciwgVWludDhDbGFtcGVkQXJyYXkmIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtl
cm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplLCBib29s
IGlzQWxwaGFJbWFnZSwgRWRnZU1vZGVUeXBlKTsKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgYm94
Qmx1ckdlbmVyaWMoUGl4ZWxCdWZmZXImIGlvQnVmZmVyLCBQaXhlbEJ1ZmZlciYgdGVtcEJ1ZmZl
ciwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBw
YWludFNpemUsIGJvb2wgaXNBbHBoYUltYWdlLCBFZGdlTW9kZVR5cGUpOwogICAgIHN0YXRpYyBp
bmxpbmUgdm9pZCBib3hCbHVyV29ya2VyKEFwcGx5UGFyYW1ldGVycyopOwogCi0gICAgc3RhdGlj
IGlubGluZSB2b2lkIGFwcGx5UGxhdGZvcm0oVWludDhDbGFtcGVkQXJyYXkmIGlvQnVmZmVyLCBV
aW50OENsYW1wZWRBcnJheSYgdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVu
c2lnbmVkIGtlcm5lbFNpemVZLCBJbnRTaXplJiBwYWludFNpemUsIGJvb2wgaXNBbHBoYUltYWdl
LCBFZGdlTW9kZVR5cGUpOworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseVBsYXRmb3JtKFBp
eGVsQnVmZmVyJiBpb0J1ZmZlciwgUGl4ZWxCdWZmZXImIHRlbXBCdWZmZXIsIHVuc2lnbmVkIGtl
cm5lbFNpemVYLCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplLCBib29s
IGlzQWxwaGFJbWFnZSwgRWRnZU1vZGVUeXBlKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
c29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTGlnaHRpbmdTb2Z0d2FyZUFwcGxp
ZXIuY3BwCmluZGV4IGZhOGVlM2Q1NmE1Ni4uMTg4YTIzODJkMjYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTGlnaHRpbmdT
b2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5jcHAKQEAgLTEsNyAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgWm9sdGFuIEhlcmN6ZWcKLSAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDIxIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOTksOCArMzk5LDYgQEAgYm9vbCBGRUxpZ2h0aW5nU29m
dHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1h
Z2VWZWMKICAgICBpZiAoIWRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGF1dG8mIGRlc3RpbmF0aW9uUGl4ZWxBcnJheSA9IGRlc3RpbmF0aW9uUGl4
ZWxCdWZmZXItPmRhdGEoKTsKLQogICAgIGF1dG8gZWZmZWN0RHJhd2luZ1JlY3QgPSByZXN1bHQu
YWJzb2x1dGVJbWFnZVJlY3RSZWxhdGl2ZVRvKGlucHV0KTsKICAgICBpbnB1dC5jb3B5UGl4ZWxC
dWZmZXIoKmRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIGVmZmVjdERyYXdpbmdSZWN0KTsKIApAQCAt
NDE2LDI0ICs0MTQsMjUgQEAgYm9vbCBGRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyOjphcHBseShj
b25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWMKICAgICBpZiAoc2l6ZS53
aWR0aCgpIDw9IDIgfHwgc2l6ZS5oZWlnaHQoKSA8PSAyKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIExpZ2h0aW5nRGF0YSBkYXRhOwotICAgIGRhdGEuZmlsdGVyID0gJmZpbHRlcjsKLSAg
ICBkYXRhLnJlc3VsdCA9ICZyZXN1bHQ7Ci0gICAgZGF0YS5maWx0ZXJUeXBlID0gbV9lZmZlY3Qu
ZmlsdGVyVHlwZSgpOwotICAgIGRhdGEubGlnaHRpbmdDb2xvciA9IG1fZWZmZWN0LmxpZ2h0aW5n
Q29sb3IoKTsKLSAgICBkYXRhLnN1cmZhY2VTY2FsZSA9IG1fZWZmZWN0LnN1cmZhY2VTY2FsZSgp
IC8gMjU1LjBmOwotICAgIGRhdGEuZGlmZnVzZUNvbnN0YW50ID0gbV9lZmZlY3QuZGlmZnVzZUNv
bnN0YW50KCk7Ci0gICAgZGF0YS5zcGVjdWxhckNvbnN0YW50ID0gbV9lZmZlY3Quc3BlY3VsYXJD
b25zdGFudCgpOwotICAgIGRhdGEuc3BlY3VsYXJFeHBvbmVudCA9IG1fZWZmZWN0LnNwZWN1bGFy
RXhwb25lbnQoKTsKLSAgICBkYXRhLmxpZ2h0U291cmNlID0gJm1fZWZmZWN0LmxpZ2h0U291cmNl
KCk7Ci0gICAgZGF0YS5vcGVyYXRpbmdDb2xvclNwYWNlID0gJm1fZWZmZWN0Lm9wZXJhdGluZ0Nv
bG9yU3BhY2UoKTsKLQotICAgIGRhdGEucGl4ZWxzID0gJmRlc3RpbmF0aW9uUGl4ZWxBcnJheTsK
LSAgICBkYXRhLndpZHRoTXVsdGlwbGllZEJ5UGl4ZWxTaXplID0gc2l6ZS53aWR0aCgpICogY1Bp
eGVsU2l6ZTsKLSAgICBkYXRhLndpZHRoID0gc2l6ZS53aWR0aCgpOwotICAgIGRhdGEuaGVpZ2h0
ID0gc2l6ZS5oZWlnaHQoKTsKLQotICAgIGFwcGx5UGxhdGZvcm0oZGF0YSk7CisgICAgTGlnaHRp
bmdEYXRhIGxpZ2h0aW5nRGF0YSA9IHsKKyAgICAgICAgJmZpbHRlciwKKyAgICAgICAgJnJlc3Vs
dCwKKyAgICAgICAgbV9lZmZlY3QuZmlsdGVyVHlwZSgpLAorICAgICAgICBtX2VmZmVjdC5saWdo
dGluZ0NvbG9yKCksCisgICAgICAgIG1fZWZmZWN0LnN1cmZhY2VTY2FsZSgpIC8gMjU1LjBmLAor
ICAgICAgICBtX2VmZmVjdC5kaWZmdXNlQ29uc3RhbnQoKSwKKyAgICAgICAgbV9lZmZlY3Quc3Bl
Y3VsYXJDb25zdGFudCgpLAorICAgICAgICBtX2VmZmVjdC5zcGVjdWxhckV4cG9uZW50KCksCisg
ICAgICAgICZtX2VmZmVjdC5saWdodFNvdXJjZSgpLAorICAgICAgICAmbV9lZmZlY3Qub3BlcmF0
aW5nQ29sb3JTcGFjZSgpLAorCisgICAgICAgIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsCisgICAg
ICAgIHNpemUud2lkdGgoKSAqIGNQaXhlbFNpemUsCisgICAgICAgIHNpemUud2lkdGgoKSwKKyAg
ICAgICAgc2l6ZS5oZWlnaHQoKQorICAgIH07CisKKyAgICBhcHBseVBsYXRmb3JtKGxpZ2h0aW5n
RGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBw
bGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRUxpZ2h0aW5nU29mdHdhcmVBcHBsaWVyLmgKaW5kZXggMzg3NWIwYTRiNWRlLi5jOTc0ZDky
MTE1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJlQXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVMaWdodGluZ1NvZnR3YXJl
QXBwbGllci5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgTGln
aHRTb3VyY2UqIGxpZ2h0U291cmNlOwogICAgICAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UqIG9wZXJhdGluZ0NvbG9yU3BhY2U7CiAKLSAgICAgICAgVWludDhDbGFtcGVkQXJyYXkqIHBp
eGVsczsKKyAgICAgICAgUGl4ZWxCdWZmZXIqIHBpeGVsczsKICAgICAgICAgaW50IHdpZHRoTXVs
dGlwbGllZEJ5UGl4ZWxTaXplOwogICAgICAgICBpbnQgd2lkdGg7CiAgICAgICAgIGludCBoZWln
aHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJl
QXBwbGllci5jcHAKaW5kZXggMWM5ZGVmYmMzMmU4Li5hZjJjZmU0YjJmOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3Jw
aG9sb2d5U29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllci5jcHAK
QEAgLTQwLDEyICs0MCwxMiBAQCBpbmxpbmUgQ29sb3JDb21wb25lbnRzPHVpbnQ4X3QsIDQ+IEZF
TW9ycGhvbG9neVNvZnR3YXJlQXBwbGllcjo6bWluT3JNYXgoY29uc3QgQwogICAgIHJldHVybiBw
ZXJDb21wb25lbnRNYXgoYSwgYik7CiB9CiAKLWlubGluZSBDb2xvckNvbXBvbmVudHM8dWludDhf
dCwgND4gRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVyOjpjb2x1bW5FeHRyZW11bShjb25zdCBV
aW50OENsYW1wZWRBcnJheSYgc3JjUGl4ZWxBcnJheSwgaW50IHgsIGludCB5U3RhcnQsIGludCB5
RW5kLCBpbnQgd2lkdGgsIE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSkKK2lubGluZSBDb2xv
ckNvbXBvbmVudHM8dWludDhfdCwgND4gRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVyOjpjb2x1
bW5FeHRyZW11bShjb25zdCB1aW50OF90KiBzcmNQaXhlbEJ5dGVzLCBpbnQgeCwgaW50IHlTdGFy
dCwgaW50IHlFbmQsIGludCB3aWR0aCwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlKQogewot
ICAgIGF1dG8gZXh0cmVtdW0gPSBtYWtlQ29sb3JDb21wb25lbnRzZnJvbVBpeGVsVmFsdWUoUGFj
a2VkQ29sb3I6OlJHQkEgeyAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCo+KHNyY1Bp
eGVsQXJyYXkuZGF0YSgpICsgcGl4ZWxBcnJheUluZGV4KHgsIHlTdGFydCwgd2lkdGgpKSB9KTsK
KyAgICBhdXRvIGV4dHJlbXVtID0gbWFrZUNvbG9yQ29tcG9uZW50c2Zyb21QaXhlbFZhbHVlKFBh
Y2tlZENvbG9yOjpSR0JBIHsgKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQqPihzcmNQ
aXhlbEJ5dGVzICsgcGl4ZWxBcnJheUluZGV4KHgsIHlTdGFydCwgd2lkdGgpKSB9KTsKIAogICAg
IGZvciAoaW50IHkgPSB5U3RhcnQgKyAxOyB5IDwgeUVuZDsgKyt5KSB7Ci0gICAgICAgIGF1dG8g
cGl4ZWwgPSBtYWtlQ29sb3JDb21wb25lbnRzZnJvbVBpeGVsVmFsdWUoUGFja2VkQ29sb3I6OlJH
QkEgeyAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCo+KHNyY1BpeGVsQXJyYXkuZGF0
YSgpICsgcGl4ZWxBcnJheUluZGV4KHgsIHksIHdpZHRoKSkgfSk7CisgICAgICAgIGF1dG8gcGl4
ZWwgPSBtYWtlQ29sb3JDb21wb25lbnRzZnJvbVBpeGVsVmFsdWUoUGFja2VkQ29sb3I6OlJHQkEg
eyAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCo+KHNyY1BpeGVsQnl0ZXMgKyBwaXhl
bEFycmF5SW5kZXgoeCwgeSwgd2lkdGgpKSB9KTsKICAgICAgICAgZXh0cmVtdW0gPSBtaW5Pck1h
eChleHRyZW11bSwgcGl4ZWwsIHR5cGUpOwogICAgIH0KICAgICByZXR1cm4gZXh0cmVtdW07CkBA
IC02NCw4ICs2NCw4IEBAIHZvaWQgRkVNb3JwaG9sb2d5U29mdHdhcmVBcHBsaWVyOjphcHBseVBs
YXRmb3JtR2VuZXJpYyhjb25zdCBQYWludGluZ0RhdGEmIHBhaW50CiB7CiAgICAgQVNTRVJUKGVu
ZFkgPiBzdGFydFkpOwogCi0gICAgY29uc3QgYXV0byYgc3JjUGl4ZWxBcnJheSA9ICpwYWludGlu
Z0RhdGEuc3JjUGl4ZWxBcnJheTsKLSAgICBhdXRvJiBkc3RQaXhlbEFycmF5ID0gKnBhaW50aW5n
RGF0YS5kc3RQaXhlbEFycmF5OworICAgIGNvbnN0IGF1dG8mIHNvdXJjZVBpeGVsQnVmZmVyID0g
cGFpbnRpbmdEYXRhLnNvdXJjZVBpeGVsQnVmZmVyOworICAgIGF1dG8mIGRlc3RpbmF0aW9uUGl4
ZWxCdWZmZXIgPSBwYWludGluZ0RhdGEuZGVzdGluYXRpb25QaXhlbEJ1ZmZlcjsKIAogICAgIGNv
bnN0IGludCByYWRpdXNYID0gcGFpbnRpbmdEYXRhLnJhZGl1c1g7CiAgICAgY29uc3QgaW50IHJh
ZGl1c1kgPSBwYWludGluZ0RhdGEucmFkaXVzWTsKQEAgLTg2LDE3ICs4NiwxNyBAQCB2b2lkIEZF
TW9ycGhvbG9neVNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybUdlbmVyaWMoY29uc3QgUGFp
bnRpbmdEYXRhJiBwYWludAogCiAgICAgICAgIC8vIFdlIHN0YXJ0IGF0IHRoZSBsZWZ0IGVkZ2Us
IHNvIGNvbXB1dGUgZXh0cmVtZSBmb3IgdGhlIHJhZGl1c1ggY29sdW1ucy4KICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCByYWRpdXNYOyArK3gpCi0gICAgICAgICAgICBleHRyZW1hLmFwcGVu
ZChjb2x1bW5FeHRyZW11bShzcmNQaXhlbEFycmF5LCB4LCB5UmFkaXVzU3RhcnQsIHlSYWRpdXNF
bmQsIHdpZHRoLCBwYWludGluZ0RhdGEudHlwZSkpOworICAgICAgICAgICAgZXh0cmVtYS5hcHBl
bmQoY29sdW1uRXh0cmVtdW0oc291cmNlUGl4ZWxCdWZmZXItPmJ5dGVzKCksIHgsIHlSYWRpdXNT
dGFydCwgeVJhZGl1c0VuZCwgd2lkdGgsIHBhaW50aW5nRGF0YS50eXBlKSk7CiAKICAgICAgICAg
Ly8gS2VybmVsIGlzIGZpbGxlZCwgZ2V0IGV4dHJlbWEgb2YgbmV4dCBjb2x1bW4KICAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CiAgICAgICAgICAgICBpZiAoeCA8IHdp
ZHRoIC0gcmFkaXVzWCkKLSAgICAgICAgICAgICAgICBleHRyZW1hLmFwcGVuZChjb2x1bW5FeHRy
ZW11bShzcmNQaXhlbEFycmF5LCB4ICsgcmFkaXVzWCwgeVJhZGl1c1N0YXJ0LCB5UmFkaXVzRW5k
LCB3aWR0aCwgcGFpbnRpbmdEYXRhLnR5cGUpKTsKKyAgICAgICAgICAgICAgICBleHRyZW1hLmFw
cGVuZChjb2x1bW5FeHRyZW11bShzb3VyY2VQaXhlbEJ1ZmZlci0+Ynl0ZXMoKSwgeCArIHJhZGl1
c1gsIHlSYWRpdXNTdGFydCwgeVJhZGl1c0VuZCwgd2lkdGgsIHBhaW50aW5nRGF0YS50eXBlKSk7
CiAKICAgICAgICAgICAgIGlmICh4ID4gcmFkaXVzWCkKICAgICAgICAgICAgICAgICBleHRyZW1h
LnJlbW92ZSgwKTsKIAotICAgICAgICAgICAgdW5zaWduZWQqIGRlc3RQaXhlbCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQqPihkc3RQaXhlbEFycmF5LmRhdGEoKSArIHBpeGVsQXJyYXlJbmRl
eCh4LCB5LCB3aWR0aCkpOworICAgICAgICAgICAgdW5zaWduZWQqIGRlc3RQaXhlbCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPihkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5ieXRlcygpICsg
cGl4ZWxBcnJheUluZGV4KHgsIHksIHdpZHRoKSk7CiAgICAgICAgICAgICAqZGVzdFBpeGVsID0g
bWFrZVBpeGVsVmFsdWVGcm9tQ29sb3JDb21wb25lbnRzKGtlcm5lbEV4dHJlbXVtKGV4dHJlbWEs
IHBhaW50aW5nRGF0YS50eXBlKSkudmFsdWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzUsMTMg
KzE3NSwxMCBAQCBib29sIEZFTW9ycGhvbG9neVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3Qg
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVgogICAgIGlmICghc291cmNlUGl4ZWxC
dWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8mIHNvdXJjZVBpeGVsQXJy
YXkgPSBzb3VyY2VQaXhlbEJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8mIGRlc3RpbmF0aW9uUGl4
ZWxBcnJheSA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPmRhdGEoKTsKLQogICAgIFBhaW50aW5n
RGF0YSBwYWludGluZ0RhdGE7CiAgICAgcGFpbnRpbmdEYXRhLnR5cGUgPSBtX2VmZmVjdC5tb3Jw
aG9sb2d5T3BlcmF0b3IoKTsKLSAgICBwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheSA9ICZzb3Vy
Y2VQaXhlbEFycmF5OwotICAgIHBhaW50aW5nRGF0YS5kc3RQaXhlbEFycmF5ID0gJmRlc3RpbmF0
aW9uUGl4ZWxBcnJheTsKKyAgICBwYWludGluZ0RhdGEuc291cmNlUGl4ZWxCdWZmZXIgPSBzb3Vy
Y2VQaXhlbEJ1ZmZlci5nZXQoKTsKKyAgICBwYWludGluZ0RhdGEuZGVzdGluYXRpb25QaXhlbEJ1
ZmZlciA9IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXI7CiAgICAgcGFpbnRpbmdEYXRhLndpZHRoID0g
ZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKTsKICAgICBwYWludGluZ0RhdGEuaGVpZ2h0ID0gZWZm
ZWN0RHJhd2luZ1JlY3QuaGVpZ2h0KCk7CiAgICAgcGFpbnRpbmdEYXRhLnJhZGl1c1ggPSByYWRp
dXNYOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9zb2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3JwaG9sb2d5U29mdHdhcmVB
cHBsaWVyLmgKaW5kZXggNjhhZDRhNDMzOGI1Li41YzZiNzJiZDljY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVNb3JwaG9s
b2d5U29mdHdhcmVBcHBsaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9zb2Z0d2FyZS9GRU1vcnBob2xvZ3lTb2Z0d2FyZUFwcGxpZXIuaApAQCAtNDgs
OCArNDgsOCBAQCBwcml2YXRlOgogICAgICAgICBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlIHR5cGU7
CiAgICAgICAgIGludCByYWRpdXNYOwogICAgICAgICBpbnQgcmFkaXVzWTsKLSAgICAgICAgY29u
c3QgVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVsQXJyYXk7Ci0gICAgICAgIFVpbnQ4Q2xhbXBl
ZEFycmF5KiBkc3RQaXhlbEFycmF5OworICAgICAgICBjb25zdCBQaXhlbEJ1ZmZlciogc291cmNl
UGl4ZWxCdWZmZXI7CisgICAgICAgIFBpeGVsQnVmZmVyKiBkZXN0aW5hdGlvblBpeGVsQnVmZmVy
OwogICAgICAgICBpbnQgd2lkdGg7CiAgICAgICAgIGludCBoZWlnaHQ7CiAgICAgfTsKQEAgLTY1
LDcgKzY1LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBpbmxpbmUgQ29sb3JDb21wb25lbnRz
PHVpbnQ4X3QsIDQ+IG1ha2VDb2xvckNvbXBvbmVudHNmcm9tUGl4ZWxWYWx1ZShQYWNrZWRDb2xv
cjo6UkdCQSBwaXhlbCkgeyByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYXNTUkdCQShwaXhlbCku
cmVzb2x2ZWQoKSk7IH0KICAgICBzdGF0aWMgaW5saW5lIENvbG9yQ29tcG9uZW50czx1aW50OF90
LCA0PiBtaW5Pck1heChjb25zdCBDb2xvckNvbXBvbmVudHM8dWludDhfdCwgND4mIGEsIGNvbnN0
IENvbG9yQ29tcG9uZW50czx1aW50OF90LCA0PiYgYiwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSk7
Ci0gICAgc3RhdGljIGlubGluZSBDb2xvckNvbXBvbmVudHM8dWludDhfdCwgND4gY29sdW1uRXh0
cmVtdW0oY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNyY1BpeGVsQXJyYXksIGludCB4LCBpbnQg
eVN0YXJ0LCBpbnQgeUVuZCwgaW50IHdpZHRoLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKTsKKyAg
ICBzdGF0aWMgaW5saW5lIENvbG9yQ29tcG9uZW50czx1aW50OF90LCA0PiBjb2x1bW5FeHRyZW11
bShjb25zdCB1aW50OF90KiBzcmNQaXhlbEJ5dGVzLCBpbnQgeCwgaW50IHlTdGFydCwgaW50IHlF
bmQsIGludCB3aWR0aCwgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSk7CiAgICAgc3RhdGljIGlubGlu
ZSBDb2xvckNvbXBvbmVudHM8dWludDhfdCwgND4ga2VybmVsRXh0cmVtdW0oY29uc3QgQ29sdW1u
RXh0cmVtYSYga2VybmVsLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKTsKIAogICAgIHN0YXRpYyB2
b2lkIGFwcGx5UGxhdGZvcm1HZW5lcmljKGNvbnN0IFBhaW50aW5nRGF0YSYsIGludCBzdGFydFks
IGludCBlbmRZKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNl
U29mdHdhcmVBcHBsaWVyLmNwcAppbmRleCA2ZDY1MDY0NWE3NWMuLjM2ZjQzMDMwMzUzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNlU29mdHdhcmVBcHBs
aWVyLmNwcApAQCAtNSw3ICs1LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVs
emUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxMCBSZW5hdGEgSG9kb3Zh
biA8cmVuaUBpbmYudS1zemVnZWQuaHU+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR2Fib3IgTG9r
aSA8bG9raUB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI3MCw3
ICsyNzAsNyBAQCBDb2xvckNvbXBvbmVudHM8dWludDhfdCwgND4gRkVUdXJidWxlbmNlU29mdHdh
cmVBcHBsaWVyOjpjYWxjdWxhdGVUdXJidWxlbmNlVmFsdQogICAgIHJldHVybiB0b0ludEJhc2Vk
Q29sb3JDb21wb25lbnRzKHR1cmJ1bGVuY2VGdW5jdGlvblJlc3VsdCk7CiB9CiAKLXZvaWQgRkVU
dXJidWxlbmNlU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtR2VuZXJpYyhjb25zdCBJbnRS
ZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIFVpbnQ4Q2xh
bXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwg
U3RpdGNoRGF0YSBzdGl0Y2hEYXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSkKK3ZvaWQgRkVUdXJi
dWxlbmNlU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtR2VuZXJpYyhjb25zdCBJbnRSZWN0
JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIFBpeGVsQnVmZmVy
JiBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBjb25zdCBQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0
YSwgU3RpdGNoRGF0YSBzdGl0Y2hEYXRhLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSkKIHsKICAgICBB
U1NFUlQoZW5kWSA+IHN0YXJ0WSk7CiAKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIEZFVHVyYnVs
ZW5jZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0Zm9ybUdlbmVyaWMoY29uc3QgSW50UmVjdCYg
ZmlsdGVyUmVnaQogICAgICAgICAgICAgcG9pbnQuc2V0WChwb2ludC54KCkgKyAxKTsKICAgICAg
ICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHBvaW50LnNjYWxlZChpbnZlcnNlU2NhbGUu
d2lkdGgoKSwgaW52ZXJzZVNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWVz
ID0gY2FsY3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQocGFpbnRpbmdEYXRhLCBzdGl0Y2hE
YXRhLCBsb2NhbFBvaW50KTsKLSAgICAgICAgICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVz
LmNvbXBvbmVudHMuZGF0YSgpLCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKKyAgICAgICAgICAg
IGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIuc2V0UmFuZ2UodmFsdWVzLmNvbXBvbmVudHMuZGF0YSgp
LCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGluZGV4T2ZQaXhlbENoYW5u
ZWwgKz0gNDsKICAgICAgICAgfQogICAgIH0KQEAgLTI5MywxMCArMjkzLDEwIEBAIHZvaWQgRkVU
dXJidWxlbmNlU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtR2VuZXJpYyhjb25zdCBJbnRS
ZWN0JiBmaWx0ZXJSZWdpCiAKIHZvaWQgRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyOjphcHBs
eVBsYXRmb3JtV29ya2VyKEFwcGx5UGFyYW1ldGVycyogcGFyYW1ldGVycykKIHsKLSAgICBhcHBs
eVBsYXRmb3JtR2VuZXJpYyhwYXJhbWV0ZXJzLT5maWx0ZXJSZWdpb24sIHBhcmFtZXRlcnMtPmZp
bHRlclNjYWxlLCAqcGFyYW1ldGVycy0+cGl4ZWxBcnJheSwgKnBhcmFtZXRlcnMtPnBhaW50aW5n
RGF0YSwgcGFyYW1ldGVycy0+c3RpdGNoRGF0YSwgcGFyYW1ldGVycy0+c3RhcnRZLCBwYXJhbWV0
ZXJzLT5lbmRZKTsKKyAgICBhcHBseVBsYXRmb3JtR2VuZXJpYyhwYXJhbWV0ZXJzLT5maWx0ZXJS
ZWdpb24sIHBhcmFtZXRlcnMtPmZpbHRlclNjYWxlLCAqcGFyYW1ldGVycy0+ZGVzdGluYXRpb25Q
aXhlbEJ1ZmZlciwgKnBhcmFtZXRlcnMtPnBhaW50aW5nRGF0YSwgcGFyYW1ldGVycy0+c3RpdGNo
RGF0YSwgcGFyYW1ldGVycy0+c3RhcnRZLCBwYXJhbWV0ZXJzLT5lbmRZKTsKIH0KIAotdm9pZCBG
RVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5UGxhdGZvcm0oY29uc3QgSW50UmVjdCYg
ZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBVaW50OENsYW1wZWRB
cnJheSYgcGl4ZWxBcnJheSwgUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEsIFN0aXRjaERhdGEm
IHN0aXRjaERhdGEpCit2b2lkIEZFVHVyYnVsZW5jZVNvZnR3YXJlQXBwbGllcjo6YXBwbHlQbGF0
Zm9ybShjb25zdCBJbnRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVy
U2NhbGUsIFBpeGVsQnVmZmVyJiBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLCBQYWludGluZ0RhdGEm
IHBhaW50aW5nRGF0YSwgU3RpdGNoRGF0YSYgc3RpdGNoRGF0YSkKIHsKICAgICBpbnQgaGVpZ2h0
ID0gZmlsdGVyUmVnaW9uLmhlaWdodCgpOwogICAgIHVuc2lnbmVkIGFyZWEgPSBmaWx0ZXJSZWdp
b24uYXJlYSgpOwpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgRkVUdXJidWxlbmNlU29mdHdhcmVB
cHBsaWVyOjphcHBseVBsYXRmb3JtKGNvbnN0IEludFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uCiAg
ICAgICAgICAgICAgICAgQXBwbHlQYXJhbWV0ZXJzJiBwYXJhbXMgPSBwYXJhbGxlbEpvYnMucGFy
YW1ldGVyKGkpOwogICAgICAgICAgICAgICAgIHBhcmFtcy5maWx0ZXJSZWdpb24gPSBmaWx0ZXJS
ZWdpb247CiAgICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlclNjYWxlID0gZmlsdGVyU2NhbGU7
Ci0gICAgICAgICAgICAgICAgcGFyYW1zLnBpeGVsQXJyYXkgPSAmcGl4ZWxBcnJheTsKKyAgICAg
ICAgICAgICAgICBwYXJhbXMuZGVzdGluYXRpb25QaXhlbEJ1ZmZlciA9ICZkZXN0aW5hdGlvblBp
eGVsQnVmZmVyOwogICAgICAgICAgICAgICAgIHBhcmFtcy5wYWludGluZ0RhdGEgPSAmcGFpbnRp
bmdEYXRhOwogICAgICAgICAgICAgICAgIHBhcmFtcy5zdGl0Y2hEYXRhID0gc3RpdGNoRGF0YTsK
ICAgICAgICAgICAgICAgICBwYXJhbXMuc3RhcnRZID0gc3RhcnRZOwpAQCAtMzM2LDcgKzMzNiw3
IEBAIHZvaWQgRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyOjphcHBseVBsYXRmb3JtKGNvbnN0
IEludFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uCiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgdG8g
c2luZ2xlIHRocmVhZGVkIG1vZGUgaWYgdGhlcmUgaXMgbm8gcm9vbSBmb3IgYSBuZXcgdGhyZWFk
IG9yIHRoZSBwYWludCBhcmVhIGlzIHRvbyBzbWFsbC4KLSAgICBhcHBseVBsYXRmb3JtR2VuZXJp
YyhmaWx0ZXJSZWdpb24sIGZpbHRlclNjYWxlLCBwaXhlbEFycmF5LCBwYWludGluZ0RhdGEsIHN0
aXRjaERhdGEsIDAsIGhlaWdodCk7CisgICAgYXBwbHlQbGF0Zm9ybUdlbmVyaWMoZmlsdGVyUmVn
aW9uLCBmaWx0ZXJTY2FsZSwgZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgcGFpbnRpbmdEYXRhLCBz
dGl0Y2hEYXRhLCAwLCBoZWlnaHQpOwogfQogCiBib29sIEZFVHVyYnVsZW5jZVNvZnR3YXJlQXBw
bGllcjo6YXBwbHkoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9y
JiwgRmlsdGVySW1hZ2UmIHJlc3VsdCkgY29uc3QKQEAgLTM0OSwxMCArMzQ5LDggQEAgYm9vbCBG
RVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBj
b25zdCBGaWx0ZXJJbWFnZVYKICAgICBpZiAocmVzdWx0U2l6ZS5hcmVhKCkuaGFzT3ZlcmZsb3dl
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVs
QXJyYXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7Ci0KICAgICBpZiAocmVzdWx0
U2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5Lnplcm9GaWxs
KCk7CisgICAgICAgIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXItPnplcm9GaWxsKCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzY0LDcgKzM2Miw3IEBAIGJvb2wgRkVUdXJidWxl
bmNlU29mdHdhcmVBcHBsaWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmls
dGVySW1hZ2VWCiAKICAgICBhdXRvIHBhaW50aW5nRGF0YSA9IGluaXRQYWludGluZ0RhdGEobV9l
ZmZlY3QudHlwZSgpLCBiYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5jeVksIG1fZWZmZWN0Lm51
bU9jdGF2ZXMoKSwgbV9lZmZlY3Quc2VlZCgpLCBtX2VmZmVjdC5zdGl0Y2hUaWxlcygpLCB0aWxl
U2l6ZSk7CiAKLSAgICBhcHBseVBsYXRmb3JtKHJlc3VsdC5hYnNvbHV0ZUltYWdlUmVjdCgpLCBm
aWx0ZXIuZmlsdGVyU2NhbGUoKSwgZGVzdGluYXRpb25QaXhlbEFycmF5LCBwYWludGluZ0RhdGEs
IHN0aXRjaERhdGEpOworICAgIGFwcGx5UGxhdGZvcm0ocmVzdWx0LmFic29sdXRlSW1hZ2VSZWN0
KCksIGZpbHRlci5maWx0ZXJTY2FsZSgpLCAqZGVzdGluYXRpb25QaXhlbEJ1ZmZlciwgcGFpbnRp
bmdEYXRhLCBzdGl0Y2hEYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVR1cmJ1
bGVuY2VTb2Z0d2FyZUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVyLmgKaW5kZXggY2Y0
ZDg5NTllYmE0Li4yNDg0NDZmMjI0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUdXJidWxlbmNlU29mdHdhcmVBcHBsaWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2Fy
ZS9GRVR1cmJ1bGVuY2VTb2Z0d2FyZUFwcGxpZXIuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRl
OgogICAgIHN0cnVjdCBBcHBseVBhcmFtZXRlcnMgewogICAgICAgICBJbnRSZWN0IGZpbHRlclJl
Z2lvbjsKICAgICAgICAgRmxvYXRTaXplIGZpbHRlclNjYWxlOwotICAgICAgICBVaW50OENsYW1w
ZWRBcnJheSogcGl4ZWxBcnJheTsKKyAgICAgICAgUGl4ZWxCdWZmZXIqIGRlc3RpbmF0aW9uUGl4
ZWxCdWZmZXI7CiAgICAgICAgIFBhaW50aW5nRGF0YSogcGFpbnRpbmdEYXRhOwogICAgICAgICBT
dGl0Y2hEYXRhIHN0aXRjaERhdGE7CiAgICAgICAgIGludCBzdGFydFk7CkBAIC0xMTAsOSArMTEw
LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQ29sb3JDb21wb25lbnRzPHVpbnQ4X3QsIDQ+IHRv
SW50QmFzZWRDb2xvckNvbXBvbmVudHMoY29uc3QgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiYg
ZmxvYXRDb21wb25lbnRzKTsKICAgICBzdGF0aWMgQ29sb3JDb21wb25lbnRzPHVpbnQ4X3QsIDQ+
IGNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KGNvbnN0IFBhaW50aW5nRGF0YSYsIFN0
aXRjaERhdGEsIGNvbnN0IEZsb2F0UG9pbnQmKTsKIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5UGxh
dGZvcm1HZW5lcmljKGNvbnN0IEludFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRTaXpl
JiBmaWx0ZXJTY2FsZSwgVWludDhDbGFtcGVkQXJyYXkmIHBpeGVsQXJyYXksIGNvbnN0IFBhaW50
aW5nRGF0YSYsIFN0aXRjaERhdGEsIGludCBzdGFydFksIGludCBlbmRZKTsKKyAgICBzdGF0aWMg
dm9pZCBhcHBseVBsYXRmb3JtR2VuZXJpYyhjb25zdCBJbnRSZWN0JiBmaWx0ZXJSZWdpb24sIGNv
bnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIFBpeGVsQnVmZmVyJiBkZXN0aW5hdGlvblBpeGVs
QnVmZmVyLCBjb25zdCBQYWludGluZ0RhdGEmLCBTdGl0Y2hEYXRhLCBpbnQgc3RhcnRZLCBpbnQg
ZW5kWSk7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlQbGF0Zm9ybVdvcmtlcihBcHBseVBhcmFtZXRl
cnMqKTsKLSAgICBzdGF0aWMgdm9pZCBhcHBseVBsYXRmb3JtKGNvbnN0IEludFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgVWludDhDbGFtcGVkQXJyYXkm
IHBpeGVsQXJyYXksIFBhaW50aW5nRGF0YSYsIFN0aXRjaERhdGEmKTsKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseVBsYXRmb3JtKGNvbnN0IEludFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJTY2FsZSwgUGl4ZWxCdWZmZXImIGRlc3RpbmF0aW9uUGl4ZWxCdWZmZXIsIFBh
aW50aW5nRGF0YSYsIFN0aXRjaERhdGEmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HcmFwaGlj
c0NvbnRleHRHTEdCTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0v
R3JhcGhpY3NDb250ZXh0R0xHQk0uY3BwCmluZGV4IGE4NTllMmY1Nzg5MC4uOTA4OWE5NDA3OTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR3JhcGhp
Y3NDb250ZXh0R0xHQk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dibS9HcmFwaGljc0NvbnRleHRHTEdCTS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpCiB7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCitSZWZQdHI8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiB7CiAgICAgcmV0dXJuIHJlYWRS
ZW5kZXJpbmdSZXN1bHRzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cAppbmRleCBjOTIyMTcyMGI0NWIuLjY3OTY1MGVhYmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cHJlcGFyZUZvckRpc3BsYXkoKQogewogfQogCi1zdGQ6Om9wdGlvbmFsPFBp
eGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRz
KCkKK1JlZlB0cjxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21w
b3NpdGVkUmVzdWx0cygpCiB7CiAgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7CiB9
CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cHJlcGFy
ZVRleHR1cmUoKQogICAgIDo6Z2xGbHVzaCgpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHMoKQorUmVm
UHRyPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jl
c3VsdHMoKQogewogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKICAgICBpZiAoY29u
dGV4dEF0dHJpYnV0ZXMoKS5hbnRpYWxpYXMpIHsKQEAgLTMxMTQsNyArMzExNCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyJiBpbWFnZUJ1CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHJlYWRSZW5kZXJpbmdS
ZXN1bHRzKCk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwotICAgIHBh
aW50VG9DYW52YXMoY29udGV4dEF0dHJpYnV0ZXMoKSwgV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBp
bWFnZUJ1ZmZlci5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci5jb250ZXh0KCkpOworICAgIHBh
aW50VG9DYW52YXMoY29udGV4dEF0dHJpYnV0ZXMoKSwgcGl4ZWxCdWZmZXIucmVsZWFzZU5vbk51
bGwoKSwgaW1hZ2VCdWZmZXIuYmFja2VuZFNpemUoKSwgaW1hZ2VCdWZmZXIuY29udGV4dCgpKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKQEAgLTMxMjYsMTAgKzMxMjYsMTAg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyJiBpbWFnZUIKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gcmVhZENv
bXBvc2l0ZWRSZXN1bHRzKCk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwotICAgIHBhaW50VG9DYW52YXMoY29udGV4dEF0dHJpYnV0ZXMoKSwgV1RGTW92ZSgqcGl4ZWxC
dWZmZXIpLCBpbWFnZUJ1ZmZlci5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci5jb250ZXh0KCkp
OworICAgIHBhaW50VG9DYW52YXMoY29udGV4dEF0dHJpYnV0ZXMoKSwgcGl4ZWxCdWZmZXIucmVs
ZWFzZU5vbk51bGwoKSwgaW1hZ2VCdWZmZXIuYmFja2VuZFNpemUoKSwgaW1hZ2VCdWZmZXIuY29u
dGV4dCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKQorUmVmUHRyPFBp
eGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9QaXhlbEJ1ZmZlcigpCiB7CiAgICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVkIGFscGhhIHdv
dWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMgbG9zc3kuCiAgICAgaWYgKGNv
bnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQpAQCAtMzE1MiwyMSArMzE1Miwy
MSBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbAogICAgIHJldHVybiByZXN1bHRzOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFJl
bmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpCitSZWZQdHI8UGl4ZWxCdWZmZXI+IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5nKCkKIHsKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZl
clNpemUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogfQog
Ci1zdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKQorUmVmUHRyPFBpeGVsQnVmZmVyPiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKQog
ewogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChnZXRJbnRlcm5hbEZyYW1l
YnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHJlYWRDb21wb3NpdGVkUmVzdWx0cygp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY2MjVjZmY5ZWJk
NS4uZTcyMGM3ZWI0MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
Mzc3LDExICszNzcsMTEgQEAgcHVibGljOgogCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAgICAg
dm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFsOwot
ICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4
ZWxCdWZmZXIoKSBmaW5hbDsKKyAgICBSZWZQdHI8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJl
c3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFsOwogCi0gICAgc3RkOjpvcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gcmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpOwotICAgIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCk7
CisgICAgUmVmUHRyPFBpeGVsQnVmZmVyPiByZWFkUmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5n
KCk7CisgICAgUmVmUHRyPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWlu
dGluZygpOwogCiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKIApA
QCAtNDQxLDkgKzQ0MSw5IEBAIHByb3RlY3RlZDoKICAgICAvLyBEaWQgdGhlIG1vc3QgcmVjZW50
IGRyYXdpbmcgb3BlcmF0aW9uIGxlYXZlIHRoZSBHUFUgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZT8K
ICAgICB2b2lkIGNoZWNrR1BVU3RhdHVzKCk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwotICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IHJlYWRDb21wb3NpdGVkUmVzdWx0cygpOwotICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IHJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKTsKKyAgICBSZWZQdHI8UGl4ZWxCdWZmZXI+
IHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7CisgICAgUmVmUHRyPFBpeGVsQnVmZmVyPiByZWFkQ29t
cG9zaXRlZFJlc3VsdHMoKTsKKyAgICBSZWZQdHI8UGl4ZWxCdWZmZXI+IHJlYWRQaXhlbHNGb3JQ
YWludFJlc3VsdHMoKTsKIAogICAgIGJvb2wgcmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYpOwog
ICAgIHZvaWQgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShjb25zdCBJbnRSZWN0JiA9
IEludFJlY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CmluZGV4IDdiNTRhMDFmM2U5Ni4uZTNkOTA3YmI5MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtMzIsOSArMzIsOSBAQAogI2luY2x1ZGUgIkV4
dGVuc2lvbnNHTE9wZW5HTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCisjaW5jbHVkZSAiSlNQaXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBpeGVsQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4K
ICNpbmNsdWRlIDxjc3RyaW5nPgpAQCAtNjEsMTIgKzYxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQorUmVmUHRyPFBpeGVsQnVmZmVyPiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7CiAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpIH07Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9y
bWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gSlNQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZl
clNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBHTGludCBwYWNrQWxpZ25tZW50
ID0gNDsKICAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDNhZTYyYmY2ZWViMS4uMTVk
ZTFiNmFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBA
IC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIkpTUGl4ZWxC
dWZmZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBpeGVsQnVm
ZmVyLmgiCiAKICNpbmNsdWRlIDxBTkdMRS9TaGFkZXJMYW5nLmg+CiAKQEAgLTY0LDEyICs2NCwx
MiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKIH0KIAotc3RkOjpvcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJl
c3VsdHMoKQorUmVmUHRyPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0
IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07Ci0gICAgYXV0byBwaXhlbEJ1
ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVm
ZmVyU2l6ZSgpKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gSlNQaXhlbEJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBHTGludCBwYWNrQWxpZ25tZW50ID0gNDsKICAgICBib29sIG11c3RSZXN0
b3JlUGFja0FsaWdubWVudCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMDg2MDAwMTYxYWMwLi4zYTczOWE0
ZWI1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlckFOR0xFLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OnBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpCiB7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRDb21wb3NpdGVkUmVz
dWx0cygpCitSZWZQdHI8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRD
b21wb3NpdGVkUmVzdWx0cygpCiB7CiAgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDBiNTY4
ZTc3ZDU2Yi4uNjRlZmNmZGY4NzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcApAQCAtMjA1LDggKzIwNSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hh
cGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAg
ICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNyZWF0ZVNoYXBlKCk7CiAKLSAg
ICBhdXRvJiBwaXhlbEFycmF5ID0gcGl4ZWxCdWZmZXItPmRhdGEoKTsKLSAgICB1bnNpZ25lZCBw
aXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJheS5sZW5ndGgoKTsKKyAgICBhdXRvKiBwaXhlbEFy
cmF5ID0gcGl4ZWxCdWZmZXItPmJ5dGVzKCk7CisgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0
aCA9IHBpeGVsQnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgcGl4ZWxBcnJheU9m
ZnNldCA9IDM7IC8vIEVhY2ggcGl4ZWwgaXMgZm91ciBieXRlczogUkdCQS4KICAgICB1aW50OF90
IGFscGhhUGl4ZWxUaHJlc2hvbGQgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihscm91bmRmKGNsYW1w
VG88ZmxvYXQ+KHRocmVzaG9sZCwgMCwgMSkgKiAyNTUuMGYpKTsKIApAQCAtMjE3LDcgKzIxNyw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdl
KiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgICAgIGZvciAoaW50IHkgPSBtaW5CdWZm
ZXJZOyB5IDwgbWF4QnVmZmVyWTsgKyt5KSB7CiAgICAgICAgICAgICBpbnQgc3RhcnRYID0gLTE7
CiAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGltYWdlUmVjdC53aWR0aCgpOyArK3gs
IHBpeGVsQXJyYXlPZmZzZXQgKz0gNCkgewotICAgICAgICAgICAgICAgIHVpbnQ4X3QgYWxwaGEg
PSBwaXhlbEFycmF5Lml0ZW0ocGl4ZWxBcnJheU9mZnNldCk7CisgICAgICAgICAgICAgICAgdWlu
dDhfdCBhbHBoYSA9IHBpeGVsQXJyYXlbcGl4ZWxBcnJheU9mZnNldF07CiAgICAgICAgICAgICAg
ICAgYm9vbCBhbHBoYUFib3ZlVGhyZXNob2xkID0gYWxwaGEgPiBhbHBoYVBpeGVsVGhyZXNob2xk
OwogICAgICAgICAgICAgICAgIGlmIChzdGFydFggPT0gLTEgJiYgYWxwaGFBYm92ZVRocmVzaG9s
ZCkgewogICAgICAgICAgICAgICAgICAgICBzdGFydFggPSB4OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQWxsb2NhdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUFsbG9jYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4yYTIyN2NlOGQ5ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVBbGxvY2F0b3IuY3BwCkBAIC0wLDAgKzEs
ODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VC
dWZmZXJTaGFyZWFibGVBbGxvY2F0b3IuaCIKKworI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZVBpeGVsQnVmZmVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+CisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK0ltYWdlQnVmZmVyU2hhcmVhYmxlQWxsb2NhdG9yOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUFs
bG9jYXRvcihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQor
ICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCit7
Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXJTaGFyZWFibGVBbGxvY2F0b3I6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBDb25jcmV0ZUltYWdlQnVmZmVyPEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD46OmNyZWF0ZShzaXplLCAxLCBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdDo6QkdSQTgsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCB7IH0p
OworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
YXV0byogYmFja2VuZCA9IGltYWdlQnVmZmVyLT5iYWNrZW5kKCk7CisgICAgaWYgKCFiYWNrZW5k
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5k
LT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgQVNTRVJUKGlzPEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZVNoYXJpbmc+KHNoYXJpbmcpKTsKKworICAgIGF1dG8gYml0bWFwID0gZG93bmNhc3Q8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmJpdG1hcCgpOworICAgIGlm
ICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIWJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgY29uc3RfY2FzdDxJbWFnZUJ1ZmZlclNo
YXJlYWJsZUFsbG9jYXRvcio+KHRoaXMpLT50cmFuc2Zlck1lbW9yeU93bmVyc2hpcChXVEZNb3Zl
KGhhbmRsZS5oYW5kbGUoKSksIGJpdG1hcC0+c2l6ZUluQnl0ZXMoKSk7CisgICAgcmV0dXJuIGlt
YWdlQnVmZmVyOworfQorCitSZWZQdHI8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyU2hhcmVhYmxl
QWxsb2NhdG9yOjpjcmVhdGVQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9y
bWF0LCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAoreworICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBTaGFyZWFibGVQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgc2l6ZSk7CisgICAgaWYg
KCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKCFwaXhlbEJ1ZmZlci0+ZGF0YSgpLmNyZWF0ZUhh
bmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBjb25zdF9jYXN0PEltYWdlQnVmZmVyU2hhcmVh
YmxlQWxsb2NhdG9yKj4odGhpcyktPnRyYW5zZmVyTWVtb3J5T3duZXJzaGlwKFdURk1vdmUoaGFu
ZGxlKSwgcGl4ZWxCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgcmV0dXJuIHBpeGVsQnVmZmVy
OworfQorCit2b2lkIEltYWdlQnVmZmVyU2hhcmVhYmxlQWxsb2NhdG9yOjp0cmFuc2Zlck1lbW9y
eU93bmVyc2hpcChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmIGhhbmRsZSwgc2l6ZV90IGRhdGFTaXpl
KQoreworICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC50cmFuc2Zlck1lbW9yeU93bmVyc2hp
cChXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplLCBNZW1vcnlMZWRnZXI6OkdyYXBoaWNzKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUFsbG9jYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uMzYyNWM4ZTNmMGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQWxsb2NhdG9y
LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2lu
Y2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJBbGxvY2F0b3IuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisKK2NsYXNzIEltYWdlQnVmZmVy
U2hhcmVhYmxlQWxsb2NhdG9yIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVyQWxsb2NhdG9y
IHsKK3B1YmxpYzoKKyAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUFsbG9jYXRvcihSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kJik7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IGNyZWF0ZVBp
eGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCB0cmFuc2Zlck1lbW9yeU93
bmVyc2hpcChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmLCBzaXplX3QgZGF0YVNpemUpOworCisgICAg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYWE4YzExNWIyN2M4Li4wMWYwY2I2NjZl
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkltYWdlQnVmZmVyU2hhcmVhYmxl
QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsdGVyUmVzdWx0cy5oPgpAQCAtMjM1LDcgKzIzNiw3IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlcjo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxSZW5kZXJp
bmdSCiAgICAgICAgIGZlSW1hZ2Uuc2V0SW1hZ2VTb3VyY2UoV1RGTW92ZSgqc291cmNlSW1hZ2Up
KTsKICAgICB9CiAKLSAgICBGaWx0ZXJSZXN1bHRzIHJlc3VsdHM7CisgICAgRmlsdGVyUmVzdWx0
cyByZXN1bHRzKG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJTaGFyZWFibGVBbGxvY2F0b3I+KCptX3Jl
bmRlcmluZ0JhY2tlbmQpKTsKICAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpEcmF3RmlsdGVy
ZWRJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZUlkZW50aWZpZXIsIHNvdXJjZUltYWdlUmVjdCwgV1RG
TW92ZShmaWx0ZXIpKSwgc291cmNlSW1hZ2UuZ2V0KCksIHJlc3VsdHMpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmNwcAppbmRleCAwMjY2NmQ0MWI0MTguLjc5ZjM2NDkzZmJiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvVmlkZW9GcmFtZShDb21wbGV0
aW9uSGFuZGwKIH0KICNlbmRpZgogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWlu
dFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVm
ZmVyPiYmIHBpeGVsQnVmZmVyLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
dGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFBpeGVsQnVmZmVyVG9JbWFnZUJ1ZmZl
cihSZWZQdHI8UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIsIFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciB0YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBhc3NlcnRJc0N1cnJlbnQod29ya1F1ZXVlKCkpOwogICAg
IC8vIEZJWE1FOiBXZSBkbyBub3QgaGF2ZSBmdW5jdGlvbmluZyByZWFkL3dyaXRlIGZlbmNlcyBp
biBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLiBUaHVzIHRoaXMgaXMgc3luY2hyb25vdXMsCkBAIC0y
NTEsMTQgKzI1MSwxNCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpwYWludFBpeGVs
QnVmZmVyVG9JbWFnZUJ1ZmZlcihzdGQ6Om9wdGlvbmFsPFdlYkNvcgogCiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQuIE1heWJlIEFycmF5QnVmZmVyVmlldyBzaG91bGQg
YmUgVGhyZWFkU2FmZVJlZkNvdW50ZWQgYXMgaXQgaXMgdXNlZCBpbiBhY2Nyb3NzIG11bHRpcGxl
IHRocmVhZHMuCiAgICAgLy8gVGhlIGNhbGwgYmVsb3cgaXMgc3luY2hyb25vdXMgYW5kIHdlIHRy
YW5zZmVyIHRoZSBvd25lcnNoaXAgb2YgdGhlIGBwaXhlbEJ1ZmZlcmAuCi0gICAgaWYgKHBpeGVs
QnVmZmVyKQotICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRpc2FibGVUaHJlYWRpbmdDaGVj
a3MoKTsKKyAgICBpZiAoaXM8SlNQaXhlbEJ1ZmZlcj4ocGl4ZWxCdWZmZXIpKQorICAgICAgICBk
b3duY2FzdDxKU1BpeGVsQnVmZmVyPigqcGl4ZWxCdWZmZXIpLmRhdGEoKS5kaXNhYmxlVGhyZWFk
aW5nQ2hlY2tzKCk7CiAgICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5kaXNwYXRjaChbJiwgY29udGV4
dEF0dHJpYnV0ZXMgPSBtX2NvbnRleHQtPmNvbnRleHRBdHRyaWJ1dGVzKCldKCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW5kZXJpbmdCYWNrZW5kLT5yZW1v
dGVSZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1hZ2VCdWZmZXIodGFyZ2V0KSkgewogICAgICAgICAg
ICAgLy8gSGVyZSB3ZSBkbyBub3QgdHJ5IHRvIHBsYXkgYmFjayBwZW5kaW5nIGNvbW1hbmRzIGZv
ciBpbWFnZUJ1ZmZlci4gQ3VycmVudGx5IHRoaXMgY2FsbCBpcyBvbmx5IG1hZGUgZm9yIGVtcHR5
CiAgICAgICAgICAgICAvLyBpbWFnZSBidWZmZXJzIGFuZCB0aGVyZSdzIG5vIGdvb2Qgd2F5IHRv
IGFkZCBkaXNwbGF5IGxpc3RzLgogICAgICAgICAgICAgaWYgKHBpeGVsQnVmZmVyKQotICAgICAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMOjpwYWludFRvQ2FudmFzKGNvbnRleHRBdHRyaWJ1
dGVzLCBXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLCBp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRH
TDo6cGFpbnRUb0NhbnZhcyhjb250ZXh0QXR0cmlidXRlcywgcGl4ZWxCdWZmZXIucmVsZWFzZU5v
bk51bGwoKSwgaW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCksIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5jb250
ZXh0KCkuY2xlYXJSZWN0KHsgSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCkg
fSk7CiAgICAgICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5ICJmbHVzaCIgaW1wbGVtZW50YXRpb24g
aW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBvdmVybG9hZHMgb3JkZXJpbmcgYW5kIGVmZmVjdHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDBkOTk1MjFkOGI1ZC4uNjBjZmM3ZjI2NzdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgiCiAjaW5jbHVkZSAiU2Nv
cGVkV2ViR0xSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmgiCkBAIC0xNDIsNyArMTQzLDcgQEAg
cHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvQ2FudmFzV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVhbGlmaWVkUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgcGFpbnRQaXhlbEJ1ZmZlclRvSW1hZ2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQaXhlbEJ1ZmZlcj4mJiwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcGFpbnRQaXhlbEJ1ZmZl
clRvSW1hZ2VCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiYmLCBRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAKIHByb3RlY3RlZDoKICAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbgppbmRleCA3NjY3ZDgzNjFhYWYuLmUzYTBmYWM3ZGU0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjk0LDcgKzI5NCw3IEBAIG1lc3Nh
Z2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAg
ICB2b2lkIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSh1aW50MzJfdCBhcmcwKSAtPiAo
U3RyaW5nIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwogICAgIHZvaWQgRHJhd0J1ZmZlcnNFWFQo
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gYnVmcykKICAgICB2b2lkIEdldEludGVybmFs
Zm9ybWF0aXYodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgdWludDMy
X3QgcG5hbWUsIHVpbnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+IHBhcmFtcykgU3luY2hyb25vdXMKLSAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvUGl4ZWxCdWZmZXIoKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4g
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCisgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNU
b1BpeGVsQnVmZmVyKCkgLT4gKHN0ZDo6b3B0aW9uYWw8SVBDOjpQaXhlbEJ1ZmZlclJlZmVyZW5j
ZT4gcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVu
Y3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaAppbmRleCBjNzVjZTBhMjEw
YzEuLjJkYTFkMDdlMTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
RnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTEzNDAsMTEgKzEzNDAsMTIgQEAKICAgICAgICAgbV9j
b250ZXh0LT5nZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1l
LCBwYXJhbXMpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KHBhcmFtcy5kYXRhKCkpLCBwYXJh
bXMuc2l6ZSgpKSk7CiAgICAgfQotICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhl
bEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4
ZWxCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHZvaWQgcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8SVBDOjpQaXhlbEJ1ZmZlclJlZmVyZW5jZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiByZXR1cm5W
YWx1ZSA9IHsgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxJUEM6OlBpeGVsQnVmZmVyUmVmZXJl
bmNlPiByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICAgICAgYXNzZXJ0SXNDdXJyZW50KHdvcmtRdWV1
ZSgpKTsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvUGl4ZWxCdWZmZXIoKTsKKyAgICAgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2Nv
bnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKSkKKyAgICAgICAgICAg
IHJldHVyblZhbHVlID0gSVBDOjpQaXhlbEJ1ZmZlclJlZmVyZW5jZShwaXhlbEJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5W
YWx1ZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDkzNDg2Yzc4NmNl
Mi4uMDUxMDQyYThkOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0xNzAsNiArMTcw
LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkRmx1c2goR3JhcGhpY3NDb250
ZXh0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRGbHVzaChmbHVzaElkZW50aWZpZXIsIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnRyYW5zZmVyTWVtb3J5T3du
ZXJzaGlwKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYgaGFuZGxlLCBzaXplX3QgZGF0YVNpemUsIE1l
bW9yeUxlZGdlciBtZW1vcnlMZWRnZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpUcmFuc2Zlck1lbW9yeU93bmVyc2hpcChTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgZGF0YVNpemUgfSwgbWVtb3J5TGVkZ2VyKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVyUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIC8vIEltbWVkaWF0ZWx5IHR1
cm4gdGhlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciAod2hpY2ggaXMgZXJyb3ItcHJvbmUp
IHRvIGEgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLApAQCAtMjExLDggKzIx
Niw4IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXJGb3JJbWFn
ZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50CiAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIg
PSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocXVhbGlmaWVkSW1hZ2VC
dWZmZXIpKSB7CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4
ZWxCdWZmZXIoZGVzdGluYXRpb25Gb3JtYXQsIHNyY1JlY3QpOwogICAgICAgICBpZiAocGl4ZWxC
dWZmZXIpIHsKLSAgICAgICAgICAgIE1FU1NBR0VfQ0hFQ0socGl4ZWxCdWZmZXItPmRhdGEoKS5i
eXRlTGVuZ3RoKCkgPD0gbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+c2l6ZSgpLCAiU2ht
ZW0gZm9yIHJldHVybiBvZiBnZXRQaXhlbEJ1ZmZlciBpcyB0b28gc21hbGwiKTsKLSAgICAgICAg
ICAgIG1lbWNweShtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5LT5kYXRhKCksIHBpeGVsQnVm
ZmVyLT5kYXRhKCkuZGF0YSgpLCBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmJ5dGVMZW5ndGgoKSk7Cisg
ICAgICAgICAgICBNRVNTQUdFX0NIRUNLKHBpeGVsQnVmZmVyLT5ieXRlTGVuZ3RoKCkgPD0gbV9n
ZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+c2l6ZSgpLCAiU2htZW0gZm9yIHJldHVybiBvZiBn
ZXRQaXhlbEJ1ZmZlciBpcyB0b28gc21hbGwiKTsKKyAgICAgICAgICAgIG1lbWNweShtX2dldFBp
eGVsQnVmZmVyU2hhcmVkTWVtb3J5LT5kYXRhKCksIHBpeGVsQnVmZmVyLT5ieXRlcygpLCBwaXhl
bEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtZW1z
ZXQobV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+ZGF0YSgpLCAwLCBtX2dldFBpeGVsQnVm
ZmVyU2hhcmVkTWVtb3J5LT5zaXplKCkpOwogICAgIH0KQEAgLTIzNCwxMSArMjM5LDEzIEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVt
b3J5KCkKICAgICBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5ID0gbnVsbHB0cjsKIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlckZvckltYWdlQnVmZmVy
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgUGl4ZWxCdWZmZXImJiBw
aXhlbEJ1ZmZlciwgSW50UmVjdCYmIHNyY1JlY3QsIEludFBvaW50JiYgZGVzdFBvaW50LCBBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlQnVmZmVyLCBJUEM6OlBpeGVsQnVmZmVyUmVmZXJlbmNlJiYgcGl4ZWxCdWZmZXJS
ZWZlcmVuY2UsIEludFJlY3QmJiBzcmNSZWN0LCBJbnRQb2ludCYmIGRlc3RQb2ludCwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQogewogICAgIFF1YWxpZmllZFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBxdWFsaWZpZWRJbWFnZUJ1ZmZlciB7IGltYWdlQnVmZmVyLCBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfTsKLSAgICBp
ZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1
ZmZlcihxdWFsaWZpZWRJbWFnZUJ1ZmZlcikpCisgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocXVhbGlmaWVkSW1hZ2VCdWZm
ZXIpKSB7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlclJlZmVyZW5jZS50
YWtlUGl4ZWxCdWZmZXIoKTsKICAgICAgICAgaW1hZ2VCdWZmZXItPnB1dFBpeGVsQnVmZmVyKHBp
eGVsQnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNl
cnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzE3LDE2ICszMjQsMjEgQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRGaWx0ZXJlZEltYWdlRm9ySW1hZ2VCdWZmZXIo
UmVuZGVyaW5nUmVzb3VyY2VJZGUKICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcih7IGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9KTsKICAgICAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBGaWx0ZXJSZXN1
bHRzIHJlc3VsdHMobWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZUFsbG9jYXRvcj4oKnRo
aXMpKTsKICAgICAgICAgYXV0byBpbWFnZSA9IGltYWdlQnVmZmVyLT5maWx0ZXJlZEltYWdlKGZp
bHRlcik7CiAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CisKICAgICAg
ICAgYXV0byBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogICAgICAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKEludFNpemUoaW1hZ2VTaXplKSwgeyBpbWFnZUJ1ZmZl
ci0+Y29sb3JTcGFjZSgpIH0pOwogICAgICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJl
dHVybjsKKwogICAgICAgICBhdXRvIGNvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpOwogICAgICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CisKICAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpKTsKICAgICAgICAg
Yml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKICAgICB9KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAppbmRleCBiODc1OTcwMzNjYmQuLjZjMGVmY2Y1OWQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CkBAIC01OSw2ICs1OSw3IEBAIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiAKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgRmlsdGVyUmVmZXJlbmNlOworY2xhc3MgUGl4ZWxCdWZmZXJS
ZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODQsNiArODUsNyBAQCBwdWJs
aWM6CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICB2b2lkIGRpZENyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFF1YWxpZmllZFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlciYpOwogICAgIHZv
aWQgZGlkRmx1c2goV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLCBRdWFs
aWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgdHJhbnNmZXJNZW1v
cnlPd25lcnNoaXAoU2hhcmVkTWVtb3J5OjpIYW5kbGUmJiwgc2l6ZV90IGRhdGFTaXplLCBNZW1v
cnlMZWRnZXIpOwogCiAgICAgLy8gUnVucyBGdW5jdGlvbiBpbiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kIHRhc2sgcXVldWUuCiAgICAgdm9pZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYpOwpA
QCAtMTEyLDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQaXhlbEJ1ZmZlckZvcklt
YWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6
UGl4ZWxCdWZmZXJGb3JtYXQmJiwgV2ViQ29yZTo6SW50UmVjdCYmIHNyY1JlY3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBnZXRQaXhlbEJ1ZmZlckZvckltYWdlQnVm
ZmVyV2l0aE5ld01lbW9yeShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYsIFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiYgZGVz
dGluYXRpb25Gb3JtYXQsIFdlYkNvcmU6OkludFJlY3QmJiBzcmNSZWN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVt
b3J5KCk7Ci0gICAgdm9pZCBwdXRQaXhlbEJ1ZmZlckZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UGl4ZWxCdWZmZXImJiwgV2ViQ29y
ZTo6SW50UmVjdCYmIHNyY1JlY3QsIFdlYkNvcmU6OkludFBvaW50JiYgZGVzdFBvaW50LCBXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpOworICAgIHZvaWQgcHV0UGl4
ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIElQQzo6UGl4ZWxCdWZmZXJSZWZlcmVuY2UmJiwgV2ViQ29yZTo6SW50UmVjdCYmIHNyY1Jl
Y3QsIFdlYkNvcmU6OkludFBvaW50JiYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIGRlc3RGb3JtYXQpOwogICAgIHZvaWQgZ2V0RGF0YVVSTEZvckltYWdlQnVmZmVy
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBX
ZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQg
Z2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKTsKICAgICB2b2lk
IGdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMjRhYjE1MDk2M2QzLi43MTdhZmE4NWY5ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3
IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCBTdHJl
YW0gewogICAgIEdldFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBzdHJ1Y3QgV2ViQ29yZTo6UGl4ZWxCdWZm
ZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QpIC0+ICgpIFN5
bmNocm9ub3VzCiAgICAgR2V0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcldpdGhOZXdNZW1vcnko
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwgc3RydWN0IFdlYkNvcmU6OlBpeGVsQnVm
ZmVyRm9ybWF0IG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0KSAtPiAoKSBT
eW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGUKICAgICBEZXN0cm95R2V0UGl4ZWxCdWZmZXJT
aGFyZWRNZW1vcnkoKQotICAgIFB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBXZWJDb3JlOjpQaXhlbEJ1
ZmZlciBwaXhlbEJ1ZmZlciwgIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6SW50
UG9pbnQgZGVzdFBvaW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBkZXN0Rm9ybWF0KQorICAgIFB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBJUEM6OlBpeGVsQnVm
ZmVyUmVmZXJlbmNlIHBpeGVsQnVmZmVyLCAgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJD
b3JlOjpJbnRQb2ludCBkZXN0UG9pbnQsIGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCiAgICAgR2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKFN0
cmluZyBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIGVudW06dWludDhf
dCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSAtPiAoU3RyaW5nIHVybFN0cmluZykgU3luY2hyb25vdXMKICAgICBHZXREYXRhRm9ySW1hZ2VC
dWZmZXIoU3RyaW5nIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikgLT4gKFZlY3Rvcjx1aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cwogICAgIEdldFNoYXJl
YWJsZUJpdG1hcEZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBpbWFnZUJ1ZmZlciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlv
biBwcmVzZXJ2ZVJlc29sdXRpb24pIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IGhhbmRsZSkgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlUmVwbHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9TaGFyZWFibGVQaXhlbEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2hhcmVhYmxlUGl4ZWxCdWZm
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDkxZTAwMTgw
OTQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1NoYXJlYWJsZVBpeGVsQnVmZmVyLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZVBpeGVsQnVmZmVyLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlZlB0cjxT
aGFyZWFibGVQaXhlbEJ1ZmZlcj4gU2hhcmVhYmxlUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAg
IEFTU0VSVChzdXBwb3J0ZWRQaXhlbEZvcm1hdChmb3JtYXQucGl4ZWxGb3JtYXQpKTsKKworICAg
IGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CisgICAg
aWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBpZiAoYnVmZmVyU2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNo
YXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoYnVmZmVyU2l6ZSk7CisgICAgaWYg
KCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTaGFyZWFibGVQaXhlbEJ1ZmZlcihmb3JtYXQsIHNpemUsIHNoYXJlZE1lbW9y
eS5yZWxlYXNlTm9uTnVsbCgpKSk7Cit9CisKK1NoYXJlYWJsZVBpeGVsQnVmZmVyOjpTaGFyZWFi
bGVQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRT
aXplJiBzaXplLCBSZWY8U2hhcmVkTWVtb3J5PiYmIGRhdGEpCisgICAgOiBQaXhlbEJ1ZmZlcihm
b3JtYXQsIHNpemUpCisgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKChtX3NpemUuYXJlYSgpICogNCkgPD0g
Ynl0ZUxlbmd0aCgpKTsKK30KKwordWludDhfdCogU2hhcmVhYmxlUGl4ZWxCdWZmZXI6OmJ5dGVz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fZGF0YS0+ZGF0
YSgpKTsKK30KKworc2l6ZV90IFNoYXJlYWJsZVBpeGVsQnVmZmVyOjpieXRlTGVuZ3RoKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9kYXRhLT5zaXplKCkgPT0gbV9zaXplLmFyZWEoKSAqIDQpOwor
ICAgIHJldHVybiBtX2RhdGEtPnNpemUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1NoYXJlYWJsZVBp
eGVsQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvU2hhcmVhYmxl
UGl4ZWxCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM2
OGYyNDE2MWNiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9TaGFyZWFibGVQaXhlbEJ1ZmZlci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxXZWJDb3JlL1BpeGVsQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBTaGFyZWFibGVQaXhlbEJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpQaXhlbEJ1ZmZlciB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVQaXhlbEJ1ZmZlcj4gdHJ5Q3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOworCisgICAgU2hhcmVkTWVtb3J5JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmdldCgpOyB9CisgICAgUmVmPFNoYXJlZE1lbW9yeT4mJiB0YWtlRGF0YSgpIHsgcmV0dXJuIFdU
Rk1vdmUobV9kYXRhKTsgfQorCisgICAgdWludDhfdCogYnl0ZXMoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlOworCitwcml2YXRlOgorICAg
IFNoYXJlYWJsZVBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFJlZjxTaGFyZWRNZW1vcnk+JiYpOworCisgICAgUmVm
PFNoYXJlZE1lbW9yeT4gbV9kYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9i
amVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwLmNwcAppbmRleCA2NmEzNzJlZGZkZWYuLmQxMjU3MDU3ZjNiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIFdvcmtR
dWV1ZSYgcmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBRdWV1ZSgpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggMWQ3YWRhYjU2OTM5Li5iM2Y3NzVhYzZmN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiSVBDVGVzdGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
aCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvUGl4ZWxCdWZmZXJSZWZlcmVuY2UuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1BpeGVsQnVmZmVyUmVmZXJlbmNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45OWQ2NjNlYmE1MGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9QaXhlbEJ1ZmZlclJlZmVyZW5j
ZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPFdlYkNvcmUvSlNQaXhlbEJ1ZmZlci5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3Mg
UGl4ZWxCdWZmZXJSZWZlcmVuY2UgeworcHVibGljOgorICAgIFBpeGVsQnVmZmVyUmVmZXJlbmNl
KFJlZjxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlcikKKyAgICAgICAgOiBtX3Bp
eGVsQnVmZmVyKFdURk1vdmUocGl4ZWxCdWZmZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8
V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IHRha2VQaXhlbEJ1ZmZlcigpIHsgcmV0dXJuIFdURk1vdmUo
bV9waXhlbEJ1ZmZlcik7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlclJlZmVyZW5jZT4gZGVjb2RlKERlY29kZXImKTsKKwor
cHJpdmF0ZToKKyAgICBSZWY8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IG1fcGl4ZWxCdWZmZXI7Cit9
OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQaXhlbEJ1ZmZlclJlZmVyZW5jZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgaWYgKGlzPFdlYkNvcmU6OkpT
UGl4ZWxCdWZmZXI+KG1fcGl4ZWxCdWZmZXIpKQorICAgICAgICBkb3duY2FzdDxXZWJDb3JlOjpK
U1BpeGVsQnVmZmVyPihtX3BpeGVsQnVmZmVyLmdldCgpKS5lbmNvZGUoZW5jb2Rlcik7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyUmVmZXJl
bmNlPiBQaXhlbEJ1ZmZlclJlZmVyZW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpKU1BpeGVsQnVmZmVyOjpkZWNvZGUo
ZGVjb2RlcikpCisgICAgICAgIHJldHVybiB7IFdURk1vdmUoKnBpeGVsQnVmZmVyKSB9OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9NZW1vcnlMZWRnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTWVtb3J5TGVkZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi45MmU0OGU2N2M5NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL01lbW9yeUxlZGdlci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBNZW1v
cnlMZWRnZXIgOiB1aW50OF90IHsKKyAgICBOb25lLAorICAgIERlZmF1bHQsCisgICAgTmV0d29y
aywKKyAgICBNZWRpYSwKKyAgICBHcmFwaGljcywKKyAgICBOZXVyYWwKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJLaXQ6Ok1lbW9yeUxlZGdlcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFdlYktpdDo6TWVtb3J5TGVkZ2VyLAorCisgICAgICAgIFdlYktpdDo6
TWVtb3J5TGVkZ2VyOjpOb25lLAorICAgICAgICBXZWJLaXQ6Ok1lbW9yeUxlZGdlcjo6RGVmYXVs
dCwKKyAgICAgICAgV2ViS2l0OjpNZW1vcnlMZWRnZXI6Ok5ldHdvcmssCisgICAgICAgIFdlYktp
dDo6TWVtb3J5TGVkZ2VyOjpNZWRpYSwKKyAgICAgICAgV2ViS2l0OjpNZW1vcnlMZWRnZXI6Okdy
YXBoaWNzLAorICAgICAgICBXZWJLaXQ6Ok1lbW9yeUxlZGdlcjo6TmV1cmFsCisgICAgPjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgK
aW5kZXggMDQyODc1ZmNiMDMyLi4wZGIzZWMxZGI3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIk1lbW9yeUxlZGdlci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CkBAIC01Niw4ICs1Nyw2IEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1lbnVtIGNsYXNzIE1lbW9yeUxlZGdlciB7IE5vbmUsIERlZmF1bHQsIE5ldHdvcmss
IE1lZGlhLCBHcmFwaGljcywgTmV1cmFsIH07Ci0KIGNsYXNzIFNoYXJlZE1lbW9yeSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRNZW1vcnk+IHsKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFByb3RlY3Rpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggMjczOWEyYjU1ZWZlLi4xMTdkNTE5ZDFiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjU1LDYgKzI1NSw3IEBAIGRlZiB0eXBlc190aGF0
X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdJUEM6OkRhdGFSZWZlcmVu
Y2UnLAogICAgICAgICAnSVBDOjpGaWx0ZXJSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpGb250
UmVmZXJlbmNlJywKKyAgICAgICAgJ0lQQzo6UGl4ZWxCdWZmZXJSZWZlcmVuY2UnLAogICAgICAg
ICAnSVBDOjpTZW1hcGhvcmUnLAogICAgICAgICAnTWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdN
ZWRpYVRpbWUnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
CmluZGV4IGIzMjM3OGQ3MTU2Ni4uN2VkMDQyMDllYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgUmVmUHRyPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlPiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb3B5
TmF0aXZlSW1hZ2UoV2UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0
UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6
UGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3QKIHsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggZjQ1ZGZlMzRkMTE3Li41ODFlMTA1NzA3
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOT1RFOiBUaGVzZSBhbGwgQVNTRVJUX05PVF9S
RUFDSEVEKCkuCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1h
Z2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUp
IGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IGdl
dFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3Jt
YXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVm
ZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVy
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0
KSBmaW5hbDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
aAppbmRleCAzOWMwZDdmNzk1MWYuLjQ0NGZkODcxMDc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmgKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogICAgICAgICBIYW5k
bGUmIG9wZXJhdG9yPShIYW5kbGUmJikgPSBkZWZhdWx0OwogCiAgICAgICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGUuaXNOdWxsKCk7IH0KKyAgICAgICAgCisgICAgICAg
IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUoKSB7IHJldHVybiBtX2hhbmRsZTsgfQogCiAg
ICAgICAgIC8vIFRha2Ugb3duZXJzaGlwIG9mIHRoZSBtZW1vcnkgZm9yIHByb2Nlc3MgbWVtb3J5
IGFjY291bnRpbmcgcHVycG9zZXMuCiAgICAgICAgIHZvaWQgdGFrZU93bmVyc2hpcE9mTWVtb3J5
KE1lbW9yeUxlZGdlcikgY29uc3Q7CkBAIC05Nyw2ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQqIGRhdGEoKSBjb25zdDsKICAgICBzaXplX3QgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVy
biBjYWxjdWxhdGVCeXRlc1BlclJvdyhtX3NpemUsIG1fY29uZmlndXJhdGlvbik7IH0KKyAgICBz
aXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBudW1CeXRlc0ZvclNpemUobV9zaXpl
LCBtX2NvbmZpZ3VyYXRpb24pOyB9CiAKICAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0
IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0Nv
bnRleHQoKTsKQEAgLTEzOSw4ICsxNDIsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHJl
bGVhc2VTdXJmYWNlRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCk7CiAjZW5kaWYKIAotICAgIHNp
emVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG51bUJ5dGVzRm9yU2l6ZShtX3NpemUs
IG1fY29uZmlndXJhdGlvbik7IH0KLQogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwogICAg
IENvbmZpZ3VyYXRpb24gbV9jb25maWd1cmF0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA5NDc5YzVk
MWE3YmEuLmYzNmY1MDg3YWVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNCwxMiArMjQsMTQgQEAKIEdQ
VVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKIEdQVVByb2Nlc3MvR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKK0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVBbGxvY2F0b3IuY3BwCiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCi1HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1
ZXN0LmNwcAogR1BVUHJvY2Vzcy9ncmFwaGljcy9TY29wZWRXZWJHTFJlbmRlcmluZ1Jlc291cmNl
c1JlcXVlc3QuY3BwCitHUFVQcm9jZXNzL2dyYXBoaWNzL1NoYXJlYWJsZVBpeGVsQnVmZmVyLmNw
cAogR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlci5jcHAKIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cC5jcHAKIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU1MDM5MjEzZGJiMy4uMjg0YTY2
NTE0NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ5OTMsMzcgKzQ5OTMsMTcgQEAKIAkJNTcwREFBQzUyMzAzN0Y3RTAwRThGQzA0
IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzBEQUFDODIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDdGFwTmZjRHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MERB
QUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEN0YXBOZmNEcml2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzJF
QkJCOTI1MzZBMDZFMDAwNTUyQjMgLyogSW5mby1pT1MucGxpc3QgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0OyBuYW1lID0gIkluZm8t
aU9TLnBsaXN0IjsgcGF0aCA9ICJXZWJBdXRoblByb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENT
ZXJ2aWNlL1dlYkF1dGhuU2VydmljZS9JbmZvLWlPUy5wbGlzdCI7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKLQkJNTcyRUJCQkEyNTM2QTA2RTAwMDU1MkIzIC8qIEluZm8tT1NYLnBsaXN0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5w
bGlzdDsgbmFtZSA9ICJJbmZvLU9TWC5wbGlzdCI7IHBhdGggPSAiV2ViQXV0aG5Qcm9jZXNzL0Vu
dHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9XZWJBdXRoblNlcnZpY2UvSW5mby1PU1gucGxpc3Qi
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTU3MkVCQkJCMjUzNkE2MEEwMDA1NTJC
MyAvKiBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0aG5Db25uZWN0aW9uVG9X
ZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTcyRUJCQkMyNTM2QTYwQTAwMDU1MkIzIC8qIFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhu
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU3MkVCQkJEMjUzNkE2MEEwMDA1NTJCMyAvKiBXZWJBdXRoblByb2Nlc3NNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXV0
aG5Qcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTcyRUJCQkUyNTM2QTYwQTAwMDU1MkIzIC8qIFdlYkF1dGhuUHJvY2Vzc01lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhuUHJvY2Vzc01lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkVCQkMzMjUzNkFCODQwMDA1NTJC
MyAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuUHJvY2Vzcy5zYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuUHJvY2Vzcy5zYjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTcyRUJCQzUyNTM2QUZENTAwMDU1MkIzIC8qIFdlYkF1dGhuUHJv
Y2Vzc1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1
dGhuUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTcyRUJC
QzYyNTM2QUZENTAwMDU1MkIzIC8qIFdlYkF1dGhuUHJvY2Vzc1Byb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhuUHJvY2Vzc1Byb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTU3MkVCQkNCMjUzNkIwNEYwMDA1NTJCMyAvKiBXZWJBdXRoblBy
b2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1NzJFQkJEMTI1MzZDODg1MDAwNTUyQjMgLyogV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRoblByb2Nl
c3NDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTcyRUJCRDIy
NTM2Qzg4NTAwMDU1MkIzIC8qIFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzJFQkJEMzI1MzZDODg1MDAwNTUyQjMgLyogV2Vi
QXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NzJFQkJEODI1MzhGNkExMDAwNTUyQjMgLyogQXBwQXR0ZXN0SW50ZXJu
YWxTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcEF0dGVzdEludGVybmFsU29m
dExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkVCQkQ5MjUzOEY2QTEw
MDA1NTJCMyAvKiBBcHBBdHRlc3RJbnRlcm5hbFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFw
cEF0dGVzdEludGVybmFsU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0dGVzdFNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcHBBdHRlc3RTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcyRkQ0NDEy
MjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTc0MjE3OTEyNDAwRTA5ODAwMkIzMDNEIC8qIExvY2FsQXV0aGVu
dGljYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQyQTJGNzI1MzU2MTNGMDBCN0JBMTQgLyog
LnhwYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gIndy
YXBwZXIueHBjLXNlcnZpY2UiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAueHBjOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk1NzQyQTMwNjI1MzU4QTA0MDBCN0JB
MTQgLyogV2ViQXV0aG5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dGhuUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzQyQTMwNzI1MzU4QTA0MDBCN0JBMTQgLyog
V2ViQXV0aG5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dGhuUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NDJBMzBBMjUzNThFRkQwMEI3QkExNCAv
KiBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTU3NDJBMzBCMjUzNThFRkQwMEI3QkExNCAvKiBXZWJBdXRobkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1NzQyQTMwQzI1MzU4RUZEMDBCN0JBMTQgLyogV2ViQXV0aG5Db25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTU3NDJBMzEzMjUzNjQ4RTQwMEI3QkExNCAvKiBXZWJBdXRoblByb2Nlc3Mu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViQXV0aG5Qcm9jZXNzLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzQyQTMxNDI1MzY0OEU0MDBC
N0JBMTQgLyogV2ViQXV0aG5Qcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkF1dGhuUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTU3NDJBMzE1MjUzNjQ4RTQwMEI3QkExNCAvKiBXZWJBdXRoblByb2Nlc3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0aG5Qcm9jZXNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTU3NDJBMzFBMjUzNjc1RTkwMEI3QkExNCAvKiBXZWJBdXRoblBy
b2Nlc3NJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRoblByb2Nlc3NJT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NDJBMzFDMjUzNjc1RjYwMEI3QkExNCAv
KiBXZWJBdXRoblByb2Nlc3NNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRoblBy
b2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3NDJBMzFEMjUzNjc1
RjYwMEI3QkExNCAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuUHJvY2Vzcy5zYi5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBjb20uYXBwbGUuV2ViS2l0LldlYkF1dGhuUHJvY2Vzcy5zYi5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTc0MkEzMUUyNTM2OTQ5MzAwQjdCQTE0IC8qIFdlYkF1dGhuU2Vydmlj
ZUVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRoblNlcnZpY2VFbnRy
eVBvaW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzQ3MjhDRjIzNDU2RTk4
MDAxNzAwQUYgLyogX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU3NDcyOEQwMjM0NTZFOTgwMDE3MDBBRiAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0NzI4RDMyMzQ1NzBBRTAwMTcwMEFGIC8qIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU0MDcsNiArNTM4Nyw4IEBACiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMyMzY3NyAvKiBXZWJz
aXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGlj
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjAzNDQ5QTI2QTZDNDRDMDAwQTVG
NTQgLyogTW9ub3RvbmljT2JqZWN0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb25vdG9u
aWNPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyMDM0
NDlCMjZBNkM0NzYwMDBBNUY1NCAvKiBSZW5kZXJpbmdVcGRhdGVJRC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJpbmdVcGRhdGVJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE1
OEZERjI4MkEwMUQ2MDAzQkI0MjMgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVBbGxvY2F0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJTaGFyZWFibGVBbGxvY2F0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE1OEZFMDI4MkEwMUQ2MDAzQkI0MjMgLyog
SW1hZ2VCdWZmZXJTaGFyZWFibGVBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIy
NzgwMEIyNDA4QkQ3RDAwN0QzNzZCIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0Njk2M0EyNzVCN0U2NzAwQTkxNTZBIC8qIEZpbHRl
clJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJSZWZlcmVuY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2RDU2REQyNTNBNjQ4MTAwMDJFRjkwIC8qIFJlbW90ZVJl
c291cmNlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDIwLDYgKzU0MDIsMTAgQEAKIAkJ
NzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8q
IFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTcyOTFBNDU4MjgzN0Y5RDAwMDlCMzg5MCAvKiBQaXhlbEJ1ZmZlclJlZmVyZW5jZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQaXhlbEJ1ZmZlclJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MjkxQTQ1QzI4MzgxODI0MDA5QjM4OTAgLyogU2hhcmVhYmxlUGl4ZWxCdWZmZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVhYmxlUGl4ZWxCdWZmZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjkxQTQ1RDI4MzgxODI0MDA5QjM4OTAgLyogU2hhcmVh
YmxlUGl4ZWxCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVhYmxlUGl4ZWxCdWZmZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5MUE0NjIyODM4ODExMTAwOUIzODkwIC8q
IE1lbW9yeUxlZGdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlMZWRnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCNTMxNTcyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkI1MzE1ODI1M0Mx
RTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NUE4RDJDNDE4N0NDRjlGMDBDMzlDOUUgLyogV0tXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODMyMCw2ICs4MzA2LDcgQEAKIAkJCQkxQTNFRUQwRDE2
MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8sCiAJCQkJMUFBQjAzNzcx
ODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuY3BwICovLAogCQkJCTFBQUIwMzc4MTg1
QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggKi8sCisJCQkJNzI5MUE0NTgyODM3RjlE
MDAwOUIzODkwIC8qIFBpeGVsQnVmZmVyUmVmZXJlbmNlLmggKi8sCiAJCQkJN0JFOTMyNjIyN0Y1
Qzc1QTAwRDVGRUZCIC8qIFJlY2VpdmVyTWF0Y2hlci5oICovLAogCQkJCTdCQUIxMTBGMjVERDAy
QjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8sCiAJCQkJ
MkRDMTgwMDFEOTBEREQxNUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovLApAQCAt
MTA0NzMsNiArMTA0NjAsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
IAkJCQkxQzk4QzAxQzI3NDQ2OTI2MDAyQ0NCNzggLyogV2ViR1BVICovLAorCQkJCTcyMTU4RkRG
MjgyQTAxRDYwMDNCQjQyMyAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUFsbG9jYXRvci5jcHAgKi8s
CisJCQkJNzIxNThGRTAyODJBMDFENjAwM0JCNDIzIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQWxs
b2NhdG9yLmggKi8sCiAJCQkJNTVBRDA5NDMyNDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVt
b3RlSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQkxQ0M1NEFGRDI3MEY5NjU0MDA1QkY4QkUgLyogUXVh
bGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi8sCiAJCQkJMUNCRjkwMTIyNzEw
MThCNTAwMEM0NTdEIC8qIFF1YWxpZmllZFJlc291cmNlSGVhcC5oICovLApAQCAtMTA0OTYsNiAr
MTA0ODUsOCBAQAogCQkJCTdCQ0Y3MENCMjYxNDkzNUUwMEU0RkI3MCAvKiBTY29wZWRSZW5kZXJp
bmdSZXNvdXJjZXNSZXF1ZXN0Q29jb2EubW0gKi8sCiAJCQkJN0JDRjcwQ0MyNjE0OTM1RjAwRTRG
QjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5jcHAgKi8sCiAJCQkJ
N0JDRjcwQ0UyNjE0OTM1RjAwRTRGQjcwIC8qIFNjb3BlZFdlYkdMUmVuZGVyaW5nUmVzb3VyY2Vz
UmVxdWVzdC5oICovLAorCQkJCTcyOTFBNDVDMjgzODE4MjQwMDlCMzg5MCAvKiBTaGFyZWFibGVQ
aXhlbEJ1ZmZlci5jcHAgKi8sCisJCQkJNzI5MUE0NUQyODM4MTgyNDAwOUIzODkwIC8qIFNoYXJl
YWJsZVBpeGVsQnVmZmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEyMzEwLDYgKzEyMzAxLDcgQEAKIAkJCQkwRkRDRDdG
NjFENDdFOTJBMDA5RjA4QkMgLyogTG9nSW5pdGlhbGl6YXRpb24uaCAqLywKIAkJCQlDMEUzQUE0
NTEyMDlFMkJBMDBBNDlEMDEgLyogTW9kdWxlLmNwcCAqLywKIAkJCQlDMEUzQUE0NDEyMDlFMkJB
MDBBNDlEMDEgLyogTW9kdWxlLmggKi8sCisJCQkJNzI5MUE0NjIyODM4ODExMTAwOUIzODkwIC8q
IE1lbW9yeUxlZGdlci5oICovLAogCQkJCUExQURBRkI1MjM2OEU0QjgwMDlDQjc3NiAvKiBTaGFy
ZWRNZW1vcnkuY3BwICovLAogCQkJCTFBMjRCRUQzMTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRN
ZW1vcnkuaCAqLywKIAkJCSk7CkBAIC0xNTUyOCwyOCArMTU1MjAsNiBAQAogCQkJcHJvZHVjdFJl
ZmVyZW5jZSA9IDUxN0I1RjVCMjc1QThEM0UwMDJEQzIyRCAvKiB3ZWJwdXNodG9vbCAqLzsKIAkJ
CXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CiAJCX07Ci0JCTU3
NDJBMkU1MjUzNTYxM0YwMEI3QkExNCAvKiBXZWJBdXRobiAqLyA9IHsKLQkJCWlzYSA9IFBCWE5h
dGl2ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA1NzQyQTJGMzI1MzU2MTNG
MDBCN0JBMTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
IldlYkF1dGhuIiAqLzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTU3NDJBMkVBMjUzNTYxM0Yw
MEI3QkExNCAvKiBTb3VyY2VzICovLAotCQkJCTU3NDJBMkVEMjUzNTYxM0YwMEI3QkExNCAvKiBG
cmFtZXdvcmtzICovLAotCQkJCTU3NDJBMkYwMjUzNTYxM0YwMEI3QkExNCAvKiBSZXNvdXJjZXMg
Ki8sCi0JCQkJNTc0MkEyRjEyNTM1NjEzRjAwQjdCQTE0IC8qIFVubG9jayBrZXljaGFpbiAqLywK
LQkJCQk1NzQyQTJGMjI1MzU2MTNGMDBCN0JBMTQgLyogUHJvY2VzcyBXZWJBdXRoZW50aWNhdGlv
biBlbnRpdGxlbWVudHMgKi8sCi0JCQkJNjUxNzU3MjMyN0NGQzI0QTAwRDlGRTQwIC8qIENvcHkg
WFBDIFNlcnZpY2UgdG8gU2Vjb25kYXJ5IFBhdGggKi8sCi0JCQkpOwotCQkJYnVpbGRSdWxlcyA9
ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJNTc0MkEyRTYyNTM1NjEzRjAwQjdC
QTE0IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkJNTc0MkEyRTgyNTM1NjEzRjAwQjdC
QTE0IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkpOwotCQkJbmFtZSA9IFdlYkF1dGhu
OwotCQkJcHJvZHVjdE5hbWUgPSBOZXR3b3JraW5nOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDU3
NDJBMkY3MjUzNTYxM0YwMEI3QkExNCAvKiAueHBjICovOwotCQkJcHJvZHVjdFR5cGUgPSAiY29t
LmFwcGxlLnByb2R1Y3QtdHlwZS54cGMtc2VydmljZSI7Ci0JCX07CiAJCTVDMTU3OUNDMjcxNjVC
MkYwMEVENTI4MCAvKiB3ZWJwdXNoZCAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsK
IAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA1QzE1NzlENjI3MTY1QjJGMDBFRDUyODAgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIndlYnB1c2hkIiAq
LzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApp
bmRleCBkN2UzZGE3MjljNjguLjY0M2UzNTZkM2VmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtMTU4LDkgKzE1OCw5IEBAIFJlZlB0
cjxJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5SW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSwgUHJlCiAgICAgcmV0dXJuIG1fYml0bWFwLT5jcmVhdGVJbWFnZSgpOwog
fQogCi1zdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRG
b3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0CitSZWZQdHI8UGl4ZWxCdWZmZXI+
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VCdWZmZXJBbGxvY2F0b3ImIGFsbG9jYXRvcikgY29uc3QKIHsKLSAgICByZXR1
cm4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihvdXRwdXRGb3JtYXQsIHNyY1Jl
Y3QsIG1fYml0bWFwLT5kYXRhKCkpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6Omdl
dFBpeGVsQnVmZmVyKG91dHB1dEZvcm1hdCwgc3JjUmVjdCwgbV9iaXRtYXAtPmRhdGEoKSwgYWxs
b2NhdG9yKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OnB1
dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggZjU5ODIyNTdiYmExLi43N2E2YjcwODIzY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaApAQCAtNjUsNyAr
NjUsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0
aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5n
U3RvcmUpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdl
KFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBX
ZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246
Ok5vKSBjb25zdCBmaW5hbDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGl4ZWxCdWZm
ZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0JiBvdXRw
dXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBp
eGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckFsbG9jYXRvciYpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50
LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIGZpbmFsOwogCiAg
ICAgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
dHkmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggYjZl
NjJiMTcyYWZmLi5jNjI1NzNjZGNkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCkBAIC0zMjEsNyArMzIxLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKSBmaW5hbDsKICAg
ICB2b2lkIGRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKSBmaW5h
bDsKICAgICB2b2lkIGdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFt
cykgZmluYWw7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gcGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFs
OwogICAgIC8vIEVuZCBvZiBsaXN0IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQu
CiAKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNZXNzYWdlVG9SZW1vdmVkRGVzdGluYXRpb24oSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAppbmRl
eCA4MjUwYjY5MjQ4NmEuLjk3ZjRkYzg1OWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBA
IC0yMjk5LDE1ICsyMjk5LDE1IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtCiAgICAgfQogfQog
Ci1zdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkKK1JlZlB0cjxX
ZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQaXhlbEJ1ZmZlcj4gcmV0dXJuVmFsdWUgPSB7IH07CisgICAgc3RkOjpvcHRpb25hbDxJ
UEM6OlBpeGVsQnVmZmVyUmVmZXJlbmNlPiByZXR1cm5WYWx1ZSA9IHsgfTsKICAgICBpZiAoIWlz
Q29udGV4dExvc3QoKSkgewogICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4
ZWxCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYWludFJlbmRl
cmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSkpOwogICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCiAgICAgICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKICAgICB9Ci0g
ICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIHJldHVybiByZXR1cm5WYWx1ZS0+dGFrZVBpeGVs
QnVmZmVyKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggOGEyZTM2
NmM2NGYyLi44YjRjMjIzNDgxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0y
MjksMTggKzIyOSwxNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS0+Z2V0RmlsdGVyZWRJbWFnZShtX3JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgZmlsdGVyKTsKICAgICB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBp
eGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1h
dCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNv
bnN0IGZpbmFsCisgICAgUmVmUHRyPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVy
QWxsb2NhdG9yJiBhbGxvY2F0b3IpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBpZiAoVU5M
SUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgYXV0
byYgbXV0YWJsZVRoaXMgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkmPigqdGhp
cyk7CiAgICAgICAgIG11dGFibGVUaGlzLmZsdXNoRHJhd2luZ0NvbnRleHRBc3luYygpOwotICAg
ICAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShk
ZXN0aW5hdGlvbkZvcm1hdCwgc3JjUmVjdC5zaXplKCkpOworICAgICAgICBhdXRvIHBpeGVsQnVm
ZmVyID0gYWxsb2NhdG9yLmNyZWF0ZVBpeGVsQnVmZmVyKGRlc3RpbmF0aW9uRm9ybWF0LCBzcmNS
ZWN0LnNpemUoKSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBhdXRvJiBkYXRhID0gcGl4ZWxCdWZmZXItPmRhdGEo
KTsKLSAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0UGl4ZWxC
dWZmZXJGb3JJbWFnZUJ1ZmZlcihtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgZGVzdGlu
YXRpb25Gb3JtYXQsIHNyY1JlY3QsIHsgZGF0YS5kYXRhKCksIGRhdGEuYnl0ZUxlbmd0aCgpIH0p
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXRQ
aXhlbEJ1ZmZlckZvckltYWdlQnVmZmVyKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBk
ZXN0aW5hdGlvbkZvcm1hdCwgc3JjUmVjdCwgeyBwaXhlbEJ1ZmZlci0+Ynl0ZXMoKSwgcGl4ZWxC
dWZmZXItPmJ5dGVMZW5ndGgoKSB9KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICByZXR1cm4gcGl4ZWxCdWZmZXI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHAKaW5kZXggNGVmNDBmOTUxZTVmLi4yNjQ3ZmRmNDc0NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTE3Myw3ICsxNzMsNyBA
QCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0UGl4ZWxCdWZmZXJGb3JJbWFn
ZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6cHV0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXIsIGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3Qg
SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQogewotICAgIHNlbmRUb1N0cmVhbShNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UHV0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihpbWFnZUJ1
ZmZlciwgcGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCkpOworICAg
IHNlbmRUb1N0cmVhbShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UHV0UGl4ZWxC
dWZmZXJGb3JJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgSVBDOjpQaXhlbEJ1ZmZlclJlZmVyZW5j
ZSB7IFJlZiB7IGNvbnN0X2Nhc3Q8UGl4ZWxCdWZmZXImPihwaXhlbEJ1ZmZlcikgfSB9LCBzcmNS
ZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKIH0KIAogc3RkOjpvcHRpb25hbDxTaGFyZWRN
ZW1vcnk6OkhhbmRsZT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp1cGRhdGVTaGFyZWRN
ZW1vcnlGb3JHZXRQaXhlbEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpCkBAIC00MjIsNiArNDIyLDEy
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRGaW5hbGl6ZVJlbmRlcmlu
Z1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVJRCBkCiAgICAgbV9kaWRSZW5kZXJpbmdVcGRhdGVJRCA9
IHN0ZDo6bWluKGRpZFJlbmRlcmluZ1VwZGF0ZUlELCBtX3JlbmRlcmluZ1VwZGF0ZUlEKTsKIH0K
IAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnRyYW5zZmVyTWVtb3J5T3duZXJz
aGlwKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBoYW5kbGUsIE1lbW9yeUxlZGdlciBt
ZW1vcnlMZWRnZXIpCit7CisgICAgQVNTRVJUKCFoYW5kbGUuaGFuZGxlLmlzTnVsbCgpKTsKKyAg
ICBoYW5kbGUuaGFuZGxlLnRha2VPd25lcnNoaXBPZk1lbW9yeShtZW1vcnlMZWRnZXIpOworfQor
CiBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApp
bmRleCA4Y2UxOGFlMDRkZTkuLmRlZTU2Yzg3ZTlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCkBAIC0xNzQsNiArMTc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEZsdXNoKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZpbmFsaXplUmVuZGVy
aW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZUlEIGRpZFJlbmRlcmluZ1VwZGF0ZUlEKTsKICAgICB2
b2lkIGRpZE1hcmtMYXllcnNBc1ZvbGF0aWxlKE1hcmtTdXJmYWNlc0FzVm9sYXRpbGVSZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4mIG1hcmtlZFZvbGF0aWxlQnVmZmVySWRlbnRpZmllcnMsIGJvb2wgZGlkTWFya0FsbExh
eWVyQXNWb2xhdGlsZSk7CisgICAgdm9pZCB0cmFuc2Zlck1lbW9yeU93bmVyc2hpcChjb25zdCBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIE1lbW9yeUxlZGdlcik7CiAKICAgICBHUFVQcm9jZXNz
Q29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiB7IG51bGxwdHIgfTsKICAgICBSZWZQ
dHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDI2NzdjNzU1YmJhZC4uMmI4
ODBkNzM5NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmluYWxpemVSZW5kZXJpbmdV
cGRhdGUoV2ViS2l0OjpSZW5kZXJpbmdVcGRhdGVJRCBkaWRSZW5kZXJpbmdVcGRhdGVJRCkKICAg
ICBEaWRJbml0aWFsaXplKElQQzo6U2VtYXBob3JlIHdha2VVcFNlbWFwaG9yZSwgSVBDOjpTZW1h
cGhvcmUgY2xpZW50V2FpdFNlbWFwaG9yZSkKICAgICBEaWRNYXJrTGF5ZXJzQXNWb2xhdGlsZShX
ZWJLaXQ6Ok1hcmtTdXJmYWNlc0FzVm9sYXRpbGVSZXF1ZXN0SWRlbnRpZmllciByZXF1ZXN0SWRl
bnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbWFy
a2VkVm9sYXRpbGVCdWZmZXJJZGVudGlmaWVycywgYm9vbCBkaWRNYXJrQWxsTGF5ZXJzQXNWb2xh
dGlsZSkKKyAgICBUcmFuc2Zlck1lbW9yeU93bmVyc2hpcChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGhhbmRsZSwgZW51bTp1aW50OF90IFdlYktpdDo6TWVtb3J5TGVkZ2VyIG1lbW9y
eUxlZGdlcikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJS
ZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRl
eCAyMDMxN2M2NGQwZTcuLjM2MDI5ZjliZmRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMTMwLDEwICsxMzAs
MTAgQEAgVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6
dG9EYXRhKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3AKICAgICByZXR1cm4geyB9OwogfQogCi1zdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6
OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50UmVjdCYp
IGNvbnN0CitSZWZQdHI8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFj
a2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgSW1hZ2VCdWZmZXJBbGxvY2F0b3ImKSBjb25zdAogewogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OnB1dFBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50
JiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDdhMGZkZGRkZWNkNy4uNGRiZTE2
MzY5M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5LCBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyB0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgZmluYWw7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSkgY29uc3QgZmluYWw7Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQaXhlbEJ1
ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIG91
dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6
UGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVyQWxsb2NhdG9yJikgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlciYsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9p
bnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgZmluYWw7CiAK
ICAgICBib29sIG9yaWdpbkF0Qm90dG9tTGVmdENvcm5lcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGlzT3JpZ2luQXRCb3R0b21MZWZ0Q29ybmVyOyB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1hZ2VCdWZmZXJUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1hZ2VCdWZmZXJUZXN0cy5jcHAKaW5kZXggZDQ5Y2U0N2Zl
YTI3Li41MWY4ZGViM2VhZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9JbWFnZUJ1ZmZlclRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvSW1hZ2VCdWZmZXJUZXN0cy5jcHAKQEAgLTQwLDggKzQwLDcgQEAgc3RhdGlj
IDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IGltYWdlQnVmZmVyUGl4ZWxJcyhDb2xvciBleHBl
Y3RlZCwgSW1hZ2VCdWZmZXIKIHsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIGZyb250UGl4ZWxCdWZm
ZXIgPSBpbWFnZUJ1ZmZlci5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgeCwgeSwgMSwgMSB9KTsK
LSAgICBhdXRvJiBkYXRhID0gZnJvbnRQaXhlbEJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ290
ID0gQ29sb3IgeyBTUkdCQTx1aW50OF90PiB7IGRhdGEuaXRlbSgwKSwgZGF0YS5pdGVtKDEpLCBk
YXRhLml0ZW0oMiksIGRhdGEuaXRlbSgzKSB9IH07CisgICAgYXV0byBnb3QgPSBDb2xvciB7IFNS
R0JBPHVpbnQ4X3Q+IHsgZnJvbnRQaXhlbEJ1ZmZlci0+aXRlbSgwKSwgZnJvbnRQaXhlbEJ1ZmZl
ci0+aXRlbSgxKSwgZnJvbnRQaXhlbEJ1ZmZlci0+aXRlbSgyKSwgZnJvbnRQaXhlbEJ1ZmZlci0+
aXRlbSgzKSB9IH07CiAgICAgaWYgKGdvdCAhPSBleHBlY3RlZCkKICAgICAgICAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJjb2xvciBpcyBub3QgZXhwZWN0ZWQuIEdv
dDogIiA8PCBnb3QgPDwgIiwgZXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgIi4iOwogICAgIHJl
dHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLS0gCjIuMzIuMCAoQXBwbGUgR2l0
LTEzMikKCg==
</data>
<flag name="commit-queue"
          id="488749"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>