<?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>218472</bug_id>
          
          <creation_ts>2020-11-02 18:16:25 -0800</creation_ts>
          <short_desc>[GPU Process] Make ImageBuffer RefCounted</short_desc>
          <delta_ts>2020-11-06 00:05:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</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>
          
          <blocked>217342</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <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>fmalita</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703786</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-02 18:16:25 -0800</bug_when>
    <thetext>This will automatically delete the ImageBuffer from the GPU Process when it is removed from the RemoteResourceCache and no DisplayListItems are referencing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703801</commentid>
    <comment_count>1</comment_count>
      <attachid>412999</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-02 19:48:18 -0800</bug_when>
    <thetext>Created attachment 412999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704110</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-03 11:38:47 -0800</bug_when>
    <thetext>Committed r269323: &lt;https://trac.webkit.org/changeset/269323&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412999.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704111</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-03 11:39:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/71003974&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412999</attachid>
            <date>2020-11-02 19:48:18 -0800</date>
            <delta_ts>2020-11-03 11:38:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218472-20201102194817.patch</filename>
            <type>text/plain</type>
            <size>94858</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uMGU0MWQwNTFkMThkYTEzMWJhYTBkMDM0YmVhODk3
OGI1NjFjOTdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMC0xMS0wMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgSW1hZ2VCdWZmZXIgUmVmQ291bnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIGFsbG93IGEgYmV0dGVyIGxpZmUgY3ljbGUg
Zm9yIHRoZSBJbWFnZUJ1ZmZlci4KKworICAgICAgICAqIGh0bWwvQ2FudmFzQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogaHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZh
cy5oOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5KToKKyAg
ICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0
ZUJ1ZmZlckZvclBhaW50aW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQml0bWFwOjp0YWtlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvSW1hZ2VCaXRt
YXAuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJpdG1hcEJhY2tpbmc6OkltYWdlQml0bWFwQmFja2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJpdG1hcEJhY2tpbmc6OnRha2VJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogaHRtbC9JbWFnZUJpdG1hcEJhY2tpbmcuaDoKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNh
bnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6RGV0
YWNoZWRPZmZzY3JlZW5DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM6OnRha2VJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5D
YW52YXM6OnRha2VJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9PZmZzY3JlZW5D
YW52YXMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRl
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmluZGV4
Rm9yRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdFJlY3QpOgor
ICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Y3Jl
YXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAgICAg
ICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpz
bmFwc2hvdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdE5vZGUpOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3Jl
ZW5zaG90KToKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dGFrZVNuYXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJ
bWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6c2lua0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJh
d0NvbnN1bWluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlclBpcGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmNsZWFyUmVzdWx0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyOjpzZXRTb3VyY2VJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpjbGVhclJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJ
bWFnZUJ1ZmZlclBpcGUuY3BwOgorICAgICAgICAoTmljb3NpYTo6Tmljb3NpYUltYWdlQnVmZmVy
UGlwZVNvdXJjZTo6aGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkdDR0xMYXll
cjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZTo6
dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
Ojpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENvbnRl
eHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcFRvVGV4dE1hc2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5UmVz
b3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3Vy
Y2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFn
ZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdy
b3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0Lmg6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorCiAyMDIwLTExLTAxICBNYXNvbiBY
aWFvICA8bWVAbWFzb254LmNhPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTI2ODkpOiBib3gt
c2hhZG93IHdpdGggaW5zZXQgYW5kIG5lZ2F0aXZlIHNwcmVhZCByZW5kZXJzIGluY29ycmVjdGx5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDI0NDAzNWNmOWNjZDliZjI3MDcwYjExOGY4NzBhZjE5MzRhNzlmMDAuLmIx
ZGQ2M2Q2NTcyNzdkM2NhMzJjNjU2MjZhMjQxN2Y3OGQ1NjVlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzkgQEAKKzIwMjAtMTEtMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEltYWdlQnVmZmVyIFJlZkNvdW50ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBh
ZnRlciBhIHJlbW90ZSBJbWFnZUJ1ZmZlciBpcyBkZWxldGVkLCBpdHMgaWRlbnRpZmllciBpcyBs
b2NrZWQKKyAgICAgICAgaW4gdGhlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB0aWxsIG5vIHJl
bW90ZSBjbGllbnQgaXMgcmVmZXJlbmNpbmcgaXQuCisgICAgICAgIFRoZW4gYW4gSVBDIG1lc3Nh
Z2UgaXMgc2VudCB0byBHUFUgUHJvY2VzcyB0byByZWxlYXNlIGl0LgorCisgICAgICAgIFRoZSBw
bGFuIGlzIHRvIGRlY29kZSB0aGUgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciBieSByZXBs
YWNpbmcgdGhlCisgICAgICAgIEltYWdlQnVmZmVyIGlkZW50aWZpZXIgd2l0aCBhIFJlZlB0ciB0
byB0aGUgSW1hZ2VCdWZmZXIgaXRzZWxmLiBPbmNlIHRoZSAKKyAgICAgICAgSW1hZ2VCdWZmZXIg
aXMgcmVtb3ZlZCBmcm9tIHRoZSBSZW1vdGVSZXNvdXJjZUNhY2hlLCBpdCBpcyBnb2luZyB0byBi
ZQorICAgICAgICBkZWxldGVkIGFmdGVyIHRoZSBsYXN0IERyYXdJbWFnZUJ1ZmZlciBpcyByZXBs
YXllZCBiYWNrLiBTbyBubyBsb2NraW5nIAorICAgICAgICBpcyBuZWVkZWQgdG8gZ3VhcmFudGVl
IHRoZSBleGlzdGVuY2Ugb2YgdGhlIEltYWdlQnVmZmVyIHdoZW4gaXQgaXMgZHJhd24uCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNoRGlzcGxh
eUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERp
c3BsYXlMaXN0QW5kQ29tbWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
UHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCBjb25zdCk6CisKIDIwMjAtMTEtMDEgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSByZW1haW5pbmcg
YWx0ZXJuYXRpdmUgcHJlZmVyZW5jZSBzZXR0aW5nIG1lY2hhbmlzbXMgZnJvbSBMYXlvdXRUZXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKaW5kZXggN2RkMTQ5YWZiNmI0MzI2ZTUwOGJk
MGJjYTJiNDg0Y2YyMDYyM2FiOS4uZDk0MTFhYzNkMDY5ZWU4MmZmNzliMzM0NjZhZTE2ZGM4Mzkx
NjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCkBAIC0xODIsOSArMTgyLDkgQEAg
Ym9vbCBDYW52YXNCYXNlOjpjYWxsVHJhY2luZ0FjdGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNv
bnRleHQgJiYgY29udGV4dC0+Y2FsbFRyYWNpbmdBY3RpdmUoKTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBDYW52YXNCYXNlOjpzZXRJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBDYW52
YXNCYXNlOjpzZXRJbWFnZUJ1ZmZlcihSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKSBjb25z
dAogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gcmV0dXJuQnVmZmVyOworICAg
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gcmV0dXJuQnVmZmVyOwogICAgIHsKICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2ltYWdlQnVmZmVyQXNzaWdubWVudExvY2spOwogICAgICAgICBt
X2NvbnRleHRTdGF0ZVNhdmVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2FudmFzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKaW5k
ZXggMGExNTk3NzliZDNjYTA3MzhjMGU5ZjYyM2FmZWEwNDEzODIzNjQ4MS4uNTJlMDE1NjNhMDIy
NmUyZGJjMmU2MjlhNjM4NjRjNzA4ZTVjYWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9DYW52YXNCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgK
QEAgLTExMiw3ICsxMTIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fc2l6ZSA9IHNpemU7IH0KIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc2V0SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiYmKSBjb25zdDsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNldEltYWdlQnVmZmVy
KFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc0NyZWF0
ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIHNpemVf
dCBhY3RpdmVQaXhlbE1lbW9yeSgpOwogCkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7CiAgICAgbXV0YWJsZSBMb2NrIG1faW1hZ2VCdWZm
ZXJBc3NpZ25tZW50TG9jazsKLSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gbV9pbWFnZUJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFn
ZUJ1ZmZlcjsKICAgICBtdXRhYmxlIHNpemVfdCBtX2ltYWdlQnVmZmVyQ29zdCB7IDAgfTsKICAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPiBtX2Nv
bnRleHRTdGF0ZVNhdmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3Rv
bVBhaW50Q2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmgK
aW5kZXggMmY0YWI1MDlmZDVjMjFlOWYwN2Q4ZGQxMDE4ZGIwNDc0YjYyZGQyMS4uNzllZjczNWY1
NzJjYTVmZTFiYjVmYzAwNDI1MjVhNjAyYjI2YjJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3Vz
dG9tUGFpbnRDYW52YXMuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQ+IG1fY29udGV4dDsKICAgICBtdXRhYmxl
IEdyYXBoaWNzQ29udGV4dCogbV9kZXN0aW5hdGlvbkdyYXBoaWNzQ29udGV4dCA9IG51bGxwdHI7
Ci0gICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fY29waWVkQnVmZmVy
OworICAgIG11dGFibGUgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2NvcGllZEJ1ZmZlcjsKICAgICBt
dXRhYmxlIFJlZlB0cjxJbWFnZT4gbV9jb3BpZWRJbWFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggYWM0MTA4ODhhMWE3ZjQ0NGM5NWMwYzVk
MTFhZDVhYmRjMTEwN2ZkZS4uYjE4N2JlNTEzMWVlNDVlZTYzMzA3Mjc1NTJhYTAxZGVhNGU4NTlm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTk1Miw3
ICs5NTIsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNv
bnN0CiAjZW5kaWYKIH0KIAotdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0SW1hZ2VCdWZmZXJB
bmRNYXJrRGlydHkoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OnNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5KFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgSW50U2l6ZSBvbGRTaXplID0gc2l6ZSgpOwogICAg
IG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaAppbmRleCAzMDk1Y2MzNGNjZGYwMThkZTFkZWMxYjdhMzhiNDBhNGZhOWFl
YWM3Li5hZWIwMTg5NzQ5YjU4MzMzNzQ4NDA0Yzk1YmFmZWQwNDUyOGY5Y2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gRklYTUU6IE9ubHkgc29tZSBjYW52YXMgcmVuZGVyaW5nIGNvbnRleHRzIG5l
ZWQgYW4gSW1hZ2VCdWZmZXIuCiAgICAgLy8gSXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgdGhl
IGNvbnRleHRzIG93biB0aGUgYnVmZmVycy4KLSAgICB2b2lkIHNldEltYWdlQnVmZmVyQW5kTWFy
a0RpcnR5KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJik7CisgICAgdm9pZCBzZXRJbWFn
ZUJ1ZmZlckFuZE1hcmtEaXJ0eShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5nKHNpemVfdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDBlNzgxMDAz
OTE3ZTZmZDJhMjI2ODAzNzY1NjcxNDg3ODk5NTdkODUuLjk4ODQ5NDA5N2QwMzBiNzZjNjU1ZDc3
OGIyMTBlY2ZjZDY5YTQxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6dXBkYXRlRGlz
cGxheVN0YXRlKCkKICAgICAgICAgc2V0RGlzcGxheU1vZGUoUG9zdGVyKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQ
YWludGluZyhjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVm
ZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUpIGNvbnN0CiB7CiAgICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmll
dygpICYmIGRvY3VtZW50KCkudmlldygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9v
dCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOwogICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxp
c3QgPSBkb2N1bWVudCgpLnNldHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8g
U2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggYTY2Mzg4MWFmZDI2YmRmZTBl
MGQwZDdmMTlmMGE2N2IzNWYzOGU5Zi4uM2Y5MTdkZTQ1ZWIyZTBiNDczNzEzYzQ5Y2IyZmIxMjI2
ZDU1YTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTcwLDcg
KzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKSBvdmVy
cmlkZTsKICNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVC
dWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlKSBjb25zdDsK
KyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUpIGNvbnN0OwogCiAgICAgLy8gVXNlZCBieSBjYW52YXMg
dG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZUJpdG1hcC5jcHAKaW5kZXggNTAyMWJkMDZiNGYwNjBhMjE1MzhhMzY1NTc1N2EyYWQyNGQ5
YWFmYy4uNTQ1MzBmOGIxMTFmYzIxN2RlM2VhMTY4OWRhNDYyYjI1NDQ0ODBmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTgzNSw3ICs4MzUsNyBAQCBPcHRpb25hbDxJbWFn
ZUJpdG1hcEJhY2tpbmc+IEltYWdlQml0bWFwOjp0YWtlSW1hZ2VCaXRtYXBCYWNraW5nKCkKICAg
ICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2JhY2tpbmdTdG9yZSwgV1RGOjpudWxsb3B0KTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6dGFrZUltYWdlQnVm
ZmVyKCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OnRha2VJbWFnZUJ1ZmZlcigp
CiB7CiAgICAgaWYgKGF1dG8gYmFja2luZ1N0b3JlID0gdGFrZUltYWdlQml0bWFwQmFja2luZygp
KQogICAgICAgICByZXR1cm4gYmFja2luZ1N0b3JlLT50YWtlSW1hZ2VCdWZmZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuaAppbmRleCAwMWYyODNkOTgwNTE2NzYzZWNhODlmNjIyZGYyZmQx
MzU3NjhlODUzLi5lMjU5OTRkZjdiNTVmYWUxNzIxYjNlZjI5MDFkMmQ5OTZjNzk0MWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5oCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICBJ
bWFnZUJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2Jh
Y2tpbmdTdG9yZS0+YnVmZmVyKCkgOiBudWxscHRyOyB9CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBo
YXMgdGhlIGltcGxpY2l0IHNpZGUtZWZmZWN0IG9mIGRldGFjaGluZyB0aGUgYmFja2luZyBzdG9y
ZS4KICAgICAvLyBJdCByZXR1cm5zIG51bGxwdHIgaWYgdGhlIEltYWdlQml0bWFwJ3MgYWxyZWFk
eSBkZXRhY2hlZC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRha2VJbWFnZUJ1
ZmZlcigpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gdGFrZUltYWdlQnVmZmVyKCk7CiAgICAg
T3B0aW9uU2V0PFNlcmlhbGl6YXRpb25TdGF0ZT4gc2VyaWFsaXphdGlvblN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+c2VyaWFsaXphdGlvblN0
YXRlKCkgOiBTZXJpYWxpemF0aW9uU3RhdGUoKTsgfQogCiAgICAgdW5zaWduZWQgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT53aWR0aCgpIDog
MDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcEJhY2tpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcEJhY2tpbmcuY3BwCmluZGV4IDZh
NjgzODdhMDVjODE4MWQ5ZjA2NTY2MDIwZWZlMzk4YjMxZDZhMzAuLjkzYzVmZWE1Mjc0YmE4ODMy
YTMwNTY3YjQ0NTRhZTVjNzFjNWE2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXBCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0
bWFwQmFja2luZy5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1JbWFnZUJpdG1hcEJhY2tpbmc6OkltYWdlQml0bWFwQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+JiYgYml0bWFwRGF0YSwgT3B0aW9uU2V0PFNlcmlhbGl6YXRpb25TdGF0ZT4g
c2VyaWFsaXphdGlvblN0YXRlKQorSW1hZ2VCaXRtYXBCYWNraW5nOjpJbWFnZUJpdG1hcEJhY2tp
bmcoUmVmUHRyPEltYWdlQnVmZmVyPiYmIGJpdG1hcERhdGEsIE9wdGlvblNldDxTZXJpYWxpemF0
aW9uU3RhdGU+IHNlcmlhbGl6YXRpb25TdGF0ZSkKICAgICA6IG1fYml0bWFwRGF0YShXVEZNb3Zl
KGJpdG1hcERhdGEpKQogICAgICwgbV9zZXJpYWxpemF0aW9uU3RhdGUoc2VyaWFsaXphdGlvblN0
YXRlKQogewpAQCAtNDAsNyArNDAsNyBAQCBJbWFnZUJ1ZmZlciogSW1hZ2VCaXRtYXBCYWNraW5n
OjpidWZmZXIoKSBjb25zdAogICAgIHJldHVybiBtX2JpdG1hcERhdGEuZ2V0KCk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXBCYWNraW5nOjp0YWtlSW1hZ2VC
dWZmZXIoKQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcEJhY2tpbmc6OnRha2VJbWFn
ZUJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURk1vdmUobV9iaXRtYXBEYXRhKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXBCYWNraW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlQml0bWFwQmFja2luZy5oCmluZGV4IDlkZjIxOWJlZTFjY2FmOWMx
NGY0YTJmMDcwZjlhZjY2MmU3NDJhYmIuLjFhODg0YTQ3NjhkOTUyMjQ3MjBhZDMyNjQ2YTE1N2Yy
MTIzYjk2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXBCYWNr
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcEJhY2tpbmcuaApAQCAt
MzgsMTAgKzM4LDEwIEBAIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblN0YXRlIDogdWludDhfdCB7
CiAKIGNsYXNzIEltYWdlQml0bWFwQmFja2luZyB7CiBwdWJsaWM6Ci0gICAgSW1hZ2VCaXRtYXBC
YWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiwgT3B0aW9uU2V0PFNlcmlhbGl6
YXRpb25TdGF0ZT4gPSBTZXJpYWxpemF0aW9uU3RhdGU6Ok9yaWdpbkNsZWFuKTsKKyAgICBJbWFn
ZUJpdG1hcEJhY2tpbmcoUmVmUHRyPEltYWdlQnVmZmVyPiYmLCBPcHRpb25TZXQ8U2VyaWFsaXph
dGlvblN0YXRlPiA9IFNlcmlhbGl6YXRpb25TdGF0ZTo6T3JpZ2luQ2xlYW4pOwogCiAgICAgSW1h
Z2VCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gdGFrZUltYWdlQnVmZmVyKCk7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiB0YWtlSW1hZ2VC
dWZmZXIoKTsKIAogICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgaGVp
Z2h0KCkgY29uc3Q7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBPcHRpb25TZXQ8U2Vy
aWFsaXphdGlvblN0YXRlPiBzZXJpYWxpemF0aW9uU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Nl
cmlhbGl6YXRpb25TdGF0ZTsgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gbV9iaXRtYXBEYXRhOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9iaXRtYXBE
YXRhOwogICAgIE9wdGlvblNldDxTZXJpYWxpemF0aW9uU3RhdGU+IG1fc2VyaWFsaXphdGlvblN0
YXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDUy
NzNlYTEzMDg3YWE3ZGNkODdjYTRiMzQwOGZjYmIyYzZjOTYyNjguLjkzYjUwYWNhNDQyNGExYTU3
MWY5NDU1YjNiOWQ3ZjRhMGQ1M2U3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAKQEAgLTU1LDE0ICs1NSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChPZmZzY3JlZW5DYW52YXMpOwogCi1EZXRhY2hlZE9mZnNj
cmVlbkNhbnZhczo6RGV0YWNoZWRPZmZzY3JlZW5DYW52YXMoc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBvcmlnaW5DbGVhbikK
K0RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOjpEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcyhSZWZQdHI8
SW1hZ2VCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIG9yaWdpbkNs
ZWFuKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgICwgbV9zaXplKHNpemUp
CiAgICAgLCBtX29yaWdpbkNsZWFuKG9yaWdpbkNsZWFuKQogewogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIo
KQorUmVmUHRyPEltYWdlQnVmZmVyPiBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdl
QnVmZmVyKCkKIHsKICAgICByZXR1cm4gV1RGTW92ZShtX2J1ZmZlcik7CiB9CkBAIC00NjksNyAr
NDY5LDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QK
ICAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IE9mZnNjcmVlbkNhbnZhczo6dGFrZUltYWdlQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1
ZmZlcj4gT2Zmc2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdAogewogICAgIGlm
ICghbV9kZXRhY2hlZCkKICAgICAgICAgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKaW5kZXggY2YzMzRhNzRkZjI1M2U4MDQ2
ODdiM2ZhNTBkMjQxNWMzMmIwNGI4MS4uN2MyZjg0MGMwMjhjNTgxMGI3MTNhYzJkYTllNjUzZWY2
NzU1ZDFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC03Niw5ICs3
Niw5IEBAIGNsYXNzIERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzIHsKICAgICBmcmllbmQgY2xhc3Mg
T2Zmc2NyZWVuQ2FudmFzOwogCiBwdWJsaWM6Ci0gICAgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXMo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmLCBjb25zdCBJbnRTaXplJiwgYm9vbCBvcmln
aW5DbGVhbik7CisgICAgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXMoUmVmUHRyPEltYWdlQnVmZmVy
PiYmLCBjb25zdCBJbnRTaXplJiwgYm9vbCBvcmlnaW5DbGVhbik7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IHRha2VJbWFnZUJ1ZmZlcigpOworICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gdGFrZUltYWdlQnVmZmVyKCk7CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGJvb2wgb3JpZ2luQ2xlYW4oKSBjb25zdCB7IHJldHVy
biBtX29yaWdpbkNsZWFuOyB9CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdApAQCAtOTEs
NyArOTEsNyBAQCBwdWJsaWM6CiAgICAgV2Vha1B0cjxIVE1MQ2FudmFzRWxlbWVudD4gdGFrZVBs
YWNlaG9sZGVyQ2FudmFzKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1fYnVmZmVyOwogICAg
IEludFNpemUgbV9zaXplOwogICAgIGJvb2wgbV9vcmlnaW5DbGVhbjsKICAgICBXZWFrUHRyPEhU
TUxDYW52YXNFbGVtZW50PiBtX3BsYWNlaG9sZGVyQ2FudmFzOwpAQCAtMTcwLDcgKzE3MCw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdCBm
aW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRha2VJbWFnZUJ1ZmZlcigp
IGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gdGFrZUltYWdlQnVmZmVyKCkgY29uc3Q7
CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgIFdlYWtQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IGNhbnZhczsKICAgICAgICAgUmVmUHRy
PEltYWdlQnVmZmVyUGlwZTo6U291cmNlPiBidWZmZXJQaXBlU291cmNlOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHBlbmRpbmdDb21taXRCdWZmZXI7CisgICAgICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gcGVuZGluZ0NvbW1pdEJ1ZmZlcjsKICAgICAgICAgbXV0YWJsZSBM
b2NrIGJ1ZmZlckxvY2s7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA2YTgw
Yjg0NjAwZTBhMmJiMDU1NTIzOTU1ZmU5Y2M2MGE5YWVjM2NiLi5iMGYyN2JkOTk0NzYwYjAyNjBi
NmJiMDNjNjI0OGYzY2RlZDFhMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTc1OSw3
ICsxNzU5LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gSW50UmVjdCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmYKICAgICByZXR1cm4gYnVmZmVyUmVj
dDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0JiBidWZmZXJS
ZWN0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpj
cmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0KQogewogICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6ZSgpLCBpc0FjY2VsZXJh
dGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDQ2OGVlMzg4YjYxNjJkNGZiMWEy
Zjc2NWFmZGEyMWE0ODk5YjEzOTIuLjA2NjYwNmY1NDA3Mjc0MDJiMmJiZTkwM2Y0ODg1NzliNmI1
NTYzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTM1OCw3ICszNTgsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCByZWN0Q29udGFpbnNDYW52YXMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBJbnRSZWN0IGNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVy
UmVjdChjb25zdCBUJiwgSW50U2l6ZSopOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOworICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOwogICAg
IHZvaWQgY29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIENvbXBv
c2l0ZU9wZXJhdG9yKTsKIAogICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0Jikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDkzZmI5ZDg5NzViYjIyZDU4NTAyYjRjOWE1YjUx
NjZlMjQ4MjQ4NWIuLjFlNjZkZGNjOWI1NTRkNGM1ZjIxYzY3MGFkZTQ2NjM3YzVlYjhiMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCkBAIC03NTMxLDcgKzc1MzEsNyBAQCBJbWFnZUJ1ZmZlciogV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29u
c3QgSQogICAgIH0KIAogICAgIC8vIEZJWE1FICgxNDk0MjMpOiBTaG91bGQgdGhpcyBJbWFnZUJ1
ZmZlciBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZD8KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCF0ZW1wKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oCmluZGV4IGUyYTA3YTViYzU2ZGEwMjRkYWUwMjExN2NmNzNiZmI0NDk3Zjk3
ODcuLjI5MWI5YWVkZjMzODQxNmViYWVkYjM4OWE3OTVhMjlmYThhZGRiZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgKQEAgLTYwNyw3ICs2MDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEltYWdlQnVmZmVyKiBp
bWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKTsKICAgICBwcml2YXRlOgogICAgICAgICB2
b2lkIGJ1YmJsZVRvRnJvbnQoc2l6ZV90IGlkeCk7Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+PiBtX2J1ZmZlcnM7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8SW1h
Z2VCdWZmZXI+PiBtX2J1ZmZlcnM7CiAgICAgfTsKICAgICBMUlVJbWFnZUJ1ZmZlckNhY2hlIG1f
Z2VuZXJhdGVkSW1hZ2VDYWNoZSB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50LmNwcAppbmRleCA5MzE5Njc2M2FmZGU1ZDcyZGQ5NWYyYjc1YjI5NWFmYzVkYmM4YzA1
Li5lNzRhM2ZhZmY5MTVhYTg3ZDVkZTk5MTRjODZmNzY5MmExOGUyYTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcApAQCAtNDE3LDcgKzQxNyw3IEBAIFJlZlB0cjxJ
bWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRy
YWNrUmVwcmVzZW50YXRpCiAgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBJbnRSZWN0KEludFBv
aW50KCksIGxheWVyLT5zaXplKCkpOwogCiAgICAgLy8gRklYTUUgKDE0OTQyMik6IFRoaXMgYnVm
ZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWlu
dGluZ1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2Fs
ZUZhY3RvcikpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZh
Y3Rvcik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGE2MWI4ZWVk
YTA0MTZjZjdmMTU0YWEwMTFjODYwY2U4ZmIwYjMyNWIuLjBjODVmOGE4Mzc2Nzk2NmJhMjZiNWMz
MzNlZDYwYzAxYTUwYWExMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwCkBAIC02OTEsNyArNjkxLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5k
ZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgICAgICAgICBpZiAoQ2Fj
aGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJ
bWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRh
VVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtNzA1LDcgKzcwNSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0
YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogCiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRl
b1dpZHRoID0gdmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQpOworICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAgICAgICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKICAg
ICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGlt
YWdlQnVmZmVyLT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRoLCB2aWRlb0hl
aWdodCkpOwogICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJM
KCJpbWFnZS9wbmciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBiMzYwNTNhOWY2MjIyOTU1NmVmMzM0Nzc1
NGZkNTFmMjZmMzc3NGU1Li42ZjEzYmQ1MDNkOTg1OGZkNjAzYTc5NTRkMTYzNzZkYTFjYzFlYjQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKFByb3RvY29sOjpE
T006OgogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9y
U3RyaW5nKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBX
ZWJDb3JlOjpzbmFwc2hvdE5vZGUobV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLCAqbm9kZSk7
CisgICAgYXV0byBzbmFwc2hvdCA9IFdlYkNvcmU6OnNuYXBzaG90Tm9kZShtX2luc3BlY3RlZFBh
Z2UubWFpbkZyYW1lKCksICpub2RlKTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIkNvdWxkIG5vdCBjYXB0dXJlIHNuYXBzaG90Il9zKTsKIApAQCAt
MTA4Niw3ICsxMDg2LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8U3RyaW5nPiBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNuYXBzaG90UmVjdChpbnQgeCwgaW50IHksIGkKICAgICAgICAgb3B0aW9u
cyB8PSBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlczsKIAogICAgIEludFJlY3QgcmVj
dGFuZ2xlKHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChtX2luc3BlY3RlZFBhZ2UubWFpbkZy
YW1lKCksIHJlY3RhbmdsZSwgb3B0aW9ucyk7CisgICAgYXV0byBzbmFwc2hvdCA9IHNuYXBzaG90
RnJhbWVSZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSwgcmVjdGFuZ2xlLCBvcHRpb25z
KTsKIAogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgi
Q291bGQgbm90IGNhcHR1cmUgc25hcHNob3QiX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4
IGY3OWIzMzkwZGQyZjc4ZTQ2MzViNGViODA2NjliNWVhYzk0N2M0YTEuLjk5N2YyYWY3Zjk3NTY5
MGM3NzM4MTY0MjkyMTViOWU1MWJhYzU5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTUy
Myw3ICs1MjMsNyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVz
KGJvb2wgaGlkZGVuVW50aWxNb3VzZU1vdmVzKQogICAgIG1fY2xpZW50LnNldEN1cnNvckhpZGRl
blVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRpbE1vdXNlTW92ZXMpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Ug
cHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpIGNv
bnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1
cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUs
IHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuaAppbmRleCBkYjRmMzIxODZjYzdlZTFlYmNjOWQyNGNiYzFhZDMyMzIw
ZWViMDY2Li5jZjc3N2UwY2NkOTlhN2NiNTkxMzhlYWZiNjExZTRmMWMwMjZmZjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3Vyc29y
KGNvbnN0IEN1cnNvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxN
b3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBS
ZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UpIGNvbnN0
IG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgd2luZG93U2Ny
ZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlELCBPcHRpb25hbDx1bnNpZ25lZD4pIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggMTA0MTI0MDc5ZWMxOTI3ZjAy
YmI4MDVkMmM0YzJlZDYyM2U3Yzk0Mi4uNmRkZDliYzcwYzMwNjYyYzRmZGY3ZDY0NDAyOTIwNWNh
MmExNGI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zMjMsNyArMzIzLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBj
cmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0
dXJuIG51bGxwdHI7IH0KIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5k
ZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29sb3JTcGFjZSkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29s
b3JTcGFjZSkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgLy8gUGFzcyBudWxscHRy
IGFzIHRoZSBHcmFwaGljc0xheWVyIHRvIGRldGF0Y2ggdGhlIHJvb3QgbGF5ZXIuCiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lJiwgR3JhcGhpY3NMYXllciop
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggZWZj
NmMwZWYxMzZhNGI2YTk5YTY2NDg3ZTczODdmNDA0YmFmNGEzYi4uZTJmOGEzN2ZiODliNDIxZWVi
ZmE4NDZlNTRjNDdlZTc5NWM2YTlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBz
aG90dGluZy5jcHAKQEAgLTY3LDEzICs2NywxMyBAQCBzdHJ1Y3QgU2NvcGVkRnJhbWVQYWludGlu
Z1N0YXRlIHsKICAgICBjb25zdCBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7CiB9OwogCi1zdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1lJiBmcmFtZSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK1JlZlB0cjxJ
bWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3QoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0
JiBpbWFnZVJlY3QsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQogewogICAgIFZlY3RvcjxGbG9h
dFJlY3Q+IGNsaXBSZWN0czsKICAgICByZXR1cm4gc25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChm
cmFtZSwgaW1hZ2VSZWN0LCBjbGlwUmVjdHMsIG9wdGlvbnMpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBj
b25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBjbGlwUmVj
dHMsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorUmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hv
dEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0
LCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgY2xpcFJlY3RzLCBTbmFwc2hvdE9wdGlvbnMgb3B0
aW9ucykKIHsKICAgICBpZiAoIWZyYW1lLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMTEsNyArMTExLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hv
dEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmUKICAgICBpZiAob3B0
aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpCiAgICAg
ICAgIHNjYWxlRmFjdG9yID0gY2VpbGYoc2NhbGVGYWN0b3IpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5z
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9yKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3IpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUo
LWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUm
IGZyYW1lLCBjb25zdCBJbnRSZQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBTbmFwc2hv
dE9wdGlvbnMgb3B0aW9ucykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24o
RnJhbWUmIGZyYW1lLCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBhdXRvJiBzZWxl
Y3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKTsKIApAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBTbmFw
c2hvdE9wdGlvbnMgb3B0CiAgICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBlbmNs
b3NpbmdJbnRSZWN0KHNlbGVjdGlvbkJvdW5kcyksIG9wdGlvbnMpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUp
CitSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5v
ZGUpCiB7CiAgICAgaWYgKCFub2RlLnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCmluZGV4IDM2MDNiY2IyNjU2
NzY2OTM4MzY4YzYwZWE2NDkyOTg1YThjZTEyZjYuLjEwMjM3MzhhZjg3ZjczZDQzMTNhYjE3Zjc5
M2U2N2U5NjYzYTM2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgK
QEAgLTUyLDkgKzUyLDkgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBTbmFwc2hvdE9w
dGlvbnM7CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25h
cHNob3RGcmFtZVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgU25hcHNob3RPcHRpb25zID0g
U25hcHNob3RPcHRpb25zTm9uZSk7Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBz
aG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgVmVjdG9y
PEZsb2F0UmVjdD4mIGNsaXBSZWN0cywgU25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRpb25z
Tm9uZSk7Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYs
IE5vZGUmKTsKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25h
cHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNO
b25lKTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJl
Y3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgU25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRp
b25zTm9uZSk7CitSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAo
RnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGNsaXBSZWN0
cywgU25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CitSZWZQdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYsIE5vZGUmKTsKK1dFQkNPUkVfRVhQT1JUIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9wdGlvbnMg
PSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCAyNmU2MjVmNzYwZWNhMmU3
OGMyMWMzOWFmM2E1ODIwZTBjZTI2ZTUwLi40ZTJlOWYwYzY4NDIzMDZjMGM5NDI1MGM4ZjEwMjdh
M2VmNzcxNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApA
QCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgIGlmIChh
dXRvKiBub2RlID0gSlNOb2RlOjp0b1dyYXBwZWQodm0sIHBvc3NpYmxlVGFyZ2V0KSkgewogICAg
ICAgICAgICAgdGFyZ2V0ID0gcG9zc2libGVUYXJnZXQ7CiAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkpIHsKLSAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90OworICAgICAgICAg
ICAgICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3Q7CiAKICAgICAgICAgICAgICAgICAv
LyBPbmx5IHRyeSB0byBkbyBzb21ldGhpbmcgc3BlY2lhbCBmb3Igc3ViY2xhc3NlcyBvZiBOb2Rl
IGlmIHRoZXkncmUgZGV0YWNoZWQgZnJvbSB0aGUgRE9NIHRyZWUuCiAgICAgICAgICAgICAgICAg
aWYgKCFub2RlLT5kb2N1bWVudCgpLmNvbnRhaW5zKG5vZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9U
ZXh0SW5kaWNhdG9yLmNwcAppbmRleCA2NjczYWE3ZWU4ZmM0NzMzZjVlZTkxODhmNTJlODU5NjRi
ODNhMmQyLi41Mjk0MmZlN2JiNTc5MWZlOTI3NTgwNzQzY2VhNmQ4ZmM5YjFiMDQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMg
U25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9uc0ZvclRleHRJbmRpY2F0b3JPcHRpb25zKE9w
dGlvblNldDxUZXh0SW5kaQogCiBzdGF0aWMgUmVmUHRyPEltYWdlPiB0YWtlU25hcHNob3QoRnJh
bWUmIGZyYW1lLCBJbnRSZWN0IHJlY3QsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zLCBmbG9hdCYg
c2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBjbGlwUmVjdHNJbkRvY3VtZW50
Q29vcmRpbmF0ZXMpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIg
PSBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKGZyYW1lLCByZWN0LCBjbGlwUmVjdHNJbkRvY3Vt
ZW50Q29vcmRpbmF0ZXMsIG9wdGlvbnMpOworICAgIGF1dG8gYnVmZmVyID0gc25hcHNob3RGcmFt
ZVJlY3RXaXRoQ2xpcChmcmFtZSwgcmVjdCwgY2xpcFJlY3RzSW5Eb2N1bWVudENvb3JkaW5hdGVz
LCBvcHRpb25zKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgc2NhbGVGYWN0b3IgPSBidWZmZXItPnJlc29sdXRpb25TY2FsZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5jcHAKaW5kZXggMTk1MzI5Njc3ZDE4MjBlZGRhYzBhZjFlYzdjYjg3
NDIzYWY2NWJiNS4uMTkzOWZiOTBjMjI1NjRkMDJjYWRmNjViZGFmN2Y2NWNjYjdjZTlhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHN0cnVj
dCBTY29wZWROb2RlRHJhZ0VuYWJsZXIgewogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50Owog
fTsKIAotc3RhdGljIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCwgTm9kZSogbm9kZSkKK3N0YXRpYyBE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gc25hcHNob3QsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0
V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKaW5kZXggNGE5
ZjVkNDdlYTg0MTg3MTM5MzA0YWU3M2FlMmZlNWFiNjVlMmM2OC4uODk2NWEyNTNlMTg3ZWU5NzZh
NGU2OTQ4OGQ0ZjY4NTY4ZjViYzcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vSG9zdFdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cu
aApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3Np
YmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVj
dCYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5k
ZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlKSBjb25zdCA9IDA7CiAKICAgICAvLyBNZXRob2QgZm9y
IHJldHJpZXZpbmcgdGhlIG5hdGl2ZSBjbGllbnQgb2YgdGhlIHBhZ2UuCiAgICAgdmlydHVhbCBQ
bGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZl
ci5oCmluZGV4IDg2OTczOTVmYTRjOGQwODUxYzdiNzc5MDQwNmU2MWM5MThmY2VhNTAuLjE2Yzlh
MzU2MzU1YWI5ZWUxNDIxNzJhMjE5NGZjM2M2N2VhYzY5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTM0
LDIxICszNCwyMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KIGNsYXNzIENvbmNy
ZXRlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgSW1hZ2VCdWZmZXIgewogcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
VHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFy
Z3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlw
ZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3Vt
ZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tl
bmRUeXBlOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBob3N0V2lu
ZG93KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJUeXBlPihuZXcgSW1h
Z2VCdWZmZXJUeXBlKFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFy
Z3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUJ1ZmZlclR5
cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4u
LikpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENv
bmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVu
dHMpCisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXJndW1lbnRzJiYu
Li4gYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6
OmNyZWF0ZShzaXplLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFiYWNrZW5kKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJUeXBlPihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUoYmFja2VuZCksIHN0ZDo6Zm9y
d2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbWFnZUJ1ZmZlclR5cGUoV1RGTW92ZShiYWNrZW5kKSwgc3RkOjpmb3J3YXJkPEFyZ3Vt
ZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0KIAogICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhY2tlbmRUeXBlOjppc0FjY2VsZXJhdGVkOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNGI1ZDZjMGU0YTAwNDJkOWFkY2Y0MzVkNzMzNjZh
MjU4Yjk0Mzc2NC4uMDA2MzYyZGZkNjEwMjk0YTkzZGYxM2VkZTFkZjI5OWViOTg4OGIxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEltYWdlRHJhd1Jlc3Vs
dCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsCiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBj
b250ZXh0LnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAxYzAwODlkZWQwZWU3
NTEzYzE4Zjk0ZDMyZmEzNzVkZWU2OGZmOTJlLi45Y2YxODIzODMyMGQ2Mzk0OWRkNGQzODE2Mzhk
MzNjZjMwNjE2MmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTgxOSw3ICs4MTksNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aQogICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9w
dGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09w
dGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAg
aWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtODI3LDcgKzgyNyw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnCiAgICAgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoaW1h
Z2UpLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlTG9naWNhbFNpemUpLCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZUxvZ2ljYWxTaXplKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdl
QnVmZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIHJldHVybjsKQEAgLTgzNSw3ICs4MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
aW1hZwogICAgIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlKSwgZGVzdGlu
YXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFnZUxvZ2ljYWxTaXpl
KSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwZDFjYTkyZDYwNDVl
YjM3YTc4ZDNlMTg5N2MyNmY0MmI5Yzc2ZjNhLi45NjM1M2FkZWRmZjExZWQ1ZDQxNWFkNTdmZGZk
YjRiMjgwZDUwNGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzk0LDkgKzM5NCw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdDb25zdW1pbmdJ
bWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKLSAgICB2
b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwotICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VC
dWZmZXIoUmVmUHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAppbmRleCBlM2JiYjQyNjNhYTA3MzFmZjAzODE5OTViNWRlNWJkM2E1
NTU4YmUxLi4zZDNmODAwN2NiN2VlOTJjNmEwMGU4ZmUwODY1ZDA1ODExNGQzYmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0z
OCw5ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhD
bGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFtcGVkQXJlYSA9
IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1zdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVz
ZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlz
dCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyog
aG9zdFdpbmRvdykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgaWYgKGhvc3RX
aW5kb3cpCiAgICAgICAgIGltYWdlQnVmZmVyID0gaG9zdFdpbmRvdy0+Y3JlYXRlSW1hZ2VCdWZm
ZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlKTsKIApAQCAtNTgsOSArNTgsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbgogICAgIHJl
dHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Y29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNv
bnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
OwogICAgIAogICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJh
dGVkKQogICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0
ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGhvc3RXaW5kb3cpOwpAQCAtNzEs
OSArNzEsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbgogICAgIHJldHVybiBpbWFnZUJ1ZmZl
cjsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQor
UmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlcjsKICAgICAKICAgICBpZiAoY29udGV4dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCiAgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0
ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNvbnRleHQpOwpAQCAtODQsNyArODQsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBjb25zdCBHcgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTEwMSw3ICsxMDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZQogCiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoc2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE3LDcgKzExNyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY29uc3QgRmxvYXRTaXplCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UpOwogfQpAQCAtMTczLDcgKzE3Myw3IEBAIEludFNpemUgSW1hZ2VC
dWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3Qg
R3JhcGhpY3NDCiAgICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICogY29udGV4dC5zY2Fs
ZUZhY3RvcigpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
ODgsMTcgKzE4OCwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVy
Ojpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdAogICAgIHJldHVybiBidWZm
ZXI7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCitOYXRpdmVJbWFnZVB0
ciBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyKQogewogICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFn
ZSgpOwogfQogCi1SZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIFByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24pCitSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b0lt
YWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIFByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24pCiB7CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5rSW50b0lt
YWdlKHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25z
dW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBJ
bWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgaW1hZ2VCdWZmZXItPmRyYXdDb25zdW1pbmcoY29udGV4dCwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZTczNmFmODIwYTVjZWQ2M2FlNzUxNzZhMjk5NDIzMmJk
YWRmMmE0Ny4uOTI5YWMwNjEyMzY3NTVmNmU3NTk1Y2ZkMGEyZmYxZjM1YTc1OGY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzgsMTcgKzM5LDE3IEBAIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgRHJhd2luZ0NvbnRleHQ7
CiB9CiAKLWNsYXNzIEltYWdlQnVmZmVyIHsKK2NsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAvLyBXaWxsIHJldHVybiBhIG51
bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQiwg
Y29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9y
U3BhY2U6OlNSR0IsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRV
c2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0g
MSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVs
bHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdCLCBjb25zdCBIb3N0V2luZG93KiA9
IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIENyZWF0ZSBhbiBp
bWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJl
c29sdXRpb24gZm9yIGRyYXdpbmcgaW50byB0aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhpcyBj
b250ZXh0LgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9u
cyBhcmUgdXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFnZUJ1ZmZlciB3aGljaCBpcyBjcmVhdGVk
IGZvciBmaWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgogICAgIHN0YXRpYyBib29sIHNpemVOZWVk
c0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtODMsMTUgKzg0LDE1IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBD
b3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246
Ok5vKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGli
bGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIgaW50byB0
aGlzIG5ldyBvbmUuCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRv
QnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9h
dFJlY3QmLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCi0gICAgc3RhdGljIE5h
dGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPik7CisgICAgc3RhdGljIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZlSW1hZ2UoUmVm
UHRyPEltYWdlQnVmZmVyPik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPElt
YWdlPiBzaW5rSW50b0ltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIFByZXNlcnZl
UmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pOwotICAgIHN0YXRpYyB2b2lkIGRy
YXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0g
RmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFn
ZShSZWZQdHI8SW1hZ2VCdWZmZXI+LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29s
dXRpb246Ok5vKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKFJlZlB0cjxJbWFnZUJ1
ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb0x1
bWluYW5jZU1hc2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2Uo
Q29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
UGlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBl
LmgKaW5kZXggMWUxZDQ3MDBiMmU0NTgzMzY5NmU4YWVjYmFkM2JkNTM0OWRlY2JiMC4uNmU2ZDU3
MzI2YzY5Y2QxZmJmM2ZhY2VkYmFmMDFjYWUxMDk5NTBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJQaXBlLmgKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+U291cmNlKCkgPSBkZWZh
dWx0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoUmVmUHRyPEltYWdl
QnVmZmVyPiYmKSA9IDA7CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJQ
aXBlPiBjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKaW5kZXggMWRkMDczMzRmMTUzYTA4ZTJmMjUxNjEyMmUyODQ1ODAwYjg3OGI5
Yy4uODMzODliYTY4MDU2Mzc3Zjk5ZjBmNWExY2QzMDdiZjZjZjkxZDgyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTE0MSw3ICsx
NDEsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2xhc3RMYXllclNpemUgPSBGbG9hdFNpemUoKTsK
ICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7
CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogICAgIFRpbWVyIG1fcHVy
Z2VUaW1lcjsKIAogICAgIEZsb2F0UmVjdCBtX2xhc3RJbnNldEJvdW5kczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaApp
bmRleCBlZDlkMTZkMjg1YTEzMmY2NzBmZjA4NGNlMTMwMDdmM2Q0NTRmNTlhLi5lNzVkNWI1YmFm
M2Q2NTAxODc0ZjcyZTQ2YWI1MjJlMzE0YTQ2M2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCkBAIC0xMDIsNyAr
MTAyLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJlZj4gbV9kb2N1
bWVudDsKICNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2NhY2hl
ZEltYWdlQnVmZmVyOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZl
cjsKICAgICBGbG9hdFJlY3QgbV9jYWNoZWRJbWFnZVJlY3Q7CiAgICAgQWZmaW5lVHJhbnNmb3Jt
IG1fY2FjaGVkVHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCBtX2NhY2hlZERlc3RpbmF0aW9uUmVj
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLmgKaW5kZXggMjQzYzQ4Yjk1MWIxNzRiNmIyNGJhYzUzNjRjOWEwNGZmOTY5Y2RiMy4uODdh
NjVhMWEwNTBhYWJlNjBlNTBjM2ExYzIzMTMzOWRlYWY2Yjg4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKQEAgLTEwMSw3ICsx
MDEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21JbWFnZShDR0ltYWdlUmVmKTsKICAgICAKICNpZiBVU0Uo
SU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZy
b21JbWFnZUJ1ZmZlcihSZWZQdHI8SW1hZ2VCdWZmZXI+KTsKICNlbmRpZgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgfklPU3VyZmFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2UuaAppbmRleCBkZTU0ZTRkZTAwNzEwYjE0M2I4ZDU2ODZiMTBmNWVjYWE5
NTE5Nzk1Li44YmM1MGQ1ZTc5ZGQ2NmY3NThjZTE0M2M1YzhmOWE3ZDU5ZGEwNjhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaApAQCAtNjQsNyAr
NjQsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDSUltYWdlPiBpbWFnZUZvckZFQ29sb3JN
YXRyaXgoY29uc3QgRkVDb2xvck1hdHJpeCYsIGNvbnN0IFZlY3RvcjxSZXRhaW5QdHI8Q0lJbWFn
ZT4+Jik7CiAgICAgUmV0YWluUHRyPENJSW1hZ2U+IGltYWdlRm9yRkVDb21wb25lbnRUcmFuc2Zl
cihjb25zdCBGRUNvbXBvbmVudFRyYW5zZmVyJiwgVmVjdG9yPFJldGFpblB0cjxDSUltYWdlPj4m
KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1fb3V0cHV0SW1hZ2VC
dWZmZXI7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX291dHB1dEltYWdlQnVmZmVyOwogICAg
IFJldGFpblB0cjxDSUltYWdlPiBtX291dHB1dEltYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDUxM2Y0NTVjYWQ4ZTVl
NjA1MjcyOGQzNDdjMzkzZDlmNDQ3ZmUzODguLjAyYWRhMGQxYjE5MjQ3MTNmYWU1ODRlZWExMDdk
OWRhMzQyZGQ3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW0KQEAgLTMwMSw3ICszMDEsNyBAQCBGbG9hdFJlY3QgRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2U6OmRlc3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdAog
CiB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpjbGVhclJlc3VsdCgpCiB7Ci0g
ICAgbV9vdXRwdXRJbWFnZUJ1ZmZlci5yZXNldCgpOworICAgIG1fb3V0cHV0SW1hZ2VCdWZmZXIg
PSBudWxscHRyOwogICAgIG1fb3V0cHV0SW1hZ2UgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCBkZDM1
Y2M2NWIxMzdkODIyYzcwMTUzMmRhYmQyNDkwMDRiZjJhOWY2Li5hMmQ5OTc5M2IwZGIyMjU4YmM0
NzZkZGNjMjljMGNlMjYxMTBiYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAg
IHsgfQogICAgIHZpcnR1YWwgfkZpbHRlcigpID0gZGVmYXVsdDsKIAotICAgIHZvaWQgc2V0U291
cmNlSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIHNvdXJjZUltYWdlKSB7IG1f
c291cmNlSW1hZ2UgPSBXVEZNb3ZlKHNvdXJjZUltYWdlKTsgfQorICAgIHZvaWQgc2V0U291cmNl
SW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiYmIHNvdXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2Ug
PSBXVEZNb3ZlKHNvdXJjZUltYWdlKTsgfQogICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSgp
IHsgcmV0dXJuIG1fc291cmNlSW1hZ2UuZ2V0KCk7IH0KIAogICAgIEZsb2F0U2l6ZSBmaWx0ZXJS
ZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJSZXNvbHV0aW9uOyB9CkBAIC02OCw3
ICs2OCw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBtX3NvdXJjZUltYWdlOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
bV9zb3VyY2VJbWFnZTsKICAgICBGbG9hdFNpemUgbV9maWx0ZXJSZXNvbHV0aW9uOwogICAgIEFm
ZmluZVRyYW5zZm9ybSBtX2Fic29sdXRlVHJhbnNmb3JtOwogICAgIFJlbmRlcmluZ01vZGUgbV9y
ZW5kZXJpbmdNb2RlIHsgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwCmluZGV4IDdlMTNjZmY2NjNkYWJmMjgzODM2YWI5N2I2MjYzZGVlMTE0ZjQyZDguLjVi
ZGFkYjJmZDhkMDE2MTRjMDFmZjA3NDcxMzk4MGU5YWVlZGI3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHAKQEAgLTI0Niw5ICsyNDYsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Zm9yY2VWYWxpZFByZU11
bHRpcGxpZWRQaXhlbHMoKQogCiB2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQogewot
ICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KQotICAgICAgICBtX2ltYWdlQnVmZmVyUmVzdWx0
LnJlc2V0KCk7Ci0KKyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gbnVsbHB0cjsKICAgICBtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0ID0gbnVsbHB0cjsKICAgICBtX3ByZW11bHRpcGxpZWRJbWFn
ZVJlc3VsdCA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCBlZWEwYWQyZjg1Mjk4ZmU5
YTZhMzkxM2IxZmFkNTcwNzVhOTJlZTI1Li4zMjM5MWQ3OGVjNGQ3YzZjNzAwODAxYWQyZTVkNGUz
NTRjMzE5OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTIxMSw3ICsyMTEsNyBAQCBwcml2YXRlOgog
ICAgIEZpbHRlciYgbV9maWx0ZXI7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9yIG1faW5wdXRFZmZl
Y3RzOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyUmVz
dWx0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlclJlc3VsdDsKICAgICBS
ZWZQdHI8SW1hZ2VEYXRhPiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0OwogICAgIFJlZlB0cjxJ
bWFnZURhdGE+IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBp
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
SW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRleCA2Mjk4Y2YzNjA3M2M3YWU0NGY0M2M2YjU2NDQyMmIz
N2I4NmNmMTA3Li5iMDA3OTlmZTdkMjIxNGM1NTBhODNhMzdhZjE4ODdhMjUwOWYyZTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJ
bWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVi
bGljOgogICAgIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2UoKTsKICAgICB2aXJ0dWFsIH5O
aWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlKCk7CiAKLSAgICB2b2lkIGhhbmRsZShzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgaGFuZGxlKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3Q7CiAKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q29udGVu
dExheWVyPiBtX25pY29zaWFMYXllcjsKIAogICAgIG11dGFibGUgTG9jayBtX2ltYWdlQnVmZmVy
TG9jazsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7Cisg
ICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogfTsKIAogY2xhc3MgTmljb3Np
YUltYWdlQnVmZmVyUGlwZSBmaW5hbCA6IHB1YmxpYyBJbWFnZUJ1ZmZlclBpcGUgewpAQCAtODQs
NyArODQsNyBAQCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjp+Tmljb3NpYUltYWdlQnVm
ZmVyUGlwZVNvdXJjZSgpCiAgICAgZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5pbXBsKCkpLmludmFsaWRhdGVDbGllbnQoKTsK
IH0KIAotdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlw
ZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xM
YXllci5jcHAKaW5kZXggY2JiYTgwMDQyZWUyY2I4NTA2M2ZlZmI5NDMwZDY4ODUzYzIxNjc1Ny4u
ODM2MTgzNzM4YTZmMWFlMmYzMDU2YjJjYTk4N2QxM2ZlY2RkODYzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBHQ0dMTGF5
ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgIEludFNpemUgdGV4dHVyZVNpemUobV9jb250
ZXh0Lm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQubV9jdXJyZW50SGVpZ2h0KTsKICAgICBUZXh0
dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gbV9jb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCku
YWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMDsKICNpZiBVU0UoQU5HTEUp
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUodGV4dHVyZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAppbmRleCA3MGI1NGRmZjMxYTczNjVmNWVk
NmY2NWZiOWQzZDYzNDMwYmY3M2NmLi40ODViZjE5ODY5YTAxNTU5ZDRlNGMzZjQzYzlhNWQ2ZWJm
MDg1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCkBAIC0zOCw4ICszOCw3IEBAIHZvaWQgQml0bWFw
VGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqIHNv
dXJjZUxheWVyLCBjCiB7CiAgICAgLy8gTWFraW5nIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2Vs
ZXJhdGVkIGJ1ZmZlciBoZXJlIGlzIE9LIGJlY2F1c2UgdGhpcyBjb2RlCiAgICAgLy8gaXNuJ3Qg
dXNlZCBieSBhbnkgcGxhdGZvcm1zIHRoYXQgcmVzcGVjdCB0aGUgYWNjZWxlcmF0ZWQgYml0Lgot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHRhcmdldFJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
KTsKLQorICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRhcmdldFJl
Y3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIWltYWdl
QnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCAyMDQxNmM0OTYxNWE4
NjExYjI4MDQ1YmMxN2QxZWMyYjUxYzgyNTliLi43NDk3NzUzMTJjNzZjNTE5ZTM4NjNiNzU3OGUz
ZWZlZDk1NDZmY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToK
ICAgICBmbG9hdCBtX2JpcEJvcEZvbnRTaXplIHsgMCB9OwogICAgIGZsb2F0IG1fc3RhdHNGb250
U2l6ZSB7IDAgfTsKIAotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBt
X2ltYWdlQnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVm
ZmVyOwogCiAgICAgUGF0aCBtX3BhdGg7CiAgICAgRGFzaEFycmF5IG1fZGFzaFdpZHRoczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmlu
ZGV4IDI0N2Q4NGM1NzE5MmI4NWI4NmY4OTk1ZThmZTFmYjUwZjYyZjY2Y2IuLmM1ODBlNTNkZmQz
ODJmMDM1OTJmYjIxNmVmMjI2NzMxMTcxM2Q3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtODQ4LDcgKzg0OCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgfQogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgYmFja2dyb3VuZENsaXBTdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKKyAgICBSZWZQdHI8SW1hZ2VC
dWZmZXI+IG1hc2tJbWFnZTsKICAgICBJbnRSZWN0IG1hc2tSZWN0OwogCiAgICAgaWYgKGJnTGF5
ZXIuY2xpcCgpID09IEZpbGxCb3g6OlBhZGRpbmcgfHwgYmdMYXllci5jbGlwKCkgPT0gRmlsbEJv
eDo6Q29udGVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApp
bmRleCBlMWFiOGIwZGNlZTMxMzQ2OTYzNTU5MDA4NGJiYTA5M2E5YTgwZDNmLi44NGI3NDI0OGZh
MWFjMDA1NzY1ZjQ2Y2U2ODc5NDE1M2VjZTM0MGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxT
aGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNo
b2xkLCBjCiAgICAgSW50UmVjdCBtYXJnaW5SZWN0ID0gc25hcHBlZEludFJlY3QobWFyZ2luUik7
CiAgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiht
YXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0
MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdl
UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogCiAgICAgYXV0byBj
cmVhdGVTaGFwZSA9IFsmXSgpIHsKICAgICAgICAgYXV0byByYXN0ZXJTaGFwZSA9IG1ha2VVbmlx
dWU8UmFzdGVyU2hhcGU+KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRl
eCBiYWI0ZmZkN2JlNTMxMjRjNjI0ZDc0YzFhNjJmNTdlNDg3NGM1NzM3Li45NTczNzgyYzg4NTdm
MDkzYmEzYzk2MzA5MmQ2NjY0M2VhMjZkMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgUmVu
ZGVyU1ZHSW1hZ2U6OnBhaW50Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKIAogdm9p
ZCBSZW5kZXJTVkdJbWFnZTo6aW52YWxpZGF0ZUJ1ZmZlcmVkRm9yZWdyb3VuZCgpCiB7Ci0gICAg
bV9idWZmZXJlZEZvcmVncm91bmQucmVzZXQoKTsKKyAgICBtX2J1ZmZlcmVkRm9yZWdyb3VuZCA9
IG51bGxwdHI7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCmluZGV4IDc0
MTQ4YzU5MGU4NTg1N2FjOTE5NTBhMTc4NDM4OGNmOGUxYmExZDYuLjY3ZTM1YjVjZmMwNGU4OTRm
MTliNzBiMTQ3MDBkMTEyN2ZmYTgzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBGbG9h
dFJlY3QgbV9yZXBhaW50Qm91bmRpbmdCb3g7CiAgICAgRmxvYXRSZWN0IG1fcmVwYWludEJvdW5k
aW5nQm94RXhjbHVkaW5nU2hhZG93OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJJbWFnZVJl
c291cmNlPiBtX2ltYWdlUmVzb3VyY2U7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBtX2J1ZmZlcmVkRm9yZWdyb3VuZDsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1fYnVmZmVy
ZWRGb3JlZ3JvdW5kOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgK
aW5kZXggNTVkOWUzNGRmNjEyNTYwZmJhZDJmNzRkMTVjNmU3NzM5MjMxN2Y3ZC4uYjZiYzU3Zjll
YjUyNjYyZDIxMTUzYmM5YjNjMzJiMWNhODUxNmI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCkBAIC02MCwx
MCArNjAsMTAgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2xpcHBlckRhdGEgewogICAgICAgICBG
bG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3g7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBhYnNv
bHV0ZVRyYW5zZm9ybTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKICAgICAg
ICAgCiAgICAgICAgIENsaXBwZXJEYXRhKCkgPSBkZWZhdWx0OwotICAgICAgICBDbGlwcGVyRGF0
YShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKKyAgICAgICAg
Q2xpcHBlckRhdGEoUmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZGluZ0JveCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgICAg
ICAgICA6IG9iamVjdEJvdW5kaW5nQm94KGJvdW5kaW5nQm94KQogICAgICAgICAgICAgLCBhYnNv
bHV0ZVRyYW5zZm9ybSh0cmFuc2Zvcm0pCiAgICAgICAgICAgICAsIGltYWdlQnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggZGRkYmE0MzJkMzc5MzdlYjA0M2E2Y2Mx
N2JmOTMyZTZiNzg5NTQyOS4uMTJlN2YxNWQ2MzJkNzZkOTlmNmJhYmE5MzhkMGQ5ZTI2MzRkOGU4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
R3JhcGhpYwogICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEuc2hlYXJG
cmVlQWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgICAgICB9CiAgICAgfQotICAgIGZpbHRlckRhdGEu
c291cmNlR3JhcGhpY0J1ZmZlci5yZXNldCgpOworICAgIGZpbHRlckRhdGEuc291cmNlR3JhcGhp
Y0J1ZmZlciA9IG51bGxwdHI7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFt
IDw8ICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciAiIDw8IHRoaXMgPDwgIiBwb3N0QXBwbHlSZXNv
dXJjZSBkb25lXG4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAppbmRleCA5ZWViNThmYWMzYTI3MDk0MjIxMDA5
ZjA5ODc4ZjQwYmQ3NzRiNDAwLi41NjRhYWFkNDhhMjJlM2M0NTA3ZWVmNTBhZGM2NDQwMWQ4NzAz
ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0
cjxTVkdGaWx0ZXI+IGZpbHRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRl
cj4gYnVpbGRlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUdyYXBo
aWNCdWZmZXI7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBzb3VyY2VHcmFwaGljQnVmZmVyOwog
ICAgIEdyYXBoaWNzQ29udGV4dCogc2F2ZWRDb250ZXh0IHsgbnVsbHB0ciB9OwogICAgIEFmZmlu
ZVRyYW5zZm9ybSBzaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybTsKICAgICBGbG9hdFJlY3QgYm91
bmRhcmllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IGYyNzQ1ZjMyMTA1M2Y5Nzk5N2YwMDlk
Y2VkMGE3N2M3M2VlMDFhMzguLmQyMjliNjMxM2M1YjM4MGVmOTVmZTFiYmRjNjQ2ZmJmMTBlMmQ4
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIFJlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQ6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiBj
bGllbnQsIGJvbwogfQogCiAjaWYgVVNFKENHKQotc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1h
c2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0
LCBHcmFwaGljc0NvbnRleHQqJiBzYXZlZENvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4mIGltYWdlQnVmZmVyLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250
ZXh0KiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0KiYgc2F2ZWRDb250ZXh0LCBSZWZQdHI8SW1h
Z2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgYXV0
byogdGV4dFJvb3RCbG9jayA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNl
c3Rvcigqb2JqZWN0KTsKICAgICBBU1NFUlQodGV4dFJvb3RCbG9jayk7CkBAIC03Miw3ICs3Miw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3Jh
ZGllbnQoR3JhcGhpY3NDb250ZXh0KiYgY29uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIGNsaXBUb1RleHRNYXNrKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGJvb2wgYm91bmRpbmdCb3hN
b2RlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50VHJhbnNmb3JtKQorc3RhdGljIGlu
bGluZSBBZmZpbmVUcmFuc2Zvcm0gY2xpcFRvVGV4dE1hc2soR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBSZW5kZXJPYmplY3QqIG9iamVjdCwgYm9vbCBib3VuZGluZ0JveE1vZGUsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRUcmFuc2Zvcm0pCiB7CiAgICAgYXV0byogdGV4dFJvb3RC
bG9jayA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcigqb2JqZWN0
KTsKICAgICBBU1NFUlQodGV4dFJvb3RCbG9jayk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgR3JhcGgKICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGll
bnQoZ3JhZGllbnQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRhcmdldFJl
Y3QpOwogCi0gICAgICAgICAgICAgICAgbV9pbWFnZUJ1ZmZlci5yZXNldCgpOworICAgICAgICAg
ICAgICAgIG1faW1hZ2VCdWZmZXIgPSBudWxscHRyOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuaAppbmRleCA4MWQ4MDM5NmM1Mzk5YmNjYzQ1NDJjYWE3YzBi
YmUzOWUzNjdlYmU0Li4yNWY1YmIwMWNiNjk5MzVkM2Q1NzRhNjViMGVhMThlMzAwYzYyMjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKENH
KQogICAgIEdyYXBoaWNzQ29udGV4dCogbV9zYXZlZENvbnRleHQgeyBudWxscHRyIH07Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOworICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKICNlbmRpZgogCiAgICAgYm9vbCBtX3Nob3VsZENv
bGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IDg2
MWUyNmI0NzZlNTQwOGQ0YjY0OGEzNjk4MDI0NWUxNTA4NmFiMGMuLjY0YjE5NjE1ODUwODc3YjMw
ZGZlYTdlNWVmOTc2NTU0NjYzMDNhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgaWYgKCFkcmF3Q29udGVudEludG9NYXNrSW1hZ2UobWFza2VyRGF0YSwgY29sb3JT
cGFjZSwgJnJlbmRlcmVyKSkKLSAgICAgICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS5yZXNl
dCgpOworICAgICAgICAgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlID0gbnVsbHB0cjsKICAgICB9
CiAKICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCBkZjAx
N2JhMWJmYzBjY2Y3YWVhOTNhM2JiMmY3ZmM3ODhmNjk2Yzc2Li4zMzViMGNlMDg1MDU5NTI0OWNj
YjVkMDRlODQ0ODcwODA1NjdkYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC0zMiw3ICszMiw3IEBAIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKIAogc3RydWN0IE1hc2tlckRhdGEgewogICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IG1hc2tJbWFnZTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKIH07CiAKIGNs
YXNzIFJlbmRlclNWR1Jlc291cmNlTWFza2VyIGZpbmFsIDogcHVibGljIFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBkMjkzOGIyZjViY2NiZGY2NGI0
MjY2Y2U0MTMzM2YzOWQ4NDViMDEzLi5hMWY4NWYxNzYyNjYxYTVkOGIzMmE0NTA0ZTY1ZWZhODNj
YTNhNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZUltYWdlVHJhbnNmb3JtKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0
IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3Vu
ZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNv
bHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CitS
ZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUlt
YWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBjb25zdCBGbG9hdFJlY3Qm
IHRpbGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNs
YW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUp
IGNvbnN0CiB7CiAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZl
cjo6Y2xhbXBlZFJlY3QoYWJzb2x1dGVUaWxlQm91bmRhcmllcyk7CiAgICAgYXV0byB0aWxlSW1h
Z2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVC
b3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgQ29sb3JTcGFjZTo6U1JH
QiwgcmVuZGVyaW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAppbmRleCBhZWQ3YjA1Zjk5YTE5NGY5ZjA3
OTU0ZTgyODMxZDhkZTEwODA4Njg0Li5jMTQ2YzBkMTYyYTZmODE5OTQwOTFmZWExOTk5OGM0MTY4
ZTUxZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgYnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0oUmVuZGVyRWxlbWVudCYsIGNvbnN0IFBhdHRl
cm5BdHRyaWJ1dGVzJiwgY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQmLCBGbG9hdFJlY3QmIHBhdHRl
cm5Cb3VuZGFyaWVzLCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSkgY29uc3Q7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZVRpbGVJbWFnZShjb25z
dCBQYXR0ZXJuQXR0cmlidXRlcyYsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNv
bnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJv
dW5kYXJpZXMsIFJlbmRlcmluZ01vZGUpIGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVz
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBj
bGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSkgY29uc3Q7CiAKICAg
ICBQYXR0ZXJuRGF0YSogYnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmLCBPcHRpb25TZXQ8UmVu
ZGVyU1ZHUmVzb3VyY2VNb2RlPiwgR3JhcGhpY3NDb250ZXh0Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDM5
NDdmN2M3MzI5NjlhNDBmZTg5NjA4NGY1NDFmZWI5NjU2NDlhZGUuLmY5N2FmNDNiNGFjN2M1OTFm
ZThkMTVlZWI0MzgxMmY1YTkzYWE4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIEFm
ZmluZVRyYW5zZm9ybSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlv
blRvT3V0ZXJtb3N0Q29vcmRpbmF0CiAgICAgcmV0dXJuIGFic29sdXRlVHJhbnNmb3JtOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1Jl
ZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29s
dXRlVHJhbnNmb3JtLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIEludFJlY3Qg
cGFpbnRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJlY3QsIGFic29sdXRl
VHJhbnNmb3JtKTsKICAgICAvLyBEb24ndCBjcmVhdGUgZW1wdHkgSW1hZ2VCdWZmZXJzLgpAQCAt
MjY0LDcgKzI2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSCiAgICAgcmV0dXJuIGltYWdl
QnVmZmVyOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1Jl
ZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIEludFNpemUgY2xhbXBlZFNpemUg
PSByb3VuZGVkSW50U2l6ZShjbGFtcGVkUmVjdC5zaXplKCkpOwogICAgIEZsb2F0U2l6ZSB1bmNs
YW1wZWRTaXplID0gcm91bmRlZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwpAQCAtMzA2LDcg
KzMwNiw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvQ29udGV4
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlCiAgICAgY29udGVudFRyYW5zZm9ybWF0
aW9uID0gc2F2ZWRDb250ZW50VHJhbnNmb3JtYXRpb247CiB9CiAKLXZvaWQgU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBib29s
IHNhZmVUb0NsZWFyKQordm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZl
cihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1
dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVmUHRyPEltYWdlQnVm
ZmVyPiYgaW1hZ2VCdWZmZXIsIGJvb2wgc2FmZVRvQ2xlYXIpCiB7CiAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBBZmZpCiAgICAgLy8gV2hlbiBuZXN0aW5nIHJlc291cmNlcywgd2l0aCBvYmplY3RCb3Vu
ZGluZ0JveCBhcyBjb250ZW50IHVuaXQgdHlwZXMsIHRoZXJlJ3Mgbm8gdXNlIGluIGNhY2hpbmcg
dGhlCiAgICAgLy8gcmVzdWx0aW5nIGltYWdlIGJ1ZmZlciBhcyB0aGUgcGFyZW50IHJlc291cmNl
IGFscmVhZHkgY2FjaGVzIHRoZSByZXN1bHQuCiAgICAgaWYgKHNhZmVUb0NsZWFyICYmICFjdXJy
ZW50Q29udGVudFRyYW5zZm9ybWF0aW9uKCkuaXNJZGVudGl0eSgpKQotICAgICAgICBpbWFnZUJ1
ZmZlci5yZXNldCgpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIyRFJvdGF0aW9uKEFmZmluZVRyYW5zZm9ybSYgdHJh
bnNmb3JtKQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xl
YXIyRFJvdGF0aW9uKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIHRyYW5zZm9ybS5y
ZWNvbXBvc2UoZGVjb21wb3NpdGlvbik7CiB9CiAKLWJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
YnVmZmVyRm9yZWdyb3VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZl
cikKK2Jvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChSZWZQdHI8SW1h
Z2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9wYWludEluZm8pOwogICAg
IEFTU0VSVChpczxSZW5kZXJTVkdJbWFnZT4oKm1fcmVuZGVyZXIpKTsKQEAgLTM0NSwyMSArMzQ1
LDIyIEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1CiAgICAgICAgIEludFNpemUgZXhwYW5kZWRC
b3VuZGluZ0JveCA9IGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpOwogICAgICAg
ICBJbnRTaXplIGJ1ZmZlclNpemUoc3RhdGljX2Nhc3Q8aW50PihjZWlsKGV4cGFuZGVkQm91bmRp
bmdCb3gud2lkdGgoKSAqIHRyYW5zZm9ybS54U2NhbGUoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGNl
aWwoZXhwYW5kZWRCb3VuZGluZ0JveC5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsK
ICAgICAgICAgaWYgKGJ1ZmZlclNpemUgIT0gaW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCkpCi0g
ICAgICAgICAgICBpbWFnZUJ1ZmZlci5yZXNldCgpOworICAgICAgICAgICAgaW1hZ2VCdWZmZXIg
PSBudWxscHRyOwogICAgIH0KIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50
IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAg
ICBpZiAoKGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
ZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIENvbG9yU3BhY2U6OlNSR0IsIG1f
cGFpbnRJbmZvLT5jb250ZXh0KCkpKSkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBi
dWZmZXJlZFJlbmRlcmluZ0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgICAg
ICAgICAgYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0LnRyYW5zbGF0ZSgtYm91bmRpbmdCb3gubG9j
YXRpb24oKSk7Ci0gICAgICAgICAgICBQYWludEluZm8gYnVmZmVyZWRJbmZvKCptX3BhaW50SW5m
byk7Ci0gICAgICAgICAgICBidWZmZXJlZEluZm8uc2V0Q29udGV4dChidWZmZXJlZFJlbmRlcmlu
Z0NvbnRleHQpOwotICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCptX3JlbmRl
cmVyKS5wYWludEZvcmVncm91bmQoYnVmZmVyZWRJbmZvKTsKLSAgICAgICAgfSBlbHNlCisgICAg
ICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhw
YW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIENvbG9yU3BhY2U6OlNSR0IsIG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkpOworICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVyZWRS
ZW5kZXJpbmdDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBidWZmZXJlZFJl
bmRlcmluZ0NvbnRleHQudHJhbnNsYXRlKC1ib3VuZGluZ0JveC5sb2NhdGlvbigpKTsKKyAgICBQ
YWludEluZm8gYnVmZmVyZWRJbmZvKCptX3BhaW50SW5mbyk7CisgICAgYnVmZmVyZWRJbmZvLnNl
dENvbnRleHQoYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0KTsKKyAgICBkb3duY2FzdDxSZW5kZXJT
VkdJbWFnZT4oKm1fcmVuZGVyZXIpLnBhaW50Rm9yZWdyb3VuZChidWZmZXJlZEluZm8pOworCiAg
ICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBi
b3VuZGluZ0JveCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IGE2NzViYzI1NzBjYTEy
OGQ3NWJlM2IwNWVjZTQxNzJiMWRkNTFjOTAuLmU0MGQ5N2YxZDE5NDk3ZTUxNTM3YzFjMzkxZmJi
NWMxY2Y1MTc5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5oCkBAIC02MCwxMSArNjAsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiwgUGFpbnRJbmZvJiwgTmVl
ZHNHcmFwaGljc0NvbnRleHRTYXZlID0gRG9udFNhdmVHcmFwaGljc0NvbnRleHQpOwogICAgIGJv
b2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3Mg
JiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBDb2xvclNwYWNlLCBSZW5k
ZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBDb2xvclNw
YWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7Cisg
ICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNm
b3JtLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0g
bnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRS
ZWN0LCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0g
bnVsbHB0cik7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBo
aWNzQ29udGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAg
ICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsK
KyAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKIAogICAg
IHN0YXRpYyBmbG9hdCBjYWxjdWxhdGVTY3JlZW5Gb250U2l6ZVNjYWxpbmdGYWN0b3IoY29uc3Qg
UmVuZGVyT2JqZWN0Jik7CiAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBjYWxjdWxhdGVUcmFu
c2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShjb25zdCBSZW5kZXJPYmplY3Qm
KTsKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFN1cHBvcnQgZm9y
IHRoZSBidWZmZXJlZC1yZW5kZXJpbmcgaGludC4KLSAgICBib29sIGJ1ZmZlckZvcmVncm91bmQo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYpOworICAgIGJvb2wgYnVmZmVyRm9yZWdyb3Vu
ZChSZWZQdHI8SW1hZ2VCdWZmZXI+Jik7CiAKIHByaXZhdGU6CiAgICAgLy8gVG8gcHJvcGVybHkg
cmV2ZXJ0IHBhcnRpYWxseSBzdWNjZXNzZnVsIGluaXRpYWxpenRpb25zIGluIHRoZSBkZXN0cnVj
dG9yLCB3ZSByZWNvcmQgYWxsIHN1Y2Nlc3NmdWwgc3RlcHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA2M2VkZjEyZTIxMzMzMGRmMmRhY2I5NjU0MDI1NjUz
MTYzYjQwYmMxLi42NTljZGI1M2FjNTZhNjIwYjAzOTE4MzY3YWZjMjVkMTYxNzVmYWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTIxNyw3ICsyMTcsNyBA
QCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29u
c3QgR3JhcGhpY3NDb250ZXh0KikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBD
YWlybyBkb2VzIG5vdCB1c2UgdGhlIGFjY2VsZXJhdGVkIGRyYXdpbmcgZmxhZywgc28gaXQncyBP
SyB0byBtYWtlIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4KLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJh
d1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFNpemUKICAgICBGbG9hdFJlY3QgaW1hZ2VCdWZmZXJTaXplID0gem9vbWVkQ29udGFpbmVyUmVj
dDsKICAgICBpbWFnZUJ1ZmZlclNpemUuc2NhbGUoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCBp
bWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5k
ZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBj
b250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgQ29sb3JT
cGFjZTo6U1JHQiwgY29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBhbGxv
Y2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKICAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZl
ci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21l
bnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKaW5kZXggZDViYjBmMmQwM2U2ZjM1YTk4ZTQxOWM0MTVkMDU2YjI5NGJlNTdi
YS4uZGYwZWQ0N2U1YmVmZDY3OTg0NmE0YzdmNTA2MjAxMzY2NDYwYjY4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVu
CiB7CiAgICAgQVNTRVJUKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0
ZWQgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2U7CisgICAgUmVm
UHRyPEltYWdlQnVmZmVyPiBpbWFnZTsKIAogICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRl
cmluZ01vZGU6OkFjY2VsZXJhdGVkKQogICAgICAgICBpbWFnZSA9IEFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCAqdGhpcywgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTE0MCwxMyArMTQw
LDEzIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Zmx1c2hEaXNwbGF5TGlzdChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIg
PSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSkKICAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoRGlzcGxheUxpc3QoZGlz
cGxheUxpc3QpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmZsdXNoRGlzcGxh
eUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCwgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQor
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNv
bnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIERpc3BsYXlMaXN0Rmx1
c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZl
ciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGltYWdlQnVmZmVyLT5mbHVzaERpc3BsYXlMaXN0
KGRpc3BsYXlMaXN0KTsKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
cwogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEo
V2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6Oklu
dFJlY3Qgc3JjUmVjdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVy
ZW5jZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJbnRS
ZWN0IHNyY1JlY3QsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVu
Y2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gaW1h
Z2VEYXRhOwogICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hl
LmNhY2hlZEltYWdlQnVmZmVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5jcHAKaW5kZXggMjI4MjA2ODY2NGY3MjAwNmE1ZWY2NDQ3YjExMTczNGRlMzNmMTU2ZS4u
NDNlOTA4NmMxN2M3M2U0ZWFjMWYwZGUzMDcyODgyMWQ5NmEzNTE2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVy
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBpbWFnZSkKK3ZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgaW1hZ2UpCiB7
CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQnVmZmVycy5hZGQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDA1NDZhZDA3YzI4
Njc1YTlkNjU5MDc0ODc0OWJhMmU5MWUwMzZhZDIuLjMyNTgyOTIzNThmOTE3YjNiOTg0NWQzY2U0
NDc3YzE2YTc1Mjg5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtNDIsMTIgKzQyLDEyIEBAIGNsYXNz
IFJlbW90ZVJlc291cmNlQ2FjaGUgewogcHVibGljOgogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUo
KSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+JiYpOworICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAgICAgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKLSAgICB1c2luZyBS
ZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47Cisg
ICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4+Owog
CiAgICAgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMjI2NGViY2I2NjY0ZDcxZmZmMGE0MDA0MmZiMjU0
MmNhODA2NmViNC4uNGU2ZGMzMmUzZmE1OGM5ZjAyYjdmYTAyNGZmOTEzMjVhZWNkM2M5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTQyLDEyICs0MiwxMiBAQCBjbGFzcyBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1
ZmZlcjxCYWNrZW5kVAogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2Ry
YXdpbmdDb250ZXh0OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VC
dWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGlmIChCYWNrZW5kVHlwZTo6Y2FsY3Vs
YXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUltYWdlQnVmZmVyUHJveHk+KG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHNpemUsIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoc2l6ZSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KSk7CiAgICAgfQogCiAgICAgflJlbW90ZUltYWdlQnVmZmVyUHJveHkoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDdhMDE5MzBhYjY2YzQ0NzMwNTEwOTMw
MzRkNGYzNmQyYzBlNjQ4YTIuLmY5YTdkYzVkZTAyODc3MTRlNjZlY2IxNzE3NDFjMmU4OTUzOGU5
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTg3LDkg
Kzg3LDkgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JGbHVzaERp
c3BsYXlMaXN0V2FzQ29tbWl0dGVkKCkKICAgICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFu
ZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Rmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNz
YWdlQXJyaXZlcyk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXI7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsK
IAogICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQog
ICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmgKaW5kZXggOTk1NjViNmYxNjZiYjJkODA2MTQxODQ5NzJlMzQzNzA2
Y2U3ZmVjOS4uZTk5ZTNkNzFjYTkyNjI2YTY5NjJjYzk0ODc3YTdjMTFiODVlZGJhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShX
ZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDI0NDUyYjY4
MmY0OTNmMDQwM2RjZmU2MWJjYWE3MjBjNmU0ZmEwOGIuLmE3YTc2OTUwZDQ1ZTQzZjI0MWZmYmQy
ZjMxYWFjMTU3MDg1MTkxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC05MTAsNyArOTEw
LDcgQEAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBXZWJDaHJvbWVDbGllbnQ6OmVuc3Vy
ZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgKICAgICByZXR1cm4gKm1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpIGNvbnN0CitSZWZQdHI8SW1h
Z2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Ug
cHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3BhZ2Uuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1cnBv
c2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBmNTQ3
OTRhNjIzNmI1ZTBkNTdiZjc3Mzk2YzM2N2RhNjcwZWQ3Y2VkLi5jNmY4YjlkZTZhNzBlZjIzN2Qx
ZjQ4Y2VjYjQwMTEzNTc3NTUyOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDQsNyArMjQ0
LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkmIGVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpIGNv
bnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAog
ICAgIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkg
Y29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAppbmRleCBkOTcxMTg4NTEyZGI2OWYzOWZiM2NlNmI1MTBiM2E0MzZmNDRkODMzLi5jOWJl
MTg0N2UwNjA2ZWVhMGIzMWRkZTBmMTcxYjE3MzQ4ODA5MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC04MzYsNyArODM2LDcgQEAgUmV0
YWluUHRyPENGRGF0YVJlZj4gV2ViRnJhbWU6OndlYkFyY2hpdmVEYXRhKEZyYW1lRmlsdGVyRnVu
Y3Rpb24gY2FsbGJhY2ssIHZvaWQKIAogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6
OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oKmNvcmVGcmFtZSgpLCBX
ZWJDb3JlOjpTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCk7CisgICAgYXV0byBzbmFwc2hv
dCA9IHNuYXBzaG90U2VsZWN0aW9uKCpjb3JlRnJhbWUoKSwgV2ViQ29yZTo6U25hcHNob3RPcHRp
b25zRm9yY2VCbGFja1RleHQpOwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>